Robert Cemper · Jul 25, 2024 go to post

Using my previous reply you can do this without need of any custom object:

SAMPLES>read xml
<?xml version="1.0" encoding="UTF-8"?> <session> <session_Id>124364</session_Id> </session>
SAMPLES>set rdr=##class(%XML.Reader).%New()
SAMPLES>do rdr.OpenString(xml)
SAMPLES>zwrite 
 
%SAX=1
%SAX(1)=2
%SAX(1,0)=""
%SAX(1,1)="1" ""
%SAX(1,2)="!>A"
%SAX(1,"N","http://www.w3.org/2001/XMLSchema-instance")=1
%SAX(1,"d")=4
%SAX(1,"d",1)="session"
%SAX(1,"d",2)=" "
%SAX(1,"d",3)="session_Id"
%SAX(1,"d",4)=124364
%SAX(1,"n")=1
%SAX(1,"n",1)="http://www.w3.org/2001/XMLSchema-instance"
%SAX(1,"v")=6
rdr=<OBJECT REFERENCE>[1@%XML.Reader]
xml="<?xml version="1.0" encoding="UTF-8"?> <session> <session_Id>124364</session_Id> </session>"
SAMPLES>
Robert Cemper · Jul 25, 2024 go to post

edited and simpler

  • if this has an XMl header  <?xml version= ...
  • then ##class(%XML.Reader).OpenString(yourxmlstring) will deposit your input in the local aray %SAX()
Robert Cemper · Jul 21, 2024 go to post

%BuildIndices is required if the indexed values are manipulated directly in the Global.
OR if the index definition is changed in Class or By DDL
during use as Object or SQL table it is maintained automatically.

Robert Cemper · Jul 20, 2024 go to post
  • for a NEW created index this is "work in progress" that shouldn't be used until completed.
  • if it's a matter of repair  $SYSTEM.OBJ.ValidateIndices() might be more useful.
    see my article Fix broken index 
Robert Cemper · Jul 19, 2024 go to post

Hi @Ben Spead !
My personal congratulations to see you here!
Working with you and your team on the worldwide HERMES project was one
of my highlights during my time at InterSystems.
It was due to your interpersonal skills to make this team so successful.

It was so special to me to participate and share this experience.
As a Sales Engineer with no local office I often felt "at the outer border of the milky way".
Not lost in space but almost.
But working in your team gave me the feeling of a "technical home".
As Engineer I enjoyed to style and create a product.
Which was more important to me than to consult, advice, and teach how to use some features.

Big THANKS for that!

Robert   

Robert Cemper · Jul 19, 2024 go to post

from class documentation:

You can import files exported in

  • XML format,
  • %RO format,
  • CDL format,
  • UDL format,
  • %GOF,
  • and CSR/CSP files.

You should do an export of one of this types and then see
how this may match your .vm  thing.

Your screenshot is definitely some XML
But it doesn't match any formatting structures or rules required  in IRIS or Caché.

Robert Cemper · Jul 18, 2024 go to post

another hack:

  • create an SQL Procedure in SMP
  • once compiled use Test Feature in SMP to execute it

Example:

CREATE PROCEDURE ANY.NAME()
LANGUAGE OBJECTSCRIPT
{
 ;;;  fill in whatever you want to do
}
Robert Cemper · Jul 16, 2024 go to post

I just gave it a try:

  • an 8-bit DB works with code and globals without problem on a UNICODE  (16bit) installation
  • I didn't try CSP pages
  • in ns %SYS you have a utility ^GBLOCKCOPY converting a 8bit DB to a new 16bit DB  for a DB conversion
Robert Cemper · Jul 16, 2024 go to post

According to docs 

processing 8-bit on a unicode install should be possible

Character Width Setting 

,,,, while a Unicode instance can process both 8-bit and 16-bit data.

It's anyhow a tricky exercise 

Robert Cemper · Jul 15, 2024 go to post
  • in OEX you find 13 matches for SWAGGER already
  • and 6 articles in this forum

simply search

Robert Cemper · Jul 15, 2024 go to post

do LOG^%ETN 
does an actual snapshot and you my examining the actual content at that point of time in SMP

Robert Cemper · Jul 14, 2024 go to post
  • how do you identify 2 cached queries generated at the same time?
  • and if so,  what is the difference ?
Robert Cemper · Jul 13, 2024 go to post

object code is just binary content.
not even debugger can decipher it.
I've never seen a decompiler (like for java)  the last 25 years.

Robert Cemper · Jul 11, 2024 go to post
  1. in SMP >  System Explorer > SQL you place your query and tab SHOW PLAN tells you the best approach with lowest cost
    -
  2.  As any data in IRIS (Caché,...) are stored in Globals B+Tree structure always applies by design.
Robert Cemper · Jul 10, 2024 go to post

Basically every SQL statement whether internal or external is cached for eventual reuse in future
You can find Cached Queries from  SMP > System Explorer > SQL > Cached Query

clicking on one in the list you get the details

Tab SQL Statements shows much more details

Click on SQL Statement Text offers a further drill down into details

Robert Cemper · Jul 10, 2024 go to post

Typical mistakes with ODBC access over Windows DSN

  • ODBC driver old version
  • 32bit driver on 64bit installation or vice-versa
  • not created & tested as System DSN
  • user / password / namespace mismatch 
  • wrong configured TLS/SSL access 
Robert Cemper · Jul 6, 2024 go to post

http://<server>:<port>/csp/......
refers to the private webserver installed and used in past releases

Robert Cemper · Jul 6, 2024 go to post

You probably should ask this in an Oracle forum.
This is definitely not the best place to discuss such idea

Robert Cemper · Jul 6, 2024 go to post

_SYSTEM is just another user name with role %ALL
any other account with the same role can do it as well.
Tying some code to a Username  ignoring the power of roles is an elementary design error. 

Robert Cemper · Jul 6, 2024 go to post

Hi @Otto Medin !
HTTP is basically US ASCII 7bit with some "handcrafted" extensions
- somehow "UTF 7.6" 
🤪 focussing on octets
it works for äöü  but NOT for €  (x20AC)  >>> in URL  %u20AC

for details: https://softwareengineering.stackexchange.com/questions/304419/what-encoding-are-the-http-status-and-header-lines
my hint: Try to avoid it in HTTP headers and stick with 7bit ASCII to be on the save side
browsers are less risk for problems but old applications are

Robert Cemper · Jul 6, 2024 go to post

4 options:

  • map it to namespace %ALL
  • naming it with  % as first character places in %SYS namespace (e.g. ^%MUTHU) 
    • that traditional approach is possible but not recommended
  • naming it ^mtemp.*,  ^CacheTemp*, ^IRIS.Temp* allocates it in db IRISTEMP
  • subscript level mapping allows partial mapping  (e.g. to IRISTEMP)