During the realization of some required functionality, I discovered that I need to use Deflate compression, and found, that IRIS does not offer any options, $system.Util.Compress, works one way open (GZIP/COMPRESS) totally different, even for the same algorithms, I see that what I would expect as a result for Deflate somewhere there, but Compress returns something more. Is there any way to get a correct result using just ObjectScript without a need to use external tools? Was it really so difficult to have Deflate implemented in the first place?

0 7
0 133

What is the point of having a dedicated registry if it does not work properly most of the time?

$ docker pull containers.intersystems.com/intersystems/iris-community:latest-em
latest-em: Pulling from intersystems/iris-community
5526e9f3d5c5: Already exists
352b407541ae: Already exists
f6bff04f5338: Already exists
8c3b528467ff: Downloading [=======================>                           ]  125.8MB/262.2MB
e2b23b0bff05: Downloading [=============>                                     ]  124.8MB/462.1MB
failed to copy: httpReadSeeker: failed open: could not fetch content descriptor sha256:8c3b528467ff8cc07d86a4979e3e7b8fd36734205539923c8750e1d523f23367 (application/vnd.docker.image.rootfs.diff.tar.gzip) from remote: not found

0 2
0 89

Is there any solution to how to purge the usage of the connection in Community Edition?

I have a working portal, where can't do even any simple SQL Query

Why? Because somehow I've exceeded a license limit (pardon, connection limit, when it comes to Community Editon)

So, this page shows, 8 users ate all connections

0 5
0 169

So, I needed to start Java Gateway, and found, that it does not want to work with the latest Java versions, I tried 20, 18, 17

Start External Language Server %Java Server:

Please wait...result will show below:

2023-07-26 19:46:24 Starting Java Gateway Server '%Java Server'
2023-07-26 19:46:24 *ERROR* Return from RunStartCmd: ERROR #5049: Java version '18.0.1.1' is not supported.
2023-07-26 19:46:25 An error occurred while trying to start the Gateway Server External Language Server failed to Start:
ERROR #5049: Java version '18.0.1.1' is not supported.

Error, only says, that it will not work, and say nothing, about which version it wants to see

1 6
0 425

How to understand what's wrong with compilation if the compilator just hides errors?

Compilation started on 05/15/2023 15:58:11 with qualifiers 'cuk'

Detected 1 errors during compilation in 0.003s.


Compilation started on 05/15/2023 15:58:32 with qualifiers 'cuk'

Detected 1 errors during compilation in 0.002s.


Compilation started on 05/15/2023 15:58:51 with qualifiers 'cuk'

Detected 40 errors during compilation in 0.089s.

40 errors, and what do I have to do with this so valuable information?

1 10
0 249

Trying to make some scripts to do some IRIS initialization during startup, I noticed that iris start and particularly stop takes too much time, and it starts to many processes in the background.

nostu is mostly useless for system initialization but could help in some scenarios, such as setup passwords, but it is still too slow

irisowner@4ea1bfb50b7f:~$ time iris start iris nostu
Starting IRIS
Using 'iris.cpf' configuration file

Starting Control Process
Global buffer setting requires attention.  Auto-selected 25% of total memory.
Allocated 7417MB shared memory
6002MB global buffers, 600MB routine buffers
Creating a WIJ file to hold 99 megabytes of data
InterSystems IRIS is started in single user mode.
To log into InterSystems IRIS, type:
    iris session IRIS -B

real    0m0.513s
user    0m0.090s
sys     0m0.207s

For instance, I have no idea why it starts so many AUX processes, even during NOSTU. With a normal start with no extra volumes attached, just plain start, I see no reasons to have so many AUX processes as well.

2011 pts/0    S      0:00 /usr/irissys/bin/irisdb -s/usr/irissys/mgr/ -w/usr/irissys/mgr/ -cc -B -Enostu -C/usr/irissys/iris.cpf*IRIS
 2052 pts/0    S      0:00 /usr/irissys/bin/irisdb WD                                                                                 
 2053 pts/0    S      0:00 /usr/irissys/bin/irisdb GC                                                                                 
 2054 pts/0    S      0:00 /usr/irissys/bin/irisdb JD                                                                                 
 2055 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX2                                                                               
 2056 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX1                                                                               
 2057 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX5                                                                               
 2058 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX7                                                                               
 2059 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX4                                                                               
 2060 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX3                                                                               
 2061 pts/0    S      0:00 /usr/irissys/bin/irisdb AUX6                                                                               
 2062 pts/0    S      0:00 /usr/irissys/bin/irisdb DBXD

1 0
1 377

Any ideas on how this can be solved?

I need to use it with some Unicode text, in Docker image. And get this error. And documentation says nothing about it.

USER>do $zf(-100, "/SHELL", "echo", "test")
test

USER>do $zf(-100, "/SHELL", "echo", "test тест")

DO $ZF(-100, "/SHELL", "echo", "test тест")
^
<TRANSLATE>

I know that it works in some Linux environments without Docker, but no idea where is the difference.

0 2
0 151

So, I know that I can return a SQL Error message from my SQL Procedure written in ObjectScript, with code like this

$ cat <<EOF | irissqlcli iris://_SYSTEM:SYS@localhost:1972/USER
CREATE or REPLACE PROCEDURE test()
LANGUAGE OBJECTSCRIPT
{
 SET %sqlcontext.%SQLCODE = 400
 SET %sqlcontext.%ROWCOUNT = -1
 SET %sqlcontext.%Message = "test error message"
};

CALL test();

EOF
[SQLCODE: <-400>:<Fatal error occurred>]
[Location: <SPFunction>]
[%msg: <test error message>]

But I did not find how to do it with Python. I can't find %sqlcontext variable available there

0 1
0 166

I have table

CREATE TABLE nodes (
        name VARCHAR(50) NOT NULL, 
        parent VARCHAR(50), 
        PRIMARY KEY (name), 
        FOREIGN KEY(parent) REFERENCES nodes (name) ON UPDATE cascade
);

I put some data

INSERT INTO nodes (name, parent) VALUES ('n1', NULL);
INSERT INTO nodes (name, parent) VALUES ('n11', 'n1');
INSERT INTO nodes (name, parent) VALUES ('n12', 'n1');
INSERT INTO nodes (name, parent) VALUES ('n13', 'n1');

Let's delete all

DELETE FROM nodes;

Nope, no way.

SQL Error [124] [S1000]: [SQLCODE: <-124>:<FOREIGN KEY constraint failed referential check upon DELETE of row in referenced table>]
[Location: <ServerLoop>]
[%msg: <At least 1 Row exists in table 'SQLUser.nodes' which references key 'NODESPKey2' - Foreign Key Constraint 'NODESFKey3', Field(s) 'parent' failed on referential action of NO ACTION>]

0 7
0 440

I have a table, with autoincremented id

CREATE TABLE users (
    id SERIAL NOT NULL,
    name VARCHAR(30) NOT NULL,
    PRIMARY KEY (id)
)

I can add a new item there with an explicit id

INSERT INTO users (id, name) VALUES (2, 'fred')

And while my id is autoincremented, I can omit it

INSERT INTO users (name) VALUES ('ed')

So, this time, I don't know the id, and I want to somehow get it.

I could do it with LAST_IDENTITY() function, but it just uses %RowID, and have no relation to the primary id

0 11
0 590

This is not an issue in ObjectScript, due to its typeless nature. But it's essential for external programming languages that care a bit more about types of variables.

And in any case, it's still reproducible in ObjectScript. I have table

CREATE TABLE some_table (
        id INTEGER NOT NULL, 
        x INTEGER, 
        y INTEGER, 
        z VARCHAR(50), 
        PRIMARY KEY (id)
)

And data

INSERT INTO some_table (id, x, y, z) VALUES (1, 1, 2, 'z1');
INSERT INTO some_table (id, x, y, z) VALUES (2, 2, 3, 'z2');
INSERT INTO some_table (id, x, y, z) VALUES (3, 3, 4, 'z3');
INSERT INTO some_table (id, x, y, z) VALUES (4, 4, 5, 'z4');

1 11
0 487

Found one interesting behaviour in one system with Ensemble. Some Request class has a property with type %XML.CharacterStream by design, this class is the heaviest request in the system, and with profiling journal files, it got about 40% of the file. When I counted all the sizes of such streams per one day and found that the real stored data is three times less.

1 3
0 331

I have some system with heavy production. There are about 500GB of journals daily. And I'm looking at the ways, how to decrease the amount of data that appeared there.

I found no way, on how to split have the journal separately for mirroring databases and for others. So, I'm thinking about moving some of the globals to CACHETEMP. So, they will disappear from journals. So, thinking about Ens.* globals, I have about 30% of data in journals just for such data. Which production data can be safely moved to CACHETEMP, with no issues for mirroring?

0 6
0 281

Doing a new project with %JSON.Adaptor, unexpectedly realized that %JSON.Adaptor does not support export to native JSON. %JSONExport just outputs directly to the current device, and there are two more methods %JSONExportToString, and %JSONExportToStream.

In conjunction with generating REST from swagger specification, where any generated method accepts as a result %DynamicObject, which is good.

I have multiple places in my REST where I have to return JSON for an object, but I have to modify the result a bit, just extend it with some other way.

1 7
2 764