Alexander Koblov · Feb 27, 2020 go to post

No, Alexey, for 2020.1 I don't know.

And for 2019.1.4 -- I don't know what version is this.

Alexander Koblov · Feb 19, 2020 go to post

No other settings.

What %Service_Telnet does is it starts/stops process that listens on port 23 (by default). If you disable this service than process is stopped, so nothing from Caché side is listening on port 23.

Alexander Koblov · Feb 19, 2020 go to post

Hi Laura.

First question -- what algorithm does openssl_public_encrypt use?

PHP reference [1] and source code [2] says that this is RSA.

So in Ensemble you can use $system.Encryption.RSAEncrypt() [3]

Important thing to note about RSA encryption, is that length of the plaintext can not be greater than the length of the modulus of the RSA public key contained in the certificate minus 42 bytes.

[1] https://www.php.net/manual/en/function.openssl-public-encrypt.php [2] https://github.com/php/php-src/blob/master/ext/openssl/openssl.c#L5549 [3] https://cedocs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=%25SYSTEM.Encryption#METHOD_RSAEncrypt

Alexander Koblov · Feb 17, 2020 go to post

Thanks for sharing Paul.

Though reference article for $username has this documented:


$USERNAME contains the username for the current process. This can be in one of two forms:

  • The name of the current user; for example: Mary. This value is returned if multiple security domains are not allowed.
  • The name and system address of the current user; for example: Mary@jupiter. This value is returned if multiple security domains are allowed.

To allow multiple security domains, go to the Management Portal, select System Administration, Security, System Security, System-wide Security Parameters. Select the Allow multiple security domains check box. Changes to this setting apply to new invoked processes; changing it does not affect the value returned by the current process.


https://cedocs.intersystems.com/ens201813/csp/docbook/DocBook.UI.Page.cls?KEY=RCOS_vusername

Alexander Koblov · Feb 12, 2020 go to post

Following command lists all collations. Even not loaded:

%SYS>do ^COLLATE

E.g.

%SYS>w $zv
IRIS for Windows (x86-64) 2019.1.1 (Build 612U) Mon Oct 28 2019 11:29:24 EDT
%SYS>do ^COLLATE
 
Status       Number   Abbrev   Name
----------   ------   ------   ----------------------
Built-in        0     OANS     ISM Pre-6.2
Built-in        1     ANSI     ISM 6.2->6.4
Built-in        2     COBR     Ipsum/Cobra
Built-in        3     DTMC     DTM-compatible
Built-in        4     CBR2     Ipsum/Cobra-2
Built-in        5     UNIC     IRIS standard
Not loaded     10     GER1     German1
Not loaded     11     POR1     Portuguese1
Not loaded     12     POL1     Polish1
Not loaded     13     GER2     German2
Not loaded     14     SPA1     Spanish1
Not loaded     15     DAN1     Danish1
Available      16     CYR1     Cyrillic1
Not loaded     17     GRE1     Greek1
Not loaded     18     CZE1     Czech1
Not loaded     19     CZE2     Czech2
Not loaded     20     POR2     Portuguese2
Not loaded     21     FIN1     Finnish1
Not loaded     22     JAP1     Japanese1
Not loaded     24     POL2     Polish2
Not loaded     27     FRE1     French1
Not loaded     28     FIN2     Finnish2
Not loaded     29     HUN1     Hungarian1
Not loaded     30     GER3     German3
Not loaded     31     POL3     Polish3
Not loaded     32     SPA2     Spanish2
Not loaded     33     DAN2     Danish2
Not loaded     34     GRE2     Greek2
Not loaded     35     FIN3     Finnish3
Not loaded     36     LIT1     Lithuanian1
Available      37     CYR3     Cyrillic3
Not loaded     38     SLO1     Slovenian1
Not loaded     39     SLO2     Slovenian2
Not loaded     40     TUR1     Turkish1
Not loaded     41     DAN3     Danish3
Available      42     UKR1     Ukrainian1
Available      43     CYR4     Cyrillic4
Not loaded     44     CZE3     Czech3
Not loaded     46     MAL1     Maltese1
Not loaded     48     MAL2     Maltese2
Not loaded     49     SPA4     Spanish4
Not loaded     50     SLO1     Slovak1
Not loaded     51     SPA5     Spanish5
Not loaded     52     FIN4     Finnish4
Not loaded     53     CZE4     Czech4
Not loaded     54     GER4     German4
Not loaded     56     FRE2     French2
Not loaded     57     GER5     German5
Not loaded     58     NOR1     Norwegian1
Built-in      128     OSTR     ISM Pre-6.2 string
Built-in      129     NSTR     ISM 6.2->6.4 string
Built-in      133     USTR     IRIS standard string
Available     144     CYR1S    Cyrillic1 string
Available     165     CYR3S    Cyrillic3 string
Available     170     UKR1S    Ukrainian1 string
Available     171     CYR4S    Cyrillic4 string
Alexander Koblov · Jan 16, 2020 go to post

Neerav,

relative cost is only useful when you compare different plans for the same query. By itself "relative cost" means nothing.

Alexander Koblov · Jan 16, 2020 go to post

Yes, first screenshot illustrates what I said.

CSPSystem tries access User.Login in USER database, but fails.

Give CSPSystem role that has resource protecting user database.

Close all connections from Web Gateway to IRIS.

Try again. It should work

Alexander Koblov · Jan 16, 2020 go to post

Web Gateway user (CSPSystem) should have permissions to read database where custom login page is located.

Enable <PROTECT> events logging in Audit, reproduce the NOT FOUND error and you'll see <PROTECT> events logged.

Alexander Koblov · Jan 13, 2020 go to post

Not necessarily

 set CNT=10e7
 
 write "for test",!
 set z1 = $zh
 for i=1:1:CNT {
 }
 set z2=$zh-z1
 write "time: ",z2,!
 
 
 write "while test",!
 set z1 = $zh
 set i=1
 while i<=CNT {
	 set i = i+1
 }
 set z2=$zh-z1
 write "time: ",z2,!

Running this program:

USER>do ^test
for test
time: 2.017099
while test
time: 1.542252
Alexander Koblov · Jan 9, 2020 go to post

Check if you have Windows-keys enabled in Terminal settings.

If yes -- this can handle Ctrl-C as "Copy to clipboard"

Alexander Koblov · Dec 27, 2019 go to post

David,

relative cost is only useful when you compare different plans for the same query. By itself "relative cost" means nothing.

To look into query performance we need to see a) Query itself b) Execution plan c) Sources of all classes / tables from the query, so that we see how fields are defined, indexes that are available and selectivity of fields.

Alexander Koblov · Dec 20, 2019 go to post

I also see this error for some tables. I don't know what's causing this.

I've googled it and looks like some error with ODBC Connections from Power BI.

Alexander Koblov · Dec 18, 2019 go to post

Hi Vikram.

Looks like you trying to use InterSystems IRIS Power BI Adaptor to connect to Caché. This adaptor does not support Caché.

Use ODBC connection to connect to Caché from Power BI.

Hope this helps, Alexander.

Alexander Koblov · Dec 2, 2019 go to post

Hi Laura.

There should be only one copy of zenutils.js. It should be only in csp\broker.

CSP Gateway first looks for any static file (including zenutils.js) in appropritate folder (.e.g. csp\samples). If file is not present there, CSP Gateway then looks for that file in csp\bpoker.

Hope this helps, Alexander.

Alexander Koblov · Dec 2, 2019 go to post

The best way to handle such problems is:

a) Enable Audit (System Administration -> Security -> Auditing) b) Enable logging of audit events LoginFailure and Protect (Configure System Events) c) Reproduce the error d) Check Audit database if it has any reported LoginFailure or Protect events. If yes -- check details of these events.

Alexander Koblov · Nov 28, 2019 go to post

Hi Thembelani.

See InterSystems IRIS Adoption Guide (available in WRC -> Online Distributions -> Docs)

%Library.CachePopulate was renamed to %Compiler.Type.Populate

Alexander Koblov · Nov 27, 2019 go to post

The best I know is $TR/$J combination:

USER>w $TR($J("",10)," ","x") ; repeat x 10 times xxxxxxxxxx USER>w $TR($J("",5)," ","y") ; repeat y 5 times yyyyy

Alexander Koblov · Oct 7, 2019 go to post

Relative cost is only used to compare different plans for the same query. Relative cost is not useful for comparing two different queries.

Can you post screenshot of both queries with corresponding plans?

Alexander Koblov · Sep 17, 2019 go to post

To add on what Dmitry said.

We need to see the query, its plan and corresponding classes with selectivity information.

For example, do you really want to run query without join condition?

select o.col1, o.col2, op.partnum, op.amount
from orders o join orderpositions op
where o.orderDate > $H-1000