go to post Danny Wijnschenk · Sep 20, 2023 Hi Mark,Can you look in the definition of one of the classes/sql tables where you don't see any data : In Studio, when looking at the storage (bottom), which global is it using (usually name of the class + D) ? Where is this global mapped, and can you see this global in the database in management portal (System Explorer -> Globals).
go to post Danny Wijnschenk · Sep 18, 2023 Can you check if the globals that are referred to by the table definitions are in any database ?Can you look in the cpf file if they are mapped to another cache.dat.
go to post Danny Wijnschenk · Sep 4, 2023 Hi Pedro,Probably it has something to do with access rights : do you login with csp, else CSP is using the UnknownUser.Can you check the result of the %Execute() call (listaPropriedades.%SQLCODE and listaPropriedades.%Message will have error values if the SQL could not run properly)
go to post Danny Wijnschenk · Jul 26, 2023 The difference between embedded SQL (&sql() )and Dynamic (%ResultSet or %SQL.Statement) is that embedded is static and compiled in the code. You can only use parameters (preceded by colon) in the Where and Into Clause, but not change the SQL itself. You could write a bunch of If statements to call different &sql( ... ) code, depending the conditions, but if these combinations are to numerous you better use dynamic SQL.
go to post Danny Wijnschenk · Jul 26, 2023 Hi Pedro, You can use : Write $Order(^$GLOBAL("")) https://docs.intersystems.com/iris20231/csp/docbook/Doc.View.cls?KEY=RCO...
go to post Danny Wijnschenk · Jul 25, 2023 Hi Fabio, I use the Iris Core license for applications that use REST heavily : you pay per core instead of per concurrent user.It might be a better deal depending on:- concurrent users- CSP & REST usage- CPU usage (how many cores does your server need to serve all users)
go to post Danny Wijnschenk · Jun 25, 2023 Can you show us what you have coded in the catch block ? There should be no problem in handling your own error.
go to post Danny Wijnschenk · Jun 13, 2023 Hi Dinesh,I am working on a tool that is doing the following :- create Swagger input file to enable manuel testing of api's (by adding enough comments in the resthandler/methods to generate this automatically)- create UI to enter scenarios to automate unit/integration tests on api's:-- call api's with parameters and compare response with expected status/response-- use response of previous api's in a scenario to populate parameters for next api in scenario (e.g. post returns an id, next put will use the id to change, next delete will delete the id)-- ability to run a scenario (set of api's) in a transaction, and to rollback in the end (by replacing actual REST call by in-process call)
go to post Danny Wijnschenk · Jan 11, 2023 You can use 'client->name as clientname' and .%Get("clientname") or use .%GetData(columnnumber)
go to post Danny Wijnschenk · Jan 5, 2023 Hi Larry,Can yo start from the command prompt without emergency mode (ccontrol start trycache) ?If yes, the help mentions that emergency mode is not using the control service, did your control service have specific rights ? Btw, did you try the default password for SuperUser or Admin. (https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...) ccontrol start <instance name> [<full path and file name of .cpf file>] Starts Caché instance <instance name>, optionally using the specified .cpf file. If a new .cpf file is specified, it becomes the default startup .cpf file. Note: An optional /EmergencyId=Username,Password can be used to start Caché in emergency mode. When the EmergencyUserId argument is supplied, the system starts up in emergency mode in which only the baseline databases are mounted and access to Caché is governed by Caché login using that username and password. Emergency mode is supplied to give access in the event that privileged users are not available or their password is forgotten. Emergency startup is only available from an administrator account. When Caché is started in emergency mode, the Caché control service is not used. This means that if you log out of Windows, all the Caché processes will immediately exit.
go to post Danny Wijnschenk · Jan 2, 2023 If on Windows : Start Windows Powershell (Admin) C:\ cd /intersystems\cache\bin (the directory where you installed caché)C:\Intersystems\cache\bin> ./ccontrol all (this should open a text file with the instances you have, note the name of your instance, it is 'cache' in my example) Instance Version ID Port Directory ------------- ---------- ---- --------- up cache 2018.1.2.309.0 1972 c:\intersystems\cache If Caché is not down :C:\Intersystems\cache\bin> ./ccontrol stop cache To start Caché in emergency mode :C:\Intersystems\cache\bin> ./ccontrol start cache /EmergencyId=tempuser,temppw (in my case, i got Win Defender warnings, accepted access) Verify Caché is running :C:\Intersystems\cache\bin> ./ccontrol all Launch Caché management portal, login with tempuser and temppw, go to System Admin -> Users (might have to login again with temp credentials)Change pw for your user(s). Restart Caché
go to post Danny Wijnschenk · Dec 24, 2022 To check if a database is corrupt : Do ^INTEGRIT To repair a database : Do ^REPAIR (But if you don't know this utility or the internals of database blocks and pointers : don't use it !!!)
go to post Danny Wijnschenk · Nov 28, 2022 Hi Michel,Good subject, i like to question the things we are used to, but look strange to the outside world.I would welcome the possibility to change the precedence to something more 'standard'. When i taught Object Script courses, the left-to-right precedence was always the first thing i mentioned, and it always blew the heads of my students.Unfortunately, the option is not present, and even if there could be ways to implement such an option by InterSystems (e.g. as a method keyword to alter the precedence), the general behaviour will have to default to the current precedence to not break existing code.Maybe editors like vs-code can issue warnings when operators are used without brackets in Object Script.
go to post Danny Wijnschenk · Nov 18, 2022 Hi Tiago, There is always a risk of getting errors after an upgrade, depending how your application uses Caché.For example : your application could use custom data/code that is stored in the manager's database, and that database will be overwritten in the upgrade, so you will risk loosing data/code. (It is bad practice to store info there, but it is possible) Best is to contact the vendor/developers, and test the upgrade by copying the server to a test server and do the upgrade there.
go to post Danny Wijnschenk · Oct 21, 2022 I added the way to find out which global name is used in my first reply : try write ##class(%Dictionary.CompiledStorage).%OpenId("MyPackage.MyClass||Default").DataLocation
go to post Danny Wijnschenk · Oct 21, 2022 When doing a create table, it is indeed a hashed global name, but when defining a new class in Studio, it is still clasname_"D" (unless the global name becomes too long). The parameter USEEXTENTSET=1 will alter this behaviour (in class definition or CREATE table statement) :Global Naming Strategy: you can use the USEEXTENTSET parameter to specify shorter and more efficient hashed global names for data and index lookup operations. You can use %Library.CompiledStorage to find out what the global name is for a class : https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic....
go to post Danny Wijnschenk · Oct 15, 2022 Hi Robert,yes, i never use indirection unless it cannot be done in another way, (or to show-off what cache object script can do)
go to post Danny Wijnschenk · Oct 15, 2022 The section you refer too describes the behaviour if a client connects more than 25 times (= 'the maximum' in your text) :When a client starts with e.g. 3 connections, it counts for 1 license.When the client keeps adding more connection from the same ip, it will remain taking only 1 license, until it reaches 25 connections, at that time, it will count for 25 licences.When the client keeps adding connections (e.g. 30 in total), the licence count add also up to 30 for this client.When the client count drops below 25 again (e.g. 10), the licence count keeps counting all these connections as a separate license (so the client will still occupy 10 licences)Even if the license count drops to 1, and goes up again to e.g. 5, the client will take 5 licenses.Only when the client logs out completely, the counting of licenses will revert back to the inital behaviour where all connections below 25 only count for 1 license.So you do not have to purge licenses : they will go away automatically when the client disconnects (except for csp pages where there is a 'grace' period which still holds the license for a number of minutes)You just have to make sure your client count does not reach 25, or the client should disconnect when this happens to prevent a high license count.
go to post Danny Wijnschenk · Oct 15, 2022 You can use indirection : USER>set field="name" USER>set @field="Henry" USER>write @fieldHenryUSER>write nameHenry