返回首页

gbase数据、南大通用产品文档:GBase8sSQLGetDiagRecW 的字符中的

更新日期:2024年09月11日

BufferLength
SQLGetDiagRecW API 在输出缓冲区中返回诊断信息,在此,BufferLength 参数是分配
的缓冲区的长度。
BufferLength 的缺省值是分配的字节数。将
SQL_INFX_ATTR_LENGTHINCHARFORDIAGRECW 属性设置为 TRUE 之后,处理
BufferLength 为特定的字符数。
作为 Widechar API,
一个字符 = sizeof(SQLWCHAR) 字
节。
以下列方式设置该属性:
 SQLSetEnvAttr (henv,
SQL_INFX_ATTR_LENGTHINCHARFORDIAGRECW,
(SQLPOINTER)SQL_TRUE, SQL_IS_UINTEGER);
 SQLSetConnectAttr (hdbc,
SQL_INFX_ATTR_LENGTHINCHARFORDIAGRECW,
(SQLPOINTER)SQL_TRUE, SQL_IS_UINTEGER);
 SQLSetStmtAttr (hstmt,
SQL_INFX_ATTR_LENGTHINCHARFORDIAGRECW,
(SQLPOINTER)SQL_TRUE, SQL_IS_UINTEGER);

在连接字符串中设置 LENGTHINCHARFORDIAGRECW=1。

在 UNIX™ 系统上,在 odbc.ini 中设置 LENGTHINCHARFORDIAGRECW=1
设置 SQL_INFX_ATTR_LENGTHINCHARFORDIAGRECW 的优先顺序为:

SQLSetEnvAttr 属性的设置反映 henv、hdbc 和 hstmt 句柄。

重置 hdbc 和 hstmt 句柄,通过
o
设置 SQLSetConnectAttr
o
在连接字符串中传递属性
o
在 DSN 中启用 Length in Chars for SQLGetDiagRecW 选项

如果以前面提及的方法设置或未设置 hstmt 句柄,则设置 SQLSetStmtAttr 会
重置它。


创建用于训练的数据表并插入训练数据。
DROP TABLE IF EXISTS km_sample;
CREATE TABLE km_sample
(
pid INT,
points BLOB COMMENT 'gbase_array_type double[]'
);
INSERT INTO km_sample (pid, points)
VALUES
(1, ARRAY DOUBLE [1100, 1100]),
(2, ARRAY DOUBLE [1220, 1110]),
(3, ARRAY DOUBLE [-1080, 1190]),
(4, ARRAY DOUBLE [1100, -1100]),
(5, ARRAY DOUBLE [1080, -1190]),
(6, ARRAY DOUBLE [1080, 1190]),
(7, ARRAY DOUBLE [1220, -1110]),
(8, ARRAY DOUBLE [-1100, -1100]),
(9, ARRAY DOUBLE [-1080, -1190]),
(10, ARRAY DOUBLE [-1220, -1110]),
(11, ARRAY DOUBLE [1300, 1400]),
(12, ARRAY DOUBLE [-1300, -1400]),

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1446
(13, ARRAY DOUBLE [-1100, 1100]),
(14, ARRAY DOUBLE [1301, -1400]),
(15, ARRAY DOUBLE [-1220, 1110]),
(16, ARRAY DOUBLE [-1300, 1400])
;

对输入进行聚类,以kmeanspp 为例:
SELECT Mllib.kmeanspp ('madtest.km_sample',
'points',
4,
'squared_dist_norm2',
20, 0.001, 1.0);

查看结果表。
gbase> select iteration, array_text(centroids), frac_reassigned from km_sample_result \G;
*************************** 1. row ***************************
iteration: 3
array_text(centroids): {{-1175,1200},{-1175,-1200},{1175.25,-1200},{1175,1200}}
frac_reassigned: 0
1 row in set (Elapsed: 00:00:00.00)

通过closest_column 函数显示具体分组:
gbase>SELECT
_src.pid AS pid,
array_text(_src.points) AS point,
closest_column
(
(
SELECT
rel_result.centroids
FROM
km_sample_result as rel_result
),
_src.points,
'squared_dist_norm2',

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
1447
'squared_dist_norm2'
)
AS cluster_id
FROM km_sample AS _src
ORDER BY cluster_id;
+------+---------------+------------+
| pid
| point
| cluster_id |
+------+---------------+------------+
|
3 | {-1080,1190}
|
0 |
|
13 | {-1100,1100}
|
0 |
|
15 | {-1220,1110}
|
0 |
|
16 | {-1300,1400}
|
0 |
|
8 | {-1100,-1100} |
1 |
|
9 | {-1080,-1190} |
1 |
|
10 | {-1220,-1110} |
1 |
|
12 | {-1300,-1400} |
1 |
|
4 | {1100,-1100}
|
2 |
|
5 | {1080,-1190}
|
2 |
|
7 | {1220,-1110}
|
2 |
|
14 | {1301,-1400}
|
2 |
|
1 | {1100,1100}
|
3 |
|
2 | {1220,1110}
|
3 |
|
6 | {1080,1190}
|
3 |
|
11 | {1300,1400}
|
3 |
+------+---------------+------------+

GLOBAL_STATIO_SYS_TABLES 视图显示各节点的命名空间中所有系统表的IO 状态
信息。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1047
名称
类型
描述
node_name
name
数据库进程名称。
relid
oid
表OID。
schemaname
name
该表模式名。
relname
name
表名。
heap_blks_read
bigint
从该表中读取的磁盘块数。
heap_blks_hit
bigint
此表缓存命中数。
idx_blks_read
bigint
从表中所有索引读取的磁盘块数。
idx_blks_hit
bigint
表中所有索引命中缓存数。
toast_blks_read
bigint
此表的TOAST 表读取的磁盘块数(如果存在)。
toast_blks_hit
bigint
此表的TOAST 表命中缓冲区数(如果存在)。
tidx_blks_read
bigint
此表的TOAST 表索引读取的磁盘块数(如果存在)。
tidx_blks_hit
bigint
此表的TOAST 表索引命中缓冲区数(如果存在)。