Determine internal representation
The internal representation of an opaque data type is a C data structure that holds the information that the opaque type needs.
The internal representation of an opaque type that is stored in
a database is called its server internal representation. Inside this
internal C structure, use the platform-independent DataBlade®
API data
types (such as mi_integer and mi_real) to improve the
portability of the opaque data type.
Tip: The internal
representation of an opaque data type is a binary format that might
not match the external binary format surfaced to the client.
For example, the following code fragment shows the circle_t data
structure, which holds the values for the circle opaque data
type.
The CREATE OPAQUE TYPE statement uniquely names the opaque data type. It is recommended that you develop a unique prefix for the name of an opaque data type. If your DataBlade® module uses a prefix, such as USR, you can begin the names of opaque types with this prefix. For example, you might use the prefix USR on all database objects that your DataBlade® module creates. The preceding circle_t opaque type can be named USR_circle_t to ensure that it does not conflict with opaque types that other DataBlade® modules might create.
You register the opaque data type with the CREATE OPAQUE TYPE statement,
which stores information about the opaque type in the sysxtdtypes system
catalog table. When you register an opaque data type, you provide
the following information about the internal representation of an
opaque type:
- The final size of the new opaque data type
- How the opaque data type is aligned in memory
- How the opaque data type is passed in an MI_DATUM structure