GBase中NULL值是当什么值处理?

NULL值是空值,只可以通过is null或is not null进行检索,不能使用等值运算:比如a=null或a!=null。
而且两个NULL值是无法比较的,比如两个表做join,join条件是t1.a=t2.a,假如两列都有NULL值,则不会匹配上。

如何在系统表中查询表的hash分布列?

可以通过查询系统表gbase.table_distribution查询hash分布列。

gbase> create table t1(c1 int,c2 varchar(10)) distributed by ('c1');
Query OK, 0 rows affected (Elapsed: 00:00:00.22)

gbase> desc gbase.table_distribution;
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| index_name         | varchar(128) | NO   | PRI |         |       |
| dbName             | varchar(64)  | NO   |     | NULL    |       |
| tbName             | varchar(64)  | NO   |     | NULL    |       |
| isReplicate        | varchar(3)   | NO   |     | YES     |       |
| hash_column        | varchar(64)  | YES  |     | NULL    |       |
| lmt_storage_size   | bigint(20)   | YES  |     | NULL    |       |
| table_storage_size | bigint(20)   | YES  |     | NULL    |       |
| is_nocopies        | varchar(3)   | NO   |     | YES     |       |
+--------------------+--------------+------+-----+---------+-------+
8 rows in set (Elapsed: 00:00:00.00)

gbase> select * from gbase.table_distribution where dbname='guo' and tbname='t1'\G
*************************** 1. row ***************************
        index_name: guo.t1
            dbName: guo
            tbName: t1
       isReplicate: NO
       hash_column: c1
  lmt_storage_size: NULL
table_storage_size: NULL
       is_nocopies: NO
1 row in set (Elapsed: 00:00:00.00)

表中的hash_column字段即为hash分布列。

审计日志记录的内容介绍

审计日志记录的主要内容如下:
thread_id: 线程号,同processlist中的ID;
taskid:每个sql任务编号;
start_time:开始执行时间;
end_time:结束执行时间;
user_host:登录的用户和IP,显示格式为:priv_user[user]@hostname[ip]
user:用户名;
host_ip: 用户登录端IP地址;
query_time:执行语句所用时间;
rows:行数;
db:执行语句所针对的数据库;
table_list: 涉及表,格式:<db>.<tb>[,...];
sql_text:记录执行用时大于long_query_time设定值的SQL语句;
sql_type:sql类型,如DDL、DML、DQL、OTHERS;
sql_command: sql命令类型,如SELECT、UPDATE,INSERT,LOAD等;
algorithms: 涉及的算子,比如JOIN、WHERE、GROUP、HAVING等;
status:sql执行状态,如SUCCESS、FAILED、KILLED等;
conn_type:用户登录方式(CAPI、ODBC、JDBC、ADO.NET、STUDIO);

info:注意:

sql_command的取值范围为:INSERT、DELETE、UPDATE、LOAD、CREATE USER、CREATE DB、CREATE TABLE、CREATE VIEW、CREATE INDEX、CREATE PROCEDURE、CREATE FUNCTION、RENAME USER、ALTER DB、ALTER TABLE、ALTER PROCEDURE、ALTER FUNCTION、ALTER EVENT、DROP USER、DROP DB、DROP TABLE、DROP VIEW、DROP INDEX、DROP PROCEDURE、DROP FUNCTION、DROP EVENT、TRUNCATE、GRANT、REVOKE、SELECT和OTHERS。
algorithms的取值范围为:START_WITH、CONNECT_BY、JOIN、WHERE、GROUP、OLAP_GROUP、HAVING、OLAP_FUNC、DISTINCT、ORDER和LIMIT。若一个SQL涉及多个算子,各算子之间用逗号分割。