Find

Article
· 14 hr ago 1m read

InterSystems IRIS Shells

Hi,

When we open a terminal in IRIS, we are entering the ObjectScript shell. Within this shell, we can execute IRIS commands, such as:

In other words, the ObjectScript command is executed in the current shell. But it's always good to remember that IRIS has other shells

  • SQL
  • Python
  • TSQL
  • MDX

One very interesting aspect is shortcuts. We can access these shells through their calls or via shortcuts, as shown in the table below:

 

Shell

Call

Shortcut

SQL

Do $SYSTEM.SQL.Shell()

:sql

Python

Do $SYSTEM.Python.Shell

:py

TSQL

Do $SYSTEM.SQL.TSQLShell()

:tsql

MDX

Do ##CLASS(%DeepSee.Utils).%Shell()

:mdx

Just like that:

Shell Python:

Shell SQL:

Shell TSQL:

Shell MDX:

 

These shells are extremely useful for running commands and tests. Having these shortcuts at hand saves a lot of time and they are very helpful when developing.

The documentation link
https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCLI_shells provides a detailed look at these shells and their features. They have several interesting features that are worth exploring.

Til next time!!

Discussion (0)1
Log in or sign up to continue
Article
· 15 hr ago 1m read

InterSystems IRIS - Shells

InterSystems IRIS - Shells

Olá,

Quando abrimos um terminal no IRIS estamos entrando no ambiente ObjectScript. Nele podemos executar comandos do IRIS, tais como:

Ou seja, o comando ObjectScript é executado no shell corrente. Mas é sempre bom lembrar que o IRIS tem outros shells:

  • SQL
  • Python
  • TSQL
  • MDX

Uma questão bem interessante são os atalhos. Podemos acessar estes shells pelas suas chamadas ou através de atalhos, conforme a tabela abaixo:

Shell

Chamada

Atalho

SQL

Do $SYSTEM.SQL.Shell()

:sql

Python

Do $SYSTEM.Python.Shell

:py

TSQL

Do $SYSTEM.SQL.TSQLShell()

:tsql

MDX

Do ##CLASS(%DeepSee.Utils).%Shell()

:mdx

 

Simples assim:

Shell Python:

Shell SQL:

Shell TSQL:

Shell MDX:

 

Estes shells são extremamente úteis para execução de comandos e testes. Ter estes atalhos à mão poupa bastante tempo e eles são muito úteis quando estamos desenvolvendo.

No link da documentação https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GCLI_shells podemos ver em detalhes esses shells e suas características. Eles tem vários recursos interessantes que valem a pena serem explorados.

Até a próxima!

Discussion (0)1
Log in or sign up to continue
Article
· 19 hr ago 2m read

CCR: Block markMoveToXXXXComplete, markCANCELComplete with Undeployed ItemSets

As part of improvements regarding CCR usage and usability, certain transitions are now blocked when a CCR Record has undeployed ItemSets for required Environments. 

 

To promote best practice, when a Tier 1 or Tier 2 CCR moves between Environments, it is important that ItemSets are deployed to required Environments before confirming that the CCR has successfully been implemented in the next Environment. Previously, when progressing a CCR from one Environment to the next, users were not required to deploy ItemSets before performing markMoveToXXXXComplete or markCANCELComplete transitions. Now, both of these transitions are blocked if there are Undeployed ItemSets for the next Environment(s). 

There are a few important things to note with regards to this change:

  • For Tier 1 CCRs only: If a user wishes to cancel a CCR, and has Undeployed ItemSets before cancelling, the behavior of CCR is as follows:
    • any Undeployed ItemSets that exist before cancel is chosen are abandoned automatically (this is not new behavior, but important to note). Abandoned ItemSets do not prevent a user from performing the markCANCELComplete transition. 
    • new ItemSets are created for backing out changes in each effected Environment
    • These new ItemSets that are created must be deployed before performing the markCANCELComplete transition.  
  • For Tier 2 CCRs: we do not do an automatic backout, which means that undeployed ItemSets will remain undeployed until the user cleans them up, and thus, the markCANCELComplete transition will be blocked until all undeployed ItemSets are abandoned or deployed before changing Phase or moving to Cancelled by the user to encourage best practice

These restrictions are enforced on all Secondary Environments which are set to true for "Requires ItemSets." If Environments are kept up to date another way, (e.g. DB refresh, AutoDownload Task), it must be ensured that the Requires ItemSet box is unchecked in order to prevent the new workflow check from impeding work.

Please do not hesitate to comment here with questions or reach out in your normal CCR support channels.

1 new Comment
Discussion (1)2
Log in or sign up to continue
Announcement
· 19 hr ago

[Video] Optimizing Parallel Aggregation Using Shared Globals

Hey Community!

We're happy to share a new video from our InterSystems Developers YouTube:

⏯  Optimizing Parallel Aggregation Using Shared Globals @ Ready 2025

This presentation explains an optimization to parallel aggregation in SQL queries using shared globals. Previously, worker processes computed intermediate results separately and sent them to a parent process for serial aggregation, creating delays. The new approach lets all workers write directly and in parallel to a shared global, eliminating the parent bottleneck.

This greatly reduces wait time, especially for queries with many groups. Testing on 20 million rows showed up to a 38% performance improvement, while also simplifying query execution and reducing code complexity.

🗣 Presenter: Elie Eshoa, Systems Developer, InterSystems

Enjoy watching, and subscribe for more videos! 👍

Discussion (0)1
Log in or sign up to continue
Article
· 23 hr ago 1m read

Production Terminal Commands

Terminal Commands for Production:

  • Production Start, Stop, Update, Recover and Clean Production

Do ##class(Ens.Director).StartProduction(“ProductionName”)

Do ##class(Ens.Director).StopProduction()

Do ##class(Ens.Director).UpdateProduction()

Do ##class(Ens.Director).RecoverProduction()

Do ##class(Ens.Director).CleanProduction()

Abort Messages in the queue:

               d ##class(Ens.Queue).AbortQueue(“Component Name”)

Get InstanceName :

              W !,##class(%SYS.System).GetUniqueInstanceName()

Get Node Name:

              W  !,##class(%SYS.System).GetNodeName()

Terminate JobId :

   d $SYSTEM.Process.Terminate(jobid)

 Enable Namespace:

     do ##class(%EnsembleMgr).EnableNamespace($namespace)

Enable ConfigItem:

     Do ##class(Ens.Director).EnableConfigItem("ConfigNameHere", 0, 1)

Get GUID:

     write $System.Util.CreateGUID()

Get CPU Info:

    d $system.CPU.Dump()

Get Number of CPUs: Returns the number of virtual CPUs (also known as logical CPUs or threads) on the system.

   W $SYSTEM.Util.NumberOfCPUs()

Get Free Space: Display all the namespaces database free spaces

do ALL^%FREECNT

Thanks,

Discussion (0)1
Log in or sign up to continue