Robert Cemper · Jun 23, 2024 go to post

not really since as you know there is always ObjectScript under most SQL Functions.
BUT as mentioned: I found TO_VECTOR()  the most comfortable one.
without SQL it might look like this:  or worse

;; assume a $LB structure of %Integer as input
set intlist=$LB(...........)
;; fill vector
set maxvecsize=22    ; just an assumption
 for i=1:1:maxvecsize {
  set val=$li(intlist,i)
  if '(val\1=val)  continue
  set $vector(vec,i,"int")=val
 }
write $isvector(vec)
write vec
zwrite vec

I think the difference is obvious.
Servus

Robert Cemper · Jun 23, 2024 go to post

Hallo @Ditmar Tybussek  lange nix mehr gehört von dir !

See my article Using VECTORs in ObjectScript.
related to your code: 
Simple Set vector=.... doesn't work
it is       Set $VECTOR(vectorname,  pos,type)   very clear example
and type can never be changed 
position is less sensitive. 

In your case using SQL functíon TO_VECTOR() might be quite comfortable
as it does all the checks for you under cover.
i also used all-MiniLM-L6-v2 (as PY method) starting from  label sc3 in the example
in my OEX package Vector-inside-IRIS
LG. aus Wien
 

Robert Cemper · Jun 21, 2024 go to post

THe 3rd AI proposal looked better -  Just looked!

  • it refers to an Java based installation for DBeaver.  (ok for this)
  • the fact that Apache Superset  is straight and only Py based was totally ignored

so the advice was useless!  

Robert Cemper · Jun 21, 2024 go to post

a personal hint:

  • be as precise in your question as possible.

example (with shortened replies)
- how to run IRIS ODBC client install in a fresh container ?   >> use IRIS container as base  😕
- how to run IRIS ODBC client install in a NOT IRIS based container ? >> No idea, ask developer community 🤒
- how to connect to Cloud SQL from Apache Superset osing ODBC and TLS/SSL ?
>>> what I really has in mind.  (found it by accident)  
Reply is quite detailed It's the example from the announcement above  I'll try

Robert Cemper · Jun 20, 2024 go to post

minor simplification:
inserting my 77 char server address into the15 char Server-IP of Windows DSN caused me repeating problems.
k8s-45090081-a9b5a485-233c4dadf5-46cc35674de4c26d.elb.us-east-1.amazonaws.com

A real pain to verify
So I translated it to a real IP address using nslookup

SAMPLES>$nslookup k8s-45090081-a9b5a485-233c4dadf5-46cc35674de4c26d.elb.us-east-1.amazonaws.com
;  . . . .
Name:    k8s-45090081-a9b5a485-233c4dadf5-46cc35674de4c26d.elb.us-east-1.amazonaws.com
Address:  3.215.248.100

3.215.248.100
was working excellent and easy to check and to work with
 

Robert Cemper · Jun 18, 2024 go to post

in XML the construct with ![CDATA[  gets used if the string contains any
character that may cause conflicts in XML parsing:
In your case it is the & (Ampersand)  that triggers the different use.

THIS causes the ![CDATA[ in a string field!
.

Robert Cemper · Jun 16, 2024 go to post

$ZTRAP is pretty much the same idea as ONERROR that you find in
BASIC, VB, VBA, JavaScript  and some other old languages.  
a left over from M
 

Robert Cemper · Jun 14, 2024 go to post

in docker-compose.yml

change

command: --key /dur/key/iris.key

to

command: --key /dur/key/iris.key -b "sleep 2000" 

so the container starts but IRIS is not started
2000 is just some hang for your investigation (2000 sec)

in a 2nd session run

docker-compose exec iris bash

and start IRIS manually to see all details of what might be wrong
 

Robert Cemper · Jun 12, 2024 go to post

I share your suspicion on reserved Verbs.

You may try 

m.Name as "myName"

Or even

m.Name as "Name"

Just a guess from the  hip

Robert Cemper · Jun 7, 2024 go to post

once you know what namespace you are looking at you may list available schemata by
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA

which returns 750  rows for namespace HSCUSTOM
 

Robert Cemper · Jun 6, 2024 go to post

2d  indicates that you are 2 stack levels down from Command prompt last entered by do
enter QUIT to return  to top  
do ^%STACK may display your way  down to your actual point 

Robert Cemper · Jun 5, 2024 go to post

Wrap your SELECT in an Outer  SELECT LIST(...inner select ...)
try:

SELECT LIST(DIAGNOSE) FROM (
 SELECT MRDIA_.....->MRCID....
 FROM ......
 WHERE .....
 ORDER BY ......
)
Robert Cemper · Jun 4, 2024 go to post

What you describe is indeed named Global:
and the syntax could be  ^ehr.IP to follow your question.
It is visible over the whole namespace.
If you use ^%ehr.IP the % makes it available over all namespaces of your installation.

Set ^%ehr.IP="whatever you need" is creating it   
 

Robert Cemper · Jun 4, 2024 go to post

@Enrico Parisi :  I fully support your point!
Global mapping - in any form - is the path for CONTROLLED managed growth.
So I wonder about the intention of the "continuation". 

Robert Cemper · Jun 4, 2024 go to post

A quite interesting feature.
Did you take a look on how backup management is affected / involved by this design ? 
I just fail to imagine how to keep all this in synch.
e.g. if spread over several drives:
Are they backed up in total or in volume junks ?

Robert Cemper · Jun 2, 2024 go to post

Sorry: my typo:   zipcode.csp  generates  csp.zipcode.CLS

<script language="cache" method="AlertUser">  
this generates the method.
But your CSP page works with HTML + js in your Browser
to the Browser that interprets and call just as JS.

BTW: old CSP pages
YES, this hasn't changed since it was fresh ~22 years ago (my 1st training docu @ISC)
and NO browser ever accepted ObjectScript as scripting language.
the <script language="cache"  ...> tag is just a compiler directive and never reaches  the browser.

Robert Cemper · Jun 1, 2024 go to post

Principal limit: HTML just knows about JavaScript
JavaScript is executing an XHTML call to your Ensemble carrying along all required credentials.
e.g. sessionid,  encryption, cookies, ....
In your namespace SAMPLES zipcode.cls ia a detailed example,
your call looks like this;

#server(..validateZipCode(zipcode))#

But the generated code is this:

("cspHttpServerMethod")_"('"_(..Encrypt($listbuild($classname()_".validateZipCode"))_$select(%session.UseSessionCookie'=2:"&CSPCHD="_%session.CSPSessionCookie,1:""))_"',zipcode)",!

HTML has no idea about all this
 

Robert Cemper · May 30, 2024 go to post

OOUHH. Weblink had end of life more than 20 years ago
It was the unloved predecessor of CSP. 

Robert Cemper · May 27, 2024 go to post

Win authentication is something
IRIS authentication is something else.
They rarely match each other.

Robert Cemper · May 24, 2024 go to post

Yeah,
I build my review list when it is "full" and the reviews are sent for publishing.

 
yours was the last. But censoring and approval by OEX Admin vary between hours and days.

Robert Cemper · May 20, 2024 go to post

the date format is most suspicious to me.
in SMP you can set it to
- Logical Mode  >>>  66453  like +$horolog
- Display Mode  >>> 2024/03/25    as you did. It is depending on default display settings.
- ODBC Mode    >>>  2024-03-25

Robert Cemper · May 16, 2024 go to post

more drastic: KILL  does an ObjectScript Kill on all related Globals. Quick and Fast
DELETE loops on subscripts and mimics a SQL DELETE row by row and has definitely more overhead
 

Robert Cemper · May 13, 2024 go to post

Being happy married for 55 years I find the subject of such a calculation just disgusting.

I just would refuse to marry a partner calculating impact of the wedding costs on his retirement.
I'd rather prefer one that attempts to raise his income by working more and harder
and not thinks of forecasting retirement before the wedding.

Robert Cemper · May 13, 2024 go to post

it's best described in docs

classmethod %DeleteExtent(concurrency As %Integer = -1, ByRef deletecount, ByRef instancecount, pInitializeExtent As %Integer = 1, Output errorLog As %Status) as %Status

Delete all instances of this class from its extent. On exit instancecount contains the original number of instances while deletecount contains the number of instances actually deleted.

Internally, %DeleteExtent() iterates over the set of instances in the collection and invokes the %Delete() method.
Refer to Object Concurrency Options for more details on the optional concurrency argument.
The option pInitializeExtent argument allows the user to override the default behavior of calling %KillExtent() when all instances are successfully deleted. %KillExtent() is called by default when the extent is empty so that empty globals can be killed. If %KillExtent() is not called then some empty globals can remain as well as the ID counter if it exists. The default value for pInitializeExtent is 1. Unless the caller specifies a false value for pInitializeExtent the globals used by the extent will be killed. If the process' GlobalKillDisabled flag is enabled and not the default of false the process' GlobalKillDisabled flag will be changed temporarily to false to allow the operation to complete without a possible error. In some cases, the globals used by the extent are not used exclusively by the extent. In those cases it is possible that some globals will still be defined even when pInitializeExtent is true. By default this call to %KillExtent() will not delete default stream storage global, but if you pass '2' in pInitializeExtent and if the entire extent was deleted we will call %KillExtent passing the 'killstreams' flag to ask it to remove kill the default storage global.

Returns a %Status value indicating success or failure.

classmethod %KillExtent(pDirect As %Integer = 1, killstreams As %Boolean = 0) as %Status

%KillExtent performs a physical kill of the extent. No constraints are enforced. This method should not be used in place of %DeleteExtent. Only physical storage occupied by this extent will be killed. If this extent is a subextent of another class then no data is killed. Indexes that originate with this extent will be killed. %KillExtent will be called on any subextents and on any child extents (the extent of the type class of a relationship whose cardinality = children is a 'child' extent) of this extent.
This method is not meant for production applications. It is meant to be a development utility to quickly clear extent physical data. Also this will not remove stream data associated with these instances.
If killstreams is true (default is false) it will also kill the default stream storage global.