#Caché

30 Followers · 4.6K Posts

  

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

Documentation.

Question Thembelani Mlalazi · Mar 12, 2019

I am trying to convert a string to date but can not get it to work I have  function that I would like to take in a date string and covert it to date object

here is the ezample so far can not get it to work any help appreciated 

set p="12/03/2019"
 
w $System.SQL.TODATE(p,"YYYY-MM-DD")
 
<ILLEGAL VALUE>todate+32^%qarfunc

if I try this still get the wrong value returned

set p="12/03/2019" 
w $ZDATE(p,3)
1841-01-12
6
0 3478
Question John Peeke · Mar 19, 2019

Hello all,

I am having some issues creating a docker image with a fresh cache installation. The error that I am getting right now is that gzip is required for a cache installation, but was not found in my system. Even though, this is shown as installed in the base centos 7 image. My host machine is Windows 10 using the latest docker version.

Here is my dockerfile, its simple:

FROM centos:latest

RUN yum update -y && yum -y upgrade

COPY ./cache-2017.1.3.317.0.18571-lnxrhx64.tar.gz .

RUN tar -zxf cache-2017.1.3.317.0.18571-lnxrhx64.tar.gz

RUN ISC_PACKAGE_INSTANCENAME="MyDatabase" \

          ISC_PACKAGE_INSTALLDIR="/usr/cachesys/" \

          ISC_PACKAGE_UNICODE="Y" \

         ISC_PACKAGE_CLIENT_COMPONENTS="" \

         ISC_PACKAGE_INITIAL_SECURITY="Minimal" \

        /cache-2017.1.3.317.0.18571-lnxrhx64/cinstall_silent



EXPOSE 57772 22 1972

ENTRYPOINT ["ccontrol", "start cache"]
9
0 1308
Question Mark Turner · Mar 15, 2019

I have a DR Mirror   with a WIJ that is 5 times as large as the Primary Failover member. My Read-Write Reporting mirror WIJs are the same size as the Primary.  I don't  know why the DR WIJ i so large and would like to shrink it to the same size as the others.  Any suggestions are welcome. Thanks!

3
0 659
InterSystems Official Andreas Dieckow · Mar 14, 2019

Caché  2018.1.2 and Ensemble 2018.1.2 maintenance releases are now available.    

Full product installation kits can be downloaded from the WRC Software Distribution site.

For information about the corrections in this release, refer to the release notes.

This release adds support for Ubuntu 18.04 and Windows Server 2019.1 operating systems. You can see the details of all supported platforms inthis Supported Platforms document.

The build corresponding to this release is 2018.1.2.309.0

1
0 906
Question Chip Gore · Mar 13, 2019

Hi -

I'm having odd behaviors on my EC2 hosted IRIS Community instance.

When I configure a "custom login page" in the System Management Portal for my web application I'm seeing a few different behaviors that are under documented (and also undesired)

The old Caché documentation indicates that the custom login page could be a ".csp" file, but this seems to nor be the case (i kept getting "not found" errors, even though I could bring up the page directly from the url FOR the login.csp file. To get around this, I created an HTML file and then, at least, the login page could be found to be rendered.

2
0 682
InterSystems Official RB Omo · Mar 14, 2019

March 14, 2019 – Alert: Data Integrity Issue with Mirror Database Catchup

InterSystems has corrected a defect in our mirroring technology that can result in inconsistency between mirrored databases. This defect exists for currently released Caché and Ensemble versions beginning with 2017.2 and for InterSystems IRIS Data Platform version 2018.1.

When the issue occurs, some journal updates are not applied to a mirrored database on the backup mirror member or an async member that is being caught up.

0
0 438
Question Alexey Maslov · Jan 31, 2019

Sometimes global mapping of the same globals can be defined in different ways. E.g., I need to define it for 3 globals ^qAuditC, ^qAuditLog, ^qAuditLogC from the same database named APP-NOJOURN. Which approach should be better from the performance point of view?

1) qAudit* => APP-NOJOURN (one record in global mapping table)
or

2) qAuditC => APP-NOJOURN
qAuditLog => APP-NOJOURN
qAuditLogC => APP-NOJOURN (three records in global mapping table)

From one hand, the less records in global mapping table, the better. From other hand, * can cause additional processing at run time.

3
0 684
Question Roberto Cahanap · Aug 16, 2018

I need to start doing unit testing for some of my code.

Why does it delete the unit testing class from Cache when I run the test?

Is there a way to turn this off?

20
0 810
Article Murray Oldfield · Mar 15, 2018 14m read

InterSystems Data Platform includes utilities and tools for system monitoring and alerting, however System Administrators new to solutions built on the InterSystems Data Platform (a.k.a Caché) need to know where to start and what to configure.

This guide shows the path to a minimum monitoring and alerting solution using references from online documentation and developer community posts to show you how to enable and configure the following;

  1. Caché Monitor: Scans the console log and sends emails alerts.

  2. System Monitor: Monitors system status and resources, generating notifications (alerts and warnings) based on fixed parameters and also tracks overall system health.

  3. Health Monitor: Samples key system and user-defined metrics and compares them to user-configurable parameters and established normal values, generating notifications when samples exceed applicable or learned thresholds.

  4. History Monitor: Maintains a historical database of performance and system usage metrics.

  5. pButtons: Operating system and Caché metrics collection scheduled daily.

Remember this guide is a minimum configuration, the included tools are flexible and extensible so more functionality is available when needed. This guide skips through the documentation to get you up and going. You will need to dive deeper into the documentation to get the most out of the monitoring tools, in the meantime, think of this as a set of cheat sheets to get up and running.

1
9 2482
Question Virat Sharma · Mar 9, 2019

Hi Community,

I have to make a daily task (Job) which will run (7 am to 7 pm) in a day at an interval of 3 hours. Timings are as (7:00 am, 10:00 am,13:00 pm,16:00 pm,19:00 pm). But at each time when task will run i have to set a variables as per below condition

Sample:

1) If task run at 2019-03-19 07:00 am in morning

I  have to set two variables (start and end) whose value will become like this

(set starttime= 2019-03-09 07:00:00.00 and set endtime=2019-03-09 10:00:00.00)

2) But if task run at 2019-03-19 10:00 am in morning, the value should change as per below

(set starttime= 2019-03-09 10:00:00.

3
0 416
Question Marco den Hartog · Mar 6, 2019

Hi community,

I have a rights problem when giving a user permission to perform some select queries on particular tables. So I have created a user with the following rights.

So this all works well. No problem so far. But the customer is using a program where you can easily build visually the query by selecting the table, choose the right colums etc. So the problem we have is when I give the user the Role %All the tables are shown.

And the user is allowed to query all tables.

6
0 733
Question David Morgenstern · Mar 5, 2019

I have a cache client trying to call a web service using  SOAP version 1.2.  We receive a SOAP error with the following text:

COD>w ##class(DBMS.Tools).DecomposeError(%objlasterror)

ERROR #6248: SOAP response is a SOAP fault: <Fault><Code><Value>s:Sender</Value>

<Subcode><Value>a:ActionMismatch</Value></Subcode></Code><Reason><Text xml:lang=

"en-US">The SOAP action specified on the message, '', does not match the HTTP SO

AP Action, 'siad.tpic/ITpicDefaultService/Audit'. </Text></Reason><Detail><a:Pro

blemHeaderQName>a:Action</a:ProblemHeaderQName></Detail></Fault>

From the documentation for SOAP 1.

3
0 2310
Article Gevorg Arutiunian · Mar 7, 2019 2m read

This code snippet is an example of a CSP page that has a dynamically reloading table:


<!--Demo of (re-)loading a table dynamically in a page-->
<HTML>
<HEAD>
<TITLE>   Cache Server Page To Demo Table Re-Render</TITLE>
</HEAD>
<BODY>
<TABLE ID=TEST border="1">
<tr>
<td>SSN</td><td>Name</td>
</tr>
</TABLE>
<hr>
<input type="Button" name="render" value="Create Table"
OnClick="#server(..renderTable())#;">

<script language = Cache method = renderTable arguments = "">

// Get everyone's SSN and Name from the sample database
&sql(declare TEST cursor for select SSN,Name from Sample.Person)
&sql(open TEST)

// Output the javascript that will delete all except the first row from the table
write "var rLen = TEST.rows.length;",!
write "for (i=1; i&lt;rLen; i++)",!
write "{",!
write " TEST.deleteRow(1);",!
write "}",!

// Now insert each row
for i=1:1 {
    &sql(fetch TEST into :ssn,:name)
    if SQLCODE'=0 quit
    write "var x = TEST.insertRow();",!
    // Now insert each cell into this row
    write "var y = x.insertCell();",!
    // We are using simple 'innerText' whereas more sophisticated techniques
    //   would use similar 'innerHTML'
    // For example: 'innerHTML="&lt;input type=Text name=SSN value=",ssn,"&gt;"'
    write "y.innerText=",..QuoteJS(ssn),";",!
    write "var y = x.insertCell();",!
    write "y.innerText=",..QuoteJS(name),";",!
}
&sql(close TEST)
2
0 701
Discussion Evgeny Shvarov · Mar 7, 2019

Hi Community!

There are two general ways to execute arbitrary SQL  in serverside ObjectScript code: EmbeddedSQL and ObjectScript SQL a.k.a. Dynamic SQL.

E.g. if we want to get the value of the property of instance with a certain ID using SQL we can do:

&sql(SELECT Name INTO :name FROM Sample.Person WHERE ID=1)

write name

Same result with %SQL.Statement:

set rs=##class(%SQL.Statement).%ExecDirect(,"SELECT Name as name FROM Sample.Person where ID=1")
  do rs.%Next()
  write rs.name
2
0 1169
Question Dmitry Maslennikov · Mar 6, 2019

Let's imagine you have only SQL. You need some table where you should increment value in some property when you update this line.

We have the table

CREATE TABLE "test" (
  "identifier"   VARCHAR(200) NOT NULL,
  "value"        INTEGER,
  PRIMARY KEY ("identifier")
)
6
0 865
Question Kumaresan Ramakrishnan · Jan 25, 2019

Hi, 

what is reason of this error (Not all parameters bound/registered ). this is not happening consistently.

those are class method parameters

Query GetWorkItemsByEncounterID(encounterID As %Integer, userId As %Integer, IsSuperOrDev As %Integer = -1, facilityAccessListCSV As %String(MAXLEN=32000), locationAccessListCSV As %Library.String(MAXLEN=32000), skipReferralFilter = 0) As %SQLQuery [ SqlName = spGetWorkItemsByEncounterID, SqlProc ]
 

1
0 785