const short FLAG_AUTO_INCREMENT = 1;
const short FLAG_CASE_SENSITIVE = 2;
const short FLAG_CURRENCY = 4;
const short FLAG_SEARCHABLE = 8;
const short FLAG_UNSIGNED = 16;
const short NULLABLE_NO = 0;
const short NULLABLE_UNKNOWN = 2;
const short NULLABLE_YES = 1;
const long ROW_DELETED = 1;
const long ROW_INSERTED = 2;
const long ROW_UPDATED = 3;
const short TYPE_BINARY = 1;
const short TYPE_BOOLEAN = 3;
const short TYPE_BYTE = 11;
const short TYPE_DATE = 17;
const short TYPE_DATE_TIME = 19;
const short TYPE_DECIMAL = 6;
const short TYPE_DOUBLE = 5;
const short TYPE_DURATION = 16;
const short TYPE_FLOAT = 4;
const short TYPE_INT = 9;
const short TYPE_INTEGER = 7;
const short TYPE_JAVA_OBJECT = 20;
const short TYPE_LONG = 8;
const short TYPE_NULL = 0;
const short TYPE_SHORT = 10;
const short TYPE_STRING = 2;
const short TYPE_TIME = 18;
const short TYPE_UNSIGNED_BYTE = 15;
const short TYPE_UNSIGNED_INT = 13;
const short TYPE_UNSIGNED_LONG = 12;
const short TYPE_UNSIGNED_SHORT = 14;
const short WRITABLE_NO = 0;
const short WRITABLE_UNKNOWN = 2;
const short WRITABLE_YES = 1;
union AnyValue switch (short)
{
case TYPE_NULL: short nullValue;
case TYPE_BINARY: XDT::Binary binaryValue;
case TYPE_STRING: string stringValue;
case TYPE_BOOLEAN: boolean booleanValue;
case TYPE_FLOAT: float floatValue;
case TYPE_DOUBLE: double doubleValue;
case TYPE_DECIMAL: XDT::Decimal decimalValue;
case TYPE_INTEGER: XDT::Integer integerValue;
case TYPE_LONG: XDT::LongInt longValue;
case TYPE_INT: XDT::Int intValue;
case TYPE_SHORT: XDT::ShortInt shortValue;
case TYPE_BYTE: XDT::Byte byteValue;
case TYPE_UNSIGNED_LONG: XDT::UnsignedLong unsignedLongValue;
case TYPE_UNSIGNED_INT: XDT::UnsignedInt unsignedIntValue;
case TYPE_UNSIGNED_SHORT: XDT::UnsignedShort unsignedShortValue;
case TYPE_UNSIGNED_BYTE: XDT::UnsignedByte unsignedByteValue;
case TYPE_DURATION: XDT::Duration durationValue;
case TYPE_DATE: XDT::Date dateValue;
case TYPE_TIME: XDT::Time timeValue;
case TYPE_DATE_TIME: XDT::DateTime dateTimeValue;
case TYPE_JAVA_OBJECT: XDT::JavaObject javaObjectValue;
};
typedef sequence < XDT::AnyValue > AnyValueSeq;
typedef sequence < octet > Binary;
struct BinaryValue
{
XDT::Binary value;
boolean isNull;
};
typedef octet Byte;
struct ByteValue
{
XDT::Byte value;
boolean isNull;
};
The Column type holds row set meta-data for a single column.
struct Column
{
short type;
short flags;
string name;
string label;
long sqlType;
XDT::List enumeration;
short displaySize;
short isNullable;
short isWritable;
short precision;
short scale;
XDT::Properties props;
};
The fields are defined as:
| Field | Description | Legal Values |
|---|---|---|
| type | XDT type | (see union AnyValue) |
| flags | Sum of zero or more flag values | FLAG_AUTO_INCREMENT, FLAG_CASE_SENSITIVE, FLAG_CURRENCY, FLAG_SEARCHABLE, FLAG_UNSIGNED |
| name | Column name | (may be empty) |
| label | Display label | (may be empty) |
| sqlType | JDBC/XOPEN SQL type | zero (unknown / unspecified) or see java.sql.Types.* constants |
| enumeration | List of allowable values | (empty list means unspecified) |
| displaySize | Normal maximum width in characters | zero (unknown / unspecified) or positive |
| isNullable | Are column values nullable? | NULLABLE_NO, NULLABLE_YES, NULLABLE_UNKNOWN |
| isWritable | Are column values writable? | WRITABLE_NO, WRITABLE_YES, WRITABLE_UNKNOWN |
| precision | Maximum number of decimal digits | zero (not applicable / unknown / unspecified) or positive |
| scale | Maximum number of decimal digits in the fractional part | zero or positive, ignored if precision is zero |
| props | Additional meta-data | (see below) |
Additional meta-data is optionally specified using pre-defined and user-defined properties. The pre-defined properties are:
| Name | Type | Value |
|---|---|---|
| xsdType | TYPE_STRING | (see XML Schema Part 2 - Datatypes) |
| length | (any integer type) | (see XML Schema Part 2 - Datatypes) |
| maxLength | (any integer type) | (see XML Schema Part 2 - Datatypes) |
| minLength | (any integer type) | (see XML Schema Part 2 - Datatypes) |
| maxExclusive | (column type) | (see XML Schema Part 2 - Datatypes) |
| maxInclusive | (column type) | (see XML Schema Part 2 - Datatypes) |
| minExclusive | (column type) | (see XML Schema Part 2 - Datatypes) |
| minInclusive | (column type) | (see XML Schema Part 2 - Datatypes) |
| pattern | TYPE_STRING | (see XML Schema Part 2 - Datatypes) |
| whiteSpace | TYPE_STRING | (see XML Schema Part 2 - Datatypes) |
| javaClassName | TYPE_STRING | (see java.sql.RowSetMetaData.getColumnClassName) |
| sqlCatalogName | TYPE_STRING | (see java.sql.RowSetMetaData.getCatalogName) |
| sqlSchemaName | TYPE_STRING | (see java.sql.RowSetMetaData.getSchemaName) |
| sqlTableName | TYPE_STRING | (see java.sql.RowSetMetaData.getTableName) |
| sqlTypeName | TYPE_STRING | (see java.sql.RowSetMetaData.getColumnTypeName) |
typedef sequence < XDT::Column > ColumnSeq;
struct Date
{
XDT::DateInfo datePart;
XDT::ZoneInfo timeZone;
};
struct DateInfo
{
long year;
octet month;
octet day;
};
struct DateTime
{
XDT::DateInfo datePart;
XDT::TimeInfo timePart;
XDT::ZoneInfo timeZone;
};
struct DateTimeValue
{
XDT::DateTime value;
boolean isNull;
};
struct DateValue
{
XDT::Date value;
boolean isNull;
};
struct Decimal
{
XDT::Binary value;
};
struct DecimalValue
{
XDT::Decimal value;
boolean isNull;
};
struct Duration
{
boolean negative;
long years;
long months;
long days;
long hours;
long minutes;
long seconds;
XDT::Decimal fsec;
};
struct DurationValue
{
XDT::Duration value;
boolean isNull;
};
typedef long Int;
struct Integer
{
XDT::Binary value;
};
struct IntegerValue
{
XDT::Integer value;
boolean isNull;
};
struct IntValue
{
XDT::Int value;
boolean isNull;
};
struct JavaObject
{
XDT::Binary value;
};
struct List
{
XDT::AnyValueSeq item;
};
typedef long long LongInt;
struct LongValue
{
XDT::LongInt value;
boolean isNull;
};
struct Map
{
XDT::MapEntrySeq item;
};
struct MapEntry
{
XDT::AnyValue key;
XDT::AnyValue value;
};
typedef sequence < XDT::MapEntry > MapEntrySeq;
struct Properties
{
XDT::PropertySeq item;
};
struct Property
{
string name;
XDT::AnyValue value;
};
typedef sequence < XDT::Property > PropertySeq;
The Row type holds row set data for a single row.
struct Row
{
long rowStatus;
XDT::AnyValueSeq oldValues;
XDT::AnyValueSeq newValues;
XDT::Properties props;
};
typedef sequence < XDT::Row > RowSeq;
The RowSet type holds row set data and meta-data.
struct RowSet
{
XDT::Properties props;
XDT::ColumnSeq columns;
XDT::RowSeq rows;
};
Row sets can hold original, deleted, inserted, and updated rows.
The meta-data at all levels (row set, row and column) is extensible.
struct Set
{
XDT::AnyValueSeq item;
};
typedef short ShortInt;
struct ShortValue
{
XDT::ShortInt value;
boolean isNull;
};
struct StringValue
{
string value;
boolean isNull;
};
struct Time
{
XDT::TimeInfo timePart;
XDT::ZoneInfo timeZone;
};
struct TimeInfo
{
octet hour;
octet minute;
octet second;
XDT::Decimal fsec;
};
Deprecated. Use DateTime.
struct TimeInstant
{
XDT::DateInfo datePart;
XDT::TimeInfo timePart;
XDT::ZoneInfo timeZone;
};
struct TimeValue
{
XDT::Time value;
boolean isNull;
};
typedef octet UnsignedByte;
struct UnsignedByteValue
{
XDT::UnsignedByte value;
boolean isNull;
};
typedef unsigned long UnsignedInt;
struct UnsignedIntValue
{
XDT::UnsignedInt value;
boolean isNull;
};
typedef unsigned long long UnsignedLong;
struct UnsignedLongValue
{
XDT::UnsignedLong value;
boolean isNull;
};
typedef unsigned short UnsignedShort;
struct UnsignedShortValue
{
XDT::UnsignedShort value;
boolean isNull;
};
struct ZoneInfo
{
short offset;
};