go to post Alexander Koblov · Mar 4, 2019 For drawbacks of Parent/Child relationships see this comment by @Brendan Bannon
go to post Alexander Koblov · Mar 1, 2019 No, indirection does not introduce additional stack, as far as I know. It works with variables that are visible in public (global) scope, not in private scope of procedure.
go to post Alexander Koblov · Feb 28, 2019 Quoting doc: "Name indirection, argument indirection, and XECUTE commands that appear within a procedure are not executed within the scope of the procedure." https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY... Consider method: Class Test.test [ Abstract ] { ClassMethod ind() { kill info set active = 1 set i="active" set @i = "global scope" break } } Output: USER>do ##class(Test.test).ind() break } ^ <BREAK>zind+5^Test.test.1 USER 2d1>w active="global scope" <Private variables> active=1 i="active" Notice private variables and public variables.
go to post Alexander Koblov · Feb 22, 2019 Correction for future readers. Correct path is {serverdir}/dev/atelier/CACHELIB/Metadata.zip Relevant section in Atelier documentation
go to post Alexander Koblov · Jan 26, 2019 Null in this case is not a reserved word. It’s just a name of variable that is not defined.
go to post Alexander Koblov · Jan 23, 2019 NTLM Authentication is supported in Caché / Ensemble 2018.1 and later: https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...
go to post Alexander Koblov · Dec 10, 2018 I'm getting following error, running your program on Caché 2017.2.2: USER>do ^test This FTP server is anonymous only. And it works OK once I change Connect to be anonymous: If 'ftp.Connect(host,"anonymous","",port) Write ftp.ReturnMessage,! Quit sc Output: USER>do ^test Ftp server messsage: Features: EPRT EPSV MDTM PASV REST STREAM SIZE TVFS End Mode now: Binary Length of file received: 524288 Can you connect to speedtest.tele2.net from the same server, but not from Caché? Maybe access via port 21 is blocked by your firewall?
go to post Alexander Koblov · Nov 29, 2018 You need to use Escape clause. SELECT ID, CompanyName FROM Table1 WHERE CompanyName LIKE '%\%%' ESCAPE '\' See documentation for LIKE predicate
go to post Alexander Koblov · Nov 26, 2018 Consider adding @Sascha Kisser article on DeepSee troubleshooting
go to post Alexander Koblov · Nov 26, 2018 DeepSee Engine is independent of DeepSee user interface. You can use DeepSee REST API to access DeepSee Engine from any UI. See documentation.
go to post Alexander Koblov · Nov 20, 2018 Right! And write more and more clever code to train colleagues :-)
go to post Alexander Koblov · Nov 20, 2018 while this test is indeed fun, the most important phrase in your post is of course: best stay away from doing anything too clever as it leads to unreadable code
go to post Alexander Koblov · Nov 16, 2018 Hm, I thought that length of values would also have impact, but provided how globals are stored maybe this does not matter. Also I wonder if blocksize matters.
go to post Alexander Koblov · Nov 16, 2018 I think I would run tests and publish the results. I think this test proves nothing. Interesting to know underlying reasoning of saying: "Use bitmap index if there are less than X distinct values in common" or "Use bitmap index if selectivity of column is less than Y". Why X, why Y? Where is this 6400 and 2% come from? What is it in bitmap indices that makes them slower, once these thresholds are reached? There are two many variables to take into account in this test, so it's much more interesting to see formula than test results.
go to post Alexander Koblov · Nov 16, 2018 No, Ed indeed means number of unique values for indexed column. E.g. our docs advises no more than 10'000-20'000 distinct values for bitmap indices.
go to post Alexander Koblov · Nov 15, 2018 I'm also talking about %SYS level. For example, stop JDBC Gateway server. Then go to SQL Gateway Connections. Choose any JDBC connection, click "Test Connection". You should receive "Connection successful". Now go back to JDBC Gateway Server and notice that its process is running. It was started automatically when you clicked "Test Connection"
go to post Alexander Koblov · Nov 15, 2018 Hi Scott. JDBC Gateway already automatically stops when Caché is stopped. And automatically started on first attempt to use it. So maybe you don't need to do anything specific here.
go to post Alexander Koblov · Oct 18, 2018 a) I think no, performance will not improve if you have nine SQLGateways. SQLGateway ODBC connection is established in each process. So each separate Caché process has each own connection to the SQLServer. b) As to the SQLGateway performance. I think first thing you need to check is how SQLServer itself handles these nine queries being run simultaneusly. If it's fast, and slow only via SQLGateway connection, then it makes sense to look into if something can be configured on SQLGateway / Caché side.