go to post Robert Cemper · May 5, 2020 you didn't tell us the Namespace. Assuming USER.you have to take care that the Database for USER is part of your durable environment.after restart of your container any thing not in the durable environment (e.g IRISTEMP) is gone
go to post Robert Cemper · May 4, 2020 First, check if the Caché SERVICE (in win sense) gets started as account With enough privileges Next, check that the installation directory and all sub dir are accessible with all right from this account Eventually, consider a reinstall / Update with enough ADMINISTRATOR rights
go to post Robert Cemper · Apr 29, 2020 Sorry I saw your FOR loop only when the reply was out alreadySo you are not hurt by First-Touch effect anyhow.As it is always the same object even buffer size should have no influence.is there any other load on the server that could have influence ?
go to post Robert Cemper · Apr 29, 2020 A rule of thumb:Global buffer size ~50% of physical memory (set it manually !)- enable / enforce large pages- run it in a loop.- the first OPEN has to fetch the whole global structure from disk, all following load from Global buffers
go to post Robert Cemper · Apr 28, 2020 an Excellent Reference. you got the point.for speed: If don't want to run a benchmark indirection isn't bad as in this case: functionality counts
go to post Robert Cemper · Apr 27, 2020 I fully agree with your concerns. Especially related to parallel processing and sharding.And modern code and design will never need this.But there are millions of lines of old code out in the field that require these dirty tricks to survive.And YES! You have to examine very carefully what you do.It's a little bit like mountaineering:Most take the cable car, some climb with ropes and a lot of fancy equipment. While a few free climbers use nothing than their body.You have to understand the risks and to take your decision.
go to post Robert Cemper · Apr 26, 2020 BINGO!You got my point. Of course, you should be careful with the storage not to mix it up. Therefore the class method to keep all related globals in sync.
go to post Robert Cemper · Apr 23, 2020 CLASSPARAMETERS are static and apply to class compile time. You refer to it by ..#paramname in your class codehttps://cedocs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=RCOS_fparametersee section References to Other Class Members or by COS function $PARAMETER(class,parameter)
go to post Robert Cemper · Apr 22, 2020 For Multiline SQL you may do it his way: set myquery = "SELECT TOP 5 "_ "Name, "_ "DOB AS bdate, "_ "FavoriteColors "_ "FROM Sample.Person" no solution for coloring inside a String
go to post Robert Cemper · Apr 20, 2020 on "html to pdf converter freeware" google gave me 3 270 000 hits.Why reinventing the wheel. Place your HTML into a local file and let someone else do the dirty job.There are enough solutions for a call-out to trigger the conversion.
go to post Robert Cemper · Apr 19, 2020 Sorry, it didn't work with postgreSQL. The error changed to a gateway error.You can map stored procedures over the Gateway but not SQL functions:I assume the same is happening also with Oracle.
go to post Robert Cemper · Apr 19, 2020 Though it seems nonsense to me you can fake SQLUSER.ROW_NUMBER for that purpose like this:In your namespace create this class to simulate ROW_NUMBER() Class User.FakeRowcount{ ClassMethod RowCount() As %Integer [ SqlName = ROW_COUNT, SqlProc ]{ quit 1 }
go to post Robert Cemper · Apr 17, 2020 #1) I'd suggest to increase the size of your LockTab as suggested by @Vic Sun #2) There is a class in %SYS . ^SYS.Lock that could be useful for multiple Lock deletes.and as I just learned to adjust LockTab size (SetMaxLockTableSize) https://cedocs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?PAGE=CLASS&LIBRARY=%25SYS&CLASSNAME=SYS.Lock#3) ^LOCKTAB from terminal command line in %SYS also shows the Locktab
go to post Robert Cemper · Apr 17, 2020 check Locktable in the management portal to find if some other process has locked the table. by do ##class(my.class).%UnlockExtent(0,1) you just can release yourr own LOCKs
go to post Robert Cemper · Apr 17, 2020 I'm not an expert on Oracle and have no chance to test. Just an idea Instead of ROWNUM the function ROW_NUMBER() should pass the syntax check as it is not a column identifier.https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm
go to post Robert Cemper · Apr 17, 2020 So a possible workaround could be to have a VIEW on Oracle including ROWNUM as a columnlike SELECT ROWNUM as row, * from whatever_tableand then map the View instead of the original table just for this purpose.
go to post Robert Cemper · Apr 17, 2020 Just as a side note.mixing Caché tables with external tables (e.g. in a JOIN) is not possible.
go to post Robert Cemper · Apr 17, 2020 %VID is a Caché internal workaround for subqueries to hide the fact that ROWNUM or ROW_NUMBER wasn't implementedhttps://cedocs.intersystems.com/latest/csp/docbook/Doc.View.cls?KEY=RSQL_C189621 You can't mix it with external database access with internal featuresinstead, use the RowNumber implementation of your external DB (they vary by product)https://www.w3schools.com/sql/sql_top.asp https://docs.microsoft.com/en-us/sql/t-sql/functions/row-number-transact-sql?view=sql-server-ver15You just can win. The workload moves to the external DB and you transfer fewer records
go to post Robert Cemper · Apr 16, 2020 So I'd suggest involving WRC to check the sources where the double translation comes from.(probably since ever)
go to post Robert Cemper · Apr 16, 2020 just an idea to understand:what do you see if your .stream is a %Stream.GlobalBinary ?