华为云用户手册

  • ecpg预处理以及编译执行 准备嵌入式SQL-C源程序,以.pgc为后缀名,ecpg负责将其转换成可被编译器编译的C语言程序。 生成的C语言程序被gcc编译器编译为可执行文件,运行该可执行文件实现客户端程序访问数据库。示例请参见常用示例章节。 ecpg预处理以及编译处理过程 预处理:ecpg -I $GAUSSHOME/include -o test.c test.pgc ecpg预处理的参数选项如下: ecpg [OPTION]... 其中OPTION参数选项如下: -o OUTFILE:预处理嵌入式SQL-C程序将结果写入OUTFILE,OUTFILE为C语言文件。 -I DIRECTORY:头文件的搜索路径。 -c:预处理嵌入式SQL-C程序自动生成C语言文件。 --version:查看ecpg当前版本。 编译:gcc -I $GAUSSHOME/include/ecpg -I $GAUSSHOME/include -I $GAUSSHOME/include/gaussdb/server/ -L $GAUSSHOME/lib -lecpg -lrt -lpq -lpgtypes -lpthread test_ecpg.c -o test_ecpg 执行:./test ecpg作为编译预处理工具,若在预处理或编译过程中出现找不到头文件或者函数实现的报错信息,可以根据需要指定头文件,或者链接动态库。 ecpg需要gcc、ld等编译预处理工具,建议gcc使用7.3.0版本。 使用ecpg开发应用程序所依赖的其他动态库和头文件,常见的位于$GAUSSHOME/include/libpq, $GAUSSHOME/include。 编译过程中常见的动态库依赖:-lpq、-lpq_ce、-lpthread。若开发过程中需要使用libpq通信库,则需要连接-lpq和-lpq_ce。若开发过程中需要使用多线程连接,则需要连接-lpthread。 父主题: 基于ecpg开发
  • GS_STAT_ALL_PARTITIONS GS_STAT_ALL_PARTITIONS视图包含当前数据库中所有分区表中每个分区的信息,每个分区各占一行,显示该分区访问情况的统计信息。此视图信息由gs_stat_get_all_partitions_stats()函数查询得到。 表1 GS_STAT_ALL_PARTITIONS字段 名称 类型 描述 partition_oid oid 分区的OID。 schemaname name 该分区所在表的模式名。 relname name 该分区所在表的表名。 partition_name name 该分区所在一级分区名。 sub_partition_name name 该分区所在二级分区名。分布式不支持二级分区,值为null。 seq_scan bigint 该分区发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 该分区发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint 热更新行数(比如没有更新所需的单独索引)。 n_live_tup bigint 估计活跃行数。 n_dead_tup bigint 估计非活跃行数。 last_vacuum timestamp with time zone 该分区最后一次被清理的时间。 last_autovacuum timestamp with time zone 该分区最后一次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 该分区最后一次被分析的时间。 last_autoanalyze timestamp with time zone 该分区最后一次被autovacuum守护线程分析的时间。 vacuum_count bigint 该分区被清理的次数。 autovacuum_count bigint 该分区被autovacuum守护线程清理的次数。 analyze_count bigint 该分区被分析的次数。 autoanalyze_count bigint 该分区被autovacuum守护线程分析的次数。 父主题: 分区表
  • GS_DB_PRIVILEGES GS_DB_PRIVILEGES系统视图记录ANY权限的授予情况,每条记录对应一条授权信息。 表1 GS_DB_PRIVILEGES字段 名称 类型 描述 rolename name 用户名。 privilege_type text 用户拥有的ANY权限,取值请参见表1。 admin_option text 是否具有privilege_type列记录的ANY权限的再授权权限。 yes:具有。 no:不具有。 父主题: 用户和权限管理
  • local_preload_libraries 参数说明:指定一个或多个共享库,它们在开始连接前预先加载。多个加载库之间用逗号分隔,除了双引号,所有的库名都转换为小写。 并非只有系统管理员才能更改此选项,因此只能加载安装的标准库目录下plugins子目录中的库文件,数据库管理员有责任确保该目录中的库都是安全的。local_preload_libraries中指定的项可以明确含有该目录,例如$libdir/plugins/mylib;也可以仅指定库的名称,例如mylib(等价于$libdir/plugins/mylib)。 与shared_preload_libraries不同,在会话开始之前加载模块与在会话中使用到该模块的时候临时加载相比并不具有性能优势。相反,这个特性的目的是为了调试或者测量在特定会话中不明确使用LOAD加载的库。例如针对某个用户将该参数设为ALTER USER SET来进行调试。 当指定的库未找到时,连接会失败。若误设置出错(包括长度超过限制、非法目录等),会影响进程正常拉起。 每一个支持GaussDB的库都有一个“magic block”用于确保兼容性,因此不支持GaussDB的库不能通过这个方法加载。 该参数属于BACKEND类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串 默认值:空
  • dynamic_library_path 参数说明:设置数据查找动态加载的共享库文件的路径。当需要打开一个可以动态装载的模块并且在CREATE FUNCTION或LOAD命令里面声明的名称没有目录部分时,系统将搜索这个目录以查找声明的文件,仅sysadmin用户可以访问。 用于dynamic_library_path的数值必须是一个冒号分隔(Windows下是分号分隔)的绝对路径列表。当一个路径名称以特殊变量$libdir为开头时,会替换为GaussDB发布提供的模块安装路径。例如: 1 dynamic_library_path = '/usr/local/lib/gaussdb:/opt/testgs/lib:$libdir' 该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串 设置为空字符串,表示关闭自动路径搜索。由于参数local_preload_libraries和shared_preload_libraries配置的动态库的搜索路径也依赖此参数配置,如果设置此参数为空或其他非法路径会导致动态库加载失败,从而导致数据库服务异常。 默认值:$libdir
  • GLOBAL_SESSION_MEMORY 统计各节点的Session级别的内存使用情况,包含执行作业在数据节点上GaussDB线程和Stream线程分配的所有内存,单位为MB,如表1所示。 表1 GLOBAL_SESSION_MEMORY字段 名称 类型 描述 node_name name 节点名称。 sessid text 线程启动时间+线程标识。 init_mem integer 当前正在执行作业进入执行器前已分配的内存。 used_mem integer 当前正在执行作业已分配的内存。 peak_mem integer 当前正在执行作业已分配的内存峰值。 父主题: Session/Thread
  • 功能描述 DECLARE命令既可以定义一个游标,用于在一个大的查询里面检索少数几行数据,也可以作为一个匿名块的开始。 本节主要描述定义为游标的用法,定义为匿名块的用法见BEGIN。 为了处理SQL语句,存储过程线程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用FETCH语句,游标可以返回文本或二进制格式。
  • 参数说明 cursor_name 将要创建的游标名。 取值范围:遵循数据库对象命名规范。 BINARY 指明游标以二进制而不是文本格式返回数据。 NO SCROLL 声明游标检索数据行的方式。 NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 WITH HOLD WITHOUT HOLD 声明当创建游标的事务结束后,游标是否能继续使用。 WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 如果不指定WITH HOLD或WITHOUT HOLD,默认行为是WITHOUT HOLD。 声明为WITH HOLD的游标,在事务结束时,会缓存游标所有数据,若游标数据量较大,此过程耗时可能较长。 query 使用SELECT或VALUES子句指定游标返回的行。 取值范围:SELECT或VALUES子句。 declare_statements 声明变量,包括变量名和变量类型,如“sales_cnt int”。 execution_statements 匿名块中要执行的语句。 取值范围:已存在的函数名称。
  • PG_STAT_REPLICATION PG_STAT_REPLICATION视图显示日志同步线程的信息,如发起端发送日志位置,接收端接收日志位置等。具体字段信息如表1所示。 表1 PG_STAT_REPLICATION字段 名称 类型 描述 pid bigint 线程的PID。 usesysid oid 用户系统id。 usename name 用户名。 application_name text 程序名称。 client_addr inet 客户端地址。 client_hostname text 客户端名。 client_port integer 客户端端口。 backend_start timestamp with time zone 程序启动时间。 state text 日志同步线程的状态。 startup:线程正在启动。 catchup:线程正在建立备用服务器和主服务器的连接。 streaming:线程已建立备用服务器和主服务器的连接,正在进行数据的流复制。 backup:线程正在发送备份。 stopping:线程正在停止。 sender_sent_location text 发送端发送日志位置。 receiver_write_location text 接收端write日志位置。 receiver_flush_location text 接收端flush日志位置。 receiver_replay_location text 接收端replay日志位置。 sync_priority integer 同步复制的优先级(0表示异步)。 sync_state text 同步状态: async:异步复制。 sync:同步复制。 potential:该备用服务器现在是异步的,但假如一个当前的同步服务器发生故障,该服务器会变成同步的。 qurom:在同步与异步之间切换,保证备机中有大于一定数量的同步备机,同步备机数量一般为(n+1)/2-1,n为总副本个数。是否为同步备机取决于是否先接到了日志。详情可参考synchronous_standby_names参数描述。 父主题: 其他系统视图
  • 功能描述 SET CONSTRAINTS设置当前事务检查行为的约束条件。 IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事务提交时才检查。每个约束都有自己的模式。 从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED、DEFERRABLE INITIALLY IMMEDIATE和NOT DEFERRABLE三个特性之一。第三种总是IMMEDIATE,并且不会受SET CONSTRAINTS影响。前两种以指定的方式启动每个事务,但是其行为可以在事务里用SET CONSTRAINTS改变。 带着一个约束名列表的SET CONSTRAINTS改变这些约束的模式(都必须是可推迟的)。如果有多个约束匹配某个名称,则所有都会被影响。SET CONSTRAINTS ALL改变所有可推迟约束的模式。 当SET CONSTRAINTS把一个约束从DEFERRED改成IMMEDIATE的时候,任何将在事务结束准备进行的数据修改都将在SET CONSTRAINTS的时候执行检查。如果违反了任何约束,SET CONSTRAINTS都会失败(并且不会修改约束模式)。因此,SET CONSTRAINTS可以用于强制在事务中某一点进行约束检查。检查和唯一约束总是不可推迟的。
  • 触发器函数 pg_get_triggerdef(oid) 描述:获取触发器的定义信息。 参数:待查触发器的OID。 返回值类型:text 示例: -- 创建表tri_insert。 gaussdb=# CREATE TABLE tri_insert (a int, b int) distribute by hash(a); CREATE TABLE -- 创建函数trigger_func。 gaussdb=# CREATE FUNCTION trigger_func() RETURNS trigger LANGUAGE plpgsql AS ' BEGIN RAISE NOTICE ''trigger_func(%) called: action = %, when = %, level = %'', TG_ARGV[0], TG_OP, TG_WHEN, TG_LEVEL; RETURN NULL; END;'; CREATE FUNCTION -- 创建触发器before_ins_stmt_trig。 gaussdb=# CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt'); CREATE TRIGGER -- 创建触发器after_ins_when_trig。 gaussdb=# CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN (new.a IS NOT NULL) EXECUTE PROCEDURE trigger_func('after_ins_when'); CREATE TRIGGER -- 查看表tri_insert的触发器定义信息。 gaussdb=# SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef -------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN ((new.a IS NOT NULL)) EXECUTE PROCEDURE trigger_func('after_ins_when') CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') (2 rows) pg_get_triggerdef(oid, boolean) 描述:获取触发器的定义信息。 参数:待查触发器的OID及是否以pretty方式展示。 仅在创建trigger时指定WHEN条件的情况下,布尔类型参数才生效。 返回值类型:text 示例: -- 查看表tri_insert的触发器定义信息,以非pretty形式。 gaussdb=# SELECT pg_get_triggerdef(oid, false) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef -------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN ((new.a IS NOT NULL)) EXECUTE PROCEDURE trigger_func('after_ins_when') CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') (2 rows) -- 查看表tri_insert的触发器定义信息,以pretty形式。 gaussdb=# SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef ------------------------------------------------------------------------------------------------------------------------------------------------------ CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN (new.a IS NOT NULL) EXECUTE PROCEDURE trigger_func('after_ins_when') CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') (2 rows) -- 清理表tri_insert。 gaussdb=# DROP TABLE tri_insert CASCADE; DROP TABLE -- 清理函数trigger_func。 gaussdb=# DROP FUNCTION trigger_func; DROP FUNCTION 父主题: 函数和操作符
  • DB_PART_KEY_COLUMNS DB_PART_KEY_COLUMNS视图显示了当前用户可访问的分区表或分区索引的分区键列的相关信息。该视图所有用户可访问,显示当前用户可访问的所有信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_PART_KEY_COLUMNS字段 名称 类型 描述 owner character varying(128) 分区表或索引的拥有者。 name character varying(128) 分区表名或索引名。 object_type character(5) 对象类型。 若分区为分区表,此列为table。 若分区为分区索引,此列为index。 column_name character varying(4000) 分区表或索引的键列名。 column_position numeric 列在分区中的位置。 collated_column_id numeric 暂不支持,值为NULL。 父主题: 分区表
  • WLM_CGROUP_CONFIG WLM_CGROUP_CONFIG视图显示当前执行作业的控制组的信息,如表1所示。 表1 WLM_CGROUP_CONFIG字段 名称 类型 描述 cgoup_name text 控制组的名称。 priority integer 作业的优先级。 usage_pecent integer 控制组占用的百分比。 shares bigint 控制组分配的CPU资源配额。 cpuacct bigint CPU配额分配。 cpuset text CPU限额分配。 relpath text 控制组的相对路径。 valid text 该控制组是否有效。 父主题: Workload Manager
  • 注意事项 不能回滚到一个未定义的保存点,语法上会报错。 在保存点方面,游标有一些非事务性的行为。任何在保存点里打开的游标都会在回滚掉这个保存点之后关闭。如果一个前面打开了的游标在保存点里面,并且游标被一个FETCH命令影响,而这个保存点稍后回滚了,那么这个游标的位置仍然在FETCH让它指向的位置(也就是FETCH不会被回滚)。关闭一个游标的行为也不会被回滚给撤消掉。如果一个游标的操作导致事务回滚,那么这个游标就会置于不可执行状态,所以,尽管一个事务可以用ROLLBACK TO SAVEPOINT重新恢复,但是游标不能再使用了。 使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 --开启事务。 gaussdb=# START TRANSACTION; --设置保存点my_savepoint。 gaussdb=# SAVEPOINT my_savepoint; --回滚至保存点my_savepoint。 gaussdb=# ROLLBACK TO SAVEPOINT my_savepoint; --游标位置不受保存点回滚的影响。 gaussdb=# DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2; --设置保存点foo。 gaussdb=# SAVEPOINT foo; --读取一条数据,为第一条数据。 gaussdb=# FETCH 1 FROM foo; ?column? ---------- 1 --回滚至保存点foo。 gaussdb=# ROLLBACK TO SAVEPOINT foo; --读取一条数据,为第二条数据。 gaussdb=# FETCH 1 FROM foo; ?column? ---------- 2 --释放保存点。 gaussdb=# RELEASE SAVEPOINT my_savepoint; --结束事务。 gaussdb=# COMMIT;
  • GS_MODEL_WAREHOUSE GS_MODEL_WAREHOUSE系统表用于存储AI引擎训练模型,其中包含模型,训练过程的详细描述。 表1 GS_MODEL_WAREHOUSE字段 名称 数据类型 描述 oid oid 隐含列。 modelname name 唯一约束。 modelowner oid 模型拥有者的OID。 createtime timestamp without time zone 模型创建的时间。 processedtuples integer 训练涉及的元组数。 discardedtuples integer 未参加训练的不合格元组数。 preprocesstime real 数据预处理时长。 exectime real 训练时长。 iterations integer 迭代轮次。 outputtype oid 模型输出的数据类型OID。 modeltype text AI算子的类型名称。 query text 创建模型所执行的query语句。 modeldata bytea 保存的二进制模型信息。 weight real[] 目前只适用于GD算子模型。 hyperparametersnames text[] 涉及的超参名称。 hyperparametersvalues text[] 超参所对应的取值。 hyperparametersoids oid[] 超参对应的数据类型OID。 coefnames text[] 模型参数名称。 coefvalues text[] 模型参数对应的取值。 coefoids oid[] 模型参数对应的数据类型OID。 trainingscoresname text[] 度量模型性能方法的名称。 trainingscoresvalue real[] 度量模型性能方法的数值。 modeldescribe text[] 模型的描述信息。 父主题: AI
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 --创建目录。 gaussdb=# CREATE OR REPLACE DIRECTORY dir as '/tmp/'; --创建用户。 gaussdb=# CREATE USER jim PASSWORD '********'; --修改目录的所有者。 gaussdb=# ALTER DIRECTORY dir OWNER TO jim; --删除目录对象。 gaussdb=# DROP DIRECTORY dir; --删除用户。 gaussdb=# DROP USER jim;
  • 执行没有结果集的语句 执行EXECUTE IMMEDIATE命令示例如下: EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "CREATE TABLE test1 (...);"; EXEC SQL END DECLARE SECTION; EXEC SQL EXECUTE IMMEDIATE :stmt; EXECUTE IMMEDIATE可以用于不返回结果集的SQL语句,比如:DDL、INSERT、UPDATE和DELETE语句。但不能用这种方式执行检索数据的语句,比如:SELECT语句。 父主题: 执行动态SQL语句
  • 语法格式 修改用户的权限等信息。 1 2 3 4 5 6 7 ALTER USER user_name [ [ WITH ] option [ ... ] ]; ALTER USER user_name RENAME TO new_name; ALTER USER user_name [ IN DATABASE database_name ] SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT}; ALTER USER user_name [ IN DATABASE database_name ] RESET {configuration_parameter|ALL}; 其中option子句为。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 { CREATEDB | NOCREATEDB } | { CREATEROLE | NOCREATEROLE } | { INHERIT | NOINHERIT } | { AUDITADMIN | NOAUDITADMIN } | { SYSADMIN | NOSYSADMIN } | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | { USEFT | NOUSEFT } | { LOGIN | NOLOGIN } | { REPLICATION | NOREPLICATION } | {PERSISTENCE | NOPERSISTENCE} | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' [EXPIRED] | DISABLE | EXPIRED } | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' | EXPIRED ] | DISABLE } | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | ACCOUNT { LOCK | UNLOCK } | PGUSER 修改用户名。 1 2 ALTER USER user_name RENAME TO new_name;
  • 示例 --创建用户jim,登录密码为********。 gaussdb=# CREATE USER jim PASSWORD '********'; --修改用户jim的登录密码。 gaussdb=# ALTER USER jim IDENTIFIED BY '**********' REPLACE '********'; --锁定jim账户。 gaussdb=# ALTER USER jim ACCOUNT LOCK; --解锁jim账户。 gaussdb=# ALTER USER jim ACCOUNT UNLOCK; --修改用户名。 gaussdb=# ALTER USER jim RENAME TO lisa; --删除用户。 gaussdb=# DROP USER lisa CASCADE;
  • 语法 RAISE有以下五种语法格式: 图1 raise_format::= 图2 raise_condition::= 图3 raise_sqlstate::= 图4 raise_option::= 图5 raise::= 参数说明: level选项用于指定错误级别,有DEBUG、LOG、INFO、NOTICE、WARNING以及EXCEPTION(默认值)。EXCEPTION抛出一个正常终止当前事务的异常,其他的仅产生不同异常级别的信息。特殊级别的错误信息是否报告到客户端、写到服务器日志由log_min_messages和client_min_messages这两个GUC参数控制。 format:格式字符串,指定要报告的错误消息文本。格式字符串后可跟表达式,用于向消息文本中插入。在格式字符串中,%由format后面跟着的参数的值替换,%%用于打印出%。例如: --v_job_id 将替换字符串中的 %: RAISE NOTICE 'Calling cs_create_job(%)',v_job_id; option = expression:向错误报告中添加另外的信息。关键字option可以是MESSAGE、DETAIL、HINT以及ERRCODE,并且每一个expression可以是任意的字符串。 MESSAGE,指定错误消息文本,这个选项不能用于在USING前包含一个格式字符串的RAISE语句中。 DETAIL,说明错误的详细信息。 HINT,用于打印出提示信息。 ERRCODE,向报告中指定错误码(SQLSTATE)。可以使用条件名称或者直接用五位字符的SQLSTATE错误码。 condition_name:错误码对应的条件名。 sqlstate:错误码。 如果在RAISE EXCEPTION命令中既没有指定条件名也没有指定SQLSTATE,默认用RAISE EXCEPTION (P0001)。如果没有指定消息文本,默认用条件名或者SQLSTATE作为消息文本。 当由SQLSTATE指定了错误码,则不局限于已定义的错误码,可以选择任意包含五个数字或者大写的ASCII字母的错误码,而不是00000。建议避免使用以三个0结尾的错误码,因为这种错误码是类别码,会被整个种类捕获。 兼容ORA模式下,SQLCODE等于SQLSTATE。 图5所示的语法不接受任何参数。这种形式仅用于一个BEGIN块中的EXCEPTION语句,它使得错误重新被处理。
  • SUMMARY_TRANSACTIONS_RUNNING_XACTS 显示集群中各个CN节点运行事务的信息汇总,如表1所示。 表1 SUMMARY_TRANSACTIONS_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务在GTM对应的句柄。 gxid xid 事务id号。 state tinyint 事务状态(3:prepared或者0:starting)。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号xmin。 vacuum boolean 标志当前事务是否是lazy vacuum事务(lazy vacuum是一种vacuum机制,在需要时进行vacuum)。 true:表示是。 false:表示否。 timeline bigint 标志数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id号,若不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid CN传给DN的事务id号。 父主题: Transaction
  • 数据库级字符集和字符序 创建一个新的数据库时,可以指定数据库的字符集字符序。 CREATE DATABASE [IF NOT EXISTS] database_name [ ENCODING [=] encoding ] | [ LC_COLLATE [=] lc_collate ] | [ LC_CTYPE [=] lc_ctype ] |; 参数说明: database_name 数据库名称。 取值范围:字符串,要符合标识符的命名规范。 ENCODING [ = ] encoding 指定数据库使用的字符编码,可以是字符串(如'SQL_ASCII')、整数编号。 LC_COLLATE [ = ] lc_collate 指定新数据库使用的字符集。例如,通过lc_collate = 'zh_CN.gbk'设定该参数。 该参数的使用会影响到对字符串的排序(如使用ORDER BY执行,以及在文本列上使用索引的顺序)。默认是使用模板数据库的排序。 取值范围:操作系统支持的字符集。 LC_CTYPE [ = ] lc_ctype 指定新数据库使用的字符分类。例如,通过lc_ctype = 'zh_CN.gbk'设定该参数。该参数的使用会影响到字符的分类,如大写、小写和数字。默认是使用模板数据库的字符分类。 取值范围:操作系统支持的字符分类。 数据库级字符集、字符序语法所有模式均可使用,详细语法参考CREATE DATABASE 。 LC_COLLATE/LC_CTYPE语法不支持指定MYSQL模式特有的字符序,参数的取值范围取决于本地环境支持的字符集,可通过locale -a查看。 父主题: 字符集与字符序
  • DBE_PLDEBUGGER.info_breakpoints debug端调试过程中,调用info_breakpoints,查看当前的函数断点,如表1所示。 表1 info_breakpoints返回值列表 名称 类型 描述 breakpointno OUT integer 断点编号。 funcoid OUT oid 函数id。 lineno OUT integer 行号。 query OUT text 断点内容。 enable OUT boolean 是否有效。 父主题: DBE_PLDEBUGGER Schema
  • 配置设置函数 配置设置函数是可以用于查询以及修改运行时配置参数的函数。 current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 1 2 3 4 5 6 gaussdb=# SELECT current_setting('datestyle'); current_setting ----------------- ISO, MDY (1 row) set_working_grand_version_num_manually(tmp_version) 描述:通过切换授权版本号来更新和升级高斯数据库的新特性。 返回值类型:void shell_in(type) 描述:为shell类型输入路由(那些尚未填充的类型)。 返回值类型:void shell_out(type) 描述:为shell类型输出路由(那些尚未填充的类型)。 返回值类型:void set_config(setting_name, new_value, is_local) 描述:设置参数并返回新值。 返回值类型:text 备注:set_config将参数setting_name设置为new_value,如果is_local为true,则new_value将只应用于当前事务。如果希望new_value应用于当前会话,可以使用false,和SQL语句SET是等效的。 示例: 1 2 3 4 5 6 gaussdb=# SELECT set_config('log_statement_stats', 'off', false); set_config ------------ off (1 row) 父主题: 系统管理函数
  • SUMMARY_FILE_IOSTAT 通过集群内各节点数据文件I/O统计的汇总结果,反映数据的I/O性能,用以发现I/O操作异常等性能问题,如表1所示。 其中phyrds、phywrts、phyblkrd、phyblkwrt、readtim、writetim字段按照各节点的数据累加求和,avgiotim为各节点的平均值(总时长/总次数),lstiotim、maxiowtm取各节点的最大值,miniotim取各节点的最小值。 表1 SUMMARY_FILE_IOSTAT字段 名称 类型 描述 filenum oid 文件标识。 dbid oid 数据库标识。 spcid oid 表空间标识。 phyrds numeric 读物理文件的数目。 phywrts numeric 写物理文件的数目。 phyblkrd numeric 读物理文件块的数目。 phyblkwrt numeric 写物理文件块的数目。 readtim numeric 读文件的总时长(单位:微秒)。 writetim numeric 写文件的总时长(单位:微秒)。 avgiotim bigint 读写文件的平均时长(单位:微秒)。 lstiotim bigint 最后一次读文件时长(单位:微秒)。 miniotim bigint 读写文件的最小时长(单位:微秒)。 maxiowtm bigint 读写文件的最大时长(单位:微秒)。 父主题: File
  • MY_SCHEDULER_JOB_ARGS MY_SCHEDULER_JOB_ARG视图显示当前用户拥有的任务的有关参数信息。该视图所有用户可访问,仅可查看当前用户所属信息。该视图同时存在于PG_CATALOG和SYS Schema下。具体字段信息如表1所示。 表1 MY_SCHEDULER_JOB_ARGS字段 名称 类型 描述 job_name character varying(128) 参数所属作业名。 argument_name character varying(128) 参数名称。 argument_position numeric 参数在参数列表中的位置。 argument_type character varying(257) 参数的数据类型,可以是用户的自定义数据类型。 value character varying(4000) 参数值。 anydata_value character varying(4000) 暂不支持,值为NULL。 out_argument character varying(5) 保留字段,值为NULL。 父主题: 其他系统视图
  • COMM_SEND_STREAM COMM_SEND_STREAM展示单个DN上所有的TCP代理通信库发送流状态,如表1所示。 表1 COMM_SEND_STREAM字段 名称 类型 描述 node_name text 节点名称。 local_tid bigint 使用此通信流的线程ID。 remote_name text 连接对端节点名称。 remote_tid bigint 连接对端线程ID。 idx integer 通信对端DN在本DN内的标识编号。 sid integer 通信流在物理连接中的标识编号。 tcp_sock integer 通信流所使用的TCP通信socket。 state text 通信流当前的状态。 query_id bigint 通信流对应的debug_query_id编号。 pn_id integer 通信流所执行查询的plan_node_id编号。 send_smp integer 通信流所执行查询send端的smpid编号。 recv_smp integer 通信流所执行查询recv端的smpid编号。 send_bytes bigint 通信流发送的数据总量(单位:Byte)。 time bigint 通信流当前生命周期使用时长(单位:ms)。 speed bigint 通信流的平均发送速率(单位:Byte/s)。 quota bigint 通信流当前的通信配额值(单位:Byte)。 wait_quota bigint 通信流等待quota值产生的额外时间开销(单位:毫秒)。 父主题: Comm
  • GS_CLIENT_GLOBAL_KEYS GS_CLIENT_GLOBAL_KEYS系统表记录密态等值特性中客户端加密主密钥相关信息,每条记录对应一个客户端加密主密钥。 表1 GS_CLIENT_GLOBAL_KEYS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 global_key_name name 客户端加密主密钥(cmk)名称。 key_namespace oid 包含此客户端加密主密钥(cmk)的命名空间OID。 key_owner oid 客户端加密主密钥(cmk)的所有者。 key_acl aclitem[] 创建该密钥时所拥有的访问权限。 create_date timestamp without time zone 创建密钥的时间。 父主题: 密态等值查询
  • GLOBAL_STAT_SYS_TABLES 显示集群各个节点pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息(包含CN与DN节点的状态信息,在CN节点使用,不汇总),如表1所示。 表1 GLOBAL_STAT_SYS_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 该表所在的Schema名。 relname name 表名。 seq_scan bigint 该表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 该表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(即没有更新索引列的行数)。 n_live_tup bigint 估计活跃行数。 n_dead_tup bigint 估计不活跃行数。 last_vacuum timestamp with time zone 最后一次该表是手动清理的(不计算VACUUM FULL)时间。 last_autovacuum timestamp with time zone 上次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 上次手动分析该表的时间。 last_autoanalyze timestamp with time zone 上次被autovacuum守护线程分析的时间。 vacuum_count bigint 该表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count bigint 该表被autovacuum清理的次数。 analyze_count bigint 该表被手动分析的次数。 autoanalyze_count bigint 该表被autovacuum守护线程分析的次数。 父主题: Object
共100000条