9.2.6. Instance References
Because the SQL types instances cannot be referenced by more than one
variable/type member Virtuoso PL implements instance references. The
references are created for the types marked with
SELF AS REF type_option
(see CREATE TYPE). For such types
the constructor(s) make a SQL value of reference type in addition to
making the instance itself. The engine places the instances in a
connection specific cache of instances and returns a SQL value of type
reference which points to that instance. Copying the reference value will
not cause copying the instance into the cache, so a
SELF AS REF
type will behave as a hosted class with respect to changing values in the
copy. A new instance in the cache will be created only when the
constructor for the type is called again. The server will accept a SQL
reference value in every place where an instance value is expected. When a
reference is serialized, as in when storing into a column of a table, the
server will serialize the instance data, not the reference itself.
The connection's instance cache is cleared after the completion of the current server operation, i.e. completion of the top level state, statement invoked by a client or the completion of processing an HTTP request. The cache will thus survive multiple transactions if these are transacted within a single client initiated operation.