Robert Cemper · Feb 7, 2024 go to post

for easy reading, not a oneliner yet.
 

new$namespace,host,ipaddr,p
znspace"%SYS"set host=$system.INetInfo.LocalHostName()
set ipaddr=$system.INetInfo.HostNameToAddr(host)
do##class(Config.Startup).Get(.p)
set url="http://"_ipaddr_":"_p("WebServerPort")_"/csp/sys/UtilHome.csp"kill p,host,ipaddr 
quitzw url
Robert Cemper · Feb 5, 2024 go to post

You can map PACKAGE [aka. SQL Schema] to another Namespasce (not a single table)
e.g. Bna.Utils to namespace %ALL or just to a specific namespace
so you have Table and Class  (= the code) available.

If you want to share also DATA  you need to map also  the related Global 

Robert Cemper · Feb 3, 2024 go to post

I met some issues in the past, where I miss any idea of how to check

  • verification of %variables or variables in global scope
  • variables set as 3rd parameter in $QUERY() or $ORDER() -  should be easier to detect.
  • not sure if variables passed ByRef or Output are fixed meanwhile  
Robert Cemper · Feb 3, 2024 go to post

In Windows it's netstat running from CMD as Admin
My preferred option:  netstat -anop TCP  (shortened)

C:\WINDOWS\system32>netstat -anop TCP 
  Aktive Connection
  Proto  Lokal Address          Remote Address         Status         PID
  TCP    0.0.0.0:21             0.0.0.0:0              LISTEN         4924
  TCP    0.0.0.0:80             0.0.0.0:0              LISTEN         4
  TCP    0.0.0.0:135            0.0.0.0:0              LISTEN         1384
  TCP    0.0.0.0:445            0.0.0.0:0              LISTEN         4
  TCP    0.0.0.0:623            0.0.0.0:0              LISTEN         10684
  TCP    0.0.0.0:1972           0.0.0.0:0              LISTEN         8004
  TCP    0.0.0.0:2179           0.0.0.0:0              LISTEN         2348
  TCP    0.0.0.0:16992          0.0.0.0:0              LISTEN         10684
  TCP    0.0.0.0:41773          0.0.0.0:0              LISTEN         11408
  TCP    0.0.0.0:42773          0.0.0.0:0              LISTEN         11408
  TCP    0.0.0.0:49664          0.0.0.0:0              LISTEN         848
  TCP    0.0.0.0:49665          0.0.0.0:0              LISTEN         652
  TCP    0.0.0.0:52493          0.0.0.0:0              LISTEN         11408
  TCP    0.0.0.0:52773          0.0.0.0:0              LISTEN         9476
  TCP    0.0.0.0:58091          0.0.0.0:0              LISTEN         5156
  TCP    0.0.0.0:58816          0.0.0.0:0              LISTEN         964
  TCP    127.0.0.1:2375         0.0.0.0:0              LISTEN         11408
  TCP    127.0.0.1:5354         0.0.0.0:0              LISTEN         4852
  TCP    127.0.0.1:5905         127.0.0.1:58786        ESTABLISHED    5156
  TCP    127.0.0.1:5905         127.0.0.1:58787        ESTABLISHED    5156
  TCP    127.0.0.1:5905         127.0.0.1:58788        ESTABLISHED    5156

In Ubuntu (container) I tried  netstat -at4p for a similar result while connected to SMP 

:~/dev$ netstat -at4p
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.11:37033        0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:52773           0.0.0.0:*               LISTEN      476/httpd
tcp        0      0 0.0.0.0:1972            0.0.0.0:*               LISTEN      453/irisdb
tcp        0      0 localhost:1972          localhost:44998         ESTABLISHED 1745/irisdb
tcp        0      0 localhost:44998         localhost:1972          ESTABLISHED 479/httpd
tcp        0      0 localhost:1972          localhost:45014         ESTABLISHED 1746/irisdb
tcp        0      0 localhost:1972          localhost:44992         ESTABLISHED 1744/irisdb
tcp        0      0 localhost:44984         localhost:1972          ESTABLISHED 479/httpd
tcp        0      0 localhost:1972          localhost:44954         ESTABLISHED 1741/irisdb
tcp        0      0 localhost:44992         localhost:1972          ESTABLISHED 479/httpd
tcp        0      0 localhost:44968         localhost:1972          ESTABLISHED 479/httpd
tcp        0      0 localhost:45014         localhost:1972          ESTABLISHED 479/httpd
tcp        0      0 localhost:44954         localhost:1972          ESTABLISHED 479/httpd
tcp        0      0 localhost:1972          localhost:44984         ESTABLISHED 1743/irisdb
tcp        0      0 localhost:1972          localhost:44968         ESTABLISHED 1742/irisdb
:~/dev$

might look similar in other *UX

Robert Cemper · Jan 24, 2024 go to post

$storage refers to the partition which holds only pointers into global buffers.
while the content of the global goes only to global buffers and
consumes no permanent space in your partition. 

Robert Cemper · Jan 23, 2024 go to post
  1. find the expected format in test
  2. where do get the date from ?
    if it's from IRIS functions $ZDATE() or $ZDATEH() convert it in the required format
Robert Cemper · Jan 23, 2024 go to post

"TO_DATE('12/15/2023','MM/DD/YYYY')"  is an SQL function call not a value
could you try straight ODBC format "2023-12-15"  ?

Converting and using $H date format might be a different option

Robert Cemper · Jan 23, 2024 go to post

eventually terminal in *UX may end just with $c(10)
could you try to append some blank + semicolon ?

:alias enablebi do EnableDeepSee^%SYS.cspServer("/csp/"_$zcvt($namespace,"L")) ;

You seem to lose the last character

Robert Cemper · Jan 23, 2024 go to post

I agree with @Brett Saviano:
$$$  ...refers to some #define ...  and is a compiler directive

I tried:

USER>:alias wi write"/csp/"_$zcvt($namespace,"L")
 
USER>:wi
write"/csp/"_$zcvt($namespace,"L")
/csp/user
USER>:alias wi1 write"/csp/"_$$$LOWER($namespace)
 
USER>:wi1
write"/csp/"_$$$LOWER($namespace)
 
WRITE"/csp/"_$$$LOWER($namespace)
^
<SYNTAX>
USER>
Robert Cemper · Jan 22, 2024 go to post
  • my personal preference goes to %GSIZE.
    The best match between CONSUMED and ALLOCATED size is found
    if your Global is "filled" total sequentially by a $Q() loop.
    And even then with a big string, you may force unexpected block splits.
    The situation changes if you fill your globals by subscript levels.
    This may cause a cascade of block splits and result  in rater unattractive packing percentages
     
  • ALLOCATED Size by Subscript might be of interest for an individual Subscript.
    Though adding them up doesn't reflect the total size
    It's like cutting a cake to 12 people and then counting the heads that had some cake.
     
  • to reduce the space consumption of your globals I rather suggest to  use
    ##Class(%GlobalEdit).GloabelCompact()  to eliminate the effects of random inserts
    and growth inside a global tree.
      
Robert Cemper · Jan 19, 2024 go to post

from my local Class docs:

GetGlobalSizeBySubscript
This method will return the size of a global based on the number of database blocks the global resides in.

so you get blocks * blocksize ===> ALLOCATED size
Depending on Packing as %GSIZE shows   The difference might be significant

Summary by Subscript will most likely show higher values as a pointer block
or even a data block (eg. with 8kb) may contain more than a single subscript
depending on the Global structure.
Take the default top subscript  (aka. IDKEY) for Caché classes (Integer, >0) as an example ​​

Robert Cemper · Jan 19, 2024 go to post

tSC is mostly a %Status object
with enough experience Zwrite tells you all you want and need to know
$SYSTEM.Status.DisplayError(tSC) is easier read.  a matter of comfort

Robert Cemper · Jan 19, 2024 go to post

ChatGPT is just stupid and has no idea of IRIS / Caché
A TABLE will by default never have the same name as the GLOBAL that stores the content
>>>> HS.IHEX.RecordHistory and the global ^HS.IHEX.RecordHistory  <<<<<
HS.IHEX.RecordHistory is definitely not a handcrafted table.

Robert Cemper · Jan 19, 2024 go to post

Thanks for the recognitions!  😀🖐
It's a very strong motivation to be productive.
Often to distract from personal struggles.
Many thanks to the DX+OEX+GM team for their help! 👏 🌸🌼🌹🌻💐

Robert Cemper · Jan 19, 2024 go to post

Hi @Daniel Aguilar 
for every DB you have a default collation that is tied to DB:
you can see it in SMP  System > Configuration > Local Databases > Database Properties

this is the standard.
If the collation of your source server is Spanish, German, Fench, , .... 
the DB may have used this national collation as default.
On your target serve you need to have this collation to be installed.
in SMP  System > Configuration > Locale Definitions you see what is installed on your Caché instance

You may need to add the missing collation table to your Caché instance:



 

Robert Cemper · Jan 16, 2024 go to post

in the previous screenshot you see the namespace as a blue link
and the names of the DB in the yellow highlighted  
 

Robert Cemper · Jan 15, 2024 go to post
  •  iristerm does NOT support ssh
  • you need to run ( + install ?) a SSH service in your  Linux SUSE 15 VM 
  • next, you connect from Win10 over any SSH terminal client (e.g. Putty, ...) to your SuSe VM console command line
  • there you can run iris session ...........  (the Linux equivalent of iristerm)

Just as described in your question

Robert Cemper · Jan 12, 2024 go to post

check if the date object  var d=new Date();
is inside your routine or at least globally defined

Robert Cemper · Jan 12, 2024 go to post

take a look to Mgmt Portal and check NAMESPACE definition
to see DB-file vs. Namespace.
In your case, I'd create a new namespace based on your DB-file to avoid conflicts.
>>> the same Db for Routine (=code) and Globals

Robert Cemper · Jan 11, 2024 go to post

Big CONGRATULATIONS to all winners !
It's a pleasure to follow your contributions.

Robert Cemper · Jan 8, 2024 go to post

%Studio.Project).InstallFromGbl(...  rejects explicitly for Versions before 2013.1 in line 1440

  • ...   ("VERSION")),".",1,2)<2013.1  ..... 
  • ... Set sc=$$$ERROR($$$DplyVersion, .....
  • %occErrors.inc(2547): #define DplyVersion 7602

You better contact WRC for help  with this 10 year old version

Robert Cemper · Jan 5, 2024 go to post

Bonsoir Sylvain!
Are you looking for something similar to this;
 

Property MonJour As%String 
     [ InitialExpression = "31/12/1840" ];Property Jour As%Date [ InitialExpression = 0,
  SqlComputeCode = {set {*}= $ZDH({MonJour},4) },
  SqlComputed, SqlComputeOnChange = MonJour ];

(Multiline just for readability)
 

Robert Cemper · Jan 5, 2024 go to post

Thanks for the test data!
It confirms known behavior:

  • Oracle takes a lot of effort to prevent straightforward comparisons
  • But over decades, I haven't ever seen them winning against IRIS / Caché.
  • OK, and PostgreSQL or MySQL never was competitive,

Great job !