#Caché

30 Followers · 4.6K Posts

  

InterSystems Caché is a multi-model DBMS and application server. See more details here.

Documentation.

Article Sylvain Guilbaud · Aug 24, 2023 1m read

It sometimes happens that due to an adverse event the AUDIT database (IRISAUDIT) has grown to such proportions that the disk it resides on is full and the daily purge cannot be expected to reclaim disk space.

As IRISAUDIT is a system database required at startup, there is no question of attempting to restart IRIS after simply deleting IRIS.DAT from the <IRIS ROOT>/mgr/irisaudit/ database, nor of hot swapping, by system manipulations trying to dismount, replace, remount, since it is simply not possible to dismount it.

4
0 366
Question AndreClaude Gendron · Apr 19, 2016

We are trying to create a simple class extending %RegisteredObject that could be used as a singleton. However we are not able to store it in a global to later be retrieved (by the same process but elsewhere in the code).

I resumed my issue in this small code sample : 

ClassMethod RunMe()
{
   // Create a simple %RegisteredObject
   set obj = ##class(%ZEN.proxyObject).%New()
   set obj.MyProp = 22
   do ##class(%SYSTEM.OBJ).Dump(obj)
   
   // Store it in a global
   set ^MyGlobalName = obj
   write "Stored : " _ obj,!!
      
   // Retrieve it from the global
   #Dim obj2 As 

8
0 1095
Question Sandeep K C · Aug 22, 2023

Hi guys,

In Cache CSP application, I have enabled Password expiration days to certain days in System > Security Management > System-wide Security Parameters. When password expires for the users and they try to login the login page takes to standard cache password change page. 

Is there anyway I can display my overridden page instead of standard cache password change page? 

Reason to display my own page:  I needed to break down the UserName, for eg: UserName into CompanyID - IBA and User ID - san.

Currently, I have overridden %CSP.PasswordChange class to CSS.CSP.ChangePassword.

2
0 232
Question Smythe Smythee · Aug 8, 2023

Hi community,

I am trying to map  <assign value='source.{ORCgrp(1).RXE:7.1}' property='target.{ORCgrp(1).RXE:7.1}' action='set' /> in data transformation 

My input value for source RXE isRXE:7.1 will be like Keep orders~New orders  ~       ~ new orders

 After mapping i am getting only First repetition value i,e is only Keep orders value  

I have tried using $EXTRACT like this <assign value='$EXTRACT(source.{ORCgrp(1).RXE:7.1},1,*)' property='target.{ORCgrp(1).RXE:7.1}' action='set' /> in data transformation  still getting First repetition value in target message

How to get full 7.

3
0 284
Article Mihoko Iijima · Aug 17, 2023 1m read

InterSystems FAQ rubric

It can be obtained using AllFields query of %SYS.ProcessQuery class.

For the details, please refer to the document Process (Job)【IRIS】Process (Job).

An example of execution in the terminal is as follows.

USER>set##class

For example, the same as a method.

##class
2
1 534
Question Pablo Garcia · Aug 21, 2023

Hello everybody. I have a problem a little bit strange. The thing is that there is a Task on Cache that by default is executed everyday at 4:00:00 that, with my settings, will delete all the Audit logs with more than 70 days of existence. The problem is that everyday this task is executed without an error message (status "Success" after the task is finished) but no data is cleaned, the same if I executed this particular task on the "Task Schedule" screen.

12
0 307
Question John Bradshaw · Jul 12, 2023

I found the thread that discusses object mapping, in particular mapping a common global among more than one namespace. The example that is given is a simple one when it's ^global(sub1, ^global(sub2, etc. However I'm having trouble getting this to compile/work when the global has a fixed subscript amongst variable ones.

I have this global in namespaces LAB and ARK in the following format:
^CB(1,sub1)=....

^CB(1,sub2)=...

^CB(1,sub3)=...

4
0 458
Question Javier Gonzalez · Jun 1, 2017

I'm doing a REST service. A method has as body parameter a JSON corresponding to a class A.

In my production I have class A so that I retrieve the parameters using a dynamic object, such that:

Set body = ##class(%DynamicObject).%FromJSON(%request.Content)
Set myObjectA = ##class(A).%New()
Set myObjectA.Id = body.Id
Set myObjectA.Name = body.Name
Set myObjectA.Date = body.Date
Set myObjectA.Salary = body.Salary

I would like to know if I can avoid doing the manual mapping, doing a casting, since I am sure that FromJSON will return a class A. Something like this:

Set myObjectA = ##class(A).%FromJSON(%request.Content)
9
1 1077
Article Megumi Kakechi · Aug 10, 2023 2m read

InterSystems FAQ rubric

※Use this method if you want to compare databases that have been replicated using mirroring, shadowing, or some other mechanism.

You can use the DATACHECK utility to compare global variables. Please refer to the document below.
Overview of DataCheck [IRIS]

***

Routine comparisons use the system routine %RCMP or the Management Portal.

Below is how to use it in the Management Portal.

0
2 481
Question Pedro Lopes · Aug 9, 2023

Class Contatos.Amiguinho Extends %Persistent
{
Property Moradia As Cidade;

Relationship Trabalho As Contatos.Empresa [ Cardinality = one, Inverse = Nomedaempresa ];
}

------------------------Routine-----------------------------------
Set objcontato=##class(Contatos.Amiguinho).%New()
Set IDm=3,IDt=2
Set objcontato.Moradia=##class(Contatos.Cidade).%OpenId(IDm)    ;<-- it works for "Property Moradia As Cidade"
Set objcontato.Trabalho=##class(Contatos.Empresa).%OpenId(IDt)  ;<-- it doesn't works for "Relationship Trabalho As Contatos.Empresa"
Set ret=objcontato.

15
0 307
Question Rathinakumar S · Jul 26, 2023

Hi,

We have a global with 65 million entries. All we are doing is just iterating through each entry to find out the total no of entries. It is currently taking 110 minutes. Is this something normal? What can we do to speed up this process? Below is the program for just iterating each entry in the global.

s sub=" ,count=0
f{              
     s sub=$o(^YYY(sub)) q:sub=""
     s count= count +1
     }
     w!, "Total Count:"_ count
 

19
1 717
Question Brian Harmon · Aug 5, 2023

I'm trying to read data from a file and it contains single precision (4 byte) float values.  Does Iris/Cache' have a way to convert the binary into a Cache' variable that is accurate?

ZW RECORD
RECORD="EDID"_$c(17,0)_"fLargeRefMinSize"_$c(0)_"DATA"_$c(4,0,0,0,0)_"DGMST&"_$c(0,0,0,0,0,0,0)_"d"_$c(14,0,0,30)_"h+"_$c(0)_"("_$c(0,0,0)_"EDID"_$c(22,0)_"fBribeSpeechcraftMult"_$c(0)_"DATA"_$c(4,0)_"ÍÌÌ=GMST"_$c(28,0,0,0,0,0,0,0)_"c"_$c(14,0,0,30)_"h+"_$c(0)_"("_$c(0,0,0)_"EDID"_$c(12)

The float DATA value for "f" LargeRefMinSize is $c(0,0,0,0) which is obviously 0.

6
0 261
Question Guilherme Silva · Sep 13, 2019

I'm trying to create a simple mirror with two Cachés 2016.2.1.803 Instances,

but after i create the mirror with the primary and try to connect the fallouver server, i receive the following message:

ERRO #2071: Erro ao recuperar informações do conjunto espelho para 'BPLUS'. Erro: Connection failed: Unexpected error: <READ>SSLServer+191^MIRRORCTL

i'm not using ssl on this configuration, tried with arbiter and without, same effect.

Tried with Caché 2018.1 and Caché 2016.2.1, same problem.

Some tips?

Best,

2
0 1109
Article Mihoko Iijima · Jul 20, 2023 4m read

InterSystems FAQ rubric

You can search for a specific global variable in the journal file using the ByTimeReverseOrder query of the %SYS.Journal.File class and the List query of the %SYS.Journal.Record class.

The role of each query is as follows.

A) %SYS.Journal.File query of the ByTimeReverseOrder class

You can get the journal file name. Results are returned in descending order of journal file name. 

USER>set##class

B) %SYS.Journal.Record query of the  class

You can get journal records for a specific journal file.

If you use 2022.2.0+ , you can run the query with %SQL.Statement.

%PrepareClassQuery
1
1 552
Question Steven Coker · Jul 12, 2023

Can %Service_telnet be enabled programmatically? I have the need to enable this feature so that I can automate a script I have for Cache, but unless the telnet service is on, the session cant connect.

6
1 512
Question Rich Taylor · Jun 15, 2016

I am in need of a routine or class method to generate an Oauth 1.0 signature.  I was about to code this myself, but thought to check first to see if anyone has already done this and is willing to share.

Thanks in advance for any help.

[UPDATE  06/28/2016]

As there appears to not be a readily available solution I created a class to provide Oauth 1.0 authentication.  This class is attached in a zip file.  Methods are provided that generate a signature for a given URL request based on a consumer key and consumer secret.

3
0 744
Article Satoshi Hosoi · Jul 27, 2023 1m read

InterSystems FAQ rubric

Whether the value of a local variable is an OREF or not can be determined using $IsObject(). Let v be the variable you want to check,

$IsObject1// v is an OREF

Note that $IsObject(v) will give an UNDEFINED error if v is undefined.

To avoid UNDEFINED errors, it is recommended to use $Get like this:

0
0 486
Question Fabio Care · Jul 24, 2023

After installing IRIS 2023.1 on a live copy of our production machine our REST Service now consumes a CSP Session with every request. The request is handled as expected, but uses one of the 5 CSP Session per license. So after 25 requests, the license is used up. The Grace time always shows 0 and the session stay for very long. (Maybe the 900 Seconds timeout). 
On Caché 2018, we had the same settings for the Webapp and there, only a single Session was set for all requests. The Caché request didn't use any cookies. 
Here we also used  $system.License.

7
0 594
Question Colin Brough · Jun 6, 2023

One of our development Ensemble instances is misbehaving. We suspect we'll just need to reinstall it - which would be a hassle. Before we do, we wanted to check we weren't missing some kind of easy fix. The symptoms we are seeing:

  1. A Cache process is running at 100% CPU on one core of the server - its the TASKMGR process
  2. That Cache process resumes at 100% on Ensemble restart, and indeed after server reboot
  3. There might be evidence of corruption in the task schedule: there's a "next scheduled date" of 1840-12-31 00:05.
12
0 692
Question Blake Hernandez · Jul 14, 2023

Hi all, 

We are doing a SQL server upgrade to SQL server v.15 from a legacy server which had v.10 . I have our Cache server as a linked server int order to pull data from our system. When building out the ROWSPEC, I have my fields typed as %String with various lengths with one field having a max length of 15000. The SQL server is trying to interpret this as a text data type instead of varchar(n). Text is a depracated data type since SQL server 2008.

1
0 456
Question Stuart Strickland · Jul 13, 2023

Suppose you have routine ^A loaded in your partition in programmer mode and you call routine ^B. Routine ^B finds the value of $ZU(96,9) which should be the calling routine.

But $ZU(96,9) now returns null, as does $SYSTEM.Process.CallingRoutine()

Works on 2018.1.7 but not 2018.1.8

$ROLES= %All on both systems

More precisely I have line label ZZPP in ^%ZLANGC00 which needs to identify the original routine in the partition and do some work on it. When I type ZZPP I get nothing on the later version. Here's the line of code:

ZZPP New RTN Set RTN=$ZU(96,9) QUIT:RTN=""  WRITE !

4
0 364
Article Gevorg Arutiunian · Mar 29, 2020 2m read

Now the Classes/Rutines/DeepSee files will be automatically exported to the working directory after saving or compiling and files will be automatically deleted .

Installation

To install isc-dev , you just need to download and import the file isc-dev.xml from last release. Some ways to import isc-dev .xml file:

  • Go to Management Portal -> System Explorer -> Classes -> Import and select the XML file.
  • Drag the file over Studio.
  • Terminal command:
NS>do $system.OBJ.Load("yourpath/isc-dev.xml","ck")
NS>zpm
zpm: NS>install isc-dev

How to enable this feature:

  • After importing the class in the target namespace, run the following method to set up the working directory:
NS>do ##class(dev.code).workdir("/path/to/your/working/directory/src/")
  • Go to Management Portal -> System Administration -> Configuration -> Additional Settings -> Source Control.
  • Select the target namespace and set the dev.FileManExtension class as the main one and save it.
  • Try to create a new class in the studio and save/compile it
  • Enjoy!
4
2 571