Enrico Parisi · Sep 10, 2025 go to post

I advise to use:

TROLLBACK 1

Instead of

TROLLBACK

This way you rollback "your stuff", not EVERYTHING...god knows what! 😉

Enrico Parisi · Sep 10, 2025 go to post

The last message/error is pretty clear:
Unable to allocate shared memory minimum of 146MB

Although it seems strange to me that a modern system is not able to allocate 146MB of memory!

Can you try to reboot the system?

Enrico Parisi · Sep 8, 2025 go to post

What puzzle me is the "EnsLib.NullAdapter"!

EnsLib is a "system" package mapped to a read only database.

There is no such a "EnsLib.NullAdapter" class in the ENSLIB database.

Does this class even compile?!

Enrico Parisi · Sep 8, 2025 go to post

How is configure the "Stay Connected" setting in the BO that use the EnsLib.SQL.OutboundAdapter?

How many/how often you have messages sent to this BO?

Enrico Parisi · Sep 2, 2025 go to post

Just to check, how did you "build index on both EnsLib.HL7.SearchTable and OSU.HL7.SearchTable."?

Enrico Parisi · Aug 28, 2025 go to post

it doesn't seem like the Results of the Class Method are coming back correctly 100% of the time.

This is VERY strange, I would add a test/check if an error occur testing SQLCODE and %msg after &SQL() to see if/when/why it fails.

When using embedded SQL you are not supposed to check/access a returned variable (ExtDisplay in your case) before checking for success/failure via SQLCODE variable.

If you need to check if the query found a row, you should check the SQLCODE value, not ExtDisplay  value.

Enrico Parisi · Aug 26, 2025 go to post

Went to the sea or a lake:

 

Hiked/enjoyed nature:

 

Earned points and redeemed a reward on Global Masters 🏆
Many rewards...too many to count! 😊

Joined READY 2025 🎉
Yep! See first picture in this Discussion 😉

Spent time with family or friends:

   

And, a lot of relaxing!...I definitely needed it! 
 

Enrico Parisi · Aug 26, 2025 go to post

This is very confusing, I understand editing names for privacy reasons, but you are changing the actual format, not only names. I've never seen "##class(|"NS"|Path.To.Class)" in errors.

Can you reproduce the issue with a simple sample code using generic names? This way you can post your code so we can understand what's going on and how to fix/log the problem.

Enrico Parisi · Aug 25, 2025 go to post

I don't think that ##class(|"NS"|Path.To.Class).ClassMethod() is a valid syntax.

I believe the "|NS|" makes it a syntax error.

Enrico Parisi · Aug 25, 2025 go to post

s %sc=##class(|"NS"|Path.To.Class).ClassMethod(..%p1,%p2)

Is this really contained in the error message? Is that your code?

To me |"NS"| and ..%p1 look strange.

Enrico Parisi · Aug 22, 2025 go to post

Stream compression is enabled by default since version 2021.2, see release notes:

Saving on Storage
Stream compression – is now on by default for all globals-based stream classes, with no application change required. Existing data remains readable and will be compressed upon the next write. Experiments with real-world data have indicated compression ratios ranging from 30% for short texts to 80% and more for XML and other document types.

Enrico Parisi · Aug 1, 2025 go to post

If you post an example of the code you are using maybe someone can help you understand the problem.

Enrico Parisi · Jul 4, 2025 go to post

Never, ever, concatenate parameters to an SQL Query!

Fixed for you:

    Set sqlQuery = "SELECT * FROM %Dictionary.PropertyDefinition WHERE parent = ? ORDER BY SequenceNumber"
    Set resultSet = ##class(%SQL.Statement).%New()
    Set status = resultSet.%Prepare(sqlQuery)
    $$$ThrowOnError(status)
    Set tResult = resultSet.%Execute(className)
    
    While tResult.%Next() {
        Set Name = tResult.%Get("Name")
        ...
        }

Back to your initial question, what is your definition of "sorted by Storage"?

If you need the ($list) position of properties within the global, then your query does not answer your question.
I'm writing this in case other community members read this question/answer.

Enrico Parisi · Jul 1, 2025 go to post

It takes a lot of imagination and fantasy to understand what you need without an example of (pipe delimited) input and (json) output.😉😊

Enrico Parisi · Jul 1, 2025 go to post
	Set json=##class(%DynamicAbstractObject).%FromJSONFile("c:\temp\scott.json")
	Set itemIter=json.items.%GetIterator()
	While itemIter.%GetNext(.key, .item) {
		Set identifiersIter=item.identifiers.%GetIterator()
		While identifiersIter.%GetNext(.key, .identifier) {
			If (identifier.typeDiscriminator="ClassifiedId") && (identifier.type.term."en_US"="Scopus Author ID") {
				Write "pureId: ",identifier.pureId,!
				Write "uri: ",identifier.type.uri,!
				
			}
		}
	}

Output:

pureId: xxxxxxxx
uri: /dk/atira/pure/person/personsources/scopusauthor

P.S.: please note that, as posted, the json sample you provide is invalid.

Enrico Parisi · Jul 1, 2025 go to post

%System/%System/RoutineChange

A process generates a %System/%System/RoutineChange event because a routine has been compiled or deleted. When enabled, this event causes a record to be written to the audit log whenever a routine or class is compiled. The Description field of the audit record includes the database directory where the modification took place, what routine or class was modified, and the word “Deleted” if the routine was deleted.

This Audit Event is available in IRIS, I have no idea if was available back in 2018.

Enrico Parisi · Jun 30, 2025 go to post

Yes, pretty sure, that is what is taught in the ISC training courses and what the documentation says:

Description ($PROPERTY)
Property names are case-sensitive

Selecting Fields
Field names in a SELECT statement are not case-sensitive. SqlFieldName names and property names are case-sensitive.

Rules for Class Member Names
Note that the system preserves the case that you use when you define classes, and you must exactly match the case as given in the class definition. However, two class members cannot have names that differ only in case. For example, the identifiers id1 and ID1 are considered identical for purposes of (uniqueness.)

Enrico Parisi · Jun 30, 2025 go to post

You probably have a special use case but, in general, I don't think it makes a lot of sense because:

  1. Class properties ARE Case-sensitive by its nature (contrary to your statement in Ideas portal)
  2. JSON fields ARE Case-sensitive by its nature (as per JSON standard)
Enrico Parisi · Jun 29, 2025 go to post

REST code write the response to the current device.

An idea (to be tested) could be to intercept the calls in early stages, save the current device and change the current device to "some other device" (to be defined), then, after the code has finished, save the output to your log and switch to the "old" current device and write the output.

I think it can be done, it surely have some performance impact but...maybe feasible.

Enrico Parisi · Jun 29, 2025 go to post

It has been very interesting and, as usual, keeping in touch with old fellows as well meeting new ones is the most valuable think of the conference.

And, HEY! only 10 month to the next conference!
Washington DC from 27th to 29th of April!

Please note that next conference will start with the Welcome Reception on Monday (usually Sunday).

I'm looking forward to meet you all in DC! 😊

Enrico Parisi · Jun 29, 2025 go to post

It's not possible, the response is "sent to the browser" (via Web Gateway....) immediately, there is no buffer or anything.

If you want to capture YOUR response, put it in a buffer and when you are done, send it from your buffer "to the browser"

Enrico Parisi · Jun 29, 2025 go to post

Please provide more context and details when you post questions.

To get the request submitted body (if any) you can use the Content property of the %CSP.Request object (i.e. %request).

For the response it's not possible, the response is "sent to the browser" (via Web Gateway....) immediately, there is no buffer or anything.

If you want to capture YOUR response, put it in a buffer and when you are done, send it from your buffer "to the browser"