You cannot change the priority of indices.

You can ask IRIS to ignore particular index -- %IGNOREINDEX, or disable index for a particular condition -- %NOINDEX

You can force join order with %INORDER hint

https://docs.intersystems.com/iris20253/csp/docbook/DocBook.UI.Page.cls?KEY=GSOC_hints

Generally, if you see that some query does not use particular index, that should be used, or chooses bad join order -- collect table statistics, if this does not help -- contact InterSystems Support (WRC), or post details here -- the query, its plan, and describe what plan you'd like to see

Alexander Koblov · Mar 19, 2025 go to post

Take a look at class %SYS.ProcessQuery

USER>set q=##class(%SYS.ProcessQuery).ExamStackByPid($J,1)
 
USER>zw ^mtemp(q)
^mtemp(4,"*FORMAT")=1
^mtemp(4,"*LEVEL",1)=1
^mtemp(4,"*LEVEL",2)=2
^mtemp(4,"*STACK")=2
^mtemp(4,"*STACK",0,"V","$D")=""
...
^mtemp(4,"*STACK",1,"I")="1^S^^^0^"
^mtemp(4,"*STACK",1,"L")="  1   SIGN ON                            "
^mtemp(4,"*STACK",1,"S")=""
^mtemp(4,"*STACK",1,"T")="SIGN ON                           "
^mtemp(4,"*STACK",2,"I")="2^e^^^0^S q=##CLASS(%SYS.ProcessQuery).ExamStackByPid($J,1)"
^mtemp(4,"*STACK",2,"L")="  2   $$EXTFUNC                          ~S q=##CLASS(%SYS.ProcessQuery).ExamStackByPid($J,1)"
^mtemp(4,"*STACK",2,"S")="~S q=##CLASS(%SYS.ProcessQuery).ExamStackByPid($J,1)"
^mtemp(4,"*STACK",2,"T")="$$EXTFUNC                         "
^mtemp(4,"*VARS")=1
Alexander Koblov · Mar 3, 2025 go to post

Hi Roy,

I wonder if you used some LLM to write big chunks of this article.

For example, CSP.ini in section 4.2 looks strange to me

Indeed, there is a System_Manager parameter in CSP.ini, however its value is allowed IP addresses. And there is no such parameter as System_Manager_Host

There is no such section as WEBAPP in CSP.ini to my knowledge. There is a APP_PATH. AutheEnabled, Timeout, and LockCSPName are properties of the web-application, but you generally specify them for the web-application in IRIS or in the Installation Manifest, not in the CSP.ini

Where did you find these parameters? I have not found them documented in https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCGI_cspini

Additionally, in 5.1 you have iam listed as a part of IrisCluster definition, and then in the implementation guide there are steps 3 and 4. And step 3 suggests to deploy IAM using IrisCluster operator, and step 4 is to deploy IrisCluster itself. However IAM is a part of IrisCluster in the sample above

Alexander Koblov · Feb 28, 2025 go to post

Please describe your use case. What you ask for is not possible, however perhaps there are other solutions

Alexander Koblov · Feb 21, 2025 go to post

What is the authentication method for this web-application? I would suggest to you to have delegated authentication (ZAUTHENTICATE), get the Cookie there and inspect it

For example, in the sample here ZAUTHENTICATE checks OAuth2 token. You can check Cookie there

Adjust also GetCredentials accordingly

Alexander Koblov · Feb 21, 2025 go to post

No way, unfortunately. Unless you can use ODBC from your project to access Caché, not InterSystems.Data.CacheClient.dll

Alexander Koblov · Feb 21, 2025 go to post

I wonder if indeed server and port do not match with the ones in the ssldefs.ini

What is the connection string and what is the contents of ssldefs.ini?

Alexander Koblov · Jan 30, 2025 go to post

Hi Yaron.

SQL Injection police here ;-)

You can pass query parameters to %ExecDirect as well

SET variable = 2000
SET sql = "SELECT Column FROM Table WHERE ID = ?"
DO ##class(%SQL.Statement).%ExecDirect(, sql, variable)
Alexander Koblov · Nov 25, 2024 go to post

Hi Daniel.

This 404 error shows IIS page. For the debugging purposes the recommendation is to enable PassThrough responses in IIS: https://docs.intersystems.com/iris20242/csp/docbook/DocBook.UI.Page.cls?KEY=GCGI_webserver#GCGI_configiis_soapfault

IRIS returns 404 when the page or class does not exist, and when PROTECT error happens.

So enable the PROTECT events in the Audit, and check if anything is logged there

Check that IIS is configured correctly to forward the request that returns 404 to the Web Gateway and then IRIS

Alexander Koblov · Nov 19, 2024 go to post

I wonder if this is an error in the documentation, and you rather should use PasswordExternal property, that is for specifying clear text password

Tani's comment below is of course correct -- it's always a bad idea to put passwords in the plaintext

Alexander Koblov · Nov 18, 2024 go to post

Other idea -- try to put ojdbc8.jar in some publicly available folder. Like /tmp to rule out permissions issue. You wrote that you checked the permissions, however I wonder if MacOS treats folders in the /Users folder in a special way

Alexander Koblov · Nov 18, 2024 go to post

Hi Muhammad.

Enable logging in the %JDBC External language server, reproduce the error, and check the log. Hopefully there will be some useful information in the log

Alexander Koblov · Nov 11, 2024 go to post

Hi David.

Take a look in the %Net.SMTP:GetResponse method.

There is a commented out "#define SMTPTRACE" macro. Uncomment it, recompile %Net.SMTP

Reproduce the error, then check ^SmtpTrace global

Hopefully it should have some details on the interaction with the SMTP server.

Do this on the TEST instance, as each %Net.SMTP:Send clears out the debug global.

Alexander Koblov · Nov 1, 2024 go to post

Enable Audit and LoginFailure event in the Audit, reproduce the error and check the Audit Events. Hopefully you'll have LoginFailure there. Click on Details -- you should see the reason for Access denied

Alexander Koblov · Nov 1, 2024 go to post

expandAll does not invoke any callback methods.

It shows only the nodes that are defined currently for the tree

See for example sample page csp/samples/ZENTest.DynaTreeTest.cls

Execute zenPage.getComponentById( "tree").expandAll(true); from the Developer console. Note, that no nodes are expanded. Now click on the Vegetable -> Fruit, then collapse them and call zenPage.getComponentById( "tree").expandAll(true); again. Now these nodes are shown. However, children for Animal and Mineral are still not shown, because they are not populated yet

Alexander Koblov · Oct 30, 2024 go to post

The same advice applies. See what resource the browser fails to load. What's their HTTP status. Is there anything in the response body? Check apache's error.log. It's in \httpd\logs

Alexander Koblov · Oct 25, 2024 go to post

I wonder if a workaround could be to define Session Events class for /csp/sys and set the language there