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.
go to post Eduard Lebedyuk · Jul 25, 2019 By default Ensemble service is run under System account, which does not have user environment variables.You can either specify system variables or run Ensemble service from a user account.
go to post Eduard Lebedyuk · Jul 21, 2019 This really helps when you have several running containers simultaneously and don't know what port of Management Portal relates to a certain terminal.Wouldn't help, as terminals would report internal container port, which is always 52773.
go to post Eduard Lebedyuk · Jul 20, 2019 For general approaches check Debugging Web articles: Part 1, Part 2.
go to post Eduard Lebedyuk · Jul 19, 2019 Check this post to see how you can access all levels of dynamic object.
go to post Eduard Lebedyuk · Jul 18, 2019 I suggest you contact the WRC for this problem.I think the problem is in the command escaping.
go to post Eduard Lebedyuk · Jul 18, 2019 Try C:\InterSystems\Cache\bin\cache.exe -s C:\InterSystems\Cache\mgr -U %%SYS C:\Users\Zdenda\Desktop\run.script
go to post Eduard Lebedyuk · Jul 18, 2019 Well, show your cmd script (as text) and ObjectScript script.
go to post Eduard Lebedyuk · Jul 18, 2019 ObjectScript script I guess. Just a file with ObjectScript commands.Here's a sample.
go to post Eduard Lebedyuk · Jul 18, 2019 You need to either escape your command or use a separate file for a script. I recommend a file.
go to post Eduard Lebedyuk · Jul 18, 2019 I've got minimal security settingsThen you don't need to provide user and password. I can use this method right Login(Username As %String, Password As %String)?No. First line of script - user, second line - password. After that - ObjectScript.Do $system.OBJ.Load("Installer.xml", "c") I dont know why. Try full path. Also this method returns status, check it: Set sc = $system.OBJ.Load("/path/to/Installer.xml", "c") Write:('sc) $System.Status.GetErrorText(sc)
go to post Eduard Lebedyuk · Jul 18, 2019 First two lines of your script should probably be user and password, unless you're running a minimal security install or enabled OS authentication.ObjectScript code after that, yes, sothis looks correct do ##class(User.Installer).setup() Maybe you need to load User.Installer beforehand? Use $system.OBJ.Load(file, "c") to load and compile class(es) you need.
go to post Eduard Lebedyuk · Jul 18, 2019 Sure csession {INSTANCE} -U{NAMESPACE} < {SCRIPT} Script contains code you want to execute, in your case the call to installer manifest. It could be a file or just the code itself. Example. A series of articles about automating CI/CD.
go to post Eduard Lebedyuk · Jul 17, 2019 Fixed some issues in REST, but you have license problem. ClassMethod CreateCoffee() As %Status { s json = {}.%FromJSON(%request.Data) s CoffeeProp = ##class(User.PropertyName).%New() s CoffeeProp.CoffeeName= json.CoffeeName s CoffeeProp.CoffeeColor=json.CoffeeColor s CoffeeProp.CoffeePrice= json.CoffeePrice s Status = CoffeeProp.%Save() }
go to post Eduard Lebedyuk · Jul 17, 2019 Use ccontrol qlist to get structured information about available instances.ccontrol qlist [<instance>] [nodisplay > outputfile]Display a quick list of information about all installed instances, in a format suitable for parsing in command scripts.The record for an instance contains fields separated by "^" (carats):Field 1: instance nameField 2: instance directoryField 3: version identifierField 4: current status for the instanceField 5: configuration file name last usedField 6: SuperServer port numberField 7: WebServer port numberField 8: JDBC Gateway port numberField 9: Instance status (e.g., ok, warn, alert)Field 10: Product name of the instanceField 11: Mirror Member Type (e.g., Failover, Disaster Recovery)Field 12: Mirror Status (e.g., Primary, Backup, Connected)
go to post Eduard Lebedyuk · Jul 17, 2019 How is it valid JSON?1. JSON accepts only double quotes. Single quotes are not valid.2. Property names must be quoted (in double quotes). error/txt are not quoted.Here's JSON standard.