华为云用户手册

  • EXECUTE IMMEDIATE 语法图请参见图1。 图1 EXECUTE IMMEDIATE dynamic_select_clause::= using_clause子句的语法图参见图2。 图2 using_clause::= 对以上语法格式的解释如下: define_variable:用于指定存放查询结果的变量。 USING IN bind_argument:用于指定存放传递给动态SQL值的变量,即在dynamic_select_string中存在占位符时使用。 USING OUT bind_argument:用于指定存放动态SQL返回值的变量。 查询语句中,into和out不能同时存在; 占位符命名以“:”开始,后面可跟数字、字符或字符串,与USING子句的bind_argument一一对应; bind_argument只能是值、变量或表达式,不能是表名、列名和数据类型等数据库对象,即不支持使用bind_argument为动态SQL语句传递模式对象。如果存储过程需要通过声明参数传递数据库对象来构造动态SQL语句(常见于执行DDL语句时),建议采用连接运算符“||”拼接dynamic_select_clause; 动态PL/SQL块允许出现重复的占位符,即相同占位符只能与USING子句的一个bind_argument按位置对应。当设置guc参数behavior_compat_options值为dynamic_sql_compat时,会按照占位符的顺序依次匹配USING子句bind_argument,重复的占位符不会再识别为同一个占位符。 IMMEDIATE关键字仅用作语法兼容,无实际意义。 示例 gaussdb=# DROP SCHEMA IF EXISTS hr CASCADE; NOTICE: drop cascades to table staffs DROP SCHEMA gaussdb=# CREATE SCHEMA hr; CREATE SCHEMA gaussdb=# SET CURRENT_SCHEMA = hr; SET gaussdb=# CREATE TABLE staffs ( staff_id NUMBER, first_name VARCHAR2, salary NUMBER ); CREATE TABLE gaussdb=# INSERT INTO staffs VALUES (200, 'mike', 5800); INSERT 0 1 gaussdb=# INSERT INTO staffs VALUES (201, 'lily', 3000); INSERT 0 1 gaussdb=# INSERT INTO staffs VALUES (202, 'john', 4400); INSERT 0 1 --从动态语句检索值(INTO 子句): gaussdb=# DECLARE staff_count VARCHAR2(20); BEGIN EXECUTE IMMEDIATE 'select count(*) from hr.staffs' INTO staff_count; dbe_output.print_line(staff_count); END; / 3 ANONYMOUS BLOCK EXECUTE --传递并检索值(INTO子句用在USING子句前): gaussdb=# CREATE OR REPLACE PROCEDURE dynamic_proc AS staff_id NUMBER(6) := 200; first_name VARCHAR2(20); salary NUMBER(8,2); BEGIN EXECUTE IMMEDIATE 'select first_name, salary from hr.staffs where staff_id = :1' INTO first_name, salary USING IN staff_id; dbe_output.print_line(first_name || ' ' || salary); END; / CREATE PROCEDURE --调用存储过程 gaussdb=# CALL dynamic_proc(); mike 5800.00 dynamic_proc -------------- (1 row) --删除存储过程 gaussdb=# DROP PROCEDURE dynamic_proc; DROP PROCEDURE
  • OPEN FOR 动态查询语句还可以使用OPEN FOR打开动态游标来执行。 语法参见图3。 图3 open_for::= 参数说明: cursor_name:要打开的游标名。 dynamic_string:动态查询语句。 USING value:在dynamic_string中存在占位符时使用。 游标的使用请参考游标。 示例 gaussdb=# CREATE SCHEMA hr; CREATE SCHEMA gaussdb=# SET CURRENT_SCHEMA = hr; SET gaussdb=# CREATE TABLE staffs ( section_id NUMBER, first_name VARCHAR2, phone_number VARCHAR2, salary NUMBER ); CREATE TABLE gaussdb=# INSERT INTO staffs VALUES (30, 'mike', '13567829252', 5800); INSERT 0 1 gaussdb=# INSERT INTO staffs VALUES (40, 'john', '17896354637', 4000); INSERT 0 1 gaussdb=# DECLARE name VARCHAR2(20); phone_number VARCHAR2(20); salary NUMBER(8,2); sqlstr VARCHAR2(1024); TYPE app_ref_cur_type IS REF CURSOR; --定义游标类型 my_cur app_ref_cur_type; --定义游标变量 BEGIN sqlstr := 'select first_name,phone_number,salary from hr.staffs where section_id = :1'; OPEN my_cur FOR sqlstr USING '30'; --打开游标, using是可选的 FETCH my_cur INTO name, phone_number, salary; --获取数据 WHILE my_cur%FOUND LOOP dbe_output.print_line(name||'#'||phone_number||'#'||salary); FETCH my_cur INTO name, phone_number, salary; END LOOP; CLOSE my_cur; --关闭游标 END; / mike#13567829252#5800.00 ANONYMOUS BLOCK EXECUTE
  • 参数说明 statement 指定要分析的SQL语句。 ANALYZE boolean | ANALYSE boolean 显示实际运行时间和其他统计数据。当两个参数同时使用时,在option中排在后面的一个生效。 取值范围: TRUE(缺省值):显示实际运行时间和其他统计数据。 FALSE:不显示。 VERBOSE boolean 显示有关计划的额外信息。 取值范围: TRUE(缺省值):显示额外信息。 FALSE:不显示。 COSTS boolean 包括每个规划节点的估计总成本,以及估计的行数和每行的宽度。 取值范围: TRUE(缺省值):显示估计总成本和宽度。 FALSE:不显示。 CPU boolean 打印CPU的使用情况的信息。需要结合ANALYZE或ANALYSE选项一起使用。 取值范围: TRUE(缺省值):显示CPU的使用情况。 FALSE:不显示。 DETAIL boolean 打印DN上的信息。需要结合ANALYZE或ANALYSE选项一起使用。 取值范围: TRUE(缺省值):打印DN的信息。 FALSE:不打印。 NODES boolean 打印query执行的节点信息。 取值范围: TRUE(缺省值):打印执行的节点的信息。 FALSE:不打印。 NUM_NODES boolean 打印执行中的节点的个数信息。 取值范围: TRUE(缺省值):打印DN个数的信息。 FALSE:不打印。 BUFFERS boolean 包括缓冲区的使用情况的信息。需要结合ANALYZE或ANALYSE选项一起使用。 取值范围: TRUE:显示缓冲区的使用情况。 FALSE(缺省值):不显示。 TIMING boolean 包括实际的启动时间和花费在输出节点上的时间信息。需要结合ANALYZE或ANALYSE选项一起使用。 取值范围: TRUE(缺省值):显示启动时间和花费在输出节点上的时间信息。 FALSE:不显示。 PLAN boolean 是否将执行计划存储在plan_table中。当该选项开启时,会将执行计划存储在plan_table中,不打印到当前屏幕,因此该选项为on时,不能与其他选项同时使用。 取值范围: TRUE(缺省值):将执行计划存储在plan_table中,不打印到当前屏幕。执行成功返回EXPLAIN SUCCESS。 FALSE:不存储执行计划,将执行计划打印到当前屏幕。 BLOCKNAME boolean 是否显示计划的每个操作所处于的查询块。当该选项开启时,会将每个操作所处于的查询块的名字输出在Query Block列上,方便用户获取查询块名字,并使用Hint修改执行计划: TRUE(缺省值):显示计划时,将每个操作所处于的查询块的名字输出在新增列Query Block列上。该选项需要在pretty模式下使用。见指定Hint所处的查询块Queryblock章节。 FALSE:不对计划显示产生影响。 FORMAT 指定输出格式。 取值范围:TEXT,XML,JSON和YAML。 默认值:TEXT。 PERFORMANCE 使用此选项时,即打印执行中的所有相关信息。下述为部分信息描述: ex c/r:代表平均每行使用cpu周期数,等于(ex cyc)/(ex row)。 ex row:执行行数。 ex cyc:代表使用的cpu周期数。 inc cyc:代表包含子节点使用的总cpu周期数。 shared hit:代表算子的share buffer命中情况。 loops:算子循环执行次数。 total_calls:生成元素总数。 remote query poll time stream gather:算子用于侦听各DN数据到达CN的网络poll时间。 deserialize time:反序列化所需时间。 estimated time:估计时间。 Network Poll Time:分布式stream网络通信时,表示libcomm接收侧等待数据耗时。 Stream Send time:分布式stream网络通信时,表示libcomm或libpq发送数据耗时。 OS Kernel Send time:分布式stream网络通信时,表示操作系统层发送数据耗时,大于0才会显示。 Wait Quota time:分布式stream网络通信时,表示libcomm等待对端发送quota流控大小耗时,大于0才会显示。 Data Serialize time:分布式stream网络通信时,表示数据序列化时间 。 Data Copy time:分布式stream网络通信时,表示数据复制时间,大于0才会显示。
  • 语法格式 显示SQL语句的执行计划,支持多种选项,对选项顺序无要求。 1 EXPLAIN [ ( option [, ...] ) ] statement; 其中选项option子句的语法为。 1 2 3 4 5 6 7 8 9 10 11 12 13 ANALYZE [ boolean ] | ANALYSE [ boolean ] | VERBOSE [ boolean ] | COSTS [ boolean ] | CPU [ boolean ] | DETAIL [ boolean ] | NODES [ boolean ] | NUM_NODES [ boolean ] | BUFFERS [ boolean ] | TIMING [ boolean ] | PLAN [ boolean ] | BLOCKNAME [ boolean ] | FORMAT { TEXT | XML | JSON | YAML } 显示SQL语句的执行计划,且要按顺序给出选项。 1 EXPLAIN { [ ANALYZE | ANALYSE ] [ VERBOSE ] | PERFORMANCE } statement;
  • 功能描述 显示SQL语句的执行计划。 执行计划将显示SQL语句所引用的表会采用什么样的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示用到的JOIN算法。 执行计划的最关键的部分是语句的预计执行开销,这是计划生成器估算执行该语句将花费多长的时间。 若指定了ANALYZE选项,则该语句会被执行,然后根据实际的运行结果显示统计数据,包括每个计划节点内时间总开销(毫秒为单位)和实际返回的总行数。这对于判断计划生成器的估计值是否接近实际值非常有用。
  • WORKLOAD_TRANSACTION 当前节点上负载的事务信息,如表1所示。 表1 WORKLOAD_TRANSACTION字段 名称 类型 描述 workload name 负载的名称。 commit_counter bigint 用户事务commit数量。 rollback_counter bigint 用户事务rollback数量。 resp_min bigint 用户事务最小响应时间(单位:微秒)。 resp_max bigint 用户事务最大响应时间(单位:微秒)。 resp_avg bigint 用户事务平均响应时间(单位:微秒)。 resp_total bigint 用户事务总响应时间(单位:微秒)。 bg_commit_counter bigint 后台事务commit数量。 bg_rollback_counter bigint 后台事务rollback数量。 bg_resp_min bigint 后台事务最小响应时间(单位:微秒)。 bg_resp_max bigint 后台事务最大响应时间(单位:微秒)。 bg_resp_avg bigint 后台事务平均响应时间(单位:微秒)。 bg_resp_total bigint 后台事务总响应时间(单位:微秒)。 父主题: Workload
  • 提示信息函数 report_application_error() 描述:PL执行过程中,可以使用此函数来抛ERROR。 返回值类型:void 表1 report_application_error参数说明 参数 类型 说明 是否必选 log text error消息的内容。 是 code int4 error消息对应的error code,范围为:-20999 ~ -20000。 否 父主题: 函数和操作符
  • 参数说明 参数 参数说明 ctx 表示给定的上下文。 query 被执行的sql语句。 args 被执行sql语句需要绑定的参数。支持按位置绑定和按名称绑定,详情见如下示例。 opts 事务隔离级别和事务访问模式,其中事务隔离级别(opts.Isolation)支持范围为sql.LevelReadUncommitted、sql.LevelReadCommitted、sql.LevelRepeatableRead、sql.LevelSerializable。事务访问模式(opts.ReadOnly)支持范围为true(read only)和false(read write)。 Query类接口Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()接口执行,若非查询语句通过Query类接口执行,则执行结果可能与预期不符,因此不建议使用Query类接口执行非查询语句,例如UPDATE/INSERT等。 使用Query类接口执行查询语句的结果需要通过type Rows中Next()接口获取,若不通过Next()接口获取,可能会产生不可预期的错误。
  • 示例 //本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置) package main /* go驱动依赖包位置根据配置的go.mod设置 */ import ( "database/sql" _ "gitee.com/opengauss/openGauss-connector-go-pq" "log" ) func main() { hostip := os.Getenv("GOHOSTIP") //GOHOSTIP为写入环境变量的IP地址 port := os.Getenv("GOPORT") //GOPORT为写入环境变量的port usrname := os.Getenv("GOUSRNAME") //GOUSRNAME为写入环境变量的用户名 passwd := os.Getenv("GOPASSWD") //GOPASSWDW为写入环境变量的用户密码 str := "host=" + hostip + " port=" + port + " user=" + usrname + " password=" + passwd + " dbname=gaussdb sslmode=disable" db, err := sql.Open("gaussdb", str) if err != nil { log.Fatal(err) } defer db.Close() err = db.Ping() if err != nil { log.Fatal(err) } _, err = db.Exec("create table test_bound(id int, name text)") // 按位置绑定 _, err = db.Exec("insert into test_bound(id, name) values(:1, :2)", 1, "张三") if err != nil { log.Fatal(err) } // 按名称绑定 _, err = db.Exec("insert into test_bound(id, name) values(:id, :name)", sql.Named("id", 1), sql.Named("name", "张三")) if err != nil { log.Fatal(err) } }
  • 参数说明 @queryblock请参见指定Hint所处于的查询块Queryblock,可省略,表示在当前查询块生效。 “#”、“+”、“-”、“*”,进行行数估算hint的四种操作符号。#表示直接使用后面的行数进行hint。“+”、“-”、“*”表示对原来估算的行数进行加、减、乘操作,运算后的行数最小值为1行。table_list为hint对应的单表或多表join结果集,与Join方式的Hint中table_list相同。
  • 建议 推荐使用两个表*的hint。对于两个表采用*操作符的hint,只要两个表出现在join的两端,都会触发hint。例如:设置hint为rows(t1 t2 * 3),对于(t1 t3 t4)和(t2 t5 t6)join时,由于t1和t2出现在join的两端,所以其join的结果集也会应用该hint规则乘以3。 rows hint支持在单表、多表、function table及subquery scan table的结果集上指定hint。
  • ADM_TAB_PARTITIONS ADM_TAB_PARTITIONS视图显示数据库下所有的一级分区信息(包括二级分区表)。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。分布式暂不支持二级分区,所以该视图中暂不存储二级分区表的一级分区信息。 表1 ADM_TAB_PARTITIONS字段 名称 类型 描述 table_owner character varying(64) 表的所有者。 table_name character varying(64) 关系表名称。 partition_name character varying(64) 分区名称。 high_value text 分区的边界值。 对于范围分区和间隔分区,显示各分区的上边界值。 对于列表分区,显示各分区的取值列表。 对于哈希分区,显示各分区的编号。 tablespace_name name 分区表的表空间名称。 schema character varying(64) 名称空间的名称。 composite character varying(3) 表是否为二级分区表。 subpartition_count numeric 暂不支持,值为NULL。 high_value_length integer 分区边界值表达式的长度。 partition_position numeric 分区在表中的位置。 pct_free numeric 块中可用空间的最小百分比。 pct_used numeric 暂不支持,值为NULL。 ini_trans numeric 初始事务数,默认值为4,非USTORE分区表时为NULL。 max_trans numeric 最大事务数,默认值为128,非USTORE分区表时为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(7) 是否记录对表的更改。 compression character varying(8) 表分区的实际压缩属性。 compress_for character varying(30) 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_row_len numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp with time zone 最近分析此分区的日期。 buffer_pool character varying(7) 用于分区块的缓冲池。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 is_nested character varying(3) 这是否是嵌套表分区。 parent_table_partition character varying(128) 暂不支持,值为NULL。 interval character varying(3) 分区是否在间隔分区表的间隔节中。分布式暂不支持间隔分区,该字段值为NO。 segment_created character varying(4) 表分区是否创建了段。 indexing character varying(4) 暂不支持,值为NULL。 read_only character varying(4) 暂不支持,值为NULL。 inmemory character varying(8) 暂不支持,值为NULL。 inmemory_priority character varying(8) 暂不支持,值为NULL。 inmemory_distribute character varying(15) 暂不支持,值为NULL。 inmemory_compression character varying(17) 暂不支持,值为NULL。 inmemory_duplicate character varying(13) 暂不支持,值为NULL。 cellmemory character varying(24) 暂不支持,值为NULL。 inmemory_service character varying(12) 暂不支持,值为NULL。 inmemory_service_name character varying(100) 暂不支持,值为NULL。 memoptimize_read character varying(8) 暂不支持,值为NULL。 memoptimize_write character varying(8) 暂不支持,值为NULL。 父主题: 分区表
  • DBE_SQL_UTIL.drop_sql_patch drop_sql_patch是用于删除SQL PATCH的接口函数,返回执行是否成功,如表1所示。 限制:仅初始用户、sysadmin、opradmin和monadmin用户有权限调用。 表1 DBE_SQL_UTIL.drop_sql_patch入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • GLOBAL_OPERATOR_HISTORY GLOBAL_OPERATOR_HISTORY系统视图显示的是当前用户在所有CN节点上执行作业结束后的算子的相关记录,如表1所示。 表1 GLOBAL_OPERATOR_HISTORY的字段 名称 类型 描述 queryid bigint 语句执行使用的内部query_id。 pid bigint 后端线程id。 plan_node_id integer 查询对应的执行计划的plan node id。 plan_node_name text 对应于plan_node_id的算子的名称。 start_time timestamp with time zone 该算子处理第一条数据的开始时间。 duration bigint 该算子到结束时候总的执行时间(ms)。 query_dop integer 当前算子执行时的并行度。 estimated_rows bigint 优化器估算的行数信息。 tuple_processed bigint 当前算子返回的元素个数。 min_peak_memory integer 当前算子在所有DN上的最小内存峰值(MB)。 max_peak_memory integer 当前算子在所有DN上的最大内存峰值(MB)。 average_peak_memory integer 当前算子在所有DN上的平均内存峰值(MB)。 memory_skew_percent integer 当前算子在各DN间的内存使用倾斜率。 min_spill_size integer 若发生下盘,所有DN上下盘的最小数据量(MB),默认为0。 max_spill_size integer 若发生下盘,所有DN上下盘的最大数据量(MB),默认为0。 average_spill_size integer 若发生下盘,所有DN上下盘的平均数据量(MB),默认为0。 spill_skew_percent integer 若发生下盘,DN间下盘倾斜率。 min_cpu_time bigint 该算子在所有DN上的最小执行时间(ms)。 max_cpu_time bigint 该算子在所有DN上的最大执行时间(ms)。 total_cpu_time bigint 该算子在所有DN上的总执行时间(ms)。 cpu_skew_percent integer DN间执行时间的倾斜率。 warning text 主要显示如下几类告警信息: Sort/SetOp/HashAgg/HashJoin spill Spill file size large than 256MB Broadcast size large than 100MB Early spill Spill times is greater than 3 Spill on memory adaptive Hash table conflict 父主题: Operator
  • ROLE_SYS_PRIVS ROLE_SYS_PRIVS视图显示授予角色的系统特权信息,仅提供用户有权访问的角色的信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ROLE_SYS_PRIVS字段 名称 类型 描述 role character varying(128) 角色名称。 privilege character varying(40) 用户拥有的系统权限或ANY权限。 系统权限包括rolsuper、rolinherit、rolcreaterole、rolcreatedb、rolcatupdate、rolcanlogin、rolreplication、rolauditadmin、rolsystemadmin、roluseft、rolmonitoradmin、roloperatoradmin、rolpolicyadmin。 ANY权限的取值请参考表1。 admin_option character varying(3) 该授权是否包含ADMIN选项。 YES:包含ADMIN选项。 NO:不包含ADMIN选项。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 用户和权限管理
  • PG_NODE_ENV PG_NODE_ENV视图显示当前节点的环境变量信息。 表1 PG_NODE_ENV字段 名称 类型 描述 node_name text 当前节点的名称。 host text 当前节点的主机名称。 process integer 当前节点的进程号。 port integer 当前节点的端口号。 installpath text 当前节点的安装目录。 datapath text 当前节点的数据目录。 log_directory text 当前节点的日志目录。 父主题: 其他系统视图
  • fix_func_selection 参数说明:是否优化函数匹配策略。 catlist顺序问题:当用户自定义函数与系统函数存在冲突,数据库系统在选择函数时,会受该系统函数在数据库系统中的注册顺序影响,从而导致选择函数结果不同。 参数类型:字符串 参数单位:无 取值范围:''、catlist。 '':不进行优化,与505.1.0版本之前的版本保持一致。 catlist :优化catlist顺序问题(对于非MYSQL兼容模式进行优化,非MYSQL兼容模式下始终优先选择系统函数并执行。MYSQL兼容模式与505.1.0版本之前的版本保持一致,可能提示函数不唯一的错误,也可能选中系统函数进行执行)。 默认值: catlist:新安装的数据库的默认值 '':505.1.0版本之前的数据库升级后的默认值 设置方式:该参数属于USERSET类型参数,请参见表2中对应设置方法进行设置。
  • gs_format_behavior_compat_options 参数说明:gs_format_behavior_compat_options用于选择GaussDB内部系统函数配置项。 参数类型:字符串 参数单位:无 取值范围:当前只支持表9中的兼容性配置项,当设置多个兼容性配置项时,相邻配置项之间用逗号隔开。 默认值:'sqrt_karatsuba' 表9 gs_format_behavior兼容性配置项 兼容性配置项 兼容性行为控制 'sqrt_karatsuba' 设置此参数:表示在调用sqrt平方根函数时使用Karatsuba平方根算法,karatsuba算法性能更高但是在极少数情况下精度可能会和牛顿迭代算法不一致。 不设置此参数:在计算sqrt平方根算法时会使用默认的牛顿迭代算法进行平方根的计算。 'allow_textconcat_null' 设置此参数:在PG兼容模式下字符串和null值拼接会返回对应的字符串的值。 -- 在PG兼容模式下执行 gaussdb=# set gs_format_behavior_compat_options='allow_textconcat_null'; SET gaussdb=# select 'a' || null || 'b'; ?column? ---------- ab (1 row) 不设置此参数:在PG兼容模式下字符串和null值拼接会返回NULL。 设置方式:该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。 设置建议:控制一些兼容性特性是否可用,若要更改,请在理解参数含义后谨慎操作,避免因误操作产生意料之外的风险。
  • enable_convert_illegal_char 参数说明:对输出结果中的非法编码是否设置不进行校验并以占位符替换显示。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启,非法编码将替换为convert_illegal_char_mode参数指定符号的编码。 off:表示关闭,查询结果中包含的非法编码会校验后报错。 默认值:off 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:设置为默认值,仅在数据中存在特殊字符且需要对特殊字符进行强制不报错处理时开启该参数。 当数据库字符集为:utf8、zhs16gbk、gb18030、gb18030-2022、latin1时,enable_convert_illegal_char = on时生效,且在数据库客户端与服务端字符集不相同时,非法编码将以占位符形式显示。 特殊字符范围:本文所指的特殊字符范围仅包括完全编码异常和混合编码,不支持\u0000字符。若字符编码中包含\u0000字符,在使用时通常会在\u0000处截断,无法保证数据的完整性。 若数据库客户端与服务端字符集不相同,在enable_convert_illegal_char = off时,数据库将超出当前字符集编码外的特殊字符(不包含\x0000字符)替换为\x3F(即显示为?)编码写入数据库中;当enable_convert_illegal_char = on时,只能使用函数dbe_raw.cast_to_varchar2()将非法编码原编码插入数据库中,并以占位符形式显示。 当开启GUC参数时,特殊字符在下表所列的函数、高级包函数中的表现为: 在客户端与服务端字符集一致时:特殊字符在查询时不报错,与开启GUC参数前的行为保持一致。 在客户端与服务端字符集不一致时:特殊字符在查询时显示为占位符(默认为?)。 不建议客户使用函数处理包含特殊字符的字符串,下表所列函数处理包含特殊字符的字符串不会产生报错,但不保证结果的正确性。 表8 特殊字符支持的函数及高级包函数 序号 函数名/高级包函数名 1 bit_length(string) 2 btrim(string text [, characters text]) 3 char_length(string) character_length(string) 4 chr(cvalue int|bigint) chr(integer) 5 concat(str1,str2) 6 concat_ws(sep text, str"any" [, str"any" [, ...] ]) 7 decode(string text, format text) 8 dump(expr[, return_fmt [, start_position [, length ] ] ]) 9 encode(data bytea, format text) 10 find_in_set(text, set) 11 format(formatstr text [, str"any" [, ...] ]) 12 left(str text, n int) 13 length(string) 14 lengthb(text/bpchar) 15 ltrim(string [, characters]) 16 md5(string) 17 notlike(x bytea name text, y bytea text) 18 octet_length(string) 19 overlay(string placing string FROM int [for int]) 20 quote_ident(string text) 21 quote_literal(string text) 22 quote_nullable(string text) 23 rawcat(raw,raw) 24 regexp_count(string text, pattern text [, position int [, flags text]]) 25 regexp_instr(string text, pattern text [, position int [, occurrence int [, return_opt int [, flags text]]]]) 26 regexp_like(source_string, pattern [, match_parameter]) regexp_like(text,text,text) 27 regexp_matches(string text, pattern text [, flags text]) 28 regexp_replace(string, pattern, replacement [,flags ]) 29 regexp_split_to_array(string text, pattern text [, flags text ]) 30 regexp_split_to_table(string text, pattern text [, flags text]) 31 regexp_substr(source_char, pattern) regexp_substr(string text, pattern text [, position int [, occurrence int [, flags text]]]) 32 repeat(string text, number int ) 33 repexp_replace(string text, pattern text [, replacement text [, position int [, occurrence int [, flags text]]]]) 34 replace(string text, from text, to text) 35 replace(string, substring) 36 reverse(str) 37 right(str text, n int) 38 rtrim(string [, characters]) 39 sha(string) 40 sha1(string) 41 sha2(string,hash_length) 42 split_part(string text, delimiter text, field int) 43 substring(string [from int] [for int]) substring(string from pattern for escape) substring(string from pattern) 44 substring_inner(string [from int] [for int]) 45 tconvert(key text, value text) 46 to_single_byte(char) 47 translate(string text, from text, to text) 48 trim([leading |trailing |both] [characters] from string) 49 unistr(string) 50 vsize(expr) 51 PKG_UTIL.RAW_CAST_FROM_VARCHAR2 52 PKG_UTIL.LOB_CONVERTTOCLOB 53 PKG_UTIL.LOB_RAWTOTEXT 54 PKG_UTIL.LOB_TEXTTORAW 55 PKG_UTIL.RAW_CAST_TO_VARCHAR2 56 DBE_OUTPUT.PUT 57 DBE_OUTPUT.PUT_LINE
  • a_format_disable_func 参数说明:禁用指定的系统函数。该参数的值由若干个系统函数OID值用逗号隔开组成。设置该参数的系统函数将不能被调用。 当某一系统函数不能满足用户需求并且需要使用相同函数名的自定义函数时可使用该功能。 参数类型:字符串 参数单位:无 取值范围:字符串,由若干个系统函数OID值用逗号隔开组成。 该参数仅支持禁用数据库平台兼容性行为配置项(a_format_version,a_format_dev_version)对应新增的系统函数,请参考表7。 表7 支持被禁用的系统函数 数据库平台兼容性行为配置项 支持被禁用的系统函数 10c,s1 anyarray array_extendnull(anyarray,int4,int4); -- funcoid: 6018 clob empty_clob(); -- funcoid: 3825 int4 instrb(text,text); -- funcoid: 3240 int4 instrb(text,text,int4); -- funcoid: 3241 int4 instrb(text,text,int4,int4); -- funcoid: 3242 numeric months_between(timestamp,timestamp); -- funcoid: 1522 timestamp round(timestamp); -- funcoid: 通过查询语句获取 select oid from pg_proc where proname='round' and pronamespace=11 and pronargs=1 and allargtypes[0]=1114; timestamp round(timestamp,text); -- funcoid: 4465 timestamp to_date(text,text,bool); -- funcoid: 1524 timestamp to_date(text,text,text,bool); -- funcoid: 1525 numeric to_number(text,text,bool); -- funcoid: 1787 numeric to_number(text,text,text,bool); -- funcoid: 1788 timestamp to_timestamp(text,text,bool); -- funcoid: 606 timestamp to_timestamp(text,text,text,bool); -- funcoid: 607 timestamptz to_timestamp_tz(text); -- funcoid: 1806 timestamptz to_timestamp_tz(text,text); -- funcoid: 1807 timestamptz to_timestamp_tz(text,text,bool); -- funcoid: 1808 timestamptz to_timestamp_tz(text,text,text,bool); -- funcoid: 1809 10c,s2 text DBTimezone(); -- funcoid: 5562 int8 ascii2(text); -- funcoid: 1625 text asciistr(text); -- funcoid: 1626 text asciistr(blob); -- funcoid: 1629 int4 bit2coding(text); -- funcoid: 9311 int4 bit4coding(text); -- funcoid: 9325 float8 cosh(float8); -- funcoid: 1548 numeric cosh(numeric); -- funcoid: 1549 timestamptz current_timestamp(numeric); -- funcoid: 3257 text dump(any); -- funcoid: 9086 text dump(any,int4); -- funcoid: 9088 text dump(any,int4,int4); -- funcoid: 9089 text dump(any,int4,int4,int4); -- funcoid: 9090 float4 nanvl(float4,float4); -- funcoid: 7112 float4 nanvl(float4,numeric); -- funcoid: 7115 float8 nanvl(float8,float8); -- funcoid: 7113 float4 nanvl(numeric,float4); -- funcoid: 7116 numeric nanvl(numeric,numeric); -- funcoid: 7114 timestamp new_time(timestamp,text,text); -- funcoid: 374 text nls_lower(text); -- funcoid: 4082 text nls_lower(text,text); -- funcoid: 4083 text nls_upper(text); -- funcoid: 4084 text nls_upper(text,text); -- funcoid: 4085 interval numtoyminterval(numeric,text); -- funcoid: 9333 int8 ora_hash(any); -- funcoid: 6127 int8 ora_hash(any,int8); -- funcoid: 6128 text rawtohex2(any); -- funcoid: 9540 numeric remainder(int8,int8); -- funcoid: 9767 numeric remainder(int2,int2); -- funcoid: 9765 numeric remainder(int4,int4); -- funcoid: 9766 float4 remainder(float4,float4); -- funcoid: 9771 float4 remainder(float4,numeric); -- funcoid: 9768 float8 remainder(float8,float8); -- funcoid: 9770 float4 remainder(numeric,float4); -- funcoid: 9769 numeric remainder(numeric,numeric); -- funcoid: 9761 numeric remainder(int1,int1); -- funcoid: 9764 text session_time_zone(); -- funcoid: 9571 float8 sinh(float8); -- funcoid: 1546 numeric sinh(numeric); -- funcoid: 1547 timestamp sys_extract_utc(timestamp); -- funcoid: 5258 timestamp sys_extract_utc(timestamptz); -- funcoid: 5259 float8 tanh(float8); -- funcoid: 9762 numeric tanh(numeric); -- funcoid: 9763 float8 to_binary_double(text); -- funcoid: 9669 float8 to_binary_double(text,text); -- funcoid: 9670 float8 to_binary_double(text,text,bool); -- funcoid: 9671 float8 to_binary_double(text,text,text,bool); -- funcoid: 9672 float4 to_binary_float(text); -- funcoid: 9673 float4 to_binary_float(text,text); -- funcoid: 9674 float4 to_binary_float(text,text,bool); -- funcoid: 9675 float4 to_binary_float(text,text,text,bool); -- funcoid: 9676 blob to_blob(any); -- funcoid: 6990 interval to_dsinterval(text); -- funcoid: 9126 interval to_dsinterval(text,text,bool); -- funcoid: 9127 text to_multi_byte(text); -- funcoid: 9537 text to_multi_byte(blob); -- funcoid: 9539 varchar to_nchar(int8); -- funcoid: 通过查询语句获取 select oid from pg_proc where proname='to_nchar' and pronamespace=11 and pronargs=1 and allargtypes[0]=20; varchar to_nchar(int2); -- funcoid: 通过查询语句获取 select oid from pg_proc where proname='to_nchar' and pronamespace=11 and pronargs=1 and allargtypes[0]=21; varchar to_nchar(int4); -- funcoid: 通过查询语句获取 select oid from pg_proc where proname='to_nchar' and pronamespace=11 and pronargs=1 and allargtypes[0]=23; text to_nchar(text); -- funcoid: 通过查询语句获取 select oid from pg_proc where proname='to_nchar' and pronamespace=11 and pronargs=1 and allargtypes[0]=25; varchar to_nchar(float4); -- funcoid: 通过查询语句获取 select oid from pg_proc where proname='to_nchar' and pronamespace=11 and pronargs=1 and allargtypes[0]=700; varchar to_nchar(float8); -- funcoid: 通过查询语句获取 select oid from pg_proc where proname='to_nchar' and pronamespace=11 and pronargs=1 and allargtypes[0]=701; varchar to_nchar(numeric); -- funcoid: 通过查询语句获取 select oid from pg_proc where proname='to_nchar' and pronamespace=11 and pronargs=1 and allargtypes[0]=1700; text to_nchar(timestamp); -- funcoid: 5698 text to_nchar(timestamptz); -- funcoid: 5699 text to_nchar(anyset); -- funcoid: 5700 text to_nchar(int8,text); -- funcoid: 5694 text to_nchar(int4,text); -- funcoid: 5693 text to_nchar(float4,text); -- funcoid: 5695 text to_nchar(float8,text); -- funcoid: 5696 text to_nchar(timestamp,text); -- funcoid: 5697 text to_nchar(timestamptz,text); -- funcoid: 5691 text to_nchar(interval,text); -- funcoid: 5690 text to_nchar(numeric,text); -- funcoid: 5692 text to_single_byte(text); -- funcoid: 9536 text to_single_byte(blob); -- funcoid: 9538 interval to_yminterval(text); -- funcoid: 9124 interval to_yminterval(text,text,bool); -- funcoid: 9125 text tz_offset(text); -- funcoid: 706 text unistr(text); -- funcoid: 9081 text unistr(blob); -- funcoid: 9082 int4 vsize(any); -- funcoid: 9083 10c,s4 clob getclobval(xml); -- funcoid: 8011 varchar getstringval(xml); -- funcoid: 6976 nvarchar2 nchr(int8); -- funcoid: 1694 timestamptz to_timestamp_tz(text,text,text); -- funcoid: 1804 timestamptz to_timestamp_tz(text,text,text,text,bool); -- funcoid: 1805 10c,s5 sys_guid();--funcoid:2974 默认值:'' 设置方式:该参数属于SUSET类型参数,请参见18.2-表2 GUC参数设置方式中对应设置方法进行设置。 设置建议:数据库平台兼容性行为配置项(a_format_version,a_format_dev_version)未开启时其对应新增的系统函数默认不可用,无须使用该参数进行禁用。
  • nls_nchar_characterset 参数说明:搭配nchr(cvalue int|bigint)系统函数使用,设置国家字符集,该参数的值为字符串枚举值。 参数类型:字符串 参数单位:无 取值范围:'AL16UTF16'和'UTF8',不区分大小写。 默认值:'AL16UTF16' 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 数据库不支持国家字符集,该参数只是为了兼容ORA数据库,获取用户想使用的国家字符集。 该GUC参数仅限于nchr(cvalue int|bigint)函数的使用。
  • plpgsql.variable_conflict 参数说明:设置同名的存储过程变量和表的列的使用优先级。 该参数属于USERSET类型参数,仅支持表1中对应设置方法3进行设置。 取值范围:字符串 error表示遇到存储过程变量和表的列名同名则编译报错。 use_variable表示存储过程变量和表的列名同名则优先使用变量。 use_column表示存储过程变量和表的列名同名则优先使用列名。 默认值:error
  • td_compatible_truncation 参数说明:控制是否开启与Teradata数据库相应兼容的特征。该参数在用户连接上与TD兼容的数据库时,可以将参数设置成为on(即超长字符串自动截断功能启用),该功能启用后,在后续的insert语句中,对目标表中char和varchar类型的列插入超长字符串时,会按照目标表中相应列定义的最大长度对超长字符串进行自动截断。保证数据都能插入目标表中,而不是报错。 超长字符串自动截断功能不适用于insert语句包含外表的场景。 如果向字符集为字节类型编码(SQL_ASCII,LATIN1等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用UTF8等能够按照字符截断的输入字符集作为数据库的编码集。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示启动超长字符串自动截断功能。 off表示停止超长字符串自动截断功能。 默认值:off
  • disable_keyword_options 参数说明:数据库兼容性行为配置项,该参数的值由若干个配置项用逗号隔开构成。设置该参数的标识符将不会作为关键字使用。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串,支持设置以下关键字:auto_increment、change、charset、columns、compile、completion、containing、convert、csn、datetime、db4aishot、dbtimezone、discard_path、distributed、dumpfile、ends、entityescaping、escaped、evalname、event、events、expdp、gsiusable、gsivalid、gsiwaitall、finish、ilm_pidx_list、impdp、ifnull、invisible、json_object、lines、link、lnnvl、load_discard、locked、mark、nocache、noentityescaping、noextend、noscale、nvl2、ordinality、outfile、pivot、performance、public、recover、regexp_like、scale、schedule、separator、sessiontimezone、shrink、slave、specification、starting、starts、subpartitions、substr、unpivot、verify、visible、wellformed、xmltype、regexp、rlike、zerofill。 默认值:"datetime、regexp、rlike、zerofill" 该参数打开后,作为关键字使用的部分功能会失效,请谨慎使用。
  • disable_plsql_keyword_options 参数说明:用于将设置的标识符当作非关键字使用。数据库兼容性行为配置项,该参数的值由若干个配置项用逗号隔开构成。 参数类型:字符串 参数单位:无 取值范围: PIPE PIPELINED RANGE REPLACE SUBTYPE '' 默认值:'' 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置 设置建议:无 该参数打开后,作为关键字使用的部分功能会失效,请谨慎使用。 如需取消屏蔽plsql关键字功能,请将该参数设置为空值。
  • nls_timestamp_tz_format 参数说明:设置带时区时间戳默认格式。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串,支持格式同nls_timestamp_format。 默认值:DD-Mon-YYYY HH:MI:SS.FF AM 此参数在参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。
  • enable_object_special_character 参数说明:控制执行CREATE EXTENSION语句时,若脚本文件中使用"@extschema@",此时control文件中schema参数的值是否可以包含["$'\]中任意特殊字符。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示开启,可以包含["$'\]中任意特殊字符。 off表示关闭,不可以包含["$'\]中任意特殊字符。 默认值:off 扩展功能为内部使用功能,不建议用户使用。
  • b_format_version 参数说明:数据库平台兼容性行为配置项,用于控制MySQL兼容模式下的前向兼容性。 仅当sql_compatibility兼容性参数设置为MySQL时,b_format_version参数才会生效。 当该参数设置不为空字符串生效时,会同时设置参数b_format_behavior_compat_options为'ALL'值,参数bytea_output为'escape'值。当该参数重新设置为空字符串生效时,会将b_format_behavior_compat_options、bytea_output参数设为原来的值。 参数类型:字符串 参数单位:无 取值范围:空字符串''或 '5.7' 默认值:空字符串'' 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:无
  • auto_increment_cache 参数说明:对自动增长列批量插入或导入触发自增时,预留自增缓存值的个数。预留自增值时,刷新自增计数器为自增缓存值的最大值,缓存值使用完毕之前,自增计数器值不变,触发自增使用缓存的值。 预留的缓存值仅在语句内有效,若预留的自增缓存值没有全部被使用,后续插入语句基于自增计数器触发自增,会出现表中自动增长列的值不连续的情况。 并行导入或插入自动增长列触发自增时,每个并行线程预留的缓存值也只在其线程中使用,未完全使用完毕的话,也会出现表中自动增长列的值不连续的情况。 对已有数据的表添加自动增长列或修改某列为自动增长列时,已有数据触发自增,预留自增缓存值也受此参数影响。 此参数不影响本地临时表中的自动增长列。 默认值:0 参数类型:整型 参数单位:无 取值范围:0 ~ INT_MAX 参数值为0时,自动预留自增缓存值。 第一次触发自增时,若已知即将插入自动增长列的行数,预留已知数量的值。 例如:“INSERT INTO table SELECT ...”和COPY FROM触发自增值无法获取即将插入的行数。ALTER TABLE命令表数据重写时,若触发自增,使用统计信息中的reltuples作为即将预留的行数。 “INSERT INTO table VALUES(...),(...),...”由于要分布到不同DN,在某些执行计划中,DN获取不到即将插入的行数。 若行数未知,每次预留2^n个值,例如,第一次自增预留1个值,第二次自增预留2个值,第三次预留4个值,第四次预留8个值,以此类推,若预留值个数超过65535,预留65535个值。 参数值不为0时,预留缓存值的数量为参数值。 第一次触发自增时,若已知即将插入自动增长列的行数,预留已知数量的值。 若行数未知,每次预留auto_increment_cache数量的自增值。 默认值:0 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值,若默认情况产生自增值不连续的情况,可以根据用户即将批量插入数据量调整参数值。参数值越大,批量插入性能越优,也更可能产生不连续的自增值。
  • sql_mode 参数说明:MYSQL兼容模式下SQL行为控制配置项。 依赖sql_compatibility兼容性参数设置为MYSQL、b_format_version设置为'5.7'、b_format_dev_version 设置为's1'时,sql_mode才会生效。 参数类型:字符串 参数单位:无 取值范围:空字符串''或 'strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution,pad_char_to_full_length'中的选项值。每个选项值的含义如表6所述。 表6 兼容性配置项 兼容性配置项 兼容性行为控制 参数配置说明 strict_trans_tables 当前仅支持对MYSQL兼容数据库下数据类型及系统函数做校验。 设置时,对输入的参数格式和范围做严格校验。无效值输入或者超过范围时,解析报error。 不设置时,对输入的参数格式和范围做宽松校验,无效值输入或者超过范围时,解析报warning,返回对应数据的0值。 strict_trans_tables、only_full_group_by、no_zero_in_date、no_zero_date、error_for_division_by_zero 这五个选项只支持同时设置和取消,不支持只设置其中部分选项。 only_full_group_by 不允许出现非group by的key值、且不是常量和聚集函数的投影列。 no_zero_in_date 不允许日期中的年、月、日是0值。 no_zero_date 不允许日期是0值(0000-00-00)。 error_for_division_by_zero 不允许被0除。 no_auto_create_user 无实际作用,仅用作 SET SQL_MODE 语句包含此选项时不报错的兼容作用。 可独立设置和取消。 no_engine_substitution 无实际作用,仅用作 SET SQL_MODE 语句包含此选项时不报错的兼容作用。 可独立设置和取消。 pad_char_to_full_length 用于表中的char类型列格式化输出,包含时输出带有尾部空格的字符串,否则输出不带尾部空格字符串。 可独立设置和取消。 no_auto_value_on_zero 包含此选项后,向AUTO_INCREMENT自动增长列插入0值将不会自增。 可独立设置和取消。 默认值:'strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero,no_auto_create_user,no_engine_substitution' 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:无
共100000条