Class ColumnMetaData
Meta data of a column
@note
The encoding used for the different bytes
fields in the
meta data is externally controlled. See also:
https://dev.mysql.com/doc/refman/5.0/en/charset-connection.html
@par
@note
The server may not set the original_{table|name}
fields
if they are equal to the plain {table|name}
field.
@par @note A client has to reconstruct it like: @code{py} if .original_name is empty and .name is not empty: .original_name = .name
if .original_table is empty and .table is not empty: .original_table = .table @endcode
@par
@note
Compact metadata format
can be requested by the client.
In that case, only .type
is set and all other fields are empty.
Expected data type of Mysqlx.Resultset.Row per SQL Type for non-NULL values:
SQL Type | .type | .length | .frac_dig | .flags | .charset |
---|---|---|---|---|---|
TINY | SINT | x | |||
TINY UNSIGNED | UINT | x | x | ||
SHORT | SINT | x | |||
SHORT UNSIGNED | UINT | x | x | ||
INT24 | SINT | x | |||
INT24 UNSIGNED | UINT | x | x | ||
INT | SINT | x | |||
INT UNSIGNED | UINT | x | x | ||
LONGLONG | SINT | x | |||
LONGLONG UNSIGNED | UINT | x | x | ||
DOUBLE | DOUBLE | x | x | x | |
FLOAT | FLOAT | x | x | x | |
DECIMAL | DECIMAL | x | x | x | |
VARCHAR,CHAR,... | BYTES | x | x | x | |
GEOMETRY | BYTES | ||||
TIME | TIME | x | |||
DATE | DATETIME | x | |||
DATETIME | DATETIME | x | |||
YEAR | UINT | x | x | ||
TIMESTAMP | DATETIME | x | |||
SET | SET | x | |||
ENUM | ENUM | x | |||
NULL | BYTES | ||||
BIT | BIT | x |
@note The SQL "NULL" value is sent as an empty field value in @ref Mysqlx::Resultset::Row.
@par Tip The protobuf encoding of primitive data types is described in https://developers.google.com/protocol-buffers/docs/encoding
- SINT
.length
@n Maximum number of displayable decimal digits (including minus sign) of the type. @note The valid range is 0-255, but usually you'll see 1-20.
SQL Type | Maximum Digits per Type |
---|---|
TINY SIGNED | 4 |
SHORT SIGNED | 6 |
INT24 SIGNED | 8 |
INT SIGNED | 11 |
LONGLONG SIGNED | 20 |
@par Tip
Definition of M
are in
https://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html.
value
@n Variable length encoded signed 64 integer.
- UINT
.flags & 1
(zerofill) @n The client has to left pad with 0's up to .length..length
@n Maximum number of displayable decimal digits of the type. @note The valid range is 0-255, but usually you'll see 1-20.
SQL Type | max digits per type |
---|---|
TINY UNSIGNED | 3 |
SHORT UNSIGNED | 5 |
INT24 UNSIGNED | 8 |
INT UNSIGNED | 10 |
LONGLONG UNSIGNED | 20 |
@par Tip
Definition of M
are in
https://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html.
value
@n Variable length encoded unsigned 64 integer.
- BIT
.length
@n Maximum number of displayable binary digits. @note The valid range for M of theBIT
type is 1 - 64.
@par Tip https://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html
value
@n Variable length encoded unsigned 64 integer.
- DOUBLE
.length
@n Maximum number of displayable decimal digits (including the decimal point and.fractional_digits
)..fractional_digits
@n Maximum number of displayable decimal digits following the decimal point.value
@n Encoded as protobuf's 'double'.
- FLOAT
.length
@n Maximum number of displayable decimal digits (including the decimal point and.fractional_digits
)..fractional_digits
@n Maximum number of displayable decimal digits following the decimal point.value
@n Encoded as protobuf's 'float'.
- BYTES, ENUM @note BYTES is used for all opaque byte strings that may have a charset:
TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
VARCHAR, VARBINARY
CHAR, BINARY
ENUM
.length
@n Maximum length of characters of the underlying type..flags & 1
(rightpad) @n If the length of the field is less than.length
, the receiver is supposed to add padding characters to the right end of the string. If the.charset
is "binary", the padding character is0x00
, otherwise it is a space character as defined by that character set. | SQL Type | .length | .charset | .flags | |---------------|----------|-----------|----------| | TINYBLOB | 256 | binary | | | BLOB | 65535 | binary | | | VARCHAR(32) | 32 | utf8 | | | VARBINARY(32) | 32 | utf8_bin | | | BINARY(32) | 32 | binary | rightpad | | CHAR(32) | 32 | utf8 | rightpad |value
Sequence of bytes with added one extra0x00
byte at the end. To obtain the original string, the extra0x00
should be removed. The length of the string can be acquired with protobuf's fieldlength()
method:
length of sequence-of-bytes = length-of-field - 1
@note
The extra byte allows to distinguish between a NULL
and empty byte sequence.
- TIME
A time value.
value
@n The following bytes sequence:
negate [ hour [ minutes [ seconds [ useconds ]]]]
negate - one byte, should be one of: 0x00 for "+", 0x01 for "-"
hour - optional variable length encoded unsigned64 value for the hour
minutes - optional variable length encoded unsigned64 value for the minutes
seconds - optional variable length encoded unsigned64 value for the seconds
useconds - optional variable length encoded unsigned64 value for the microseconds
@par Tip The protobuf encoding in https://developers.google.com/protocol-buffers/docs/encoding.
@note Hour, minutes, seconds, and useconds are optional if all the values to the right are 0.
Example: 0x00 -> +00:00:00.000000
- DATETIME
A date or date and time value.
value
@n A sequence of variants, arranged as follows:
| year | month | day | [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]
year - variable length encoded unsigned64 value for the year
month - variable length encoded unsigned64 value for the month
day - variable length encoded unsigned64 value for the day
hour - optional variable length encoded unsigned64 value for the hour
minutes - optional variable length encoded unsigned64 value for the minutes
seconds - optional variable length encoded unsigned64 value for the seconds
useconds - optional variable length encoded unsigned64 value for the microseconds @note Hour, minutes, seconds, useconds are optional if all the values to the right are 0.
.flags
@n | Name | Position | |---------------|----------| | is_timestamp | 1 |
- DECIMAL
An arbitrary length number. The number is encoded as a single byte indicating the position of the decimal point followed by the Packed BCD encoded number. Packed BCD is used to simplify conversion to and from strings and other native arbitrary precision math data types. See also: packed BCD in https://en.wikipedia.org/wiki/Binary-coded_decimal
.length
Maximum number of displayable decimal digits (excluding the decimal point and sign, but including.fractional_digits
). @note Should be in the range of 1 - 65..fractional_digits
The decimal digits to display out of length. @note Should be in the range of 0 - 30.
value
The following bytes sequence:
scale | BCD+ sign [0x00]?
scale - 8bit scale value (number of decimal digit after the '.')
BCD - BCD encoded digits (4 bits for each digit)
sign - sign encoded on 4 bits (0xc = "+", 0xd = "-")
0x0 - last 4bits if length(digits) % 2 == 0
Example: x04 0x12 0x34 0x01 0xd0 -> -12.3401
- SET
A list of strings representing a SET of values.
value
@n A sequence of 0 or more of protobuf's bytes (length prepended octets) or one of the special sequences with a predefined meaning listed below.
Example (length of the bytes array shown in brackets):
[0]
- the NULL value[1] 0x00
- a set containing a blank string ''[1] 0x01
- this would be an invalid value, but is to be treated as the empty set[2] 0x01 0x00
- a set with a single item, which is the '0' character[8] 0x03 F O O 0x03 B A R
- a set with 2 items: FOO,BAR
Inheritance
Implements
Namespace: Mysqlx.Resultset
Assembly: MySql.Data.dll
Version: 9.2.0
Syntax
public sealed class ColumnMetaData : Google.Protobuf.IMessage<ColumnMetaData>
Constructors
ColumnMetaData()
Declaration
public ColumnMetaData()
ColumnMetaData(ColumnMetaData)
Declaration
public ColumnMetaData(ColumnMetaData other)
Parameters
Type | Name | Description |
---|---|---|
Column |
other |
Fields
CatalogFieldNumber
Field number for the "catalog" field.
Declaration
public const int CatalogFieldNumber = 7
Field Value
Type | Description |
---|---|
System. |
CollationFieldNumber
Field number for the "collation" field.
Declaration
public const int CollationFieldNumber = 8
Field Value
Type | Description |
---|---|
System. |
ContentTypeFieldNumber
Field number for the "content_type" field.
Declaration
public const int ContentTypeFieldNumber = 12
Field Value
Type | Description |
---|---|
System. |
FlagsFieldNumber
Field number for the "flags" field.
Declaration
public const int FlagsFieldNumber = 11
Field Value
Type | Description |
---|---|
System. |
FractionalDigitsFieldNumber
Field number for the "fractional_digits" field.
Declaration
public const int FractionalDigitsFieldNumber = 9
Field Value
Type | Description |
---|---|
System. |
LengthFieldNumber
Field number for the "length" field.
Declaration
public const int LengthFieldNumber = 10
Field Value
Type | Description |
---|---|
System. |
NameFieldNumber
Field number for the "name" field.
Declaration
public const int NameFieldNumber = 2
Field Value
Type | Description |
---|---|
System. |
OriginalNameFieldNumber
Field number for the "original_name" field.
Declaration
public const int OriginalNameFieldNumber = 3
Field Value
Type | Description |
---|---|
System. |
OriginalTableFieldNumber
Field number for the "original_table" field.
Declaration
public const int OriginalTableFieldNumber = 5
Field Value
Type | Description |
---|---|
System. |
SchemaFieldNumber
Field number for the "schema" field.
Declaration
public const int SchemaFieldNumber = 6
Field Value
Type | Description |
---|---|
System. |
TableFieldNumber
Field number for the "table" field.
Declaration
public const int TableFieldNumber = 4
Field Value
Type | Description |
---|---|
System. |
TypeFieldNumber
Field number for the "type" field.
Declaration
public const int TypeFieldNumber = 1
Field Value
Type | Description |
---|---|
System. |
Properties
Catalog
- catalog the schema originates from
@note
As there is currently no support for catalogs in MySQL,
don't expect this field to be set. In the MySQL C/S
protocol the field had the value
def
all the time
Declaration
public Google.Protobuf.ByteString Catalog { get; set; }
Property Value
Type | Description |
---|---|
Google. |
Collation
Declaration
public ulong Collation { get; set; }
Property Value
Type | Description |
---|---|
System. |
ContentType
- a hint about the higher-level encoding of a BYTES field | Type | Value | Description | |--------|--------|-------------------------| | BYTES | 0x0001 | GEOMETRY (WKB encoding) | | BYTES | 0x0002 | JSON (text encoding) | | BYTES | 0x0003 | XML (text encoding) | @note This list isn't comprehensive. As a guideline: the field's value is expected to pass a validator check on client and server if this field is set. If the server adds more internal data types that rely on BLOB storage like image manipulation, seeking into complex types in BLOBs, and more types will be added
Declaration
public uint ContentType { get; set; }
Property Value
Type | Description |
---|---|
System. |
Descriptor
Declaration
public static Google.Protobuf.Reflection.MessageDescriptor Descriptor { get; }
Property Value
Type | Description |
---|---|
Google. |
Flags
.type
specific flags | Type | Value | Description | |---------|--------|--------------| | UINT | 0x0001 | zerofill | | DOUBLE | 0x0001 | unsigned | | FLOAT | 0x0001 | unsigned | | DECIMAL | 0x0001 | unsigned | | BYTES | 0x0001 | rightpad |
Value | Description |
---|---|
0x0010 | NOT_NULL |
0x0020 | PRIMARY_KEY |
0x0040 | UNIQUE_KEY |
0x0080 | MULTIPLE_KEY |
0x0100 | AUTO_INCREMENT |
default: 0
Declaration
public uint Flags { get; set; }
Property Value
Type | Description |
---|---|
System. |
FractionalDigits
- displayed factional decimal digits for floating point and fixed point numbers
Declaration
public uint FractionalDigits { get; set; }
Property Value
Type | Description |
---|---|
System. |
HasCatalog
Gets whether the "catalog" field is set
Declaration
public bool HasCatalog { get; }
Property Value
Type | Description |
---|---|
System. |
HasCollation
Gets whether the "collation" field is set
Declaration
public bool HasCollation { get; }
Property Value
Type | Description |
---|---|
System. |
HasContentType
Gets whether the "content_type" field is set
Declaration
public bool HasContentType { get; }
Property Value
Type | Description |
---|---|
System. |
HasFlags
Gets whether the "flags" field is set
Declaration
public bool HasFlags { get; }
Property Value
Type | Description |
---|---|
System. |
HasFractionalDigits
Gets whether the "fractional_digits" field is set
Declaration
public bool HasFractionalDigits { get; }
Property Value
Type | Description |
---|---|
System. |
HasLength
Gets whether the "length" field is set
Declaration
public bool HasLength { get; }
Property Value
Type | Description |
---|---|
System. |
HasName
Gets whether the "name" field is set
Declaration
public bool HasName { get; }
Property Value
Type | Description |
---|---|
System. |
HasOriginalName
Gets whether the "original_name" field is set
Declaration
public bool HasOriginalName { get; }
Property Value
Type | Description |
---|---|
System. |
HasOriginalTable
Gets whether the "original_table" field is set
Declaration
public bool HasOriginalTable { get; }
Property Value
Type | Description |
---|---|
System. |
HasSchema
Gets whether the "schema" field is set
Declaration
public bool HasSchema { get; }
Property Value
Type | Description |
---|---|
System. |
HasTable
Gets whether the "table" field is set
Declaration
public bool HasTable { get; }
Property Value
Type | Description |
---|---|
System. |
HasType
Gets whether the "type" field is set
Declaration
public bool HasType { get; }
Property Value
Type | Description |
---|---|
System. |
Length
- maximum count of displayable characters of .type
Declaration
public uint Length { get; set; }
Property Value
Type | Description |
---|---|
System. |
Name
- name of the column
Declaration
public Google.Protobuf.ByteString Name { get; set; }
Property Value
Type | Description |
---|---|
Google. |
OriginalName
- name of the column before an alias was applied
Declaration
public Google.Protobuf.ByteString OriginalName { get; set; }
Property Value
Type | Description |
---|---|
Google. |
OriginalTable
- name of the table the column originates from before an alias was applied
Declaration
public Google.Protobuf.ByteString OriginalTable { get; set; }
Property Value
Type | Description |
---|---|
Google. |
Parser
Declaration
public static Google.Protobuf.MessageParser<ColumnMetaData> Parser { get; }
Property Value
Type | Description |
---|---|
Google. |
Schema
- schema the column originates from
Declaration
public Google.Protobuf.ByteString Schema { get; set; }
Property Value
Type | Description |
---|---|
Google. |
Table
- name of the table the column originates from
Declaration
public Google.Protobuf.ByteString Table { get; set; }
Property Value
Type | Description |
---|---|
Google. |
Type
- datatype of the field in a row
Declaration
public ColumnMetaData.Types.FieldType Type { get; set; }
Property Value
Type | Description |
---|---|
Column |
Methods
CalculateSize()
Declaration
public int CalculateSize()
Returns
Type | Description |
---|---|
System. |
ClearCatalog()
Clears the value of the "catalog" field
Declaration
public void ClearCatalog()
ClearCollation()
Clears the value of the "collation" field
Declaration
public void ClearCollation()
ClearContentType()
Clears the value of the "content_type" field
Declaration
public void ClearContentType()
ClearFlags()
Clears the value of the "flags" field
Declaration
public void ClearFlags()
ClearFractionalDigits()
Clears the value of the "fractional_digits" field
Declaration
public void ClearFractionalDigits()
ClearLength()
Clears the value of the "length" field
Declaration
public void ClearLength()
ClearName()
Clears the value of the "name" field
Declaration
public void ClearName()
ClearOriginalName()
Clears the value of the "original_name" field
Declaration
public void ClearOriginalName()
ClearOriginalTable()
Clears the value of the "original_table" field
Declaration
public void ClearOriginalTable()
ClearSchema()
Clears the value of the "schema" field
Declaration
public void ClearSchema()
ClearTable()
Clears the value of the "table" field
Declaration
public void ClearTable()
ClearType()
Clears the value of the "type" field
Declaration
public void ClearType()
Clone()
Declaration
public ColumnMetaData Clone()
Returns
Type | Description |
---|---|
Column |
Equals(ColumnMetaData)
Declaration
public bool Equals(ColumnMetaData other)
Parameters
Type | Name | Description |
---|---|---|
Column |
other |
Returns
Type | Description |
---|---|
System. |
Equals(Object)
Declaration
public override bool Equals(object other)
Parameters
Type | Name | Description |
---|---|---|
System. |
other |
Returns
Type | Description |
---|---|
System. |
GetHashCode()
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
System. |
MergeFrom(Google.Protobuf.CodedInputStream)
Declaration
public void MergeFrom(Google.Protobuf.CodedInputStream input)
Parameters
Type | Name | Description |
---|---|---|
Google. |
input |
MergeFrom(ColumnMetaData)
Declaration
public void MergeFrom(ColumnMetaData other)
Parameters
Type | Name | Description |
---|---|---|
Column |
other |
ToString()
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
System. |
WriteTo(Google.Protobuf.CodedOutputStream)
Declaration
public void WriteTo(Google.Protobuf.CodedOutputStream output)
Parameters
Type | Name | Description |
---|---|---|
Google. |
output |