%Library.Persistent
abstract persistent class %Library.Persistent extends %Library.SwizzleObject
SQL Table Name: %Library.Persistent
For information on this class, see Working with Persistent Objects.
The sample class mentioned here (Sample.Person) is part of https://github.com/intersystems/Samples-Data.Opens in a new tab See Downloading SamplesOpens in a new tab.
The %Persistent class provides the basic mechanism by which objects are stored to and retrieved from a database.Method Inventory
- %BuildDeferredIndices()
- %BuildIndices()
- %BuildIndicesAsync()
- %BuildIndicesAsyncResponse()
- %CheckConstraints()
- %CheckConstraintsForExtent()
- %ComposeOid()
- %Delete()
- %DeleteExtent()
- %DeleteId()
- %Exists()
- %ExistsId()
- %GUID()
- %GUIDSet()
- %GetLock()
- %GetSwizzleObject()
- %Id()
- %KillExtent()
- %LockExtent()
- %LockId()
- %ObjectIsNull()
- %Oid()
- %OnDeleteFinally()
- %OnDetermineClass()
- %OnOpenFinally()
- %OnSaveFinally()
- %Open()
- %OpenId()
- %PurgeIndices()
- %Reload()
- %RollBack()
- %Save()
- %SaveDirect()
- %SortBegin()
- %SortEnd()
- %UnlockExtent()
- %UnlockId()
Parameters
If a persistent class uses %Storage.Persistent then the DEFAULTGLOBAL parameter is used as the default global root for the values of the storage keywords COUNTERLOCATION, DATALOCATION, IDLOCATION, INDEXLOCATION and STREAMLOCATION in the active storage definition. DEFAULTGLOBAL is only used to generate location keyword values that are not already defined. The location value is constructed by adding a location type to the end of DEFAULTGLOBAL. For example, if DEFAULTGLOBAL = "^GL.Account" the compiler will generate DATALOCATION = ^GL.AccountD.
If USEEXTENTSET is true, then DEFAULTGLOBAL is used as the default extent location.
The location types are:
Location | Type |
---|---|
COUNTERLOCATION | C |
DATALOCATION | D |
IDLOCATION | D |
INDEXLOCATION | I |
STREAMLOCATION | S |
^OBJ.DSTIME(ExtentName,DSTIME,objectID) = filing operation
For DSTIME=AUTO the DSTIME value is recorded in ^OBJ.DSTIME and is set by the consumer of DSTIME data.
Refer to %DeepSee documentation for more information on how DSTIME is used by %DeepSee.
The filing operations are:
Code | Operation |
---|---|
0 | Update |
1 | Insert |
2 | Delete |
If the DSTIME parameter is set to MANUAL then the user is responsible for journaling object filing operations. If DSTIME is set to "CONDITIONAL", the user is expected to define the parameter DSCONDITION setting it to an expression which will determine if the actions performed when DSTIME is set to AUTO will execute or not
Persistent classes should define a value of for EXTENTQUERYSPEC if they wish to include additional properties in their built-in Extent query.
For example:
parameter EXTENTQUERYSPEC = "Name,SSN,Age";
For example, a class that expects to have about 1,000,000 instances should define:
parameter EXTENTSIZE = 1000000;
Deprecated parameter, use parent/child relationships instead
If a persistent class uses %Storage.Persistent then the USEEXTENTSET parameter is used to specify the global naming strategy used by the default storage class (%Storage.Persistent). If TRUE, then global names are generated for each index that is not already allocated a LOCATION in the active storage definition.
If the storage definition specifies EXTENTLOCATION then that value is used as the base reference for all globals assigned to indices that do not have an explicit LOCATION assigned.
The global name generator for USEEXTENTSET = TRUE honors the package prefix defined in the Package Definition. If none is defined then the package prefix is generated using a based-62 encoded integer produced from CRC32 of the package name. The specific class identifier is generated from the unqualified class name using the same hash (class->crc32->base62) to form EXTENTLOCATION. Specific index suffixes are produced using a generated offset that is local to the first persistent class with an enumerated extent in which the index appears (either defined or inherited).
There are several factors that influence the generation of EXTENTLOCATION:
- If the EXTENTLOCATION keyword is defined then its value is used,
- If the DEFAULTGLOBAL class parameter is defined then its value is used,
- otherwise, the value is generated as two dot delimited segments. The first segment is either the defined package prefix retrieved from the package definition global or, if none is defined, a hash of the package name. The second segment is generated by a hash of the unqualified class name. The hash used is a base 62 encoded CRC32 of the value. For example, Sample.Person produces ^EW3K.wPC9 if no package prefix is defined.
EXTENTLOCATION is specific to each class. When a persistent class extends another persistent class, forming a subextent, then the subclass's EXTENTLOCATION is specific to that subclass. The index location for any inherited index is already defined specifically in the superclass so the subclass's EXTENTLOCATION will only be used as the base for any index that originates in the subclass. For example, Sample.Employee extends Sample.Person. The EXTENTLOCATION generated for Sample.Person is ^EW3K.wPC9 and the EXTENTLOCATION for Sample.Employee is ^EW3K.D1Ex. Since Sample.Employee inherits several indices from Sample.Person, the global name assigned to each of those indices is already defined and inherited by Sample.Employee. However, any index defined in Sample.Employee and not inherited from Sample.Person will be assigned a global name based on Sample.Employee's EXTENTLOCATION, not on Sample.Person's EXTENTLOCATION. In other words, the EXTENTLOCATION storage keyword is not inherited.
The following tables show the indices and locations for Sample.Person and Sample.Employee. Notice the last index in the Sample.Employee table:
Class = Sample.Person | ||||||||||||||
|
||||||||||||||
Class = Sample.Employee extends Sample.Person | ||||||||||||||
|
Any generated global index locations and EXTENTLOCATION are updated back into the active storage definition after the class is compiled.
If USEEXTENTSET is FALSE, then global names are generated using the package-hash.class-hashSuffix strategy. For example, ^Sample.PersonD and ^Sample.PersonI("SSNKey") are globals used by Sample.Person and specific index structures are all stored in ^Sample.PersonI with the index name used as the first subscript.
Methods
Builds index entries for all defined indexes for each object contained in the Deferred Indexing Index.
If pLockFlag is one (1) then an extent lock will be acquired before the indices are built. If the lock cannot be acquired then an error is returned. The lock is released after the index build is completed. If pLockFlag is two (2) then a lock is acquired prior to filing indices for that instance and it is released as soon the indices for that instance are filed. If it is zero (0) then no locks are used while filing the indices. If it is three (3) then a shared extent lock will be acquired before the indices are built and released upon completion.
If pJournalFlag is 0 then journaling is disabled for the processes used to build the indices (except where the database is in a Mirror). If this flag is 1 then the journaling is enabled for the process used to build the indices. The default value of this argument is "" meaning use the current process setting.
Returns a %Status value indicating success or failure. This method is normally generated by the storage class for persistent classes using %Storage.Persistent or %Storage.SQL.
If your index is corrupt running this function will not fix the corruption unless you rebuild the entire index and purge the existing indexes.
Builds entries for each index specified in the pIndexList argument. If pIndexList is empty then all indices that originate in the class are rebuilt. If not empty you can specify a $list of indexes to build, e.g. $lb("MyIndex1","MyIndex2"). If there are other bitmap indexes specified in pIndexList and there is a bitmap extent index defined for the class then it will be implicitly included in pIndexList. If the bitmap extent index is included then the bitmap extent index for each subextent is also built.
If pAutoPurge is true then the indices contained in pIndexList will be purged before they are built as long as no range is specified, if a range is specified we will skip any purge. The default is TRUE (1).
If pLockFlag is one (1) then an extent lock will be acquired before the indices are built. If the lock cannot be acquired then an error is returned. The lock is released after the index build is completed. If pLockFlag is two (2) then a lock is acquired prior to filing indices for that instance and it is released as soon the indices for that instance are filed. If it is zero (0) then no locks are used while filing the indices. If it is three (3) then a shared extent lock will be acquired before the indices are built and released upon completion.
If pJournalFlag is 0 then journaling is disabled for the processes used to build the indices (except where the database is in a Mirror). If this flag is 1 then the journaling is enabled for the process used to build the indicies. The default value of this argument is "" meaning use the current process setting.
pStartID and pEndID define a range of IDs for which indices will be built. The range is inclusive. If the starting ID is null then the range begins at the first ID defined in the extent. If the ending ID is null then the range ends at the last ID defined in the extent.
If pIgnoreIndexList is defined, it should be a $list of index names that should not be built. This argument allows you to build all indices except those defined in pIgnoreIndexList. The default value of this argument is "", which means all indices, or all indices specified in pIndexList, will be built.
If pKeepSelectability is 1, any index maps defined as Not Selectable prior to the %BuildIndices() call will remain Not Selectable after the %BuildIndices() call. If pKeepSelectability is 0 any index maps defined as Not Selectable prior to the %BuildIndices() call will be set to Selectable after the successful %BuildIndices() call.
If %OnBeforeBuildIndices() is implemented and is runnable then it will be called just prior to purging and building any index structures. Refer to %OnBeforeBuildIndices() for more information.
If %OnAfterBuildIndices() is implemented and is runnable then it will be called after all index structures have been built completely. Refer to %OnAfterBuildIndices() for more information.
Returns a %Status value indicating success or failure. This method is normally generated by the storage class for persistent classes using %Storage.Persistent or %Storage.SQL.
If your index is corrupt running this function will not fix the corruption unless you rebuild the entire index and purge the existing indexes. If you have inserted some new items but have deferred building the index for these new items then you can run %BuildIndices on this range of IDs to add the index entries for these new items.
%BuildIndicesAsync() instantiates a work queue and queues a %BuildIndices() call. The argument list after the output queueToken is the same as for %BuildIndices().
This method returns a work queue token as the first argument (output) that can be used to retrieve the status of the %BuildIndices() worker using %BuildIndicesAsyncResponse().
The return value is a %Status value indicating success or failure.
queueToken | output | The token identifying the %BuildIndices() task. This argument must be passed by reference as it is the identifier of the work queue and it is needed to retrieve the completion status using %BuildIndicesAsyncResponse(). |
pIndexList | input | The names of the indexes to be built. If empty then all indices that originate in the class are built. If not empty you can specify a $list of index names to build, e.g. $lb("MyIndex1","MyIndex2"). If there are other bitmap indexes specified and there is a bitmap extent index defined for the class then it will be implicitly included in the list of indexes to build. If the bitmap extent index is included then the bitmap extent index for each subextent is also built. |
pAutoPurge | input | If true then the indices contained in pIndexList will be purged before they are built as long as no range is specified, if a range is specified we will skip any purge. The default is TRUE (1). |
pLockFlag | input | If one (1) then an extent lock will be acquired before the indexes are built. If the lock cannot be acquired then an error is returned. The lock is released after the index build is completed. If pLockFlag is two (2) then a lock is acquired prior to filing indices for that instance and it is released as soon the indices for that instance are filed. If it is zero (0) then no locks are used while filing the indices. If it is three (3) then a shared extent lock will be acquired before the indices are built and released upon completion. |
pJournalFlag | input | If false then journaling is disabled for the processes used to build the indices (except where the database is in a Mirror). If this flag is true then the journaling is enabled for the process used to build the indicies. The default value of this argument is "" meaning use the current process setting. |
pStartID | input | The starting ID for the range of ID's for which indices will be built, inclusive. If the starting ID is null then the range begins at the first ID defined in the extent. |
pEndID | input | Then ending ID for the range of ID's for which indexes will be built, inclusive. If the ending ID is null then the range ends at the last ID defined in the extent. |
pIgnoreIndexList | input | A list of index names that should not be built. This argument allows you to build all indices except those defined in pIgnoreIndexList. The default value of this argument is "", which means all indices, or all indices specified in pIndexList, will be built. |
pTimeout | input | pTimeout is the number of seconds to pass for the %SYSTEM.WorkMgr.Detach() method's timeout argument. The default timeout is 86400s (24 hours). If the %BuildIndices time is expected to be more than 24 hours and you don't want the build to timeout, increase this value to an appropriate number of seconds. |
pKeepSelectability | input | If pKeepSelectability is 1, any index maps defined as Not Selectable prior to the %BuildIndices call will remain Not Selectable after the %BuildIndices() call. If pKeepSelectability is 0 any index maps defined as Not Selectable prior to the %BuildIndices() call will be set to Selectable after the successful %BuildIndices() call. |
return | The %Status value indicates success or failure. If queueToken is null then the return status value can indicate an error involving the work queue or it can be the completion status from the %BuildIndicesAsync() task. |
Return the completion status of a %BuildIndicesAsync task, identified by queueToken. The global array node reference is defined by a globalName and a variable number of subscripts.
This method returns a %Status value.
queueToken | byref | The token identifying the %BuildIndicesAsync() task. This argument must be passed by reference as it is the identifier of the work queue and it can be changed by this method. If the returned queueToken is not null (should only happen if wait is false) then the task is not yet complete and the new token value can be used to call this method again to check and possibly return the completion status. If this value is null on return then the task has completed or cannot be located and the return status value is the final status (completion status). |
wait | input |
A boolean value indicating whether or not %BuildIndicesAsyncResponse should wait for the %BuildIndicesAsync() task to complete before returning. If this value is true then this method will wait until the task identified by queueToken is complete before returning. If it is false, then this method will return as quickly as possible. In that case, if the task is not yet complete then queueToken will not be null on return and can be used to invoke this method again. If this method detects an error reported by the task identified by the token then this method will wait for the final completion of the task before returning. |
return | The %Status value indicating success or failure. If queueToken is null then the return status value can indicate an error involving the work queue or it can be the completion status from the %BuildIndicesAsync() task. |
This method checks the constraints defined in the current class for one object, identified by pID. If only selected constraints are to be checked, then pConstraintList can be passed as a $list of the names of the constraints to be checked. If any constraint fails then the failure status will be included in the returned %Status value. In addition, the output parameter pErrorInfo will contain the object ID and the values of all properties that are referenced by constraints defined for the current class.
If the current class is not the most specific type class (MSTC) of the object identified by pID, then this method will dispatch to the object's most specific type class. Note that if you do not pass a constraint list then all constraints present for the MSTC are checked, which may include others in addition to those present for the current class.
SAMPLES>set status = ##class(Sample.Person).%CheckConstraints(1,,,.errorinfo) SAMPLES>do $system.OBJ.DisplayError(status) ERROR #5808: Key not unique: Sample.Person.SSNKey SAMPLES>zw errorinfo errorinfo=$lb(1,"798-92-1974")
Parameters | ||
---|---|---|
Name | Direction | Description |
pID | Input | The ID of the object to be checked. |
pConstraintList | Input | A $list of constraints to be checked. If null then all constraints defined for this class will be checked. |
pCheckDisabled | Input | If this value is passed as a true value (1) then %CheckConstraints will also check any constraints that are defined as %NOCHECK. |
pErrorInfo | Output | If an error is reported then pErrorInfo will contain the object's ID and all property values that are referenced by constraints defined for this class. |
Return | %Status return value. This value contains %Status values for each constraint that failed. If no errors are reported then %Status will be $$$OK. |
This method will loop over each object in the extent of the current class and invoke %CheckConstraints(). If only selected constraints are to be checked then pConstraintList can be passed as a $list of the names of the constraints to be checked. All constraint failures are included in the returned %Status value, subject to the maximum %Status size. In addition, the output parameter pErrorLog contains up to 1,000 entries containing the object ID and the values of all properties that are referenced by constraints defined for the current class. The error log also adds the %Status value returned by %CheckConstraints() as the last $list element.
SAMPLES>set status = ##class(Sample.Person).%CheckConstraintsForExtent(,,.errorlog) SAMPLES>do $system.OBJ.DisplayError(status) ERROR #5808: Key not unique: Sample.Person.SSNKey ERROR #5808: Key not unique: Sample.Person.SSNKey SAMPLES>zw errorlog errorlog=2 errorlog(1)=$lb(1,"798-92-1974","0 "_$lb($lb(5808,"Sample.Person.SSNKey",,,,,,,,"%CheckConstraints+7^Sample.Person.1:SAMPLES"))/* ERROR #5808: Key not unique: Sample.Person.SSNKey [%CheckConstraints+7^Sample.Person.1:SAMPLES] */) errorlog(2)=$lb(100,"798-92-1974","0 "_$lb($lb(5808,"Sample.Person.SSNKey",,,,,,,,"%CheckConstraints+7^Sample.Person.1:SAMPLES"))/* ERROR #5808: Key not unique: Sample.Person.SSNKey [%CheckConstraints+7^Sample.Person.1:SAMPLES] */)
Parameters | ||
---|---|---|
Name | Direction | Description |
pConstraintList | Input | A $list of constraints to be checked. If null then all constraints defined for the most specific type class of each object will be checked. |
pCheckDisabled | Input | If this value is passed as a true value (1) then %CheckConstraints will also check any constraints that are defined as %NOCHECK. |
pErrorLog | Output | This is an array of up to 1,000 entries containing error information reported by %CheckConstraints(). |
Return | %Status return value. This value contains %Status values for each constraint that failed. If no errors are reported then %Status will be $$$OK. |
Returns a %Status value indicating success or failure.
Internally, %Delete() initiates a transaction and then invokes the storage interface method %DeleteData(). If %DeleteData() succeeds, the transaction is committed, otherwise it is rolled back. No transaction is initiated if this class is defined as Sharded=1
Internally, %DeleteExtent() iterates over the set of instances in the
collection and invokes the %Delete() method. Returns a %Status value indicating success or failure.
Refer to Object Concurrency Options for more details
on the optional concurrency argument.
The option pInitializeExtent argument allows the user to override the default behavior
of calling %KillExtent() when all instances are successfully deleted. %KillExtent()
is called by default when the extent is empty so that empty globals can be killed. If %KillExtent()
is not called then some empty globals can remain as well as the ID counter if it exists. The default value for pInitializeExtent
is 1. Unless the caller specifies a false value for pInitializeExtent the globals used by the extent will be killed. If the
process' GlobalKillDisabled flag is enabled and not the default of false the process' GlobalKillDisabled flag will be changed temporarily to false
to allow the operation to complete without a possible
%DeleteId() is identical in operation to the %Delete() method except that it uses an Id value instead of an OID value to find an object. Refer to Object Concurrency Options for more details on the optional concurrency argument. For classes defined as Sharded=1, concurrency=0 is always used.
Returns %Boolean TRUE if it exists, FALSE if it does not.
Returns %Boolean TRUE is it exists, FALSE if it does not.
Returns a %Status value indicating success or failure.
Returns a null string if there is no object Id.
This method is not meant for production applications. It is meant to be a development utility to quickly clear extent physical data. Also this will not remove stream data associated with these instances.
If killstreams is true (default is false) it will also kill the default stream storage global.
If a version of the specified object is already in memory, then %Open() increments the object's reference count and returns the OREF value referring to this version. %Open() also has an optional concurrency argument which specifies the concurrency setting for this object (and sets the value of the %Concurrency attribute). If the concurrency argument is omitted then the system default value (1: Atomic) is used. Refer to Object Concurrency Options for more details on the optional concurrency argument. For classes defined as Sharded=1, concurrency=0 is always used.
%Open() returns an OREF value that refers to the in-memory object instance or a null reference ($$$NULLOREF) if it cannot find or otherwise load the object.
If a version of the specified object is already in memory, then %Open() increments the object's reference count and returns the OREF value referring to this version. %Open() also has an optional concurrency argument which specifies the concurrency setting for this object (and sets the value of the %Concurrency attribute). If the concurrency argument is omitted then the system default value (1: Atomic) is used. Refer to Object Concurrency Options for more details on the optional concurrency argument. For classes defined as Sharded=1, concurrency=0 is always used.
%OpenId() returns an OREF value that refers to the in-memory object instance or a null reference ($$$NULLOREF) if it cannot find or otherwise load the object.
Deletes all entries from each index specified in the idxlist argument. If idxlist is empty then all indices that originate in the class are purged. The index definition remains intact.
If pIgnoreIndexList is defined, it should be a $list of index names that should not be purged. This argument allows you to purge all indices except those defined in pIgnoreIndexList. The default value of this argument is "", which means all indices, or all indices specified in pIndexList, will be purged.
If pJournalFlag is set to 1, journaling will be enabled (if not already) for the duration of the purge. If it is set to 0, journaling will be disabled (if not already) for the duration of the purge. The default value of this argument is "", which means journaling behavior will not be altered.
If %OnBeforePurgeIndices() is implemented and is runnable, then it will be called just after acquiring the extent lock, if one is requested, and just prior to performing the purge. If %OnBeforePurgeIndices() returns an error status then %PurgeIndices will exit immediately, no indices will be purged and that error status will be returned to the caller of %PurgeIndices.
If %OnAfterPurgeIndices() is implemented and is runnable, then it will be called just prior to releasing the extent lock, if one is requested. cAll index structures have been purged prior to calling %OnAfterPurgeIndices(). If %OnAfterPurgeIndices() returns and error status then that status will be returned to the caller of %PurgeIndices but all structures will still have been purged.
Returns a %Status value indicating success or failure. This method is normally generated by the storage class for persistent classes using %Storage.Persistent or %Storage.SQL. Persistent classes using some other storage class, such as %Library.CustomStorage must override this method.
%Reload is an instance method that re-reads an object from disk into the current instance. Calling %Reload is similar to closing the OREF and then %Open(), but it uses the same OREF. %Open is not called and no %Open callbacks are called.
After %Reload is called, there are no swizzled references for the object, and %IsModified() returns 0.
%Reload performs the following steps. First, all swizzled objects for the instance are unswizzled. Then the object is reloaded from disk, using the %Id() of the current object. Finally, the modified bit for each property is cleared.
Returns a %Status value indicating success or failure.
The related argument specifies how %Save() handles references to other objects. It can take the following values:
0: Shallow Save | If this object has been modified then save it. Only save related objects if they have never been saved (do not have an OID value) and must be saved in order to serialize this object's property values. |
1: Deep Save | Save this object and all "related" objects that have been edited. In this case, "related" means any in-memory objects it refers to, and any in-memory objects they in turn refer to, and so on. However, only objects that have been changed (%IsModified() returns true) will actually be saved to the database, including the object upon which %Save() was initially called. |
%Save() automatically detects and handles circular references between objects. For example, %Save() will detect if object A refers to object B and object B likewise refers to object A. In this case it will avoid falling into an infinite, recursive loop.
Note that either reference attribute, A to B or B to A, can be specified as a required attribute but not both of them. If both reference attributes are required then %Save() will fail.
By default %Save() automatically manages transactions. You can enable and disable
automatic transaction support using the $$SetTransactionMode^%apiOBJ()
routine.
When %Save() saves an object to the database, it initiates one transaction (by calling TSTART) for the entire set of saves, including the original object and any related objects. If the save operation is successful, %Save() will issue a TCOMMIT command to commit the transaction and write the data to the database. If %Save() encounters a problem when saving the original object or any of its related objects, it rolls back the entire transaction and performs the following actions:
- It issues a TROLLBACK command to rollback any changes to the database that may have occurred. (In the case of the %Storage.Persistent class, changes to the on-disk counter value, used to determine the next available object id number, are not rolled back.)
- It restores the in-memory state of all the objects involved in the transaction to their pre-transaction state. This includes restoring any modified flags, and restoring to null ("") any OID values that have been assigned during the course of the transaction. Additional property values changed during the course of the transaction are not restored, however.
- It calls the %RollBack() method on each object involved with the transaction. The order in which the %RollBack() methods are called is undefined. %RollBack() will call a user-written %OnRollback() method if it is present.
Returns a %Status value indicating success or failure.
data is a structure that mirrors the disk structure of the object. The root value (unsubscripted) contains the properties stored in the data node from the storage definition with a null subscript. Additional entries in the data structure correspond to any additional data nodes defined in the storage definition.
This method is not commonly called directly.
This method is implemented by the storage class.
Returns a %Status value indicating success or failure.
The excludeunique argument, if TRUE, causes any index defined as UNIQUE or PRIMARY KEY to be ignored.
Returns a %Status value indicating success or failure.
The commit argument, if FALSE, causes the data to be discarded. Otherwise, all data placed in the global since the $SortBegin is committed.
The excludeunique argument, if TRUE, causes any index defined as UNIQUE or PRIMARY KEY to be ignored.
Returns a %Status value indicating success or failure.
Queries
This is a system provided query that returns a row for each instance within this extent. The first column of the row is the object ID. Additional columns can be included in the select list by adding the desired columns to the EXTENTQUERYSPEC parameter.
The Extent query default implementation is generated by %Library.ExtentSQLQuery. That class supports the COMPILEMODE parameter with possible values of IMMEDIATE and DYNAMIC. If DYNAMIC is specified then the SQL statement used to implement the query will be generated as a dynamic SQL statement. If IMMEDIATE is specified then the statement is generated as an embedded SQL statement.
This query can be overridden by a subclass so long as two requirements are met. The list of columns must include %ID as the first column and it must return a row corresponding to each instance/row in the extent.
Triggers
Inherited Members
Inherited Methods
- %AddToSaveSet()
- %AddToSyncSet()
- %ClassIsLatestVersion()
- %ClassName()
- %ConstructClone()
- %DispatchClassMethod()
- %DispatchGetModified()
- %DispatchGetProperty()
- %DispatchMethod()
- %DispatchSetModified()
- %DispatchSetMultidimProperty()
- %DispatchSetProperty()
- %Extends()
- %GetParameter()
- %IsA()
- %IsModified()
- %IsNull()
- %New()
- %NormalizeObject()
- %ObjectModified()
- %OnBeforeAddToSync()
- %OriginalNamespace()
- %PackageName()
- %RemoveFromSaveSet()
- %ResolveConcurrencyConflict()
- %SerializeObject()
- %SetModified()
- %SyncObjectIn()
- %SyncTransport()
- %ValidateObject()
Storage
Gray indicates storage defined by superclasses.
Subclasses
- %CSP.Session
- %CSP.Util.CSPLogEvent
- %CSP.Util.Performance
- %DeepSee.CubeManager.Audit
- %DeepSee.CubeManager.CubeEvent
- %DeepSee.CubeManager.CubeRegistry
- %DeepSee.DimensionTable
- %DeepSee.FactTable
- %DeepSee.IDList
- %DeepSee.ListingTable
- %DeepSee.PMML.Dataset.Base
- %DeepSee.PMML.Utils.TempResult
- %DeepSee.Report.DataView
- %DeepSee.Report.DataViewField
- %DeepSee.TempSourceId
- %DeepSee.UserLibrary.Folder
- %DeepSee.UserLibrary.FolderItem
- %DeepSee.UserLibrary.NamedFilter
- %DeepSee.UserLibrary.PivotVariable
- %DeepSee.UserLibrary.SharedCalcMember
- %DeepSee.UserLibrary.UserSetting
- %DeepSee.UserPortal.Data.Alert
- %DeepSee.UserPortal.Data.User
- %DeepSee.XMLA.EnumerationsRowset
- %DeepSee.XMLA.KeywordsRowset
- %DeepSee.XMLA.LiteralsRowset
- %DeepSee.XMLA.PropertiesRowset
- %DeepSee.XMLA.SchemasRowset
- %DeepSee.extensions.components.PCA
- %DeepSee.extensions.utils.LDA
- %Dictionary.ClassDefinition
- %Dictionary.CompiledClass
- %Dictionary.CompiledConstraint
- %Dictionary.CompiledConstraintMethod
- %Dictionary.CompiledForeignKey
- %Dictionary.CompiledIndex
- %Dictionary.CompiledIndexMethod
- %Dictionary.CompiledIndexProperty
- %Dictionary.CompiledInstanceVar
- %Dictionary.CompiledMethod
- %Dictionary.CompiledParameter
- %Dictionary.CompiledProjection
- %Dictionary.CompiledProperty
- %Dictionary.CompiledPropertyMethod
- %Dictionary.CompiledPropertyUDLText
- %Dictionary.CompiledQuery
- %Dictionary.CompiledQueryMethod
- %Dictionary.CompiledStorage
- %Dictionary.CompiledStorageData
- %Dictionary.CompiledStorageDataValue
- %Dictionary.CompiledStorageIndex
- %Dictionary.CompiledStorageProperty
- %Dictionary.CompiledStorageSQLMap
- %Dictionary.CompiledStorageSQLMapData
- %Dictionary.CompiledStorageSQLMapRowIdSpec
- %Dictionary.CompiledStorageSQLMapSub
- %Dictionary.CompiledStorageSQLMapSubAccessvar
- %Dictionary.CompiledStorageSQLMapSubInvalidcondition
- %Dictionary.CompiledStorageShardKey
- %Dictionary.CompiledTrigger
- %Dictionary.CompiledUDLText
- %Dictionary.CompiledXData
- %Dictionary.ForeignKeyDefinition
- %Dictionary.IndexDefinition
- %Dictionary.MethodDefinition
- %Dictionary.PackageDefinition
- %Dictionary.ParameterDefinition
- %Dictionary.ProjectionDefinition
- %Dictionary.PropertyDefinition
- %Dictionary.PropertyUDLTextDefinition
- %Dictionary.QueryDefinition
- %Dictionary.StorageDataDefinition
- %Dictionary.StorageDataValueDefinition
- %Dictionary.StorageDefinition
- %Dictionary.StorageIndexDefinition
- %Dictionary.StoragePropertyDefinition
- %Dictionary.StorageSQLMapDataDefinition
- %Dictionary.StorageSQLMapDefinition
- %Dictionary.StorageSQLMapRowIdSpecDefinition
- %Dictionary.StorageSQLMapSubAccessvarDefinition
- %Dictionary.StorageSQLMapSubDefinition
- %Dictionary.StorageSQLMapSubInvalidconditionDefinition
- %Dictionary.StorageShardKeyDefinition
- %Dictionary.TriggerDefinition
- %Dictionary.UDLTextDefinition
- %Dictionary.XDataDefinition
- %DocDB.Database
- %DocDB.Document
- %ExtentMgr.GUID
- %FileMan.Field
- %FileMan.File
- %FileMan.MappedField
- %FileMan.MappedFile
- %FileMan.MappedFilePackage
- %Library.CompiledClass
- %Library.CompiledMethod
- %Library.CompiledParameter
- %Library.CompiledProperty
- %Library.CompiledQuery
- %Library.GlobalEdit
- %Library.ObjectJournal
- %Library.ObjectJournalRecord
- %Library.ObjectJournalTransaction
- %Library.RoutineIndex
- %Library.SQLConnection
- %Library.SysLogTable
- %MFT.FolderContents
- %MFT.ItemInfo
- %MFT.UserInfo
- %MFT.UserList
- %Monitor.Alert
- %Net.Remote.ActivityLog
- %Net.Remote.ObjectGateway
- %OAuth2.Server.CookieSession
- %OAuth2.Server.Properties
- %SQL.Diag.Message
- %SQL.Diag.Result
- %SQL.Manager.QButtons.Base
- %SQL.Manager.UI
- %SQL.Util.ValidateTableResults
- %SYS.Audit
- %SYS.BackgroundTask
- %SYS.Journal.File
- %SYS.Journal.Record
- %SYS.Journal.Transaction
- %SYS.MFT.Connection.Base
- %SYS.ML.Configuration
- %SYS.MVACTIVELISTS
- %SYS.Maint.Bitmap
- %SYS.Maint.BitmapResults
- %SYS.Monitor.Reading
- %SYS.Monitor.Sensor
- %SYS.Namespace
- %SYS.OAuth2.Request
- %SYS.OpenAM.IdentityServices
- %SYS.PTools.SQLBenchMarkQueries
- %SYS.PTools.SQLBenchMarkResults
- %SYS.PTools.SQLQuery
- %SYS.PTools.SQLStats
- %SYS.PTools.SQLUtilResults
- %SYS.PTools.SQLUtilities
- %SYS.PTools.Stats
- %SYS.PTools.UtilSQLAnalysisDB
- %SYS.PTools.UtilSQLStatements
- %SYS.PhoneProviders
- %SYS.Portal.Resources
- %SYS.Portal.Users
- %SYS.ProcessQuery
- %SYS.Task.Config
- %SYS.Task.History
- %SYS.TokenAuth
- %SYS.X509Credentials
- %SYSTEM.DSTIME
- %SYSTEM.TaskConfig
- %SYSTEM.TaskHistory
- %Studio.BreakPoint
- %Studio.Extension.Menu
- %Studio.Extension.MenuBase
- %Studio.OpenDialogItems
- %Studio.Package
- %Studio.Project
- %Studio.ProjectItem
- %Studio.SourceControl.Change
- %Studio.SourceControl.ItemSet
- %Studio.Template.HTMLAttribute
- %Studio.Template.HTMLElement
- %Studio.WatchPoint
- %Studio.WatchVariable
- %UnitTest.Result.TestAssert
- %UnitTest.Result.TestCase
- %UnitTest.Result.TestInstance
- %UnitTest.Result.TestMethod
- %UnitTest.Result.TestSuite
- %WebStress.Calls
- %WebStress.Control
- %WebStress.Errors
- %WebStress.Iterations
- %WebStress.Machines.ApplicationServers
- %WebStress.Machines.Generators
- %WebStress.Machines.WebServers
- %WebStress.Playback
- %WebStress.Playback.Status
- %WebStress.Results.AppServerStats
- %WebStress.Results.Calls
- %WebStress.Results.General
- %WebStress.Results.Iterations
- %WebStress.Results.PageSummary
- %WebStress.Results.Summary
- %WebStress.Run
- %WebStress.Scripts
- %WebStress.Scripts.URLS
- %WebStress.Scripts.URLS.Parameters
- %WebStress.Tables.NoDelay
- %WebStress.Tables.NoResults
- %WebStress.Tests
- %WebStress.Tests.Parameters
- %WebStress.Utils.Version
- %XML.Catalog
- %XML.XPATH.Result
- %ZEN.Mobile.RSS.Application
- %ZEN.Mobile.RSS.Feed
- %ZEN.Mobile.RSS.Item
- %ZEN.Report.RenderServer
- %ZEN.Report.TestReport
- %ZEN.Report.Version
- %iFind.Entity
- %iFind.OriginalWord
- %iFind.Synonym
- %iFind.Transformation
- %iFind.Word
- %iFind.WordTransformation
- %iKnow.Configuration
- %iKnow.Domain
- %iKnow.Matching.MatchingProfile
- %iKnow.Objects.CcUnique
- %iKnow.Objects.CrcInSourceDetails
- %iKnow.Objects.CrcOccurrence
- %iKnow.Objects.CrcUnique
- %iKnow.Objects.Dictionary
- %iKnow.Objects.DictionaryItem
- %iKnow.Objects.DictionaryMatch
- %iKnow.Objects.DictionaryTerm
- %iKnow.Objects.EntityInSourceDetails
- %iKnow.Objects.EntityMatch
- %iKnow.Objects.EntityOccurrence
- %iKnow.Objects.EntityUnique
- %iKnow.Objects.MetadataField
- %iKnow.Objects.MetadataValue
- %iKnow.Objects.Path
- %iKnow.Objects.Sentence
- %iKnow.Objects.SkipList
- %iKnow.Objects.Source
- %iKnow.Objects.VirtualCrcOccurrence
- %iKnow.Objects.VirtualCrcUnique
- %iKnow.Objects.VirtualDictionaryMatch
- %iKnow.Objects.VirtualEntityOccurrence
- %iKnow.Objects.VirtualEntityUnique
- %iKnow.Objects.VirtualSentence
- %iKnow.Objects.VirtualSource
- %iKnow.Stemming.Configuration
- %iKnow.Stemming.Rule
- %iKnow.Tables.AbstractCustomAnnotation
- %iKnow.UserDictionary
- Backup.Task
- Config.Archives
- Config.Cluster
- Config.ComPorts
- Config.CommonSingleMethods
- Config.ConfigFile
- Config.Conversions
- Config.Databases
- Config.Debug
- Config.DeviceSubTypes
- Config.Devices
- Config.ECP
- Config.ECPServers
- Config.Gateways
- Config.IO
- Config.Journal
- Config.LicenseServers
- Config.Logging
- Config.MagTapes
- Config.MapGlobals
- Config.MapMirrors
- Config.MapPackages
- Config.MapRoutines
- Config.MapShadows
- Config.MirrorMember
- Config.Mirrors
- Config.Miscellaneous
- Config.Monitor
- Config.NLS.Locales
- Config.NLS.SubTables
- Config.NLS.Tables
- Config.Namespaces
- Config.SQL
- Config.Shadows
- Config.SqlSysDatatypes
- Config.SqlUserDatatypes
- Config.Startup
- Config.Telnet
- Config.WorkQueues
- Config.config
- DataMove.Defaults
- INFORMATION.SCHEMA.CHECKCONSTRAINTS
- INFORMATION.SCHEMA.COLUMNHISTOGRAMS
- INFORMATION.SCHEMA.COLUMNS
- INFORMATION.SCHEMA.CONSTRAINTCOLUMNUSAGE
- INFORMATION.SCHEMA.CONSTRAINTTABLEUSAGE
- INFORMATION.SCHEMA.CURRENTSTATEMENTS
- INFORMATION.SCHEMA.FOREIGNSERVERS
- INFORMATION.SCHEMA.FOREIGNTABLES
- INFORMATION.SCHEMA.INDEXES
- INFORMATION.SCHEMA.KEYCOLUMNUSAGE
- INFORMATION.SCHEMA.MLMODELS
- INFORMATION.SCHEMA.MLTRAINEDMODELS
- INFORMATION.SCHEMA.MLTRAININGRUNS
- INFORMATION.SCHEMA.MLVALIDATIONMETRICS
- INFORMATION.SCHEMA.MLVALIDATIONRUNS
- INFORMATION.SCHEMA.PARAMETERS
- INFORMATION.SCHEMA.REFERENTIALCONSTRAINTS
- INFORMATION.SCHEMA.ROUTINES
- INFORMATION.SCHEMA.SCHEMATA
- INFORMATION.SCHEMA.STATEMENTCHILDREN
- INFORMATION.SCHEMA.STATEMENTDAILYSTATS
- INFORMATION.SCHEMA.STATEMENTHOURLYSTATS
- INFORMATION.SCHEMA.STATEMENTLOCATIONS
- INFORMATION.SCHEMA.STATEMENTPARAMETERSTATS
- INFORMATION.SCHEMA.STATEMENTPRIVACTIONS
- INFORMATION.SCHEMA.STATEMENTPRIVOBJECTS
- INFORMATION.SCHEMA.STATEMENTRELATIONS
- INFORMATION.SCHEMA.STATEMENTS
- INFORMATION.SCHEMA.TABLECONSTRAINTS
- INFORMATION.SCHEMA.TABLES
- INFORMATION.SCHEMA.TRIGGERS
- INFORMATION.SCHEMA.USERDEFINEDAGGREGATES
- INFORMATION.SCHEMA.VIEWCOLUMNUSAGE
- INFORMATION.SCHEMA.VIEWS
- INFORMATION.SCHEMA.VIEWTABLEUSAGE
- OAuth2.AccessToken
- OAuth2.Client
- OAuth2.Client.Metadata
- OAuth2.Server.AccessToken
- OAuth2.Server.Client
- OAuth2.Server.Configuration
- OAuth2.Server.JWTid
- OAuth2.Server.Metadata
- OAuth2.ServerDefinition
- PKI.CAClient
- PKI.CAServer
- PKI.CSR
- PKI.Certificate
- SYS.DataCheck.Configuration
- SYS.DataCheck.RangeList
- SYS.DataCheck.RunParameters
- SYS.DataCheck.System
- SYS.DataCheck.Workflow
- SYS.Database
- SYS.History.Daily
- SYS.History.Hourly
- SYS.History.PerfData
- SYS.History.SharedMemoryData
- SYS.History.SysData
- SYS.Monitor.Alert
- SYS.Monitor.Health.Chart
- SYS.Monitor.Health.Period
- SYS.Monitor.Health.SensorObject
- SYS.Monitor.SAM.Config
- Security.Applications
- Security.DocDBs
- Security.Domains
- Security.Events
- Security.KMIPServer
- Security.LDAPConfigs
- Security.Resource
- Security.Resources
- Security.Roles
- Security.SQLAdminPrivilegeSet
- Security.SQLPrivileges
- Security.SQLRoleGrantOption
- Security.SSLConfigs
- Security.Servers
- Security.Services
- Security.System
- Security.Users
- Security.X509Users