go to post Robert Cemper · Nov 5, 2017 Found it:Exceptions to READ COMMITTED 1 of some moreIf you query contains an aggregate function, the aggregate result returns the current state of the data,regardless of the specified ISOLATION LEVEL. Therefore, inserts and updates are in progress (and may subsequently be rolled back) are included in aggregate results. Deletes that are in progress (and may subsequently be rolled back) are not included in aggregate results. This is because an aggregate operation requires access to data from many rows of a table.see:http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Nov 5, 2017 do this change START TRANSACTION %COMMITMODE EXPLICIT ISOLATION LEVEL READ COMMITTED, READ WRITEdocs:http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...
go to post Robert Cemper · Nov 5, 2017 being suspicious on any * do you see the same behavior for select count(AttrA) into :ans from Test.Table)
go to post Robert Cemper · Oct 27, 2017 And here's the complete recording:https://www.youtube.com/watch?v=J3QLibe15xs[ including 30 min break ]
go to post Robert Cemper · Oct 27, 2017 Hi Eduard !Being a little bit lazy I simplified the query (for less typing)My example: SELECT * FROM %Dictionary.StorageDataValueDefinitionwhere id [ 'Sample.Person'And it works fine for persistent and serial classes.My hidden assumption: there is only 1 Storage Strategy.The nice point about:you get also storage locations of deleted (!!) properties that eventually might be invisible in class definition.
go to post Robert Cemper · Oct 25, 2017 ECP always acts as Master/Slave relation.Server 2 holds the "FROM" DB as ECP master while Server1 pulls it down as ECP client.So from logic Server2 just can "reply" to requests from Server1.Though I'm not sure how a firewall in between has to be configured.
go to post Robert Cemper · Oct 25, 2017 Assumimg you have both DB on the same instance but different namespaces "FROM" and "TO" You may run a loop like this set id="" for cnt=1:1 { set id=$ORDER(^|"FROM"|Data(""),1,value) quit:id="" set ^|"TO"|Data(id+10000000)=value) if cnt#100000 write cnt,?10,id,! } For the connections of the host you may use ECP For a more structured global you might need to use $QUERY() The write is just to see progress
go to post Robert Cemper · Oct 22, 2017 It might be tricky to feed PARAMETERS that are accepted by class compiler.
go to post Robert Cemper · Oct 22, 2017 You may define properties by writing to ##class(%Dictionary.PropertyDefinition)as part of a ##class(%Dictionary.ClassDefinition) http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?P...Parameters is then defined as array of %CacheString; And you set it just as any other array. [SetAt() ..... ]and then compile the class to use that property inside the class This is nothing you may do on the fly.
go to post Robert Cemper · Oct 22, 2017 YES it is !Class %DeepSee.ResultSet has a method %CancelQuery that does the trick.http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?P...http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?P...Chapter Using the Result Set API tells you some more details.http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=...especially:If you used %ExecuteAsynch(), periodically check to see whether the query has completed. If the query uses any plug-ins, make sure that any pending results are also complete; pending results are the results from the plug-ins, which are executed separately from the query.To determine the status of the query, call the %GetStatus() method of your instance. Or call the %GetQueryStatus() class method of %DeepSee.ResultSet. These methods return the status of the query and also (separately) the status of any pending results; see the class documentation for details.Optionally, to cancel a query that has not yet completed, call the %CancelQuery() class method.A practical example is seen in ##class( %DeepSee.UI.Analyzer). onunloadHandler()
go to post Robert Cemper · Oct 19, 2017 Changing IDKey to %Integer is not enough for Bitmap IndexingYou also have to set MINVAL =1 to prevent 0 or negative integers !
go to post Robert Cemper · Oct 19, 2017 Hi Scott,analyzing ##class( EnsLib.SQL.Common).ExecuteProcedureParmArray(.....)I think you should be able to provide a prepared Snapshot to set the required parameters.At least $$$sysTRACE("Using initialized SnapShot "_(tNumRS+1)) points in this directionSo your code might look like this:Set SelectPER355MC=##class(%ListOfObjects).%New() Set preset=##class(EnsLib.SQL.Snapshot).%New()Set preset.MaxRowsToGet=12000do SelectPER355MC.SetAt(preset,1)set tSC = ..Adapter.ExecuteProcedureParmArray(.SelectPER355MC,.output,SPQuery,"oi",.parm)I have no environment to check the approach.So it's up to you to verify it.
go to post Robert Cemper · Oct 18, 2017 I'm sorry.I'm not aware of ANY documentation on required privileges by any Query.I understand quite well your intention but especially <Protect> is hard to trap double hard inside a Class QueryWith privileged app you limit the scope and get control over access parameters.
go to post Robert Cemper · Oct 17, 2017 up to now I would do it:SELECT Name,Home_Street FROM Sample.Person ORDER BY +Home_StreetWhere's the improvement ? I see no difference.
go to post Robert Cemper · Oct 16, 2017 ERROR 5540 - User "UnknownUser" is not privileged for the operation.This tells me that you don't login with a managed user with enough privileges.So you could have a dedicated user just for this purpose.ORgive "Unknown User" enough rightsORmake use of a Privileged Application to assign temporary required Resources (my guess "%Developer") more on this and pp.http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.PortalHelpPag...
go to post Robert Cemper · Oct 16, 2017 Adding a recipient to your mail could could eventually improve your result significantlyIf no other part of your code does it. http://docs.intersystems.com/latest/csp/documatic/%25CSP.Documatic.cls?P...
go to post Robert Cemper · Oct 16, 2017 Alexey,You are totally right.Indirection just does a mimic of "address" while it's in fact the "name" of a variable or global.A kind of "symbolic addressing".
go to post Robert Cemper · Oct 10, 2017 I used this rule of thumb:selectivity > 8 % candidate for bitmap indexselectivity < 2 % normal indexin between it's a mater of investigation and other side conditions beyond selectivity