Question Ashok Kumar Thangavel · Apr 15, 2025

Hello Team,

I got xDBC protocol is not compatible while executing python script. How to fix this error

C:\Users\ak\Desktop\lpyth\iris>C:/Users/ak/AppData/Local/Programs/Python/Python312/python.exe c:/Users/ak/Desktop/lpyth/iris/irisconn.py
An error occurred: connection failed: IRIS xDBC protocol is not compatible

py -m pip list
Package            Version
------------------ ---------
intersystems-iris  3.9.2

importas'hostname'{e}

Thanks!
 

2
0 158
Article Ashok Kumar Thangavel · Feb 17, 2025 6m read

What is JWT?

JWT (JSON Web Token) is an open standard (RFC 7519) that offers a lightweight, compact, and self-contained method for securely transmitting information between two parties. It is commonly used in web applications for authentication, authorization, and information exchange.

A JWT is typically composed of three parts:

1. JOSE (JSON Object Signing and Encryption) Header
2. Payload
3. Signature

These parts are encoded in Base64Url format and concatenated with dots (.) separating them.

4
9 792
Article Ashok Kumar Thangavel · Feb 7, 2025 6m read

In this article, exceptions are covered.

Working with Exceptions

Instead of returning a %Status response, you can raise and throw an Exception. You are then responsible for catching the exception and validating it. IRIS provides five main classes to handle exceptions effectively. Additionally, you can create custom exception class definition based on your needs.

These exceptions are different from %Status, so you can't directly/efficiently use the exception object with $SYSTEM.OBJ.DisplayError() or $SYSTEM.Status.DisplayError()

0
2 493
Article Ashok Kumar Thangavel · Feb 7, 2025 4m read

You may encounter errors during any point of program execution, and there are several ways to raise and handle these exceptions. In this article, we'll explore how exceptions are handled efficiently in IRIS.

One of the most commonly used return types is %Status, which is used by methods to indicate success or failure. Let's begin by discussing %Status values.

Working with %Status

The %Status return type is used to represent errors or success. Many system methods return %Status when an error occurs.

0
6 551
Question Ashok Kumar Thangavel · Jan 8, 2025

I tried executing the SQL JSON_TABLE query with large JSON string(more than 200000 characters) and I got the below error. I'm curious about this under the hood workflow and how does it reach reaches MAXSTRING.

ERROR #5002: ObjectScript error: <MAXSTRING>CompileRtns+295^%occRoutine > ERROR #5030: An error occurred while compiling class '%sqlcq.LEARNING.cls247'

 Thanks!

2
0 178
Question Ashok Kumar Thangavel · Nov 6, 2024

Hello Community,

I have a stream property which uses %Stream.GlobalCharacter and I set some dummy texts like "a1a2a3a4a5a6a7...."(more than 1024 characters) in to that stream and the stream values are not compressed. However, The streams are compressed If I use the Lorem ipsum is a dummy or placeholder text or other text "This is part four of a long memo." which length is greater than 1024 

I opened the stream object and confirmed the compress property is 0 for first entry and  1 for 2nd object

ClassExtends%PersistentAs

why the automatic stream Compression not applied for the first text

3
0 192
Question Ashok Kumar Thangavel · Oct 16, 2024

Hello Community,

We use $ZF(-1 synchronous call to generate the pdf files. Now I want to change to asynchronously. So, I use $ZF(-100 with "/ASYNC" function. I use "/ASYNC" directly write $ZF(-100,"/ASYNC","notepad.exe") in windows/linux it throws the <NOTOPEN> error, However If I use $ZF(-100,"/ASYNC /SHELL","notepad.exe") it opens the notepad without issues.

However, I execute the below in Linux system the file is not generated properly. But  $ZF(-2,"/ASYNC /SHELL", " /fop/fop -r -fo ""/grp1/tempXSL-FO.TT.12.xml"" -pdf ""/grp1/tempXSL-FO.TT.12.pdf"" 1>/dev/null 2>""/grp1/tempXSL-FO.TT.12.err"" ") 

0
0 123
Article Ashok Kumar Thangavel · Sep 13, 2024 7m read

In the previous article. Practices of class members and their execution within embedded Python. We will now turn our attention to the process of switching namespaces, accessing global variables , traversing and routine executions within embedded Python.

Before proceeding to the other functions. let us briefly review the execute function within the iris package. This function is exceptionally beneficial for executing the arbitrary ObjectScript functions and class invocation.

>>> b = iris.execute('return $Piece("test^aaaa","^",2)')
>>> b
'aaaa'
>>> b = iris.
6
1 645
Article Ashok Kumar Thangavel · Sep 12, 2024 7m read

Hello Community,

In this article, I will outline and illustrate the process of implementing ObjectScript within embedded Python. This discussion will also reference other articles related to embedded Python, as well as address questions that have been beneficial to my learning journey.

As you may know, the integration of Python features within IRIS has been possible for quite some time. This article will focus on how to seamlessly incorporate ObjectScript with embedded Python.

Essentially, embedded Python serves as an extension that allows for independent writing and execution.

1
1 653
Article Ashok Kumar Thangavel · Sep 2, 2024 4m read

In the preceding section, we explored the installation process and initiated the writing of the IRIS in native Python. We will now proceed to examine global traversal and engage with IRIS class objects.

 get: this function is used to get values from the traversal node.

deftraversal_firstlevel_subscript()"""
    ^mygbl(235)="test66,62" and ^mygbl(912)="test118,78"
    """for

node and items

0
1 398
Article Ashok Kumar Thangavel · Sep 2, 2024 2m read

Hello Community,

This article aims to walk you through the process of setting up and utilizing the Flexible Python Runtime Feature for embedded Python. Prior to version 2024.2, Intersystems IRIS installer included a preinstalled version of Python, You can find the Python libraries and application files located in the \lib\python directory within your IRIS installation folder (for example, C:\InterSystems\IRIS20242\lib\python).

However, starting with version 2024.2, the IRIS installer no longer includes Python installation by default.

5
0 523
Question Ashok Kumar Thangavel · Sep 2, 2024

Hello Community,

I got the PROTECT error while running functions. But, I could able to call the classmethods and methods in class definition with classMethodObject, classMethodValue etc.. from python. without any errors
python code

irispy.functionString('fnString''IRISPython'
raise RuntimeError(error_message)
RuntimeError: <PROTECT> *Function not allowed
IRISPython.mac
fnString(fn1) public {
  

7
0 319
Article Ashok Kumar Thangavel · Aug 30, 2024 3m read

Hello Community

I have previously experimented with embedded Python in IRIS; however, I have not yet had the opportunity to implement IRIS using native Python. In this article, I aim to outline the steps I took to begin learning and implementing IRIS within the Python source. I would also like thank to @Guillaume Rongier and @Luis Angel Pérez Ramos for their help in resolving the issues I encountered during my recent PIP installation of IRIS in Python, which ultimately enabled it to function properly.

Let's begin to write IRIS in python.

7
5 685
Question Ashok Kumar Thangavel · Jul 20, 2024

Hello Community,

As per the Build index documentation "If you use BUILD INDEX on a live system, the index is temporarily labeled as not selectable, meaning that queries cannot use the index while it is being built. Note that this will impact the performance of queries that use the index." Is this  hiding/not selectable is only applicable for BUILD INDEX or it supports class level %BuildIndices as well. as far as my analysis both syntax setting this setting  SetMapSelectability

Thanks!

3
0 229
Question Ashok Kumar Thangavel · Jul 4, 2024

Hello Community,

I've configured a FHIR Server in FHIR Configuration "/csp/healthshare/learn1/fhir/r4 " and I enabled a JWT Authentication for this web application. I've invoked this url http://localhost:52773/csp/healthshare/learn1/fhir/r4/login with basic auth get the JWT token. Now I use the access token as a "Bearer" for GET the patient resource. But I got 401Unauthorized error. Anyway I can get the patient resource with basic auth. I tired assign with %ALL role for testing as well. Did I miss any additional configuration in "FHIR Server Configuration"

1
0 152
Question Ashok Kumar Thangavel · Apr 26, 2024

Hello Community,

I'm executing the same query with same  column name but in different case. An unique cached query generated while query executed first time. The query preparser only normalize the keywords and send to the SQL engine generates the Hash. Eventually use the cached query next use.

Now my question, The hash values are same for both of the queries. Then why it creates two cached queries.

Query1: select * from MyLearn.Test where Name['Kev1'

Query2: select * from MyLearn.Test where NamE['Kev1'

Thanks!

1
0 174