· Oct 21, 2022

What is The Global With Persistence Data For A Class?

Hi Devs!

Is there a way to get a Global that contains pesistence data for a class?

In early versions of IRIS it was classname_"D", like ^Sample.PersonD. Now, at least in IRIS 2022.1  it is something random.

Product version: IRIS 2022.1
Discussion (8)2
Log in or sign up to continue

When doing a create table, it is indeed a hashed global name, but when defining a new class in Studio, it is still clasname_"D" (unless the global name becomes too long).

The parameter USEEXTENTSET=1 will alter this behaviour (in class definition or CREATE table statement) :
Global Naming Strategy: you can use the USEEXTENTSET parameter to specify shorter and more efficient hashed global names for data and index lookup operations.

You can use %Library.CompiledStorage to find out what the global name is for a class :

There is a faster way without opening the object:

Class dc.test Extends %Persistent

ClassMethod Test()
  w $$$defMemberKeyGet(classname,$$$cCLASSstorage,storagename,$$$cSDEFdatalocation)

Storage Default
<Data name="testDefaultData">
<Value name="1">