返回首页

gbase数据、南大通用产品文档:GBase8s在 GBase 8s 和 JDBC 数据类型之间映射的数据类型

更新日期:2024年09月11日

由于每个数据库供应商支持的 SQL 数据类型之间存在差异,JDBC API 在
类 java.sql.Types 中定义了一组通用 SQL 数据类型。
使用这些 JDBC API 数据类型来引用
Java™ 程序中的通用 SQL 数据类型,这些程序使用 JDBC API 连接到 GBase 8s 数据库。
下表显示了每个 JDBC API 数据类型映射的 GBase 8s 数据类型。
JDBC API 数据类型
GBase 8s 数据类型
BIGINT
INT8 、BIGINT 、BIGSERIAL
BINARY
BYTE
BIT 1
BOOLEAN
REF
不支持
CHAR
CHAR(n)
DATE
DATE
DECIMAL
DECIMAL

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 264
-
JDBC API 数据类型
GBase 8s 数据类型
DOUBLE
FLOAT
FLOAT
FLOAT2
INTEGER
INTEGER
LONGVARBINARY
BYTE 或 BLOB
LONGVARCHAR
TEXT 或 CLOB
NUMERIC
DECIMAL
NUMERIC
MONEY
REAL
SMALLFLOAT
SMALLINT
SMALLINT
TIME
DATETIME HOUR TO SECOND2
TIMESTAMP
DATETIME YEAR TO FRACTION(5)3
TINYINT
SMALLINT
VARBINARY
BYTE
VARCHAR
VARCHAR(m,r)
BOOLEAN
BOOLEAN
SMALLINT
SMALLINT
1 在 Java 1.4 中,java.sql.Types.BOOLEAN 映射到 BOOLEAN。
2 这个映射是 JDBC 兼容的。
通过将 IFX_SET_FLOAT_AS_SMFLOAT 环境变量设置为 1 ,
可以将 JDBC FLOAT 数据类型映射到 GBase 8sSMALLFLOAT 数据类型以便向后兼容。
3 GBase 8s DATETIME 类型非常严格,不可互换。有关更多信息,请参阅 字段长度和
DATETIME 数据。
在扩展类型和 Java 和 JDBC 类型之间映射数据类型
下表列出了 GBase 8s 中扩展的数据类型和对应 Java™ 和 JDBC 的类型之间的映射。
JDBC 类型
Java 对象类型
GBase 8s 类型

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 265
-
JDBC 类型
Java 对象类型
GBase 8s 类型
java.sql.Types.LONGVARCH
AR
java.sql.String
java.io.inputStream
LVARCHAR
IfxTypes.IFX_TYPE_LVAR
CHAR
java.sql.Types.JAVA_OBJE
CT
java.sql.SQLData
Opaque 类型
IfxTypes.IFX_TYPE_UDTF
IXED
IfxTypes.IFX_TYPE_UDTV
AR
java.sql.Types.LONGVARBI
NARY
java.sql.Types.BLOB
java.sql.Blob
java.io.inputStreambyte[]
BLOB
IfxTypes.IFX_TYPE_BLOB
java.sql.Types.LONGVARCH
AR
java.sql.Types.CLOB
java.sql.Clob
java.io.inputStream
java.lang.String
CLOB
IfxTypes.IFX_TYPE_CLOB
java.sql.Types.LONGVARBI
NARY
java.sql.Types.BLOB
java.io.inputStream
java.sql.Blob byte[]
BYTE
IfxTypes.IFX_TYPE_BYTE
java.sql.Types.LONGVARCH
AR
java.sql.Types.CLOB
java.io.InputStream
java.sql.Clob
java.sql.String
TEXT
IfxTypes.IFX_TYPE_TEXT
java.sql.Types.JAVA_OBJE
CT
java.sql.Types.STRUCT
java.sql.SQLData
java.sql.Struct
命名行
IfxTypes.IFX_TYPE_ROW
java.sql.Types.STRUCT
java.sql.Struct
未命名行
IfxTypes.IFX_TYPE_ROW
java.sql.Types.ARRAY
java.sql.Types.OTHER
java.sql.Array
java.util.LinkedList
java.util.HashSet
set, multiset
IfxTypes.IFX_TYPE_SET
IfxTypes.IFX_TYPE_MULT

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 266
-
JDBC 类型
Java 对象类型
GBase 8s 类型
java.util.TreeSet
ISET
java.sql.Types.ARRAY
java.sql.Types.OTHER
java.sql.Array
java.util.ArrayList java
.util.LinkedList
LIST
IfxTypes.IFX_TYPE_LIST
Java boolean 对象可以映射到 GBase 8s smallint 数据类型或 GBase 8s boolean 数据类型。
GBase 8s JDBC Driver 尝试根据列类型映射它。
但是,
在例如 PreparedStatement 主机变量的
情况中,GBase 8s JDBC Driver 不会存取列类型,因此,映射在一定程度上是受限制的。
有关数据类型映射的详细信息,请参阅PreparedStatement.setXXX() 扩展的数据类型映射。
C 不透明类型和 Java 之间的数据类型映射
要使用 Java™ 创建不透明类型,
您可以使用 UDT 和 UDR Manager 工具。
有关更多信息,
请参阅 与不透明数据类型一起使用。
所有的不透明类型都存储在 C 结构的数据库服务器表中,
该结构由不透明类型中定义的各
种 DataBlade API 类型组成。(有关更多信息,请参阅《GBase 8s DataBlade API 程序员指
南》。)
下表列出了 DataBlade API 类型与相应的 Java 类型的映射。
DataBlade API 类型
Java 类型
MI_LO_HANDLE
BLOB 或 CLOB
gl_wchar_t
String
mi_boolean
boolean
mi_char
String
mi_char1
String
mi_date
Date
mi_datetime
TimeStamp
mi_decimal
BigDecimal
mi_double_precision
double
mi_int1
byte
mi_int8
long

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 267
-
DataBlade API 类型
Java 类型
mi_integer
int
mi_interval
不支持
mi_money
BigDecimal
mi_numeric
BigDecimal
mi_real
float
mi_smallint
short
mi_string
String
mi_unsigned_char1
String
mi_unsigned_int8
long
mi_unsigned_integer
int
mi_unsigned_smallint short
mi_wchar
String
C 结构可能包含填充字节。
GBase 8s JDBC Driver 会自动跳过这些填充字节,
以确保下一个
数据成员正确对齐。因此,您的 Java™ 对象不必关心自身的对齐。

功能描述
在指定的节点上执行SQL 语句。一般情况下,SQL 语句的执行是由集群负载自动分配
到合适的节点上,execute direct 主要用于数据库维护和测试。
注意事项
当enable_nonsysadmin_execute_direct=off 时,只有系统管理员和监控管理员才能执行
EXECUTE DIRECT。
为了各个节点上数据的一致性,
SQL 语句仅支持SELECT,
不允许执行事务语句、
DDL、
DML。
使用此类型语句在指定的DN 执行stddev 聚集计算时,
返回结果集是以三元数组形式返
回,如{3, 8, 30},表示count 结果为3,sum 结果为8,平方和为30。使用此类型语句在指
定的DN 执行AVG 聚集计算时,返回结果集以二元组形式返回,如{4,2},表示sum 结果
为4,
count 结果为2。
注意,
当数据为列存时,
调用avg 函数结果未定义,
请使用stddev_samp
函数。
当指定多个节点时,
不支持agg 函数,
当query 中包含agg 函数时,
会返回
“EXECUTE
DIRECT on multinode not support agg functions.”
由于CN 节点不存储用户表数据,不允许指定CN 节点执行用户表上的SELECT 查询。
不允许执行嵌套的EXECUTE DIRECT 语句,
即执行的SQL 语句不能同样是EXECUTE
DIRECT 语句,此时可直接执行最内层EXECUTE DIRECT 语句代替。
agg 函数查询结果与直接在CN 上查询不一致,会返回多个信息,不支持array_avg 函
数。
语法格式

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
1144
EXECUTE DIRECT ON ( nodename [, ... ] ) query ;
EXECUTE DIRECT ON { COORDINATORS | DATANODES | ALL } query;
参数说明

nodename
节点名称。
取值范围:已存在的节点。

query
要执行查询语句。

COORDINATORS
在所有coordinator 执行查询语句。

DATANODES
在所有datanode 执行查询语句。

ALL
在所有coordinator 和datanode 执行查询语句。
示例
--查询当前数据库实例的节点分布状态。
gbase=#SELECT * FROM pgxc_node;
node_name
| node_type | node_port |
node_host
| node_port1 |
node_host1
| hostis_primary | nodeis_primary | nodeis_preferred |
node_id
| sctp_port | control_port | sctp_port1 | control_port1
--------------+-----------+-----------+----------------+------------+--------
--------+----------------+----------------+------------------+-------------+-
----------+--------------+------------+---------------
cn_5001
| C
|
8050 | 10.180.155.74
|
8050 |

功能说明
游标在使用完成后需要关闭,否则游标所占用的服务器的资源不会被释放;如果
没有明确的关闭,游标则在声明它的复合语句结束处被关闭。
语法格式
CLOSE cursor_name
表5- 183 参数说明
参数名称


cursor_name
要关闭的游标名称。
示例
以下代码是包含在游标代码块中的。
DECLARE s_region CHAR(16);

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1374
DECLARE region
INT;
DECLARE cur CURSOR FOR SELECT DISTINCT c_region,1 FROM
ssbm.customer ORDER BY c_region LIMIT 1000;
OPEN cur;
FETCH cur INTO s_region, region;
CLOSE cur; //