x "for x="_customString_" do something(x)"- Log in to post comments
x "for x="_customString_" do something(x)"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.
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
OOUHH. Weblink had end of life more than 20 years ago
It was the unloved predecessor of CSP.
Win authentication is something
IRIS authentication is something else.
They rarely match each other.
@Elijah Tamarchenko
It's approved and public visible now.
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.
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
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
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.
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.
LOAD DATA requires activation of JavaGateway.
>> active in docker community version by default
You run [IRIS for UNIX (Ubuntu Server LTS for x86-64 Containers) 2024.1 (Build 262U)
when 2024.1 was fresh I had problems because of a processor mismatch and no explicit message related. I bought a new processor to escape this trap.
you may try to check
containers.intersystems.com/intersystems/iris-community:2023.3
that didn't have that problem.
just guessing
GREAT! forward-compatible
I was waiting for it almost 2 decades!
You started webserver here
04/29/24-15:09:00:014 (14882) 0 [Utility.Event] Private webserver started on 52773
BUT then you ran a Shutdown
04/29/24-15:09:33:048 (15564) 0 [Utility.Event] Shutdown complete
05/08/24-01:34:34:288 (406) 0 [Generic.Event] Global buffer setting requires attention. Auto-selected 25% of total memory.
and Webserver was NOT started again 9 days later
in fact the whole startup is incomplete.
You may take a look to this old article on a similar case
OR see doku: Restart Webserver
Start/Stop of the container might be the last to try
some decade+ back there was a decision that SQL should be identic
whether embedded, in SMP, ODBC, SQL Shell, or SQL.Statement.
your CASE statement is wrong in multiple ways:
and doesn't work in ENSEMBLE /Caché either
select CASE WHEN StarterKitName NOT IS NULL THEN ....See also example in ENS/Caché docu :
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_case
💐 Thanks! @Iryna Mologa
I reproduced it on my machine
* Not so much surprise:
* Your messages.log is missing at least 50 lines of startup (after the -------- mark)
05/08/24-13:40:53:035 (455) 0 [Utility.Event] Using OpenSSL 3.0.2 15 Mar 2022
05/08/24-13:40:53:149 (455) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/iristemp/ (SFN 3) read-write.
05/08/24-13:40:53:155 (455) 0 [Utility.Event] /usr/irissys/mgr/iristemp/ initialized as IRISTEMP
05/08/24-13:40:53:156 (455) 0 [Utility.Event] Switching to default %SYS Namespace
-----------------------------------------------------------------------------------------------------------
05/08/24-13:40:53:186 (456) 0 [Utility.Event] Log Monitor Started
05/08/24-13:40:53:300 (457) 0 [Utility.Event] Clean Daemon Started
05/08/24-13:40:53:311 (455) 0 [Utility.Event] No archives configured
05/08/24-13:40:53:321 (455) 0 [Utility.Event] Performing Journal Recovery
05/08/24-13:40:53:322 (455) 0 [Utility.Event] Graceful system shutdown, journal restore not required
05/08/24-13:40:53:322 (455) 0 [Utility.Event] Graceful system shutdown, transaction rollback not required
05/08/24-13:40:53:338 (455) 0 [Utility.Event] START: /usr/irissys/mgr/journal/20240508.001
05/08/24-13:40:53:368 (455) 0 [Generic.Event] INTERSYSTEMS IRIS JOURNALING SYSTEM MESSAGE
Journaling started to: /usr/irissys/mgr/journal/20240508.001
05/08/24-13:40:53:368 (455) 0 [Utility.Event] Journaling to /usr/irissys/mgr/journal/20240508.001 started.
05/08/24-13:40:53:368 (455) 0 [Utility.Event] Processing WorkQueues section
05/08/24-13:40:53:371 (455) 0 [Utility.Event] Processing Startup section
05/08/24-13:40:53:387 (458) 0 [Utility.Event] Purging old application errors
05/08/24-13:40:53:387 (455) 0 [Utility.Event] Processing config section
05/08/24-13:40:53:399 (459) 0 [Utility.Event] LMF Info: Licensed for 8 users.
05/08/24-13:40:53:412 (455) 0 [Utility.Event] Initializing Security system
05/08/24-13:40:53:432 (455) 0 [Utility.Event] Processing Network section
05/08/24-13:40:53:435 (455) 0 [Utility.Event] Activating Network
05/08/24-13:40:53:439 (455) 0 [Utility.Event] Processing Databases section
05/08/24-13:40:53:545 (455) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/irisaudit/ (SFN 4) read-write.
05/08/24-13:40:53:549 (455) 0 [Utility.Event] Processing Namespaces section
05/08/24-13:40:53:549 (455) 0 [Utility.Event] Namespaces are up to date
05/08/24-13:40:53:549 (455) 0 [Utility.Event] Activating namespaces
05/08/24-13:40:53:551 (455) 0 [Utility.Event] Activating new namespace map
05/08/24-13:40:53:563 (455) 0 [Utility.Event] Namespace changes have been activated
05/08/24-13:40:53:572 (462) 0 [Utility.Event] Starting superserver on port 1972
05/08/24-13:40:53:572 (455) 0 [Utility.Event] Network Lock Upload Phase Starting
05/08/24-13:40:53:572 (455) 0 [Utility.Event] Lock Upload Phase Complete
05/08/24-13:40:53:572 (455) 0 [Utility.Event] Processing Miscellaneous section
05/08/24-13:40:53:596 (465) 0 [Utility.Event] Starting Servers
05/08/24-13:40:53:597 (455) 0 [Utility.Event] Processing Devices section
05/08/24-13:40:53:601 (455) 0 [Utility.Event] Processing DeviceSubTypes section
05/08/24-13:40:53:606 (455) 0 [Utility.Event] Processing MagTape section
05/08/24-13:40:53:608 (455) 0 [Utility.Event] Processing IO section
05/08/24-13:40:53:610 (455) 0 [Utility.Event] Processing SQL section
05/08/24-13:40:53:612 (455) 0 [Utility.Event] Processing Macro Pre-Processor (MPP) section
05/08/24-13:40:53:613 (455) 0 [Utility.Event] Processing OS Package Requirements section
05/08/24-13:40:53:680 (455) 0 [Generic.Event] Auditing to /usr/irissys/mgr/irisaudit/
05/08/24-13:40:53:705 (455) 0 [Utility.Event] Executing ^ZSTU routine
05/08/24-13:40:53:706 (455) 0 [Utility.Event] Executing ^%ZSTART routine
05/08/24-13:40:53:707 (455) 0 [Utility.Event] Enabling logons
05/08/24-13:40:53:711 (465) 0 [Utility.Event] Private webserver started on 52773
05/08/24-13:40:53:711 (465) 0 [Utility.Event] Processing Shadows section (this system as shadow)
05/08/24-13:40:53:714 (465) 0 [Utility.Event] Processing Monitor section
05/08/24-13:40:53:724 (616) 0 [Utility.Event] Starting TASKMGR
05/08/24-13:40:53:797 (455) 0 [Database.MountedRW] Mounted database /usr/irissys/mgr/user/ (SFN 5) read-write.
05/08/24-13:40:53:801 (617) 0 [Utility.Event] [SYSTEM MONITOR] System Monitor started in %SYS
05/08/24-13:40:53:815 (619) 0 [Utility.Event] WorkQueue: Starting work queue daemon parent=465
05/08/24-13:40:53:815 (465) 0 [Utility.Event] Shard license: 0
05/08/24-13:40:55:158 (455) 0 [Database.MountedRO] Mounted database /usr/irissys/mgr/enslib/ (SFN 6) read-only. Database label is marked read-only.
05/08/24-13:40:55:161 (455) 0 [Utility.Event] Initializing Interoperability during system startup
05/08/24-13:42:40:619 (653) 0 [Utility.Event] %SYS.Task.FeatureTracker transferred data to ats.intersystems.comEspecially the red marked step wasn't executed.
So no listener on 52773:
Hard to guess the reasons, Docker may run out of resources.( memory ?)
You IRIS is definitely OK.
#1 iris runs in /usr/irissys/
#2 iris view shows the actual status
#3 check messages ./mgr/message.log for detailed reasons
And here is the real documentation on $VECTOR in ObejctScript.
And also well hidden: $VectorOperations
As you now explained what you really are looking for: $System.SQL.Schema.SetDefault()
classmethod SetDefault(schema As %Library.String = "", ByRef oldval As %Library.String, Namespace As %Library.Boolean = 0) as %Library.Status
Sets the default schema used by SQL.
This configuration setting provides the ability to define a default schema name other than SQLUser, the default. When an unqualified table name is encountered in an SQL statement (and there is no #import statement specified), the default schema will be used. This setting has nothing to do with the mappings between SQL schema names and the class package name, it only specifies the default schema. Parameter:
Returns:
NOTES:
I found the correct use of host variables in embedded SQL:
UPDATE: TO_VECTOR(:myvec,INT,2)
set myvec="1314,-7979"
Nothing special: Just a plain String with comma separated values
It seems I couldn't believe that simple approach.
My apologizes to ISC Engineering.
I just discovered in class code a different way to get Vector Values from object
USER>set obj=##class(AG.GEO).%OpenId(13)
USER>write obj.VBASE
8EB052EF186E024A8AAC58ED708EB114@$vector
USER>zwrite obj.VBASE
{"type":"integer", "count":2, "length":2, "vector":[4812,-1622]} ; <VECTOR>
;
;;; THIS is from the generated code
USER>set vec=obj.VBASELogicalToOdbc(obj.VBASE)
USER>zw
obj=<OBJECT REFERENCE>[17@AG.GEO]
vec="4812,-1622"
USER>From Terminal in namespace %SYS you can run
Job# NSpace Routine Commands Globals State PID Current device
23 USER shell 425 64 READ 17060 |TRM|:|17060
Namespace: USER SessionID:
Routine: shell
Open Devices: |TRM|:|17060*
Mem Lim/Peak/Curr: 256M/154K/116K In Trans: No
Priority: 8 Info:
User Name: UnknownUser
Roles/EscalatedRoles:%All/None
OS User Name: cemper EXE Name:
Client Node Name: TRM: IP Address: 127.0.0.1
Location: PrivGblBlks: 3
Last reference: ||RCC(5)
Current line:
Entry Process X# S# Flg Item Locked
(V)ariable, (L)ocks, (S)tack, (P)rocess Private Globals, (Q)uit => PProcess Private Global (?): RCC
^||RCC(1)=1
^||RCC(2)=2
^||RCC(3)=3
^||RCC(4)=4
^||RCC(5)=5
Process Private Global (?):
Hi @Michael Davidovich !
you hit exactly what I addressed in in my recent article
The bewitched line terminator
As long as you get (text-) files from your own OS the default is OK
BUT: if you work cross OS platforms - rather likely for CSP pages -
the approach of %CSP.BinaryStream is the best for import.
For output stream you have to decide based on the expected target OS.
My personal trigger to that subject was file transfer between
WIN as Docker host and a Container (Ubuntu) causing a lot of confusion until detected.
System Utility %ETN.int takes a snapshot with all actual variables somehow similar to WRITE command
Description: Using %ETN
It may give you some feeling how to analyze a running process.
ATTENTION:
reading requires some experience in ObjectScript
you might get lost
Functional Background (since decades)
- simple ; (semicolon) is passed down into the final .INT code (and generated .OBJ)
useful it working with $TEXT() function
while
- #; in CLS or MAC is skipped while compiling .INT
so it is smaller saves space
mainly useful for larger comment blocks kept for documentation