二进制类型
openGauss支持的二进制类型请参见表1。
相比于原始的openGauss,dolphin对于二进制类型的修改主要为:
- 新增
BINARY/VARBINARY/TINYBLOB/MEDIUMBLOB/LONGBLOB
类型。 - 对
BLOB
类型的输入函数进行了修改,在dolphin.b_compatibility_mode为on的情况下,其输入可以兼容MySQL数据库的普通字符串输入,输出则需要再将bytea_output参数设置为escape才能输出对应的字符串,否则会被转换成十六进制字符串的形式进行输出。 - 对
TINYBLOB/MEDIUMBLOB/LONGBLOB
类型,在dolphin.b_compatibility_mode为off的情况下也可以兼容MySQL数据库的普通字符串输入,输出则需要再将bytea_output参数设置为escape才能输出对应的字符串,否则会被转换成十六进制字符串的形式进行输出。 - 对
BINARY
类型的输入函数进行了修改,可支持MySQL数据库中的转义字符识别。 - 新增BIANRY EXPR用法,用在任意表达式前的BINARY 关键字,表示将此表达式转化为二进制类型;
表 1 二进制类型
变长的二进制字符串(密态特性新增的类型,如果加密列的加密类型指定为确定性加密,则该列的实际类型为BYTEAWITHOUTORDERWITHEQUALCOL),元命令打印加密表将显示原始数据类型。 | ||
变长的二进制字符串(密态特性新增的类型,如果加密列的加密类型指定为随机加密,则该列的实际类型为BYTEAWITHOUTORDERCOL),元命令打印加密表将显示原始数据类型。 | ||
说明:
除了每列的大小限制以外,每个元组的总大小也不可超过1GB-8203字节(即1073733621字节)。
不支持直接使用BYTEAWITHOUTORDERWITHEQUALCOL、BYTEAWITHOUTORDERCOL、_BYTEAWITHOUTORDERWITHEQUALCOL和_BYTEAWITHOUTORDERCOL类型创建表。
示例:
--创建表。
openGauss=# CREATE TABLE blob_type_t1
(
BT_COL1 INTEGER,
BT_COL2 BLOB,
BT_COL3 RAW,
BT_COL4 BYTEA
) ;
--插入数据。
openGauss=# INSERT INTO blob_type_t1 VALUES(10,empty_blob(),
HEXTORAW('DEADBEEF'),E'\\xDEADBEEF');
--查询表中的数据。
openGauss=# SELECT * FROM blob_type_t1;
bt_col1 | bt_col2 | bt_col3 | bt_col4
---------+---------+----------+------------
10 | | DEADBEEF | \xdeadbeef
(1 row)
--删除表。
openGauss=# DROP TABLE blob_type_t1;
--使用BINARY转化
openGauss=# select 'a\t'::binary;
binary
--------
\x6109
(1 row)
openGauss=# select binary 'a\b';
binary
--------
\x6108
(1 row)