Robert Cemper · Jan 3, 2018 go to post

You are missing the point.

12345 is the port used by the cache DB server   (default=1972) of your instance.
internally there is a mapping between the logical NAMESPACE and the physical disk directory and that NAMESPACE is used in connection string.
if your namespace is called DB then  you have to use 

jdbc:Cache://localhost:12345/DB

But if you just have the directory .../cache/db/cache.dat  you can't say what NAMESPACE this is
You have to know your Caché configuration.

Some reading on Caché configuration may give you background information
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY…

Robert Cemper · Jan 3, 2018 go to post

do you plan an update for changes to JSON syntax   
- .%To... instead of .$to...  and so on
- local Caché variables and expressions in parenthesis. (  var )

I tried and it finally compiled.  Could run the page just never saw a result.  

Robert Cemper · Jan 2, 2018 go to post

OK. I understand.
- I doubt if a Linux distribution of Caché contains any Windows mechanics. ( to be checked with WRC )
- on the other hand I don't believe it's possible or make sense  to run Caché Win distribution in a Win-Shell ...
So suggested workaround:
Have a VM (or small machine) with Windows +Caché and connect via ECP or similar (REST, WebService, JDBC, ...)  to your main Caché instance on Linux. 

OR:

Wrap some C# around your DLL on a Windows box and present it as a WebService that you call from Linux.

Robert Cemper · Jan 2, 2018 go to post

??? For what reason would you expect to have MicroSoft .NET on Linux/Unix systems ???

Robert Cemper · Jan 2, 2018 go to post

Where does Array go to proxyObject ?
I'm missing something like: Set Body.Array=Array

Robert Cemper · Dec 31, 2017 go to post

I would like to share your wishes to all participants with special emphasis on uninterrupted HEALTH.
 

Robert Cemper · Dec 30, 2017 go to post

Hi Jeffrey,

Your descriptions matches pretty well what is titled in Ensemble as "Workflow"
http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY…

It uses specialized Request and Response messages that are designed to allow a significant time gap in between.
It's originally designed for human interactions but to my understanding it implements exactly your "sideline".
And human interaction is just there to show it may take long time to get a reply.
There is also an example in ENSDEMO  Demo.Workflow.Production  ​

 HTH,

Robert

Robert Cemper · Dec 29, 2017 go to post

Not clear what you mean with "login page".
for the MgmtPoatal you connect to a HTTP port (default=57772) with a CSP PAGE and and and ...

With JDBC you connect to the object service port (default = 1972)  + namespace  

The IP address is of course the same. Here 127.0.0.1  or localhost 

Robert Cemper · Dec 29, 2017 go to post

Check MAXLEN for Property CSFAELIGVENCITY wherever that was defined.
 

As MAXLENis not checked for data output you may want to use a SQLcomputed property
that limits output to 20.

eg. {set {*}=$Extract(CSFAELIGVENCITY,1,20) }

Robert Cemper · Dec 28, 2017 go to post

So you didn't run the full installation.
You need to update you installation and add the libraries.
Or run a  2nd installtion in parallel 

Robert Cemper · Dec 28, 2017 go to post

Pls. move this request away from "Community Feedback " to Group "Caché"  to make it public visible.
I just found it by accident. 

it is in you Caché installation 
%CACHEROOT%\dev\java\lib\JDK17\...

%CACHEROOT%\dev\java\lib\JDK18\...

whatever you may need

Robert Cemper · Dec 28, 2017 go to post

I like macros but I'm always careful concerning their public availability.
This has changed to often over recent releases.

Robert Cemper · Dec 28, 2017 go to post

You are totally right. 
I tried to stick with the original questions. And I wouldn't formulate it that "traditional" way.
As you noticed there are more efficient and  meaningful constructs possible. 

Robert Cemper · Dec 27, 2017 go to post

Try ""   instead of null which would be a variable named null

    do $$$AssertEquals(myObj, "", "myObj is null")

or

    set null="" do $$$AssertEquals(myObj, null, "myObj is null")

or to cover undefined as well

     do $$$AssertEquals($GET(myObj), "", "myObj is null")

Robert Cemper · Dec 27, 2017 go to post

My sample took somewhat longer to prepare then Edward's smiley and Gerd's

#1) to evaluate SQL statements use MgmtPortal/ Explorer/SQL and check the generated query plan.

#2) if you don't use special attributes to SELECT clause or sub-queries all SQL statements are strictly worked from left to right.
 your first statement is ok for SQL your 2nd is just a fragment that I interpreted as to be a sub-query

Summary: they are not identical.

Now the example transformed for namespace SAMPLES to have 3 tables as A, B, and C:

select A.id,B.id,c.Id from
    sample.person A left join 
    sample.employee B on A.id = B.spouse 
    inner join sample.company C on B.company = C.id 

 

Row count: 100

Query Plan:

Relative cost = 4200
Read extent bitmap Sample.Employee.$Employee, looping on ID.
For each row:
     Read master map Sample.Employee.IDKEY, using the given idkey value.
    Read extent bitmap Sample.Person.$Person, using the given ID.
 For each row:
     Read master map Sample.Company.IDKEY, using the given idkey value.
 Output the row.
 

transformed to sub-queries:

select aid,bid,cid from
(select A.id aid, b.id bid, b.company cid 
    from sample.person A 
    left join sample.employee B
    on A.id = B.spouse)
 inner join sample.company C 
 on cid = C.id 

it is obviously identic ! just more expressive.

Row count: 100

Query Plan:

Relative cost = 4200
Read extent bitmap Sample.Employee.$Employee, looping on ID.
For each row:
     Read master map Sample.Employee.IDKEY, using the given idkey value.
    Read extent bitmap Sample.Person.$Person, using the given ID.
 For each row:
     Read master map Sample.Company.IDKEY, using the given idkey value.
 Output the row.

the next  LEFT_JOIN(A,INNER_JOIN(B.C))  requires immediate transformation

select A.id,bid,cid from
sample.person A left join
(select b.id as bid,c.id cid, b.spouse bsp 
 from sample.employee B
 inner join sample.company C on B.company = C.id) 
 on A.id = bsp

Row count:  237  (!!!!)

Query Plan:

Relative cost = 32408
Read extent bitmap Sample.Person.$Person, looping on ID.
For each row:
 Call module E.
 Read temp-file A, using the given VIEW column #3, and looping on VIEW counter.
 For each row:
 Generate a row padded with NULL for the view if no row qualified.
 Output the row.
module E
Read extent bitmap Sample.Employee.$Employee, looping on ID.
For each row:
 Read master map Sample.Employee.IDKEY, using the given idkey value.
 Read master map Sample.Company.IDKEY, using the given idkey value.
 Increment view row counter.
 Add a row to temp-file A, subscripted by VIEW column #3 and VIEW counter,
 with node data of VIEW column #1 and VIEW column #2.

So both variants are possible though the result is different

HTH,

Robert Cemper · Dec 27, 2017 go to post

As alternative to copy you can also map ^EnsPortal.SavedSearch* in your secondary namespace to use it in parallel.

Robert Cemper · Dec 27, 2017 go to post

Telnet port 23 is typically blocked on Unix/Linux Servers.

I'd suggest to use some other terminal program with support of SSH to log in (eg. Putty www.putty.org)

But be aware on UNIX/LINUX you log in to a shell and have to start csession  for "Terminal like" access

Robert Cemper · Dec 22, 2017 go to post

For testing with Terminal I typically use PuTTY.  http://www.putty.org/

There I can have multiple terminals with separated  Sessions/$JOB in parallel without problem.
(pls. don't ask how )
Terminal driver changes to a free set of ports ( 51133|10088) as you see by $IO
so it's no problem to have multiple terminal sessions connected 

USER>w $io
|TNT|127.0.0.1:51133|10088

I have no idea if Atelier allows multiple Terminals . And if how to launch them.
In Atelier just click again to the Terminal Open Icon:

Robert Cemper · Dec 21, 2017 go to post

is  Enable %Service_Telnet set ?
in  the Management Portal (http:///csp/sys/sec/%25CSP.UI.Portal.Services.zen)
 

My Caché runs on Win .(I'm not sure if this works also for Caché on Unix )

It does NOT work for Unix:

%Service_Telnet Yes Yes Unauthenticated Unrestricted Controls Telnet sessions on a Windows server

 

So on UNIX you go to bash and have to start via csession....

Robert Cemper · Dec 21, 2017 go to post

so what you are looking for is something similar to XML IGNORENULL = 1
short time ago I ended up with export to XML and then convert XML to JSON.
Not so impressive but better than chasing unwanted  "".   
 

Robert Cemper · Dec 21, 2017 go to post

Right: if you don't establish TELNET connection it's just bash or MS-DOS depending on your local OS.
Also for local localhost access !
so from Help:

Using the Terminal Plug-in
Telnet Connection
If your Caché instance is on a remote Windows server, you will need to connect using Telnet.
  1. Enable %Service_Telnet from the Management Portal (http:///csp/sys/sec/%25CSP.UI.Portal.Services.zen)
  2. In the main menu, select Show View > Other > Terminal > Terminal, or click this link to open the Opens the new Class file wizard Terminal View.
  3. Select the Open a Terminal button on the Terminal view toolbar.
  4. Select Telnet Terminal from the Choose terminal drop down menu.
  5. Complete the Telnet session configuration and click "OK"
  6. If csession isn't in your PATH, navigate to your instance's bin directory. For example, cd C:\InterSystems\Cache\bin.
  7. Launch a Caché terminal session. For example, csession Cache.

Setup Connection

And you get your Caché Terminal

 

HTH

Robert Cemper · Dec 21, 2017 go to post

Funny to meet amCharts again as I presented it first to customers as alternative to ZEN graphics
around  2011/12 with Caché 2011.1
smiley

Robert Cemper · Dec 20, 2017 go to post

and keep quiet  when it installs. 
this is not Caché and it takes it's time  crying

(I just spent 25 min for an Update/Upgrade)