Caché

Syndicate content 118 

Hi, Community!

And so I continue with publishing of the tasks for the Final round of InterSystems Contest on InterSystems Caché and DeepSee as a part of IT Planet Student Championship in Sochi. This year we had about 2 000 participants in InterSystems Contest.

One of the tasks for the finals was to crack the black box and another to output 9876543210!

Here's the next task: gravity!

Last answer 11 July 2017 Last comment 13 July 2017
+ 1   0 2
165

views

+ 1

rating

I am working with Caché Relationships.

I know how to iterate through the One side of the relationship and for each One iterate through all the various Manys.

What I have been trying to figure out, is the code (I can put into a Class) that will start at the top of the Manys, iterate down and for each of the Manys, pull the associated One.

I can do this with SQL or Globals, but I want to use only Class type code.

Is that clear? Any help?

Last answer 11 July 2017 Last comment 12 July 2017
0   0 1
206

views

0

rating

You might find it useful or not. It depends on what you can imagine it to be used with, like I had to.

Either way, I created a lib that can fetch environment variables from a file or from the OS where Caché is running.

Mostly know as dotenv. Many languages have it, so why not Caché?

The usage is pretty simple:

If you want to use OS env vars exclusively, just use the method:

##class(DotEnv.Parser).FromOS()

Otherwise, if you want to specify a .env file containing your variables to complement the OS ones use the method:

##class(DotEnv.Parser).FromPath("/path/to/file")

Both methods return an %ArrayOfDataTypes containing the env variables.

Last answer 11 July 2017 Last comment 11 July 2017
+ 1   0 1
216

views

+ 1

rating

Greetings,

I am working on the first of many triggers which will have identical code upon row insertion or update of a single column.  According to the document I should be able to define a multiple-event trigger using Cache SQL/DDL.

Here is a link to the current CREATE TRIGGER documentation.  Within the description section is the following paragraph:

A single-event trigger is triggered by a specified INSERT, DELETE, or UPDATE operation. A multiple-event trigger is defined to execute when any one of the specified events occurs on the specified table. You can define an INSERT/UPDATE, an UPDATE/DELETE, or an INSERT/UPDATE/DELETE multiple-event trigger.

I have no issue creating the single-event triggers, but I cannot work out the proper syntax to create a multiple-event trigger.

Here's a sample table

Last answer 11 July 2017
0   0 0
0

comments

357

views

0

rating

Beginning - see Part 1.

 

3. Variants of structures when using globals

 

A structure, such as an ordered tree, has various special cases. Let's take a look at those that have practical value for working with globals.

 

 

 

 

3.1 Special case 1. One node without branches

 

Last comment 8 July 2017
+ 6   0 5
780

views

+ 6

rating

Quotes (1NF/2NF/3NF)ru:

Every row-and-column intersection contains exactly one value from the applicable domain (and nothing else).
The same value can be atomic or non-atomic depending on the purpose of this value. For example, “4286” can be
  • atomic, if its denotes “a credit card’s PIN code” (if it’s broken down or reshuffled, it is of no use any longer)
  • non-atomic, if it’s just a “sequence of numbers” (the value still makes sense if broken down into several parts or reshuffled)

This article explores the standard methods of increasing the performance of SQL queries involving the following types of fields: string, date, simple list (in the $LB format), "list of <...>" and "array of <...>".

+ 6   0 3
0

comments

378

views

+ 6

rating

I am experimenting with Relationships, both Parent to Child and One to Many.

I have done some SQL look-ups and have searched through the documentation, however not in a lot detail, but wonder if there are more and better ways to access both sides of Relationships through SQL?

Thank you in advance for any help provided.

Last answer 6 July 2017 Last comment 25 June 2017
0   0 7
659

views

0

rating

Hello,

I'm currently exploring alternatives to CSP/services and ODBC/Sql Maps for access to Caché. I'm not seeing a library which would interest me, so am considering creating one myself.

Does 'CacheConnection' in C# use RPC of some sort, or a defined protocol to communicate with Caché, or does it do so over telnet with scripted commands? I would assume the former. If so, is this a publicly documented protocol that can be implemented by library developers?

Any guidance in this area would be appreciated.

Last answer 6 July 2017 Last comment 6 July 2017
0   0 1
510

views

0

rating

hi

    I restored one database on Server B with EXTSELCT^DBREST command from   backup file (this backup file is taken from Server A).  

When I execute select some rows from one table,  it return error like this, 

the same select sql can return correct data  in server A

But when I select other rows from same table on Server B, it return correct data.

 

Why? maybe the backup file corrupted?

 

Thanks

 

 

 

 

 

 

   

Last answer 5 July 2017
0   0 1
0

comments

101

views

0

rating

Hello. I am a student from Syktyvakar Forest Institute(Russia). 

I need to make Research : "Databases for working with spatial data
Consider MySQL, PostgreSQL and 1 to choose from". I want to explore Cache with subject library of spatial data.

Help.

Does Someone from the developers write the libraries of spatial data?

Last answer 28 November 2016 Last comment 5 July 2017
0   0 1
232

views

0

rating

Caché offers a number of methods for going through a collection and doing something with its elements. The easiest method uses a while-loop and lets you fulfill the task in an imperative manner. The developer needs to take care of the iterator, jumping to the next element and checking if the loop is within the collection.


 But is it really what a developer should be concerned with?! A developer should be working on solving the problem at hand – quickly and producing code of the highest quality. It would be great to be able to just take a collection and apply a function to it that will perform the necessary operations on each element. No need to perform boundary checks, no need to create an iterator, no need to manually call a function for each element. This approach is called declarative programming

Last comment 4 July 2017
+ 13   0 3
1282

views

+ 13

rating

Good day, I have this issue. I have global like: ^myglobal(varX) = $LB(var1,var2). I need to delete all globals that have variable var1 in that list same without a need to iterate through all globals and checking their value.

Exact example:

- in database exist following:

^myglobal("Marek") = $LB("code2",1400)
^myglobal("Ondrej") = $LB("code1",12)
^myglobal("Nikita") = $LB("code2",32)
^myglobal("Evgeny") = $LB("code1",76)
^myglobal("Maks") = $LB("code2",99)
^myglobal("Eduard") = $LB("code1",14)

Now! How to delete all globals that have in list in the first place value "code2" please? It doesn't have to be LIST, it can be any other simple value. 

But this question can be put in other way like this

Last answer 3 July 2017 Last comment 4 July 2017
0   0 1
421

views

0

rating

Good day, I would like to find out the size of Caché ObjectScript variable in order to guarantee that my program will not leak, equally in terminal and Caché globals.  For example how huge number I can store in that variable ? And what happen in Caché when variable will leak ? How is this behavior treated? (how much memory is reserved for common variable?)

Thanks  in advance for your answers.

Last answer 3 July 2017 Last comment 3 July 2017
0   0 1
303

views

0

rating

Hi.

It is easy to receive JSON representation or dynamic Array from %ListOfDataTypes:

set l=##class(%ListOfDataTypes).%New()
do l.Insert("a")
do l.Insert("b")
do l.Insert("c")

set arrStr=l.$toJSON()
zwrite arrStr
set arr=l.$compose([])
zwrite arr

How to make backward conversion? How to receive %ListOfDataTypes from dynamic Array an JSON string?

I've tried

SAMPLES>set list = ##class(%ListOfDataTypes).$fromJSON("[""a"",""b"",""c""]")

%FromObject+21^%Library.RegisteredObject.1 *%Exception.General Compose Compose %FromObject Unable to map from %Library.Array instance to %Library.ListOfDataTypes

and

SAMPLES>write arr.$compose(##class(%ListOfDataTypes).%New())
 
zcompose+44^%Library.AbstractObject.1 *%Exception.General Compose Compose %FromObject Unable to map from %Library.Array instance to %Library.ListOfDataTypes
Last answer 30 June 2017 Last comment 8 February 2016
+ 2   0 3
715

views

+ 2

rating

Hello...

I need to convert a array  (JSON) in a List Of String. I think, there is some method that does it directly.

Something like that:

SAMPLES>set list = ##class(%ListOfDataTypes).$fromJSON("[""a"",""b"",""c""]")

%FromObject+21^%Library.RegisteredObject.1 *%Exception.General Compose Compose %FromObject Unable to map frm %Library.Array instance to %Library.ListOfDataTypes

I have reading about this but I don't found some trick to help me.

https://community.intersystems.com/post/how-convert-json-listofdatatypes

 

Thanks!!

Last answer 29 June 2017
0   0 1
0

comments

225

views

0

rating

Hi everyone!

We have many severs (DEV, QA and LIVE) besides many other slave servers (about 133) that are running Caché instances. Before writing this utility myself, I would like to know if anyone has done it before. We need to change the SuperUser password and do other credential setups like this on all of these servers and we don't want to do it one by one.

Last answer 28 June 2017 Last comment 28 June 2017
0   0 2
371

views

0

rating

A few customers have seen this happen, so I thought it would be worth mentioning here on the Developer Community.  This could affect  users running versions between 2014.1.3 and latest who install or upgrade Wireshark.  There is a bug in the Visual C++ 2013 redistributable shipped with the current Wireshark 2.2.1. 

This is from Microsoft’s bug report  https://support.microsoft.com/en-us/kb/3138367 :

“When you install an updated redistributable package, binaries for non-target architectures are removed. For example, after you install an update for an x86-based application, the x64 Visual C++ 2013 runtime libraries are missing. This fix makes sure that both versions of the Visual C++ redistributable are visible when you add or remove programs after installation of the update.€

Last comment 28 June 2017
+ 9   0 5
471

views

+ 9

rating

I would like to start a discussion regarding Caché Objects and Caché SQL.

It is my understanding that the creators of Caché Objects see Caché SQL as the reporting arm of Objects and as such SQL is essential to Caché Objects.

I once met a Caché Objects programmer who was writing code to $Order through the Globals because that person thought that Caché SQL was too slow and inefficient. I attempted to convince the person otherwise.

So, what say you? Is SQL essential to Caché Objects?

Or

Is Caché SQL a nice to have but we can do without? Is it too slow? Is it too inefficient?

I really would like to have an idea of what the InterSystems Caché Community, as well as the InterSystems Engineers and anyone else with skin in the game thinks.

Last answer 13 June 2017 Last comment 28 June 2017
0   0 11
548

views

0

rating