go to post Eduard Lebedyuk · Oct 26, 2020 Great to hear that this project is being used in the field!
go to post Eduard Lebedyuk · Oct 25, 2020 Haven't tested. Which error are you getting? Just tried on IRIS 2020.3 and it works.
go to post Eduard Lebedyuk · Oct 25, 2020 Try this Class test.SQL { ClassMethod GetMsg(length As %Integer) As %Stream.TmpCharacter [ SqlProc ] { Set stream = ##class(%Stream.TmpCharacter).%New() Set chunkLength = 32000 Set chunk = $tr($j("", chunkLength)," ", "A") If length>=chunkLength { For i=1:chunkLength:length { Do stream.Write(chunk) } } Set tailLength = length#chunkLength Do:tailLength>0 stream.Write($e(chunk, 1, tailLength)) Set sc = stream.%Save() Quit stream //."%%OID" <- also works for persisted streams } } Worked for me with this SQL (in SMP): SELECT test.SQL_GetMsg(10), test.SQL_GetMsg(1) UNION SELECT test.SQL_GetMsg(10), test.SQL_GetMsg(2)
go to post Eduard Lebedyuk · Oct 25, 2020 Here's how you can have a bidirectional XML<>JSON converter: If you do not have the class for your XML, create it from XSD or manually. Also enable JSON for it. Convert your XML string into an object of class (1). Export JSON from your object.
go to post Eduard Lebedyuk · Oct 23, 2020 Check the docs. in most cases you'll need to run irisinstall.
go to post Eduard Lebedyuk · Oct 21, 2020 i.e. do not place propertynames under quote Property Arrival Time has a whitespace in the name so it must be quoted.
go to post Eduard Lebedyuk · Oct 20, 2020 As it looks like a security issue I would recommend a slightly different approach. 1. If you do not have the class for your XML, create it from XSD or manually. 2. Convert your XML string into an object of class (1). 3A. If you want just to skip some properties (like RollNo) set availability of these projected properties to IN - this way property is used by import but is ignored on export. Alternatively disable projection of this property altogether. 3B. If you really want to return *** from your value (what's the use case?) add a new datatype test.PrivateString and use it to store RollNo value - during OBJ->XML projection it would be exported as ***. Class test.PrivateString Extends %String { /// Declares the XSD type used when projecting XML Schemas. Parameter XSDTYPE = "string"; /// Return "***" ClassMethod LogicalToXSD(%val As %TimeStamp) As %String [ CodeMode = generator, ServerOnly = 1 ] { If ($$$getClassType(%class)=$$$cCLASSCLASSTYPEDATATYPE) || $$$comMemberKeyGet(%class,$$$cCLASSparameter,"XMLENABLED",$$$cPARAMdefault) { Set %codemode=$$$cMETHCODEMODEEXPRESSION Set %code="""***""" } Else { Set %code=0 } Quit $$$OK } }
go to post Eduard Lebedyuk · Oct 19, 2020 Use custom queries or global mapping. Check EnsLogViewer - InterSystems IRIS/Ensemble Log Viewer with namespace support.
go to post Eduard Lebedyuk · Oct 1, 2020 Update compose to to the latest version (docs) and try to run original docker-compose.yml (with 3.6).
go to post Eduard Lebedyuk · Sep 30, 2020 Usually I do this: set sc = ..method() /// finalization quit:$$$ISERR(sc) sc
go to post Eduard Lebedyuk · Sep 29, 2020 I always use %Status and try to wrap calls in this macro: #define qoe(%expr) $$$QuitOnError(%expr) For example: $$$qoe(..computeDigest(canonicalized))
go to post Eduard Lebedyuk · Sep 28, 2020 You can use PythonGateway to call Python code from InterSystems IRIS directly. Example: set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .x) write x >HELLO
go to post Eduard Lebedyuk · Sep 28, 2020 You can start with set %gw = createJavaGateway() Where createJavaGateway is ClassMethod createJavaGateway() { quit:$d(%gw) %gw /// init connection } And remove disconnect part. This way %gw variable would stay alive betwee the calls.