go to post Eduard Lebedyuk · Dec 20, 2021 You can set ..HTMLZIPDoc.Filename to any filepath you need.
go to post Eduard Lebedyuk · Dec 17, 2021 You can use %NOCHECK %NOLOCK to speed things up. Work Queue Manager can be used for parallelization.
go to post Eduard Lebedyuk · Dec 17, 2021 Properties are recalculated so it's enough to execute this query once: UPDATE <DOC TABLE CLASS> SET %Doc = NVL(%Doc||' ', %Doc) I'm not sure how to trick SQL engine into updating the value without changing it completely but just NVL(%Doc, %Doc) does not work. Adding empty space after json does not affect it. For DocDB indexed properties are defined as Property firstName As %String [ SqlComputeCode = { set {*}=$$%EvaluatePathOne^%DocDB.Document({%Doc},"$.firstName")}, SqlComputed, SqlComputeOnChange = %Doc ]; So updating %Doc does the trick. Also add: WHERE <NEW PROPERTY> IS NULL to recalculate only for documents where a property value is missing.
go to post Eduard Lebedyuk · Dec 17, 2021 Try it like this: new reader,sc,data,xmlSignature set sc=reader.OpenFile(file) quit:$$$ISERR(sc) sc set document = reader.Document do reader.Correlate("Signature","%XML.Security.Signature") if 'reader.Next(.xmlSignature,.sc) { quit sc } quit xmlSignature.ValidateDocument(document) From docs.
go to post Eduard Lebedyuk · Dec 17, 2021 Note that it requires that you're the only writer on the system during that update.
go to post Eduard Lebedyuk · Dec 16, 2021 There are two options: Use SQL Gateway to create Linked Tabled from Oracle (if there are a lot of tables it might be better to create a linkage with a view). After that query Linked Table same as any normal InterSystems IRIS table using the code snippet above. Write a service with the EnsLib.SQL.InboundAdapter to query Oracle database. In that case you need to implement a CSV writer.
go to post Eduard Lebedyuk · Dec 13, 2021 Use three repos: dbLib, dbA, dbB. Add dbLib as submodule to both dbA and dbB.
go to post Eduard Lebedyuk · Dec 6, 2021 Only if the property becomes calculated after being stored which I don't see happening that often.
go to post Eduard Lebedyuk · Dec 6, 2021 Sure Property D As %String [ Calculated, SqlComputeCode = {set {*}=##class(CClass).DGetStored(##class(BClass).CGetStored(##class(ClassA).BGetStored({A})))}, SqlComputed ]; Would be way faster than SQL approach too.
go to post Eduard Lebedyuk · Dec 6, 2021 if you need to get a->b->c->d That's what chained GetStored is for! and they at the same time can be null GetStored is a safe method: GetStored("") -> "", so it can be safely used even if some values are NULL.
go to post Eduard Lebedyuk · Dec 5, 2021 Starting with 2020.1 Universal Query Cache is used for all SQL statements. Have you encountered an issue with it? Pinging @Benjamin De Boe
go to post Eduard Lebedyuk · Dec 3, 2021 Use %VarString instead of %String. It has 3.6Mb limit by default.
go to post Eduard Lebedyuk · Dec 3, 2021 You do it by chaining GetStored methods: Class Document Extends %Persistent { Property Filename As %VarString; } Class Question As %Persistent { // Or relationship Property Document As Document; Property Filename As %String [ Calculated, SqlComputeCode = {set {*}=##class(Document).FilenameGetStored({Document})}, SqlComputed ]; }
go to post Eduard Lebedyuk · Nov 25, 2021 I'm not really sure what is it that you want (please consider providing more information), but this project can be used to both read and write excel files.