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.