As mentioned in the previous article, it is possible to configure the way you wish your collections to be stored and queried in SQL.
.png)
To set this up, you will need to use the following field parameters and settings:
SQL is a standard language for storing, manipulating and retrieving data in relational databases.
As mentioned in the previous article, it is possible to configure the way you wish your collections to be stored and queried in SQL.
.png)
To set this up, you will need to use the following field parameters and settings:
In InterSystems IRIS, when you compile a persistent class, you automatically get a SQL table. Sometimes, there are situations that require having a slightly (or not so slightly) different names/options in SQL compared to Object model. Here are some of the settings that you can change to make it happen.
They define the "Face" of your class when it appears as a table in the SQL catalog.
SqlTableName allows you to change the name of SQL table that holds objects from your class. This is especially useful, when your class name uses reserved SQL words in a name, e.g. Group.
We were testing upgrades on our internal systems recently, and were initially surprised to see a change in some instances of SQL behavior. On further investigation, the changes make a lot of sense, and are easy to adapt to. But, to hopefully save you some time and provide additional information in case this is something you too find curious or interesting, we thought we would share our understanding of the changes and how we got around it to preserve previous behavior where desired.
Starting in IRIS version 2024.2.
This is the second part of an article pair where I walk you through:
As mentioned the goal is to give you a smooth “first run” experience.

If you already know Java (or .Net) and perhaps also have used other document databases (or looking for one), but you are new to the InterSystems world, this post should help you.
InterSystems IRIS Cloud Document is a fully managed document database that lets you store JSON documents and query them with familiar SQL syntax, delivered as a cloud service managed by InterSystems.
In this article pair I’ll walk you through:
The goal is to give you a smooth “first run” experience.

Hi folks!
Is there any way to know the text of the SQL queries executed against the IRIS server?
My case: I have an SQL class query with a few parameters and and some combination of values causes unexpected results.
It'd be great if I could just copy the query from some log of queries done vs my IRIS the server. Cannot find it easily, though. Any advice?
SET assigns value to the variable at RUNTIME.
#DIM declare the variable and it's Data Type at COMPILE TIME.
SET |
#DIM |
| Makes the variables Dynamic. | Improves Readability. |
| No Data Type Declaration. | Enables IDE auto-completion. |
| Runtime | Useful for Object references. |
#DIM name As %String
Set name = "Micheal Scott"
#DIM age As %Numeric
Set age = 36
#DIM employer As App.Employer ; compile time
Set employer = ##class(App.Employer).%New() ; runtime
SET or #DIM? Your design, your rules.New to using Analytics and using Dashboards. We have this Report, SQL Query that lists out the Activity per Data Source in Health Share Provider Directory. Instead of running it as a report, because it takes a while to run, was wondering if there is a way to do this as a Dashboard instead.
.png)
How can I take the SQL from this report and create a Dashboard instead?
Hello,
We are accessing an InterSystems Cacha database from Microsoft SQL Server using a linked server over ODBC (ODBC35). Queries are executed using OPENQUERY.
On the SQL Server side, there is a linked server property called Query Timeout. By default it is set to 0 (no timeout). We are considering setting it to 15 seconds and would like to understand how Cache behaves in this scenario.
I have a Photo that is stored as an VARBINARY within MS SQL. I would like to Select the data into a EnsLib.SQL.Snapshot, is that possible? I would take it out of the Snapshot and send it to a %Stream so it can be written out to a file.
Defining my first REST API within InterSystems using iris-rest-Api-template as a basis and I am seeing if someone could provide me some guidance to see if I can make it work.
In some of my other posts, I have been trying to come up with a way for our Enterprise Application Development team which works with .Net to build Applications to make a REST call to our instance of InterSystems to query some of the Cache Tables we have defined.
Using the iris-rest-api-template, I have created the osuwmc.DataLookup.REST.Base.cls
Class osuwmc.DataLookup.REST.Base Extends %CSP.There is a Master Table within IRIS that I am populating from Epic but want to share it with our Enterprise Application Development Team (Web). As a test I was able to use _SYSTEM from postman to execute the following.
POST /api/atelier/v1/xxxx/action/query HTTP/1.1
Host: xxxxxxxx
Content-Type: application/json
Authorization: ••••••
Cookie: CSPSESSIONID-SP-443-UP-api-atelier-=00f0000000000AKyLjBfUvU$MpFD8UT8y$EoNKNw1ixZeXN4_Q; CSPWSERVERID=hzZAT5rb
Content-Length: 86
{"query": "SELECT * FROM osuwmc_Epic_Clarity.Hi developers!
There is a neat feature of ObjectScript classes - Query element, which allows you to write in a clear SQL (without any & or ()), pass parameters to it and call it from ObjectScript as do QueryNameFunc() or via Call SQLProcedureName via SQL, .e.g.
Query MyQuery(p as %String) as %SQLQuery [SQLProc]
{
SELECT * FROM MyTable
WHERE Name=:p
}All works fine, but when I tried to use the same for a DELETE statement see the following error:
SELECT expected, DELETE found ^ DECLARE Q1 CURSOR FOR DELETE
Is the Query element for SELECT only? What am I doing wrong? )
Up until early this year, I haven't been not doing much coding at all -- I had gotten sick of it.
After many years as a hands-on software engineer and data scientist, I got burned out around 2015. I switched to business development roles focused on "external innovation," then joined InterSystems in 2019 as a product manager. I missed the creative aspects of coding, but not the tedium. The endless cycle of boilerplate, debugging, and context-switching had left me creatively depleted.
Hey Developers,
Enjoy the new video on InterSystems Developers YouTube
⏯ Inside Vector Search - Technical Innovations In InterSystems IRIS @ READY 2025
Looking at my database I see I have a very big ^rINDEXSQL global? Why is that? 😬
In the Management Portal SQL page, under "SQL Statements" I see a 'Clean stale' button - what does this do? 🤔
In the list of Statements some have a 'Location' value and some don't? How is that? 🤨
Hey Community!
We're happy to share a new video from our InterSystems Developers YouTube:
⏯ Using InterSystems Data Studio with Supply Chain Module as a Data Gateway @ Ready 2025
Hi,
We’re launching an Early Access Program for an upcoming Table Partitioning feature that will help IRIS customers manage very large tables, and distribute row data and associated indices across databases and storage tiers. Table Partitioning cuts deep into the core of IRIS relational data management, so we want to make sure we get things right through working with a few engaged customers who can provide feedback on the initial deliverables, and fine-tune as needed.
I want to extract data from IRIS (Health Share Provider Directory) and write the data out to a file that I can use within an external system. Using EnsLib.SQL.Service.GenericService do I need to supply Credentials if I am querying IRIS locally? I have always used JDBC to connect externally when creating Services and Operations to read/write SQL data from external Databases, but never internally. Normally I would just use sql or code to pull the data within a Process or DTC. But in this case, I want the Service to drive the workflow, and query the data from Local Tables
.png)
Apache Airflow is the leading open-source platform to programmatically author, schedule, and monitor data pipelines and workflows using Python. Workflows are defined as code (DAGs), making them version-controlled, testable, and reusable. With a rich UI, 100+ built-in operators, dynamic task generation, and native support for cloud providers, Airflow powers ETL/ELT, ML pipelines, and batch jobs at companies like Airbnb, Netflix, and Spotify.

Hey Community!
We're happy to share a new video from our InterSystems Developers YouTube:
Hello Community! 👋
Welcome to the second part of the IRIS IO Utility series. This extension represents my submission for the InterSystems "Bringing Ideas to Reality" Contest 2025 and offers you an intuitive and powerful interface for importing and exporting data directly inside VS Code.
If you find this extension useful, please consider voting for me at the contest!
Hi everyone. Long time no see. Again, I would like to share what I am studying recently Create Foreign Tables Using SQL via JDBC.
Since I am learning about the IRIS BI at the same time, so I started with this Sample-BI docker environment
https://github.com/intersystems/Samples-BI
After starting the environment, login to the management portal http://localhost:52773/csp/sys/UtilHome.csp with the user Superuser.
Switch the namespace to IRISAPP.
.png)
😀 We will find out that all the sample data are stored in this namespace IRISAPP.
Supply Chain refers to a set of processes and activities performed by the company's business areas and its suppliers and partners (stakeholders), from the acquisition of raw materials, through production, to delivery to the end consumer. It can be better managed using SCM solutions with the orchestration of the InterSystems IRIS:
I'm pleased to announce the publication of gj :: dataLoader, a new VS Code extension that simplifies the task of loading data from local CSV files into SQL tables on your InterSystems IRIS servers.
Here's an introductory video:
gj :: dataLoader is now available on Marketplace for direct installation into VS Code. It is my entry in the "Bringing Ideas to Reality" Contest 2025 and implements this idea - https://ideas.intersystems.com/ideas/DPI-I-667
Feedback is welcome.
Modern SQL engines are enormously complex pieces of software. Even when they appear stable and mature, subtle bugs can hide in their optimizers, type systems, predicate evaluation, or execution layers. These bugs rarely announce themselves loudly. Instead, they quietly produce incorrect results, behave inconsistently, or fail abruptly under specific combinations of SQL constructs.
This is precisely why tools like SQLancer exist. SQLancer automatically generates SQL queries and uses logical “oracles” to detect when a database behaves incorrectly. It has revealed hundreds of real bugs in widely used systems such as MySQL, PostgreSQL, SQLite, and DuckDB.

With this in mind, I attempted to bring SQLancer to InterSystems IRIS, starting with the NOREC oracle — a powerful method for detecting optimizer correctness issues. The journey, however, uncovered not just potential SQL correctness problems, but also a surprising number of driver-level and server-level failures that prevented SQLancer from running at full strength.
This article summarizes why SQLancer is important, how the NOREC oracle works, and what unexpected findings appeared while testing IRIS.
Auditing is a critical capability ensuring the security of your server, and for quite a while ago we have included the ability to audit SQL statements run on the server.
With v2024.3 out already we're providing finer-grained options for defining these events to audit.
How to set up RAG for OpenAI agents using IRIS Vector DB in Python
In this article, I’ll walk you through an example of using InterSystems IRIS Vector DB to store embeddings and integrate them with an OpenAI agent.
To demonstrate this, we’ll create an OpenAI agent with knowledge of InterSystems technology. We’ll achieve this by storing embeddings of some InterSystems documentation in IRIS and then using IRIS vector search to retrieve relevant content—enabling a Retrieval-Augmented Generation (RAG) workflow.
Note: Section 1 details how process text into embeddings.
Hello Developers! 👋
I’m excited to introduce IRIS IO Utility, my submission for the InterSystems "Bringing Ideas to Reality" Contest 2025. This VS Code extension provides you an intuitive and powerful interface for importing and exporting data without leaving your IDE. The extension implements and expand this idea submitted on the Ideas Portal turning a common developer need into a real tool: seamless IO operations with any IRIS instance directly inside VS Code.
Hey Community!
We're happy to share a new video from our InterSystems Developers YouTube:
⏯ Smarter Table Statistics @ Ready 2025
