Robert Cemper · Jul 31, 2023 go to post

Now it is obvious that ^realglobal has 11.3 times the size of ^testglobal
while your ^testglobal seems to have all blocks in buffers in memory
this is rather unlikely for ^realglobal.
So repeated reloading of blocks from disk seems to cause the delay
If you have the chance to double or triple your global buffers
you most likely may see improved processing of your $O()

Robert Cemper · Jul 22, 2023 go to post

Follow up to @Dmitry Maslennikov:
Error on IRIS side:  ACCESS DENIED  ODBC can't connect ===> timeout
Why  ACCESS DENIED ? 
The most likely cause

  • you run multiple ODBC connections in parallel
  • you use the same fixed USER for access to IRIS
  • maximum license slots by user is ~25
  • once you pass the limit your 25 slots get converted to 25 single licenses
  • any further connection consumes a full license 
  • until you run out of available licenses ==> ACCESS DENIED
  • you can get out of that trap only if ALL connections of that user are closed 

You can avoid this by

  • limiting your ODBC connections below 24
  • or run your ODBC access in  serial mode
  • or use multiple users for access with limit <24
Robert Cemper · Jul 11, 2023 go to post

Muchas gracias ! 
Thank you all! 
400+ years back when my earliest documented ancestor was born
Spain+Austria was a World Wide Empire ("Casa Austria", Emperor Carlos V.) that ruled the globe.
I feel quite familiar with you.
Robert 

Robert Cemper · Jul 10, 2023 go to post

if you want to take a look behind the scene try this example
Character-Slice Index
Quick Summary:

  • [ looks for any character(s)
  • %CONTAINS looks for words (separated by blanks or punctuations)
Robert Cemper · Jul 8, 2023 go to post

Hi @Vivian Lee !
I think you had no chance to see the problem in docs
You mentioned 
a custom class that extends %Text.English
this might be the cause of your problem.
The class is not visible in normal class reference (don't ask me why) 
Default %Text.English has a Parameter  NOISEWORDS100 =
"the of and a to in is you that it he for was on are as with his they at be this from I have or by one had not but what all were when we there can an your which their said if do will each about how up out them then she many some so these would other into has more her two like him see time could no make than first been its who now my made over did down only way find use may long little very after called just where most know get through back";

So you might be affected by these NOISEWORDS.
I failed to find any useful public documentation on this parameter and also %Text.Text is not too useful

Robert Cemper · Jul 7, 2023 go to post

Agree with @Julius Kavay 
Just read the documentation  on %CONTAINS
It's a function specific to data type %TEXT and is language dependant (more details in docs)
-------------------
If you look for a functionality as SQL LIKE you better use LIKE
or [ the contains operator of COS

Robert Cemper · Jul 6, 2023 go to post

You still didn't understand the difference:

  • - DATDEDIFF() works on local times  eg.  "1970-01-01" is your locale time  (eg. UTC+5.5 hrs)
  • - $ZDT(...,-2)  uses by definition 1970-01-01 UTC

you should know from what time zone you  get your input from

Robert Cemper · Jul 5, 2023 go to post

#1 is correct
Your calculation #2 is seriously wrong.
reason
reading documentation you see
dformat -2 

$ZDATETIME returns an integer specifying the count of seconds from a platform-specific origin date/time. This is the value returned by the time() library function, as defined in the ISO C Programming Language Standard. For example, on POSIX-compliant systems this value is the count of seconds from January 1, 1970 00:00:00 UTC

And that's the mistake:
Your BirthDate is obviously considered as  LOCAL time
And therefore the difference you see reflects the time offset of your machine to UTC
-19800 sec => -5.5 hrs
system variable $ZTZ will show your offset to UTC in minutes  => -330
my guess: your machine is running at local time in India
 

Robert Cemper · Jun 29, 2023 go to post

I removed the article as it was totally out of date, misleading, and confusing.
Based on the very first versions of Sharding years back
+ an environment that doesn't exist anymore.

Robert Cemper · Jun 28, 2023 go to post

what you describe is explained in detail in the documentation:
%SQL.StatementResult

For a SELECT statement, if the cursor is positioned after the last row, the value of %ROWCOUNT indicates the number of rows contained in the result set.
At any other time, %ROWCOUNT contains the number of rows retrieved thus far

rfm

Robert Cemper · Jun 27, 2023 go to post

Most important:: you run on x86-64 if Windows or Red Hat is not important to your CBK
If you still have access check the size of the original CACHE.DAT. 
Check also the standard collation of the original DB to avoid unexpected surprise
To my experience, there should be no difference for backups between C1017 and C2018 (the latest)
 

Robert Cemper · Jun 26, 2023 go to post

win docker desktop not just consumes fast-growing  vhdx
but also a lot of temp files, that get never deleted or shrinked
not even with deinstall / reinstall
typically in 
C:\Users\<usename>\AppData\Local\Temp\docker-scout\sha256 
C:\Users\<username>\.docker\scout\sbom\sha256
C:\Users\<username>\AppData\Local\Temp\  *.ico, *.vhdx

Robert Cemper · Jun 20, 2023 go to post

If I find no acceptable equivalent in PY
I wrap such functions, methods, variables, ... in 1 line COS (class)methods.
kind or embedded COS 😏

Robert Cemper · Jun 19, 2023 go to post

in the production view  you should find description and adapter description

BUT !!!!

This only works if the source is well documented. 

And that is often ignored by designers. even in ENSDEMO.
If it is missing it is kind of a quality issue
 

Robert Cemper · Jun 17, 2023 go to post

in Caché it is %installdir%/mgr/cconsole.log
and you can see it from MgmtPortal
and it would be helpful if you uncover the primary language you use

Robert Cemper · Jun 17, 2023 go to post

in your namespace you can map not just full Globals   
to a different Database but also parts of a Global.
This works over Global Subscript   Details
IF your structure is ^HISTORY(yyyymm, ....)    [yyyymm as first subscript ]
? eventually also your IDKEY ?
this is a possible way   to set   
^HISTORY(201606) >>  201606_HIPAA.dat 
^HISTORY(201607) >>  201607_HIPAA.dat

But if yyyymm is just somewhere in your data, you need to reorganize your global
I assume this is something  you have to do anyhow with your history 

ATTENTION: this is total static.
so for 120 DBs you need 120 mapping lines

Robert Cemper · Jun 16, 2023 go to post

just a hint:
Webterminal uses 2 connections:

  1. http/https
  2. wss/ws       websockets

this might cause problems. just my guess

In WEBCOMMAND I use just 1 connection (rather straight CSP)
with less  comfort

Robert Cemper · Jun 9, 2023 go to post

Confirmed!

Also if zipped typical IRIS.DAT is not accepted by GitHub because of size.
If cut to smaller pieces performance and flexibility are lost.

Robert Cemper · Jun 9, 2023 go to post

If not disabled all global SET and KILL and also transactions are documented in JOURNAL
there are also related search utilities available in %SYS
there is no equivalent feature for Global READ.
if you just look for the fact that there was a SET or KILL at object level
DSTIME could be an option see example: 
https://community.intersystems.com/post/synchronize-data-dstime
it is easier to handle than JOURNAL
 

Robert Cemper · Jun 9, 2023 go to post

I had some doubt in your initial question.

NowYOUR mistake is evident
you compose a JSON array args=[arg1value,agr3value,arg3value,..]
using %Push(..)

to %SQL.Statement this is just kind of a strange structured String
%SQL.Statement doesn't deal with JSON Arrays or Objects

with arg... you have to pass a local variable array
which is a core structure of Object Script (since ever)
arg=3           ;;<max subscript count>
arg(1)=arg1value  
arg(2)=arg2value
arg(3)=arg3value
as already described by @Julius Kavay 
 

Robert Cemper · May 25, 2023 go to post

BUT:
S txt="-123.45E6789" IF +txt W "true"
                     ^
<MAXNUMBER>
USER>