InterSystems IRIS® Upgrade Checklist (2023.3)
This document is meant to help you assess the impact of moving your code to the InterSystems IRIS 2023.3 continuous delivery (CD) release. It lists the incompatibilities since 2023.1.0. These incompatibilities may require changes to code, configuration, or operation.
InterSystems News, Alerts, and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission-critical issues, important updates, fixes, and release announcements. You can obtain the most current list at https://www.intersystems.com/support-learning/support/product-news-alerts/Opens in a new tab. InterSystems recommends that you check this list periodically to obtain the latest information on these issues.
Embedded Python
- Make IRIS collections more pythonic
- Speed up ResultSet dataframe() Method and translate SQL nulls("" not $lb(,)) and SQL Empty ($C(0)) correctly as None and "" when generating typed python lists
DP-421423: Make IRIS collections more pythonic
Category: Embedded Python
Platforms: All
Version: 2023.2.0
Previously, when InterSystems IRIS collection types (like %Collection.AbstractList) were projected into Python, there were some differences that prevented the objects from having identical charactieristics to a standard Python object of the corresponding type. This issue has been resolved.
DP-425088: Speed up ResultSet dataframe() Method and translate SQL nulls("" not $lb(,)) and SQL Empty ($C(0)) correctly as None and "" when generating typed python lists
Category: Embedded Python
Platforms: All
Version: 2023.3.0
The ResultSet dataframe() method now returns a fixed view of InterSystems SQL data, inparticular translating SQL nulls as None and SQL empty strings as "" when generating a typed python list.
Global Module
DP-424362: Increase number of BlkSrch_ENQ, BlkSrch_DEQ and LRU resources
Category: Global Module
Platforms: All
Version: 2023.3.0
This change improves high-end scalability by increasing the count of various resources, like BlkSrch_ENQ, BlkSrch_DEQ, and LRU. This increase reduces resource contention and increased shared memory by a marginal number of megabytes.
Installation
DP-422913: changes to Unix installer platform detection
Category: Installation
Platforms: AIX
Version: 2023.3.0
Users that perform an installation in unsupported environment for testing purposes must explicitly set the ISC_PACKAGE_PLATFORM environment variable to the platform name.
Interoperability
- [Interoperability] System Default Settings now supports PoolSize, Enabled, TestingEnabled and ActorPoolSize
- [Interoperability] BPL SQL action to return status error if generated embedded sql reports an error
- [Interoperability] Business Process %MasterPendingResponses structure change
DP-421559: [Interoperability] System Default Settings now supports PoolSize, Enabled, TestingEnabled and ActorPoolSize
Category: Interoperability
Platforms: All
Version: 2023.3.0
System Default Settings previously ignored any entries that matched an item's Enabled or PoolSize setting or a production's ActorPoolSize or Testing Enabled setting. With this change, the System Default Settings no longer ignore such entries.
DP-423063: [Interoperability] BPL SQL action to return status error if generated embedded sql reports an error
Category: Interoperability
Platforms: All
Version: 2023.3.0
The BPL SQL action now returns an error status if the generated SQL commands return a SQLCODE error. This allows the use of the BPL error handling mechanisms.
DP-423783: [Interoperability] Business Process %MasterPendingResponses structure change
Category: Interoperability
Platforms: All
Version: 2023.3.0
Business process %MasterPendingResponses list has been converted from a list to a parent/child relationship with Ens.BP.MasterPendingResponse and appropriate indices. Any custom code that iterated over the internal %MasterPendingResponses using GetAt() with sequential number iteration to the count value should be modified to use the parent/child collection methods of the class, such as Previous() and GetNext(). After an upgrade, any incomplete business process thread data must be converted using the Ens.BP.Utils.Upgrade.UpgradePendingResponsesStorage() method.
Kernel
- Remove unneeded loop from getint8()
- POWER7 processor no longer supported
- Allow any Unicode character as an identifier
DP-419453: Remove unneeded loop from getint8()
Category: Kernel
Platforms: All
Version: 2023.2.0
Previously, converting an out-of-range IEEE binary floating point value to an integer could produce a
DP-421917: POWER7 processor no longer supported
Category: Kernel
Platforms: AIX
Version: 2023.2.0
This change removes compatibility with AIX systems using a POWER7 or earlier processor. The new minimum is POWER8.
DP-423015: Allow any Unicode character as an identifier
Category: Kernel
Platforms: All
Version: 2023.3.0
Any new routine or class names can contain any Unicode character as part of the identifier.
Object - Entity Framework
DP-423018: Add Delimited Identifiers support in Entity Framework
Category: Object - Entity Framework
Platforms: All
Version: 2023.3.0
Previously in Entity Framework, all identifiers were quoted when parsing the SQL statement. However, if delimited identifiers are turned off on InterSystems IRIS, then this causes a syntax issue.
This change will not quote identifiers if delimited ids are turned off on the IRIS side.
This change requires users to ensure the delimited id setting is consistent across the databases they connect to.
Object Library
- Inherit routes in %CSP.REST UrlMap
- Write %UnitTest results directly to ^UnitTest.Result
- Add source location to %UnitTest.Result.TestAssert
DP-423147: Inherit routes in %CSP.REST UrlMap
Category: Object Library
Platforms: All
Version: 2023.3.0
This change removes the %CSP.Rest.ResolveTarget() method and makes the %CSP.Rest.DispatchMap() method Internal.
DP-424964: Write %UnitTest results directly to ^UnitTest.Result
Category: Object Library
Platforms: All
Version: 2023.3.0
%UnitTest.Manager now writes results directly to ^UnitTest.Result, where it can be access by other processes as it is generated. As a result, the TempLogIndex property no longer exists, as no temporary log is written. This changed behavior means that any subclasses of %UnitTest.Manager that uses the TempLogIndex property or relies on the generation of a temporary log needs to be updated.
DP-425574: Add source location to %UnitTest.Result.TestAssert
Category: Object Library
Platforms: All
Version: 2023.3.0
Unit tests log all TestAsserts to the console and store them in ^UnitTest.Result for structured access to the data. This change adds a mapping between a TestAssert and the location within the test class it came from by adding a new Location field in the %UnitTest.Result.TestAssert table, which helps with debugging test failures.
ObjectScript
DP-424951: $ZHOROLOG to use montonic clock
Category: ObjectScript
Platforms: All
Version: 2023.3.0
The change makes $ZHOROLOG use a monotonic clock, meaning the utility does not go backward due to NTP or daylight savings time. The time elapsed according to $ZHOROLOG may diverge from time elapsed as seen by taking changes of the real time as reported by $h, $ztimestamp, or $now; any code that expects those changes to be equivalent may need to be updated.
ODBC
DP-422960: ODBC. Do not convert data from BINARY to WCHAR
Category: ODBC
Platforms: All
Version: 2023.2.0
Previously, when converting BINARY data to the ASCII representation, it was initially converted into WCHAR. This has been changed, such that the ODBC driver now converted BINARY data directly to the ASCII representation.
Security
- HTML encode REST error messages
- refactor OAuth2 client AccessToken API
- web gateway secret management for cloud
- Add %Admin_OAuth2_Client permission
- Tighten OAuth2 JWT security requirements
DP-422560: HTML encode REST error messages
Category: Security
Platforms: All
Versions: 2022.1.4, 2023.1.1, 2023.2.0
Previously, error messages returned from REST APIs were not HTML encoded. This issue has been corrected.
DP-422782: refactor OAuth2 client AccessToken API
Category: Security
Platforms: All
Version: 2023.2.0
The GetAccessTokenRefresh() method in the %SYS.OAuth2.Authorization class must now be run in the %SYS namespace by a user with %Admin_Secure:USE. However, the preferred method of retrieving and refreshing an access token is to use the IsAuthorized() method in the %SYS.OAuth2.AccessToken class.
DP-423672: web gateway secret management for cloud
Category: Security
Platforms: UNIX®
Version: 2023.3.0
Unix® users with passwords that start with { and end with } for Web Gateway server configurations will need to change them, or the will be interpreted as commands. Other platforms are not affected.
DP-424657: Add %Admin_OAuth2_Client permission
Category: Security
Platforms: All
Version: 2023.3.0
This change adds the %Admin_OAuth2_Client permission, which gives minimum permissions to a system that uses InterSystems IRIS as a client to an OAuth2 authorization server.
Any custom roles that had %Admin_Secure and fit this use case need to be updated to contain this resource.
DP-425110: Tighten OAuth2 JWT security requirements
Category: Security
Platforms: All
Version: 2023.3.0
This change makes "RS256" the default value for the SigningAlgorithm field in the OAuth2.Configuration class. Additionally, %OAuth2.Server.JWT now returns an error if no signing algorithm is defined for a JWT access token. the JWTToObject() method of the %OAuth2.JWT class no longer considers unsigned an unencrypted JWTs to be valid. However, this behavior can be overridden by using the new AcceptUnsecured parameter.
SQL
- Make INSERT OR UPDATE fail if the unique value belongs to a super class
- Fix, refactor and optimize SQL <explain statement> error processing
- Allow predicate pushdown for foreign tables with QUERY clauses
- Remove quote/quoteall from %occUtility
DP-419630: Make INSERT OR UPDATE fail if the unique value belongs to a super class
Category: SQL
Platforms: All
Version: 2023.2.0
When users that have a class structure where there is a unique constraint in a super class attempt to INSERT OR UPDATE in the subclass, the command will now fail. Previously, this behavior did not throw an error, although an UPDATE would silently have been ignored.
DP-421723: Fix, refactor and optimize SQL <explain statement> error processing
Category: SQL
Platforms: All
Version: 2023.3.0
This change causes errors that arise from EXPLAIN statements to occur during query runtime, rather than compilation.
DP-422284: Allow predicate pushdown for foreign tables with QUERY clauses
Category: SQL
Platforms: All
Version: 2023.3.0
Useres must explicity ensure that column names provided for a QUERY-based foreign table are the same as the names in the QUERY clause of the CREATE FOREIGN TABLE commands or must provide a VALUES clause which specifies the names of the columns returned by the QUERY clause.
DP-424443: Remove quote/quoteall from %occUtility
Category: SQL
Platforms: All
Version: 2023.3.0
This change removes the internal $$quote and $$quoteall functions, which were included as internal-only utilities that were never intended for use in user-written code. Any user-written code that relied on these functions must be modified.
VDoc - XML
DP-423225: [Interoperability] XML VDoc to pass back error encountered creating output from use of internal stream
Category: VDoc - XML
Platforms: All
Version: 2023.3.0
Previously, errors encountered when generating out using internal stream were suppressed. This behavior has been changed so that such errors are now reported. These errors must be handled appropriately, either through code changes or production configurations.
For Additional Help
If you need assistance with evaluating how upgrading to this extended maintenance (EM) release will affect your applications, systems, or related plans, please contact the InterSystems Worldwide Support Center:
- Phone: +1.617.621.0700
- Fax: +1.617.734.9391
- Email: support@intersystems.com
Current release notes (and complete product documentation) can be found online at https://docs.intersystems.com.