A couple questions:

1. Do you have an index on row_status? If not, then filtering on that with values that don't exist in the table likely results in a full table scan, though it is odd that the third query would be faster if this is the case.

2. Can you show us the query plans of the four queries? (see https://docs.intersystems.com/iris20253/csp/docbook/Doc.View.cls?KEY=GSQ... ) This might help us figure out what is going wrong.

My guess is that there is a permissions deficiency in his account that is not obvious. It is possible for a lack of %Admin_Operate:U can deny access to certain pages in the Management Portal; see the following documentation https://docs.intersystems.com/iris20252/csp/docbook/DocBook.UI.Page.cls?...

"It controls access to various pages in the Management Portal, including the System Operation page."

Are you certain that there are no permissions differences between his account and others'? You mentioned using a test account with the same permissions - was this test account cloned from your colleague's?

Another possibility is that he is attempting to access a different page in the management portal than you are. Not all pages in the Management Portal are created equal - I would try sending him a "clean" link to the Management Portal landing page to make sure he isn't trying to access a page he doesn't have permissions on.

If neither of these avenues of investigation bear fruit (and no one else here comes up with another answer), I would contact Support - they have the most experience dealing with permissions minutiae. 

I hope this helps and that you can get this resolved soon - permissions issues can be very frustrating, speaking from personal experience.

One way to do this would be to make use of the 'iris merge' command with a CPF file: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls... 

The CPF file in question can run $SYSTEM.Obj.Load as an Action, for example:

[Actions]
Execute:Namespace="USER",ClassName=%SYSTEM.OBJ,MethodName="Load",Arg1="/home/irisowner/dev/cls/TestClass.xml",Arg2="ck"

So the steps here would be:

1. Define a CPF file that loads the classes you need

2. Create a unix script that runs 'iris merge <instance name> <CPF file location>'

Hi Jerry,

Without knowing more about the specific query plan and IRIS setup it would be hard to know what's going on - I would highly recommend reaching out to the WRC about this if you are able. I will note that TUNE TABLE has had significant functionality improvements since IRIS version 2021.2 (see https://community.intersystems.com/post/20212-sql-feature-spotlight-smar...) , it's possible you are missing a bug fix; again WRC would be the best point of contact. Best of luck!

Following up on this from a recent customer conversation: the current best practices that we have settled on has been disabling exportselectivity as in Ben De Boe's post (https://community.intersystems.com/post/cicd-iris-sql), alongside ensuring AdaptiveMode is turned on (https://docs.intersystems.com/iris20243/csp/docbook/Doc.View.cls?KEY=RAC...). For now this will ensure that initially collected stats aren't overwritten, and once table statistics are collected automatically this should be completely "hands off".

Didn't realize that, sorry! I should have done more testing myself. I did some more research and found a way to do this in an object-oriented fashion: https://community.intersystems.com/post/get-property-maxlen 

I've confirmed that this works on a 2024.1.1 instance with the following steps:

set cdef = ##class(%Dictionary.ClassDefinition).%OpenId("<class name>")
Set count = cdef.Properties.Count()
for i = 1:1:count {if cdef.Properties.GetAt(i).Name = "<Property Name>" {w cdef.Properties.GetAt(i).Parameters.GetAt("MAXLEN")}}

For defining a fixed length string field in a class definition, you can use the MINLEN and MAXLEN parameters in tandem: https://docs.intersystems.com/iris20231/csp/documatic/%25CSP.Documatic.c...

This will not pad the string automatically, however, you would need to pad it to the desired length before saving an instance of the class.

To retrieve the MAXLEN, this answer to an earlier question may be helpful : https://community.intersystems.com/post/getting-parameters-cleanly-prope...

So the call might look something like:

$$$defMemberArrayGet(class,$$$cCLASSproperty,prop,$$$cPROPparameter,"MAXLEN")

EDIT: These macros aren't available on recent versions, here's an object-oriented way to do it (that's cleaner anyway):
 

I've confirmed that this works on a 2024.1.1 instance with the following steps:

set cdef = ##class(%Dictionary.ClassDefinition).%OpenId("<class name>")
Set count = cdef.Properties.Count()
for i = 1:1:count {if cdef.Properties.GetAt(i).Name = "<Property Name>" {w cdef.Properties.GetAt(i).Parameters.GetAt("MAXLEN")}}

Hello,

The Feature Tracker task is a built-in task that sends weekly feature usage reports to InterSystems. For more information, see the following documentation: https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls...

As for the specific error you received when running it, I am not sure. I will confer with the developers and get back to you when I have an answer. In the meantime, though, it should not have any effect on other IRIS functionality.

One way to accomplish what you are describing is to use a temporary global: https://docs.intersystems.com/iris20231/csp/docbook/Doc.View.cls?KEY=GGB...

This allows you to store data in the IRISTEMP database that you can then retrieve like any other global. For example, if I were debugging a piece of code, I could write the following into the relevant Method:

SET ^CacheTempNP($INCREMENT(^CacheTempNP)) = <some debug value>

Then later ZWRITE ^CacheTempNP to see what I have logged.

(Note: In the documentation, we recommend using a global mapping to set up your own naming convention for temporary globals instead of using the ^CacheTemp prefix. While I still recommend doing that if you plan to use temporary globals in non-testing code, just using ^CacheTemp instead is fine for debugging.)