Robert Cemper · Dec 28, 2025 go to post

What you describe is a Basic Class Query. Slightly advanced to embedded SQL
BUT inside a Custom Class Query 
https://docs.intersystems.com/supplychain20251/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_queries_userqueries

You have Exec, and Fetch methods. 
They can mask whatever you like as long as you feed the formal requirements.
Define the following class methods in the same class:

  • querynameExecute — This method must perform any one-time setup.
  • querynameFetch — This method must return a row of the result set; each subsequent call returns the next row.
  • querynameClose — This method must perform any cleanup operations.

Where queryname is the name of the query.

Each of these methods accepts an argument (qHandle), which is passed by reference. You can use this argument to pass information among these methods.

So you can mask your DELETE (implemented by embedded SQL) or any other way
It's not the standard way, but nothing prevents you as long as the formalism is served.

Robert Cemper · Dec 21, 2025 go to post

You may reduce the number of  XDBC connects by 50%
#1)
Create an SQL function for the update

CREATE FUNCTION done_func(integer,varchar) RETURNS integer
    AS 'update my_postgres_table set status=$2 where id=$1'
    LANGUAGE SQL
    IMMUTABLE
    RETURNS NULL ON NULL INPUT
    RETURN 1 ;

#2)
run your SELECT, adding the function in your WHERE clause which is always TRUE
 

select * from my_postgres_table limit 10000 Where 1 = done_Func(id,'S')	

You should check the exact syntax for PostgreSQL
I just composed it guided by
https://www.postgresql.org/docs/current/sql-createfunction.html 
 

Robert Cemper · Dec 20, 2025 go to post

@Evgeny Shvarov  you  pointed me to the correct place
Did some checks using the most native approach.

 set sc=$system.OBJ.Import(file, . . . . .

Removing the Export Tag from the 2nd line in the 'hidden XML'  names DFI

<Export generator="IRIS" version="26" zv="IRIS for Windows (x86-64) 2024.3 (Build 217U)" ts="2025-09-21 16:53:05">

ends with unknown flle type !!!
After re-insert of that Export Tag all import works perfect


​​​​​​might be necessary to teach VScode to add that tag

Robert Cemper · Dec 19, 2025 go to post

Interesting observations.

My export came directly out of STUDIO.
InterSystems Studio Client  2024.1.0 Build 262
Server IRIS for Windows (x86-64) 2025.1 (Build 230.2U)
Simple right click + export ..... (+ Windows Directory).
Just straight, no flags, no anything extra

Robert Cemper · Dec 19, 2025 go to post

to me *.PKG is imported by $system.OBJ.LoadDir(...) whaever the file name is
one file contained a %ZX.* class.
That one required manual compilation as it didn't match the ZX.* pack
a real class, no DFI

Robert Cemper · Dec 18, 2025 go to post

Updated init + load + build of cubes
2025....latest had a minor surprise in init

Robert Cemper · Dec 17, 2025 go to post

here is it  - work in progress  ZPM load DFI
Analytics need manual enable, cube to build still manually
BUT:
all DFI are all there (checked with Studio) and working immedeately

Robert Cemper · Dec 17, 2025 go to post
Just can confirm that it works for me with a correct structure
.../src
       /DFI
           /first.DFI
           /next.DFI
           /andSoOn.DFI

And in module.xml the relevant part looks like this

      <Packaging>module</Packaging>
      <SourcesRoot>src</SourcesRoot>
      <Resource Name="DFI.PKG"/>

BINGO

Robert Cemper · Dec 16, 2025 go to post

No idea about zpm.
Just a guess: if not listed or in a PKG it won't be touched
BUT this loads and compiles it 

set tSC=$system.OBJ.Import(fileref,"ck")
Robert Cemper · Dec 12, 2025 go to post

1️⃣ When you joined the Developer Community and how you first discovered it.
I joined in 2017, and it was by accident.
Looking for help to work around a problem caused by "academic ignorance".
    Some linguistic university experts for German language up in sky, far from reality, decided:
    "S_sharp"  ß (a lowercase only character for hundreds of years)
    will be also an uppercase character from now on.
No one cared about the impact to sort orders, code conversions, pattern match. regular expressions, ...
My cry for help:
German collation of ß in upper and lower case
In DC I got help and advice within a few hours on how to escape
until a new release or bug fix might have an official solution.
Exploring DC was another big surprise for me.
It was rather similar to a proposal I had done in 2005
and  I was massively pushed back by service managers at that time.
DC covered and extended my basic intentions
I fell in love immediately and still feel like a proud grandfather
observing his successful growing grandchildren.
2️⃣ A meaningful moment or story from your personal journey here.
It was somewhat longer than a moment, though just a single trigger.
The challenge was to start working with Docker in some OEX package
Before that, I was rather resistant to publishing complex examples.
The effort to describe a complex setup and not having control
over implementation was rather significant.
With Docker I had a reproducible environment and no traces or remaining
junk after termination.
Another extra was learning to produce videos of my examples for contests.
I never did it before and still don't have any private videos on Youtube.
3️⃣ An article, question, or discussion you consider especially valuable
There are two recent articles that moved me most:
The Wait Is Over: Welcome GoLang Support for InterSystems IRIS + followers
and
Reducing the Footprint of the Docker image of IRIS Community Edition
It's 2 times the same authoring engineer, and what he presents matches my
personal understanding of what quality software system engineering is like:
- precise and detailed analysis
- detailed and fully through tested code before release
- 2 top-class projects

My personal sorrow:
There are groups that may force out the results just because of the
"NOT INVENTED HERE" mentality in some areas.
I speak based on personal experience after being attacked following
a backport of %JSON classes to Caché some years ago.

Robert Cemper · Dec 11, 2025 go to post

You got the point.  Before means "before this century" 
before CSP / WEBstack, .. were introduced 
There were INT routines in %SYS with lots of $ZU() and $VIEW(). Device 63 was quite busy. 
Most are unknown today. But some are still around and still work.  
It's not as rigid as GlobalDB was / (is?)  but has some similarity.

Robert Cemper · Dec 10, 2025 go to post

I'm delighted !
I publish my OEX review also here, just in case it might be "delayed" by OEX censors.

  • An excellent experience 7*
  • The image started so fast that I thought there was a mistake
  • Just ~400Kb instead of the usual 2.5 to 8 GB
  • Everything is there that you may need
    • an editor? there is x ^%
      • as in times before Studio
    • do ^JOBSTAT
      • as in times before CSP and SMP
    • run all classic command-line utilities
  • To me, a time travel back to when I started with InterSystems Products
  • Thank you for this birthday gift on the exact date.

Time travel is possible!!

Robert Cemper · Dec 10, 2025 go to post

BIG CONGRATULATIONS!  
And many thanks to the excellent and engaged team that runs and manages all parts of the Community!

💐🌸🌷🏵🌺🌻🥀

Robert Cemper · Dec 4, 2025 go to post

Late suggestion:
if you interpret your <entry> as a piece separator in your XML string, you may apply this trick

;; asssuming your input is in xmltext
;; get the 4th entry
set entry4=$piece($piece(xmltest,"<entry>",4+1),"</entry>")
;;-------^---------------------------------^
Robert Cemper · Dec 4, 2025 go to post

A guess from the hip:

  • import of *.CSP is followed by compiling it to *.CLS,  which is compiled to *.INT
  • import of *.CLS doesn't necessarily trigger a compile
     
Robert Cemper · Dec 2, 2025 go to post

* It's just great to see  this  excellent example
* still in maintenance and updated
* It's my personal favourite 
* working, refreshed and kept in shape over the years.

I wish I could see more of those packages in OEX

Muchas Gracias Salva ! 🤝

Robert Cemper · Nov 26, 2025 go to post

This reminds me of the ages-old service rule

  1.  The customer is always right
  2.  If it is not right, then #1. applies automatically

😁

Robert Cemper · Nov 26, 2025 go to post

I composed a small example as DV.MAC  with  36 conditions. and  -as expected- hit no limit.
 

DV ;
	for i=1:1:50 {
		set x=$r(40)
		set col=$SELECT(
 			x=1:"col_1",
			x=2:"col_2",
			x=3:"col_3",
			x=4:"col_4",
			x=5:"col_5",
			x=6:"col_6",
			x=7:"col_7",
			x=8:"col_8",
			x=9:"col_9",
			x=10:"col_10",
			x=11:"col_11",
			x=12:"col_12",
			x=13:"col_13",
			x=14:"col_14",
			x=15:"col_15",
			x=16:"col_16",
			x=17:"col_17",
			x=18:"col_18",
			x=19:"col_19",
			x=20:"col_20",
			x=21:"col_21",
			x=22:"col_22",
			x=23:"col_23",
			x=24:"col_24",
			x=25:"col_25",
			x=26:"col_26",
			x=27:"col_27",
			x=28:"col_28",
			x=29:"col_29",
			x=30:"col_30",
			x=31:"col_31",
			x=32:"col_32",
			x=33:"col_33",
			x=34:"col_34",
			x=35:"col_35",
			1:"more")
		write i,?4,x,?10,col,!
	}		
 

result:

. . . . 
23  32    col_32
24  39    more
25  39    more
26  31    col_31
27  10    col_10
28  36    more
29  24    col_24
30  21    col_21
31  2     col_2
. . . .
Robert Cemper · Nov 24, 2025 go to post

I met a similar issue.
A new IDEA might be to fix the interface for IDEAS   😉

Robert Cemper · Nov 14, 2025 go to post

While you are in  terminal  $IO="|TRM|:|10468" or similar

from Studio it is  "|TCP|1972|11096"   with  1972 as Superserver port
It's one of the differences

Robert Cemper · Nov 14, 2025 go to post

I fully support your proposal.
I published >700 reviews for the actual 1156 visible packages.
And there are several challenges to be addressed with any new structure.

  • The reviews with stars focus on an actual individual snapshot.
  • Similar to the code or example, they age and may become invalid.
  • Ongoing maintenance by creators can't be expected
  • So a clear separation between actual and maintained packages and those just kept for historical reference could be useful.
  • The decision for maintenance must be left to the creator
    • Example:
    • If some essential function in IRIS is dropped without replacement
    • with no acceptable workaround, I'd move it to the archive
    • I just had to unpublish some packages for this reason 
  • Another category could be packages where ISC takes responsibility.

This isn't a solution, but a step in between to improve the actual situation
I wonder how many of the 1156 packages might move to the archive without maintenance

There is no voting on the numbers added