go to post Alexander Koblov · Oct 10, 2017 Documentation says following: For a table containing more than 1 million records, a bitmap index is less efficient than a standard index when the number of unique values exceeds 10,000. Therefore, for a large table it is recommended that you avoid using a bitmap index for any field that is contains (or is likely to contain) more than 10,000 unique values; for a table of any size, avoid using a bitmap index for any field that is likely to contain more than 20,000 unique values. These are general approximations, not exact numbers.
go to post Alexander Koblov · Sep 5, 2017 Notice that if you put space after ':' then it compiles OK: Query T() As %SQLQuery [ SqlProc ] { SELECT TOP 3 JSON_OBJECT('lit': 'Employee from','t':%TABLENAME,'name':Name,'num':SSN) FROM Sample.Employee }
go to post Alexander Koblov · Sep 4, 2017 To autofill password fields, Atelier (Eclipse) stores password that developer enters in different wizards. For example password for connection to Caché, password for connection to Git repository, etc. Atelier stores passwords in secure place called secure storage. Passwords are stored in encrypted form. Access to the secure storage is protected by master password. So, when you open some wizard with password field first time after Atelier lunch Atelier asks for master password in order to get password from secure storage and autofill corresponding field. Let us know what exactly you don't understand and I (or maybe someone else) else will try to explain it.
go to post Alexander Koblov · Sep 2, 2017 To store passwords that you enter Eclipse as a platform for Atelier uses secure storage. This secure storage is protected by master password. For more information on secure storage and master password please see https://docs.intersystems.com/atelier/latest/topic/org.eclipse.platform....
go to post Alexander Koblov · Aug 30, 2017 Have you looked at $IsValidNum? ClassMethod AssertNumberEquals(v1, v2) As %Boolean { if '$isvalidnum(v1) quit 0 if '$isvalidnum(v2) quit 0 //both are numbers -- let's compare them as numbers quit +v1=+v2 }
go to post Alexander Koblov · Aug 25, 2017 Notice, that in some cases it might produce different results: USER>write ##class(%Library.Collate).SetLocalName("Cache standard"),! 1 USER>write "0.12345"]]$c(0) 1 USER>write ".12345"]]$c(0) 0 USER>write ##class(%Library.Collate).SetLocalName("Cache standard string"),! 1 USER>write "0.12345"]]$c(0) 1 USER>write ".12345"]]$c(0) 1
go to post Alexander Koblov · Aug 22, 2017 Hi Mike. You can open view's popup menu by right-clicking inside view. Please notice that "Workbench User Guide" is user-guide for Eclipse that is Atelier based on. For Atelier guide, please see "InterSystems Atelier User Guide" located below "Workbench User Guide".
go to post Alexander Koblov · Aug 21, 2017 $THIS is object reference (OREF) -- unique identifier of object in memory. Different objects might have the same OREF during process lifetime And subscript of local/global can be only numeric or a string -- not an object reference. So, while indeed $GET(a($THIS)) triggers something wrong, the construction itself is not correct. Timothy's suggestion converts OREF to string: if $GET(seen(""_$THIS)) quit making command correct. Notice, that in workaround you proposed -- you are using OID, that is unique identifier of object on disk. Different objects cannot have the same OID.
go to post Alexander Koblov · Aug 11, 2017 You have Atelier 1.0.190 and released version is 1.0.262. Please try released version: https://download.intersystems.com/download/atelier.csp This problem might be fixed there
go to post Alexander Koblov · Aug 10, 2017 I don't have any particular recomendations about openssl. I use openssl that icomes with linux I use. If connection works Ok on 2016.1 (or 2016.2?) you might try to uncheck tls1.1 and tls1.2 in SSL/TLS configuration settings on 2016.1 installation, leaving only tls1.0 and see if connection succeeds. If no -- probably server requires tls1.1 or tls1.2.
go to post Alexander Koblov · Aug 10, 2017 Can you connect to that server using openssl? If yes, try to match protocol openssl uses with the protocols enabled in SSL/TLS Configuration. E.g. if SSL/TLS Configuration have only TLS1 enabled, try to connect with openssl using -tls1 openssl s_client -tls1 -connect server:port Maybe that server requires tls1.2 or SNI that is not available in Caché 2013.1
go to post Alexander Koblov · Aug 7, 2017 Please read doc here: http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=... Also there is a good introductory book in documentation: "Caché Programming Orientation Guide" http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Alexander Koblov · Aug 3, 2017 Hi Dan. I think Date Offset should help you http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Alexander Koblov · Jul 19, 2017 No. You need to wrap it as you showed in second example. You can use "C" alias from first sample only in "ORDER BY" clause in the same query, not in WHERE.
go to post Alexander Koblov · Jul 18, 2017 Please notice, that execution plan for select * from person where (lastname=? or ? is null) and (age > ? or ? is null) might be less optimal than select * from person where lastname=? So in some sense it's better to generate different queries based on input
go to post Alexander Koblov · Jul 14, 2017 You might also look into ##class(%UnitTest.Manager).WipeNamespace()
go to post Alexander Koblov · Jul 5, 2017 Kyle, please notice that indeed CALL %SYSTEM.SQL_TableExists('table name') shows nothing -- no result is returned. Whereas ?= CALL %SYSTEM.SQL_TableExists('table name') prints boolean result 1 or 0 depending on whether 'table name' exists.