go to post Eduard Lebedyuk · Aug 9, 2019 Documentation states there's an argument SubDir As %Boolean = 0 in ExportAllClassesIndividual method.Description: If SubDir is true then it will export sub-packages as subdirectories.Try setting it to 1.
go to post Eduard Lebedyuk · Aug 9, 2019 Source control hook sounds like what you need.Check cache-tort-git udl fork.
go to post Eduard Lebedyuk · Aug 8, 2019 Classes extending %Persistent with default Storage have GetStored method for persistent properties.SYS.Database in your case has custom storage, that's why this method does not exist.
go to post Eduard Lebedyuk · Aug 7, 2019 Here's a way without indirection: Class MyPackage.MyClass { ClassMethod MyMethod(p1 = 1, p2 = 2, p3 = 3) { Write p1,"-",p2,"-",p3,! } /// do ##class(MyPackage.MyClass).Test() ClassMethod Test() { Do ..FromJson({}) Do ..FromJson({"p1":"first value", "p2":"second value"}) Do ..FromJson({"p1":"first value", "p3":"third value"}) Do ..FromJson({"p2":"second value"}) } /// do ##class(MyPackage.MyClass).ArgPosMapping("MyPackage.MyClass", "MyMethod") ClassMethod ArgPosMapping(class, method, Output map) { kill map set formalspec = $$$comMemberKeyGet(class,$$$cCLASSmethod,method,$$$cMETHformalspecparsed) for i=1:1:$ll(formalspec) { set arg = $lg(formalspec, i) set map($lg(arg, 1)) = i } set map = $ll(formalspec) } ClassMethod FromJson(json) { Do ..ArgPosMapping($classname(), "MyMethod", .map) Set iterator = json.%GetIterator() Set position = 0 While iterator.%GetNext(.key, .value) { Set position = position + 1 Set arguments(map(key)) = value } Set arguments = map Do ..MyMethod(arguments...) } }
go to post Eduard Lebedyuk · Aug 6, 2019 Is it service or operation? Please elaborate on your configuration.Because you have XML error, I think there are some additional transformation(s) taking place.Have you tried checking Stream at line 3 offset 120?
go to post Eduard Lebedyuk · Aug 5, 2019 You need both Package mapping and global mappings.In package mapping you add package containing your table from routine database for original namespace.In global mapping you add data, index, stream and id globals from global database for original namespace.
go to post Eduard Lebedyuk · Aug 5, 2019 What does autocompletion has to do with learning (or not learning) a language?
go to post Eduard Lebedyuk · Aug 1, 2019 Check %SYSTEM.Mirror class, it looks like what you need.Write class method - sqlprocedure to expose the data you need via xDBC.
go to post Eduard Lebedyuk · Jul 31, 2019 Doesn't CORS exist to prevent exactly that?Check that origin/referer headers in your OnHandleCorsRequest are what you expect them to be and all would be good.
go to post Eduard Lebedyuk · Jul 30, 2019 E=D should work.You don't need to throw an exception, just return error %Status from handler method.
go to post Eduard Lebedyuk · Jul 29, 2019 The problem with JSON_OBJECT is that you need to write each field twice for each query.It's good for one-off things, but for generalized solution authors approach looks better.
go to post Eduard Lebedyuk · Jul 29, 2019 I use Pycharm for complicated projects and debugging and bash for quick scripting.Also check PythonGateway - it comes with integrated Python interpreter right in your IRIS terminal.
go to post Eduard Lebedyuk · Jul 29, 2019 If you don't need statistics, this should help kill ^rINDEXSQL("sqlidx") or with macros kill $$$SQLIndexRoot Untested but should help. Maybe backup the global just in case.
go to post Eduard Lebedyuk · Jul 27, 2019 Tip.Metadata does not change from one row to the other and accessing it takes time, so removing it from the row loop would improve the execution speed: Class User.Test { Query TestQuery() As %SQLQuery { SELECT * FROM Sample.Person } /// do ##class(User.Test).Test() ClassMethod Test() { for method = "EveryRow", "Once" { set rSet = ..TestQueryFunc() set start = $zh do $classmethod(, method, rSet) set end = $zh write $$$FormatText("Method %1 took %2 sec.", method, end - start), ! } } ClassMethod EveryRow(rSet As %SQL.ISelectResult) { set tResults = [] while rSet.%Next() { set tRow = {} set tMetadata = rSet.%GetMetadata() set tColumnCount = tMetadata.columns.Count() for x=1:1:tColumnCount { set tColumn = tMetadata.columns.GetAt(x) set tColumnName = tColumn.colName //do tRow.%Set(tColumnName, rSet.%GetData(x) ) set $PROPERTY(tRow,tColumnName) = $PROPERTY(rSet,tColumnName) } do tResults.%Push(tRow) } } ClassMethod Once(rSet As %SQL.ISelectResult) { set tResults = [] set tColumns = "" set tMetadata = rSet.%GetMetadata() set tColumnCount = tMetadata.columns.Count() for x=1:1:tColumnCount { set tColumn = tMetadata.columns.GetAt(x) set tColumnName = tColumn.colName set tColumns = tColumns _ $lb(tColumnName) } while rSet.%Next() { set tRow = {} for x=1:1:tColumnCount { do tRow.%Set($lg(tColumns, x), rSet.%GetData(x) ) } do tResults.%Push(tRow) } } } Results for me: >do ##class(User.Test).Test() Method EveryRow took .017803 sec. Method Once took .01076 sec.