#Caché

30 Followers · 4.5K Posts

  

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

Documentation.

Article Mike Kadow · Jun 20, 2016 4m read

NewBie's Corner Session 8 Not

Welcome to NewBie's Corner, a weekly or biweekly post covering basic Caché Material.

Click on the Caché Cube in your system tray and select Terminal to try out these commands.

NOT operator ('), single quote or apostrophe 

The "NOT" operator reverses the truth-value and is intended for numeric operands, however it can be used on alphanumeric operands.

9
0 556
Question Yongfeng Hou · Jul 1, 2016

在Aix7.1上安装使用root用户安装cache2016.1.1.107,且在安装过程中创建cacheusr用户;更改操作系统上的cacheusr的umask后,通过数据库修改编译后的文件(如,js,csp等)在小机上查看权限不变(-rwxrw-r--  cacheusr cacheusr test.js)。

目的:通过数据库编译后的文件的other用户有读写权限。

3
0 1092
Question Ryan Vanden Heuvel · Jun 20, 2016

I am trying to write this loop as efficient as possible.  The global has over 10 million records.

SET PIDX=""    
For
 { 
              Set PIDX=$ORDER(^[Nspace]LAB(PIDX))
              Quit:PIDX=""  
              Set Data=$GET(^[Nspace]LAB(PIDX))
              Set BBData=$P(Data,"\",6)
              If BBData'=""
              {
              If BBData'="########"
              {

Am I better off not setting the variable BBData and using If $P(Data,"\",6)'=""

Also, is there a better way to write the two If statements in one line so it only continues if it is either "" or ########

6
0 902
Question Nikita Savchenko · Jun 14, 2016

Hello!

In Caché there is a way to print all current variables using write command without arguments:

USER>set Einstein = 1879
USER>set Mozart = 1756
USER>write
Einstein=1879
Mozart=1756

But is there a way to get a list of this variables? I am looking for something that would return value like $LB("Einstein", "Mozart") for this case.

Thanks!

16
0 1794
Question Paul Riker · Jun 29, 2016

I've created a CSP page to take in a base64 value from a <textarea> and decode it. When I run it I get the error . Any ideas?

Error: <ILLEGAL VALUE>zOnPageBODY+28^csp.decode.1

ErrorNo: 5002

Here is my code

<form method="post" action="">
<table>
<tr><td><textarea rows="40" cols="200" name="submitstring"></textarea></td></tr>
<tr><td><select name="decodeoption"><option>Decode</option><option>Encode</option></select><input type="submit"/></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><h2>Result</h2></td></tr>
<tr><td>
<script language=Cache runat=server>
Set tString = $Get(%request.

12
0 1313
Article Eduard Lebedyuk · Jun 28, 2016 1m read

Here's  a code snippet to calculate the length of a class or a package in lines of code:

ClassMethod ProjectLength(Mask As %String = "%Package%")
{
    Set count = 0
    Set sql =     "SELECT Name "_
                "FROM %Dictionary.ClassDefinition "_
                "WHERE NOT Name %STARTSWITH '%sqlcq' AND Name LIKE ? AND GeneratedBy IS NULL"
    Set rset = ##class(%SQL.Statement).%ExecDirect(, sql, Mask)
 
    While rset.%Next() {
        Set class = rset.%Get("Name")
        Do ##class(%Compiler.UDL.TextServices).GetTextAsArray(, class, .
3
0 586
Question Evgeny Shvarov · Jun 23, 2016

Hi!

Here is the question in Russian Forum regarding roots extracting.

In Caché ObjectScript we use exponentiation operator (**) to raise an exponent to power. F.e. let's raise 3 to power of 3: 

USER> write 3**3 

27

And we use the same operator to extract the root. 

USER> write 27**(1/3) 

2.999999999999999963

And 2.999999999999999963 is not 3, obviously.

How to extract roots properly in Caché ObjectScript?

5
0 472
Question Eduard Lebedyuk · Jun 23, 2016

I have a MySQL server with "posts" table.

I also have a Caché server with "downloadedposts" table. 

They are connected from Caché to MySQL via SQL Gateway

I want to keep Caché table synced with MySQL one  (MySQL "posts" table is a master copy), so periodically Caché queries MySQL server and downloads data. So far so good, and if a record appears or changes in MySQL table, Caché downloads the changes.

The problem I'm encountering is that sometimes rows would be deleted from  MySQL "posts" table.

How do I synchronize deletions?

4
0 1231
Article Bill McCormick · May 27, 2016 1m read

Steve Glassman is on vacation today so in his place I wanted to announce the availability of a new kit for the 2016.2 Field Test. The kit details are: 2016.2.0.665.0

There is a wide range of changes to the 2016.2 Field Test, 145 of them in total.  You can find a complete listing here:

https://wrc.intersystems.com/wrc/WRC.StreamServer.cls?FILE=/wrc/FieldTe…

Bill McCormick

Director of Product Management

4
0 480
Article Steve Glassman · Jun 24, 2016 1m read

I am pleased to announce the next 2016.2 field test kit, 2016.2.0.677.0.

I haven’t sent an update to this thread in a while and it should come as no surprise that there has been quite a lot of development going on since I wrote about build 632.  In fact, there have been almost 300 changes covering most areas of the product.

0
0 406
Question David Losiewicz · Jun 23, 2016

I am testing application code and want to simulate error conditions. 

I am trying to use the following to define a custom error with a class method.

$SYSTEM.Status.Error($$$GeneralError,"Any text here")

My class method code looks like this....

set RunStatus=$System.Status.Error($$$GeneralError,"DXL Testing Run Error")

Class compile fails because the $$$GeneralError is unknown. 

ERROR: DBMS.Reports.TaskPage.1(5) : MPP5610 : Referenced macro not defined: 'GeneralError'
 TEXT: set RunStatus=$System.

5
0 1512
Article Rob Tweed · Jun 22, 2016 14m read

In this article I'll describe how to set up web services and/or REST services using EWD 3.

Since EWD 3 is designed to be modular, you can construct the environment that exactly meets your needs, but for much of the time you'll probably find that the pre-built EWD 3 ewd-xpress super-module does most of what you need because it hooks together all the core EWD 3 and other building-blocks you'll need:

  • the Node.js web server that pretty much everyone now uses: Express
  • Caché (via the ewd-qoper8-cache module, which, in turn, relies on the cache.
1
1 1489
Article Ward De Backer · Jun 23, 2016 5m read

As Rob explained in an earlier post, Caché's Node.js interface allows you to create Web Services and REST Services using the very modular EWD 3 framework.

These services by default return a JSON response with Content-Type: application/json and the response body contains the JSON you return using the finished() method, so:

finished({ test: 'test response' });

returns

{ "test": "test response" }

with a HTTP content-type of application/json

For other external services and tools like e.g.

0
0 3316
Question Chip Gore · Jun 21, 2016

Hi -

I'm trying to rewind a cursor back to the first row after looping part of the way through the implied result set, but I'm not finding a way to make this happen, is there some such iterator variable or directive that I can leverage to accomplish this?

I could code around it by pulling identifiers and/or values into a local array, and then hand code up an iterator over my local results copy, but this feels like a "redesigning of a wheel" approach, and I thought I would check before I start down this path.

Thanks

2
0 590
Question Daniel Kutac · Jun 21, 2016

Customer is using an ancient MSM based client Workstation for their application and they made a small change to their server code. They introduced property of %Double() and discovered an issue. The MSM workstation is not able to retrieve any property of an object instance that holds value of $double(0). see images illustrating the issue.

I'm posting this to DC intentionally before I eventually send it to WRC so others can comment.

Dan

Image 1 - data

image 2 - UI

1
0 612
Article Mark Bolinsky · Feb 3, 2016 2m read

During recent large scale benchmarking activities, we were seeing excessive %sys CPU time that negatively impacted scaling of the application.

Problem

We have found that a lot of the time was spent in the localtime() system call due to the TZ environment variable not being set.  A simple test routine was created to confirm the observation, and the elapse time differences and CPU resources needed with TZ set versus TZ not set were astonishing.  It was discovered that the inherit use of stat() system calls to /etc/local_time from localtime() are very expensive when TZ is not set.

5
0 2957
Question Timur Safin · Jun 15, 2016

Let assume you have a infinitely scaling algorithm implemented in your application, using replication, ECP, or any other means of horizontal scaling, and let assume you know how to run your system under any volume of requests, the trick is to deploy required number of computing nodes in the cluster. If we are talking about cluster of 2-4 nodes your administrator (or as they call it today "devops engineer") will install anything manually. Probably he will easily handle 5 nodes configuration in the cluster. But what if you need to deploy 10, 100, or 200 properly configured, interconnected nodes?

8
0 757
InterSystems Official Steve Brunner · Jun 17, 2016

InterSystems is pleased to announce that Caché and Ensemble 2016.1.1 are now available as maintenance releases.

For a complete list of the corrections in 2016.1.1, please review the release notes.

 

Caché and Ensemble 2016.1.1 are available now for the same platforms as 2016.1.0, with the following exceptions:

  • OpenVMS is not available yet.  It will be announced separately.

  • Support for Red Hat Enterprise Linux 7 for Power System-64 is now dropped. 

The complete set of supported platforms, including specific point releases and/or patches, is detailed in the Supported Platforms document.

0
0 430
Question Jan Krestyn · Jun 15, 2016

Hello WRC.

Is possible to obtain a node-cache modul for the nodeJS ver.4.4.4. and actual Caché 2015... ?

And what is the expected outlook of this.

A note about this new portal: If I put into "search box" some text with dot like .js or .css ( for example: test.js )  , I obtaint error page. Try it.

Of course, this "Developer Community" is nice, the right way.

Nice day for all, Jan Krestyn

3
0 554
Question Laura Cavanaugh · Jun 16, 2016

Hello,

I have a question about how to set the value of a radioSet.  Yes, I know -- the documentation says that setValue can be used "client side", but gives no example.  Plus, I'm trying to set the value of a radioSet in %onAfterCreatePage, which is a Zen method? Server side method? I'm not sure.

In my Zen page I create a radioSet like this:

<radioSet id="appRadio" name="appRadio" 
displayList="App One,App Two,App Three" 
valueList="One,Two,Three"/>

I want to select a radio based on a sepcific value, that I get from code.

e.g.

Method %OnAfterCreatePage() as %Status

set value = class.

4
0 699
Article Erik Hemdal · Jun 17, 2016 5m read

Setting the TZ Environment Variable on Linux

The Update Checklist for v2015.1 recommends setting the TZ environment variable on Linux platforms and points to the manpage for tzset. This is recommended to improve the performance of Cache’s time-related functions. You can find out more about this here:

https://community.intersystems.com/post/linux-tz-environment-variable-not-being-set-and-impact-caché

The manpage on my CentOS 7 test system (RHEL 6 says the same) has this to say:

“The tzset() function initializes the tzname variable from the TZ  environment  variable.

0
0 140095
Question Francis Galiegue · Apr 27, 2016

Hello,

I am still a beginner with COS and am struggling with these concepts. While digging through the official documentation will eventually tell you everything you need to know, getting started is nevertheless not an easy feat...

Is it possible to create a "lists/array/multidimensional 101" page for beginners?

12
0 665