返回首页

gbase数据、南大通用产品文档:GBase8a

更新日期:2024年09月11日

SYSTEM_USER()
函数说明
SYSTEM_USER()等价于USER()。
示例
返回当前的GBase 8a MPP Cluster 用户和主机名。
gbase> SELECT SYSTEM_USER() FROM dual;
+---------------------+
| SYSTEM_USER()
|
+---------------------+
| root@172.168.83.11
|
+---------------------+
1 row in set

使用 CREATE DISTINCT TYPE 语句创建新的 distinct 数据类型。
该语句是 SQL ANSI/ISO 标准的扩展。
语法

元素
描述
限制
语法
distinct_type 在这里为新的
distinct 数据类
型声明的名称
在兼容 ANSI 的数据库中,所有
者和数据类型的组合在数据库中
必须是唯一的。在不兼容 ANSI
数据
类型

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 222
元素
描述
限制
语法
的数据库中,名称在数据库中的
数据类型名称中必须是唯一的
source_type
新类型所基于的
现有类型名称
必须为内置数据类型或用
CREATE DISTINCT TYPE 、
CREATE OPAQUE TYPE 或 CREATE
ROW TYPE 语句创建的类型
数据
类型
用法
Distinct 类型是基于内置数据类型或现有不透明数据类型,指定的 ROW 数据类
型或者其它 Distinct 数据类型的数据类型。Distinct 数据类型是强归类的。虽然
Distinct 类型与其源类型对数据有相同的物理表示法,但两种类型的值在没有从一
种类型到另一种类型的显式强制转型的情况下无法进行比较。
要创建 Distinct 数据类型,您必须拥有数据库上的 Resource 权限。任何拥有
Resource 权限的用户均可从内置数据类型之一创建 Distinct 类型,而该用户是
用户 gbasedbt 所拥有的。
重要: 不能在 SERIAL 、BIGSERIAL 或 SERIAL8 数据类型上创建 Distinct 类
型。
要从不透明类型、指定的 ROW 类型或另一 Distinct 类型创建 Distinct 类型,您
必须是该数据类型的所有者或在该数据类型上拥有 Usage 权限。
缺省情况下,一旦定义了 Distinct 类型,之一该 Distinct 类型的所有者和 DBA
可以使用它。然而,Distinct 类型的所有者可向其他用户授权对该 Distinct 类型
的 Usage 权限。
Distinct 类型与其源类型有相同的存储结构。以下语句创建了基于内置 DATE 数
据类型的 Distinct 类型 birthday:
CREATE DISTINCT TYPE birthday AS DATE;
虽然 GBase 8s 使用对 Distinct 类型以及它的源类型使用相同的存储格式,但
Distinct 类型与其源类型不能在一个操作中进行比较,除非一个类型显式强制转型
到另一个类型。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 223
如果您包含了 IF NOT EXISTS 关键字,当指定名称的 Distinct 数据类型已经在
当前数据库中注册过时,则数据库服务器不采取任何操作(而不是向应用程序发
送异常)。
对 Distinct 类型的权限
要创建 Distinct 类型,您必须拥有该数据库上的 Resource 权限。当创建 Distinct
类型时,只有您,即所有者对此类型拥有 Usage 权限。使用 GRANT 或
REVOKE 语句向其它数据库用户授权或调用 Usage 权限。
要找出特定类型上存在哪些特权,请在 sysxtdtypes 系统目录表中检查所有者名
称,并在 sysxtdtypeauth 系统目录表中检查可能已经授予的其它数据类型特权。
有关系统目录表的更多信息,请参阅 GBase 8s SQL 参考指南 。
DB-Access 实用程序也可显示对 Distinct 类型的特权。
支持函数和强制转型
当您创建 Distinct 类型时, GBase 8s 自动定义两种显式强制转型:

从 Distinct 类型到其源类型的强制转型

从源类型到 Distinct 类型的强制转型
因为这两个数据类型具有相同的表示法(相同的长度和对齐方式),所以实现这
些强制转型不需要支持函数。
您可在 Distinct 类型与其源类型之间创建隐式强制转型。要创建隐式强制转型,
请使用 Table Options 子句来指定外部数据的格式。然而,您必须首先删除
Distinct 类型与其源类型之间的缺省显式强制转型。
在源类型上定义的所有支持函数的强制转型可用于 Distinct 类型。然而,对
Distinct 类型定义的强制转型和支持函数对源类型不可用。请使用 Table Options
子句指定外部数据的格式。
操纵 Distinct 类型
当将 Distinct 类型与其源类型进行比较或操纵它们的数据时,在以下情况中您必
须显式地将一种类型强制转型为其它类型:

使用其它类型的值插入或更改一种类型的列

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 224

使用关系运算符来加、减、乘、除、比较或以其它方式操纵两个值,一个
源类型的值和一个 Distinct 类型的值
例如,假设您创建了 Distinct 类型 dist_type ,它基于 NUMERIC 数据类型。
然后您创建了带有两列的表,一个属于 dist_type 类型,一个属于 NUMERIC
类型。
CREATE DISTINCT TYPE dist_type AS NUMERIC;
CREATE TABLE t(col1 dist_type, col2 NUMERIC);
要直接将 Distinct 类型与其源类型进行比较或者将源类型的值分配到 Distinct 类
型的列上,您必须将一种类型强制转型到其它类型,如以下示例所示:
INSERT INTO tab (col1) VALUES (3.5::dist_type);

SELECT col1, col2
FROM t WHERE (col1::NUMERIC) > col2;

SELECT col1, col2, (col1 + col2::dist_type) sum_col
FROM tab;
有关在本地数据库外的表内存取 DISTINCT 数据类型的查询和其它分布 DML
操作的信息,请参阅 分布式操作中的 DISTINCT 类型 。

High-Performance Data Loading Capability
GBase 8a MPP Cluster's data loading function achieves high loading performance
through parallel processing of data by all data computing nodes and replica
forwarding technology:
1)In the case of a single data server, the loading of the cluster can reach the
performance limit of the hardware resources of the data server;
2)With the increase of the number of data servers and cluster nodes, the
loading performance of the cluster can continue to improve.

GBase 8a MPP Cluster Technical White Paper
- 18 -
General Data Technology Co., Ltd.
Figure 3-7. GBase8a MPP Cluster data loading diagram.