Robert Cemper · May 1, 2023 go to post

Permission points to some missing user privileges
start your container in foreground   (no -d switch) to see the full log  with details

Robert Cemper · Apr 19, 2023 go to post

we need to handle 2 types of line terminators. $C(13,10) and $C(10)
+ BASE64 holds only printable characters, $C(13) is a NONO in Base64.
So:
if you always use $c(10) as line terminator 
then set ln=$TRANSLATE(ln,$c(13))  will remove also a leftover $C(13) if existing
or just do nothing.

Robert Cemper · Apr 17, 2023 go to post

right! Just the stating numeric is important

i will elaborate on the background of objects

Robert Cemper · Apr 17, 2023 go to post

It is dating back to the very early days of Caché. Even before my time @ ISC
(my guess >25 years)  There was a lot of $Z* stuff e.g. $ZU(..)  
That was not meant to be used for applications.
Just for internal use in system utilities. With no public Docs.
Some became public over time, mostly renamed,  and were documented.
I just found it by examing some related system functions.

Robert Cemper · Apr 16, 2023 go to post

MUCH more simple and shorter
 

kill
set a=##class(Sample.Person).%OpenId(2)
set b=##class(Sample.Person).%OpenId(12)
set c=##class(Sample.Person).%OpenId(111)

set obj=$zobjref("2@Sample.Person")

;; BINGO

zw
 
a=<OBJECT REFERENCE>[1@Sample.Person]
b=<OBJECT REFERENCE>[2@Sample.Person]
c=<OBJECT REFERENCE>[3@Sample.Employee]
obj=<OBJECT REFERENCE>[2@Sample.Person]
Robert Cemper · Apr 16, 2023 go to post

there was some GOLF work  to do

set o="" for  set o=$zobjnext(o) quit:(o="")||($p(o,"?")=x)

Robert Cemper · Apr 16, 2023 go to post

it is possible. but an OREF is always a LOCAL reference !
see this example
 

SAM>kill
SAM>set a=##class(Sample.Person).%OpenId(2)
SAM>set b=##class(Sample.Person).%OpenId(12)
SAM>set c=##class(Sample.Person).%OpenId(111)
 
SAM>set x="3@Sample.Person"   ;what we look for
SAM>set o=""                  ;this will be our OREF  
SAM>zw
a=<OBJECT REFERENCE>[4@Sample.Person]
b=<OBJECT REFERENCE>[3@Sample.Person]
c=<OBJECT REFERENCE>[2@Sample.Employee]
o=""
x="3@Sample.Person"
SAM>;; now we convert our String x to OREF o
SAM>for  set o=$zobjnext(o) quit:(o="")||($p(o,"?")=x)
 
SAM>zw   ;; we did it
a=<OBJECT REFERENCE>[4@Sample.Person]
b=<OBJECT REFERENCE>[3@Sample.Person]
c=<OBJECT REFERENCE>[2@Sample.Employee]
o=<OBJECT REFERENCE>[3@Sample.Person]
x="3@Sample.Person"
SAM>

The key-oneliner:
for  set o=$zobjnext(o) quit:(o="")||($p(o,"?")=x)

Robert Cemper · Apr 16, 2023 go to post

I'll think it over. I have some dirty ideas. need to check it
it's kind of useful golf for me.

Robert Cemper · Apr 16, 2023 go to post

you just can copy an already existing reference  SET rerf=a from the example above


to show all open objects:
Do $System.OBJ.ShowObjects()
Oref      Class Name                    Ref Count
----      ----------                    ---------
1         Sample.Person                 1
2         Sample.Person                 1
3         Sample.Employee               1
4         Sample.Company                1

 

OR

Do $System.OBJ.ShowObjects("/detail=1")
Oref      Class Name                    Ref Count
----      ----------                    ---------
1         Sample.Person                 1
+----------------- general information ---------------
|      oref value: 1
|      class name: Sample.Person
|           %%OID: $lb("2","Sample.Person")
| reference count: 1
+----------------- attribute values ------------------
|       %Concurrency = 1  <Set>
|                DOB = 32225
|               Name = "Ubertini,Brian S."
|                SSN = "231-12-5250"
+----------------- swizzled references ---------------
|   i%FavoriteColors = ""  <Set>
|   r%FavoriteColors = ""  <Set>
|             i%Home = $lb("9177 First Court","Bensonhurst","SC",42658)  <Set>
|             r%Home = ""  <Set>
|           i%Office = $lb("260 First Place","Larchmont","NV",99593)  <Set>
|           r%Office = ""  <Set>
|           i%Spouse = ""
|           r%Spouse = ""
+--------------- calculated references ---------------
|                Age   <Get>
+-----------------------------------------------------
 
2         Sample.Person                 1
+----------------- general information ---------------
|      oref value: 2
|      class name: Sample.Person
|           %%OID: $lb("12","Sample.Person")
| reference count: 1
+----------------- attribute values ------------------
|       %Concurrency = 1  <Set>
|                DOB = 33423
|               Name = "Waal,Jeff V."
|                SSN = "137-61-1656"
+----------------- swizzled references ---------------
|   i%FavoriteColors = ""  <Set>
|   r%FavoriteColors = ""  <Set>
|             i%Home = $lb("3872 Washington Place","Newton","NJ",80886)  <Set>
|             r%Home = ""  <Set>
|           i%Office = $lb("4339 Second Drive","Albany","PA",79202)  <Set>
|           r%Office = ""  <Set>
|           i%Spouse = ""
|           r%Spouse = ""
+--------------- calculated references ---------------
|                Age   <Get>
+-----------------------------------------------------
 
3         Sample.Employee               1
+----------------- general information ---------------
|      oref value: 3
|      class name: Sample.Employee
|           %%OID: $lb("111","Sample.Employee")
| reference count: 1
+----------------- attribute values ------------------
|       %Concurrency = 1  <Set>
|                DOB = 50109
|               Name = "Yezek,Chelsea F."
|                SSN = "227-72-8394"
|             Salary = 69426
|              Title = "Executive WebMaster"
+----------------- swizzled references ---------------
|          i%Company = 2  <Set>
|          r%Company = ""  <Set>
|   i%FavoriteColors = ""
|i%FavoriteColors(1) = "Blue"
|i%FavoriteColors(2) = "Yellow"
|   r%FavoriteColors = ""  <Set>
|             i%Home = $lb("7573 Main Drive","Bensonhurst","MA",97453)  <Set>
|             r%Home = ""  <Set>
|            i%Notes = ""  <Set>
|            r%Notes = ""  <Set>
|           i%Office = $lb("7403 Oak Place","Vail","NH",46047)  <Set>
|           r%Office = ""  <Set>
|          i%Picture = ""  <Set>
|          r%Picture = ""  <Set>
|           i%Spouse = 89
|           r%Spouse = ""
+--------------- calculated references ---------------
|                Age   <Get>
+-----------------------------------------------------
4         Sample.Company                1
+----------------- general information ---------------
|      oref value: 4
|      class name: Sample.Company
|           %%OID: $lb("9","Sample.Company")
| reference count: 1
+----------------- attribute values ------------------
|       %Concurrency = 1  <Set>
|            Mission = "Leaders in dynamic nano-application development instruments for the desktop."
|               Name = "BioDyne LLC."
|            Revenue = 928565856
|              TaxID = "X6668"
+----------------- swizzled references ---------------
|        i%Employees = $lb("Sample.Employee","Company",4,"many",1,1)  <Set>
|        r%Employees = ""  <Set>
+-----------------------------------------------------
  

Then you can use %%OID to generate your own OREF

like set ref=##class(%Persistent).%Open($lb("9","Sample.Company"))
It's not really comfortable
 

Robert Cemper · Apr 16, 2023 go to post

Grazie @Luca Ravazzolo !
You hit the point: 
 could create security vulnerability  
my intention was to see the license capacity used for this type of service

Robert Cemper · Apr 16, 2023 go to post

@ is just a separator
while n is just an internal sequence number within your partition
see this example

SAMPLES>s a=##class(Sample.Person).%OpenId(2)
SAMPLES>s b=##class(Sample.Person).%OpenId(12)
SAMPLES>s c=##class(Sample.Employee).%OpenId(111)
SAMPLES>s d=##class(Sample.Company).%OpenId(9)
 
SAMPLES>zw
 
a=<OBJECT REFERENCE>[1@Sample.Person]
b=<OBJECT REFERENCE>[2@Sample.Person]
c=<OBJECT REFERENCE>[3@Sample.Employee]
d=<OBJECT REFERENCE>[4@Sample.Company]
SAMPLES>
Robert Cemper · Apr 16, 2023 go to post

I try to test contributions to the contest
but IRIS Cloud SQL just shows Deployment Pending
for HOURS !!
And no contact or mail to report this breakdown
It is really disappointing!
 

Robert Cemper · Apr 14, 2023 go to post

I googled "JSON max property size" and found

So whoever is the recipient, there will be troubles with larger properties
I'd look for something to chop it into smaller pieces. (elephant approach)

Robert Cemper · Apr 12, 2023 go to post

with studio, I open 1 for each namespace and then drag and drop it from 1 NS to the other
works single or multiple
not so useful for 300.  ns %ALL looks more promising

Robert Cemper · Apr 10, 2023 go to post

 other SQL tools. 

confirmed: 
I used ODBC + SQLGateway for access and operation from local IRIS
works perfectly.

Robert Cemper · Apr 10, 2023 go to post

read docu

• classmethod CompileList(ByRef list As %String = "", qspec As %String = "", ByRef errorlog As %String, ByRef updatedlist As %String) as %Status

Compile a list of items specified in 'list' and separated by commas, or an array list("item.MAC")="". You can also use ? or * wild cards and if you wish to exclude items pass ' before the item name which also supports wild card, e.g. "User.*.cls,'User.T*.cls". Each item on the list is sufixed by the type of item it is so to compile a class and a routine you could specify 'class.cls,routine.mac' The order of compilation is INT, CLS, MAC, CSR, CSP.
qspec is a list of flags or qualifiers which can be displayed with 'Do $system.OBJ.ShowQualifiers()' and 'Do $system.OBJ.ShowFlags()'. Note that while /mapped=0 qualifier applies to the pattern passed in by only searching the default routine database, however any compile is done in the current namespace. So it is possible a routine/class found with /mapped=0 may not be visible in the current namespace or may be a different version if there are complicated package mappings.

Robert Cemper · Apr 9, 2023 go to post

ACCOUNT SOLVED: with a new account name. may be a typo in the e-mail
THOUGH OPEN:   where is the admin contact

Robert Cemper · Apr 9, 2023 go to post

I tried to create an account on https://portal.sql-contest.isccloud.io/account/login

Just the welcome mail never arrived.
the page proposed to contact admin in this case   

Note: If you do not receive an email, it might be that the username or email address entered is not registered for an account. If you are unable to remember the username or email address you used to sign up for an account, please contact your system administrator for assistance.

No further notice. Who is that system admin? Which mail ?
Not so impressive
 

Robert Cemper · Apr 9, 2023 go to post

from docs:
If you are using a UNIX® or Linux system, you can provide a list of alias definitions which the Terminal will set automatically at the start of every session. Define these aliases (one per line) in a file named .iris_init in the home directory.
never tried this. I rarely work on *X

Robert Cemper · Apr 8, 2023 go to post
USER>:?
 :<number>    Recall command # <number>
 :?           Display help
 :py          Do $system.Python.Shell()
 :mdx         Do $system.DeepSee.Shell()
 :sql         Do $system.SQL.Shell()
 :tsql        Do $system.SQL.TSQLShell()
 :alias       Create/display aliases
 :clear       Clear history buffer
 :history     Display command history
 :unalias     Remove aliases

HTH

Robert Cemper · Apr 8, 2023 go to post

Thanks a lot!
So team working in the actual contest has to be organized differently