go to post Dmitry Maslennikov · May 13, 2023 VSCode has a way to help with running tests, but it requires implementing from our side
go to post Dmitry Maslennikov · May 3, 2023 Have not seen such errors, but how defined the mirror members, by hostname or by IP?
go to post Dmitry Maslennikov · May 2, 2023 I've added support for IRIS to the migration tool Alembic based on SQLAlchemy And with this support, Apache Superset can completely operate on IRIS, not just for analyses, but just for its own Superset's needs too.
go to post Dmitry Maslennikov · May 2, 2023 well, ok, yeah, I did not notice it. But still, the usage per process is still an important part. And even if the leakage is real, it may happen in ZPM itself. The testing scenario does not look like proof much, installing and uninstalling zpm multiple times does not like a real scenario. Have a look at what will show this query, the result in KB echo 'select sum(memorypeak) memorypeak,sum(MemoryUsed) memoryused from %SYS.ProcessQuery' | iris sql iris
go to post Dmitry Maslennikov · Apr 28, 2023 I think you forgot about memory per process, which I would say is not limited at all by default anymore. So, your "leaks", may happen in the processes. ZPM is quite a big package, and the installation will use multiple processes. So, having most of the memory just mostly for buffers does not work for IRIS, while you need room for the processes, and if you would go to production, you have to have in mind how many active users you would expect and decide how much memory they will consume.
go to post Dmitry Maslennikov · Apr 27, 2023 You can also use SAM, or plain Grafana for it, which is more suitable for real-time dashboards And I've recently introduced IRIS support to Apache Superset, which now can be used to show charts on plain SQL tables.
go to post Dmitry Maslennikov · Apr 24, 2023 There is no way, to catch the possible issues for the previous version of IRIS. The best case scenario is if you automate the build process, for instance with Docker, and test a compile stage on different versions of IRIS. But the ability to successfully compile may not prove that it will work, it would be better to have some unit tests, which will check it. One more thing, may help, to check it, using the such tool as ObjectScript Quality, can help with checking System's API version. Where you can set the oldest supported version of IRIS, and during the scan, it can check if Methods are available in that particular version.
go to post Dmitry Maslennikov · Apr 20, 2023 Apache Superset in ideas - https://ideas.intersystems.com/ideas/DPI-I-288
go to post Dmitry Maslennikov · Apr 19, 2023 irissqlcli actually has a web version too, but, yeah, it is still a terminal, and not so powerful
go to post Dmitry Maslennikov · Apr 10, 2023 Some scenarios may require the ability to insert a new row with IDENTITY not default, and in this case you would need to use ALLOWIDENTITYINSERT = 1 CREATE TABLE (..) WITH %CLASSPARAMETER ALLOWIDENTITYINSERT = 1; Some additional details here
go to post Dmitry Maslennikov · Apr 10, 2023 Or just add this to the end of docker run command -a "iris session iris -U%SYS '##class(Security.Users).UnExpireUserPasswords(\"*\")'"
go to post Dmitry Maslennikov · Apr 9, 2023 I wanted to implement it as part of irissqlcli, but did not have time yet.
go to post Dmitry Maslennikov · Apr 7, 2023 or irissqlcli iris://_SYSTEM:SYS@localhost:1972/USER < c:\InterSystems\mysqlcode.txt
go to post Dmitry Maslennikov · Apr 3, 2023 It's a bit more complicated for this task. It always should return the full datetime, for instance if I trunc to quarter, it should return 2023-04-01 for the current day
go to post Dmitry Maslennikov · Apr 3, 2023 Implemented it with SQL Procedure CREATE OR REPLACE PROCEDURE %ZDJANGO.CLONE_DATABASE(sourceNS %String, targetNS %String) LANGUAGE OBJECTSCRIPT { new $namespace set $namespace = "%SYS" $$$ThrowOnError(##class(Config.Namespaces).Get(sourceNS, .sourceNSparams)) $$$ThrowOnError(##class(Config.Namespaces).Get(targetNS, .targetNSparams)) for kind="Globals", "Routines" { $$$ThrowOnError(##class(Config.Databases).Get(sourceNSparams(kind), .sourceDBparams)) $$$ThrowOnError(##class(Config.Databases).Get(targetNSparams(kind), .targetDBparams)) set from = sourceDBparams("Directory") set to = targetDBparams("Directory") quit:$Data(done(to)) set done(to) = "" $$$ThrowOnError(##class(SYS.Database).Copy(from, to, , , 4)) } } DANGER: Do not use it, made specifically for my case, it may overwrite database