GUC参数说明

dolphin.sql_mode

取值范围:字符串

默认值:’sql_mode_strict,sql_mode_full_group,pipes_as_concat,ansi_quotes,no_zero_date,pad_char_to_full_length’

参数说明:参数值为逗号间隔的字符串,仅允许合法字符串设定,不合法情况下,启动后报warning。同样,设置时候,如果新值非法,则报warning并且不修改老值。当前有几种场景会用到sql_mode:

  1. sql_mode_strict:插入不符合当前列类型的值时,进行数据转换;分两种场景,insert into table values(…) 和insert into table select … 主要涉及到各种数据类型之间的互相转换,目前涉及的类型有tinyint[unsigned],smallint[unsigned],int[unsigned],bigint[unsigned],float,double,numeric,clob,char和varchar;
  2. sql_mode_strict:插入的列值长度超过此列所限定的长度时,赋予该列最大或最小值,涉及的类型有tinyint[unsigned],smallint[unsigned],int[unsigned],bigint[unsigned],float,double,numeric,clob,char和varchar;
  3. sql_mode_strict:insert时,属性是非空且没有默认值的列,且没有在insert的列表中,则为其添加默认值;(涉及的类型同上)
  4. sql_mode_strict:支持对属性是非空且没有默认值的列显式插入default;(涉及的类型同上)
  5. sql_mode_full_group:

  6. 出现在select列表中的列(不使用聚合函数),是否一定要出现在group by子句中。当处在sql_mode_full_group模式(默认模式)下,如果select列表中的列没有使用聚合函数,也没有出现在group by子句,那么会报错,如果不在此模式下,则会执行成功,并在所有符合条件的元组中选取第一个元组。

  7. 出现在order by中的列,是否一定要出现在distinct中(注意是distinct,不是distinct on)。当处在sql_mode_full_group模式(默认模式)下,不允许没有出现在distinct中的列出现在order by子句中,否则允许。
  8. pipes_as_concat:控制 || 当成连接符还是 或操作符
  9. ansi_quotes:主要是针对出现在各种需要使用双引号表示字符串值的地方。当ansi_quotes打开,就表示此时的双引号中的内容要作为对象引用看待;当ansi_quotes关闭时,表示双引号中的内容要作为字符串的值看待。当关闭ansi_quotes时,会导致部分元命令失效,失效的元命令如下表所示:
参数 参数说明
\d[S+] 列出当前search_path中模式下所有的表、视图和序列。当search_path中不同模式存在同名对象时,只显示search_path中位置靠前模式下的同名对象。
\d+ [PATTERN] 列出所有表、视图和索引。
\da[S] [PATTERN] 列出所有可用的聚集函数以及它们操作的数据类型和返回值类型。
\db[+] [PATTERN] 列出所有可用的表空间。
\dc[S+] [PATTERN] 列出所有字符集之间的可用转换。
\dC[+] [PATTERN] 列出所有类型转换。
\dd[S] [PATTERN] 显示所有匹配PATTERN的描述。
\ddp [PATTERN] 显示所有默认的使用权限。
\dD[S+] [PATTERN] 列出所有可用域。
\ded[+] [PATTERN] 列出所有的Data Source对象。
\det[+] [PATTERN] 列出所有的外部表。
\des[+] [PATTERN] 列出所有的外部服务器。
\deu[+] [PATTERN] 列出用户映射信息。
\dew[+] [PATTERN] 列出封装的外部数据。
\df[antw][S+] [PATTERN] 列出所有可用函数以及它们的参数和返回的数据类型。a代表聚集函数,n代表普通函数,t代表触发器,w代表窗口函数。
\dF[+] [PATTERN] 列出所有的文本搜索配置信息。
\dFd[+] [PATTERN] 列出所有的文本搜索字典。
\dFp[+] [PATTERN] 列出所有的文本搜索分析器。
\dFt[+] [PATTERN] 列出所有的文本搜索模板。
\dl \lo_list的别名,显示一个大对象的列表。
\dL[S+] [PATTERN] 列出可用的程序语言。
\dm[S+] [PATTERN] 列出物化视图
\dn[S+] [PATTERN] 列出所有的模式(名称空间)。
\do[S] [PATTERN] 列出所有可用的操作符以及它们的操作数和返回的数据类型。
\dO[S+] [PATTERN] 列出排序规则
\dp [PATTERN] 列出一列可用的表、视图以及相关的权限信息。
\dT[S+] [PATTERN] 列出所有的数据类型。
\dE[S+] [PATTERN] 这一组命令,字母E、i、s、t和v分别代表着外部表、索引、序列、表和视图。可以以任意顺序指定其中一个或者它们的组合来列出这些对象。例如:\dit列出所有的索引和表。在命令名称后面追加+,则每一个对象的物理尺寸以及相关的描述也会被列出。
\dx[+] [PATTERN] 列出安装数据库的扩展信息。
\l[+] 列出服务器上所有数据库的名称、所有者、字符集编码以及使用权限。
\z [PATTERN] 列出数据库中所有表、视图和序列以及它们相关的访问特权。

ansi_quotes关闭情况下,如果需要用到数据库关键字作为对象标识符,或者出于规范性要求需要包裹所有对象标识符,可以使用反引号(`)替代双引号。

使用反引号(`)的情况下,表名称(受到参数lower_case_table_names控制)之外,其他包围的列名称,索引名称等都会做自动的小写化处理,返回数据的列也均为小写名称。

  1. no_zero_date:控制 ‘0000-00-00’ 是否为合法日期,支持DATE、DATETIME类型
参数 表现
no_zero_date, sql_mode_strict 非法日期,报错(使用update/insert ignore时告警)
no_zero_date 非法日期,告警
sql_mode_strict 合法日期,无告警
– 合法日期,无告警
2. pad_char_to_full_length:控制char类型查询时是否删除尾部空格。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

示例:

1. --创建表test1。
2. openGauss=# CREATE TABLE test1
3. (
4. a1 smallint not null,
5. a2 int not null,
6. a3 bigint not null,
7. a4 float not null,
8. a5 double not null,
9. a6 numeric not null,
10. a7 varchar(5) not null
11. );
12. CREATE TABLE
13. --向表中插入记录失败。
14. openGauss=# insert into test1(a1,a2) values(123412342342314,3453453453434324);
15. ERROR:  smallint out of range
16. CONTEXT:  referenced column: a1
17. --查询表失败
18. openGauss=# select a1,a2 from test1 group by a1;
19. ERROR:  column "test1.a2" must appear in the GROUP BY clause or be used in an aggregate function
20. LINE 1: select a1,a2 from test1 group by a1;

22. --向表中插入记录成功。
23. openGauss=# set dolphin.sql_mode = '';
24. SET
25. openGauss=# insert into test1(a1,a2) values(123412342342314,3453453453434324);
26. WARNING:  invalid input syntax for numeric: ""
27. CONTEXT:  referenced column: a6
28. WARNING:  smallint out of range
29. CONTEXT:  referenced column: a1
30. WARNING:  integer out of range
31. CONTEXT:  referenced column: a2
32. INSERT 0 1
33. --查询表成功
34. openGauss=# select a1,a2 from test1 group by a1;
35. a1   |     a2
36. -------+------------
37. 32767 | 2147483647
38. (1 row)

40. --删除表
41. openGauss=# DROP TABLE test1;
42. DROP TABLE

44. --ansi_quotes效果展示
45. openGauss=# create database test_db dbcompatibility 'B';
46. CREATE DATABASE
47. openGauss=# \c test_db
48. Non-SSL connection (SSL connection is recommended when requiring high-security)
49. You are now connected to database "test_db" as user "luozihao".
50. test_db=# show dolphin.sql_mode ;
51. dolphin.sql_mode
52. ------------------------------------------------------------------------------------------------------
53. sql_mode_strict,sql_mode_full_group,pipes_as_concat,ansi_quotes,no_zero_date,pad_char_to_full_length
54. (1 row)

56. test_db=# create table test(a varchar(20));
57. CREATE TABLE
58. test_db=# insert into test values('test');
59. INSERT 0 1
60. test_db=# select "a" from test;
61. a
62. ------
63. test
64. (1 row)

66. test_db=# set dolphin.sql_mode to 'sql_mode_strict,sql_mode_full_group,pipes_as_concat,no_zero_date,pad_char_to_full_length';
67. SET
68. test_db=# select "a" from test;
69. ?column?
70. ----------
71. a
72. (1 row)

dolphin.b_db_timestamp

参数说明:参数值为浮点数,该参数影响dolphin中的curdate/current_time/curtime/current_timestamp/localtime/localtimestamp/now函数。当此参数值为0时,以上函数返回当前日期或时间;若参数值位于区间[1,2147483647],则上述函数以该GUC参数的值作为秒数偏移,返回1970年01月01日 00:00:00 UTC + 秒数偏移 + 当前时区偏移的对应日期或时间。设置此参数时,若值不在上述合法区间内,会报错。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:0∪[1.0, 2147483647.0]

默认值:0

示例:

1. openGauss=# show dolphin.b_db_timestamp;
2. b_db_timestamp
3. ----------------
4. 0
5. (1 row)

7. openGauss=# select now();
8. now()
9. ---------------------
10. 2022-09-18 19:52:23
11. (1 row)

13. openGauss=# set dolphin.b_db_timestamp = 1.0;
14. SET
15. openGauss=# select now();
16. now()
17. ---------------------
18. 1970-01-01 08:00:01
19. (1 row)

dolphin.default_week_format

参数说明:参数值为整数,该参数影响dolphin插件中的week函数,该参数的取值范围为[0,7],分别对应8种不同的计算策略,这些策略的详细内容参见时间/日期函数中的week函数说明。当此GUC参数设置的值超过对应边界值时,会报warning,并且将此GUC参数的值设置为对应边界值。

该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。

取值范围:[0, 7]

默认值:0

示例:

1. openGauss=# show dolphin.default_week_format;
2. dolphin.default_week_format
3. ---------------------
4. 0
5. (1 row)

7. openGauss=# select week('2000-1-1');
8. week
9. ------
10. 0
11. (1 row)

13. openGauss=# alter system set dolphin.default_week_format = 2;
14. ALTER SYSTEM SET

16. openGauss=# select week('2000-1-1');
17. week
18. ------
19. 52
20. (1 row)

dolphin.lc_time_names

参数说明:参数值为字符串,该参数控制dolphin插件中dayname/monthname函数以何种语言输出结果。该参数的取值有111种。设置参数时,若值不在合法取值范围内,则会报错。

该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。

取值范围: lc_time_names语言集有如下可供选择的值:

参数值 语言集
ar_AE Arabic - United Arab Emirates
ar_BH Arabic - Bahrain
ar_DZ Arabic - Algeria
ar_EG Arabic - Egypt
ar_IN Arabic - India
ar_IQ Arabic - Iraq
ar_JO Arabic - Jordan
ar_KW Arabic - Kuwait
ar_LB Arabic - Lebanon
ar_LY Arabic - Libya
ar_MA Arabic - Morocco
ar_OM Arabic - Oman
ar_QA Arabic - Qatar
ar_SA Arabic - Saudi Arabia
ar_SD Arabic - Sudan
ar_SY Arabic - Syria
ar_TN Arabic - Tunisia
ar_YE Arabic - Yemen
be_BY Belarusian - Belarus
bg_BG Bulgarian - Bulgaria
ca_ES Catalan - Spain
cs_CZ Czech - Czech Republic
da_DK Danish - Denmark
de_AT German - Austria
de_BE German - Belgium
de_CH German - Switzerland
de_DE German - Germany
de_LU German - Luxembourg
el_GR Greek - Greece
en_AU English - Australia
en_CA English - Canada
en_GB English - United Kingdom
en_IN English - India
en_NZ English - New Zealand
en_PH English - Philippines
en_US English - United States
en_ZA English - South Africa
en_ZW English - Zimbabwe
es_AR Spanish - Argentina
es_BO Spanish - Bolivia
es_CL Spanish - Chile
es_CO Spanish - Colombia
es_CR Spanish - Costa Rica
es_DO Spanish - Dominican Republic
es_EC Spanish - Ecuador
es_ES Spanish - Spain
es_GT Spanish - Guatemala
es_HN Spanish - Honduras
es_MX Spanish - Mexico
es_NI Spanish - Nicaragua
es_PA Spanish - Panama
es_PE Spanish - Peru
es_PR Spanish - Puerto Rico
es_PY Spanish - Paraguay
es_SV Spanish - El Salvador
es_US Spanish - United States
es_UY Spanish - Uruguay
es_VE Spanish - Venezuela
et_EE Estonian - Estonia
eu_ES Basque - Spain
fi_FI Finnish - Finland
fo_FO Faroese - Faroe Islands
fr_BE French - Belgium
fr_CA French - Canada
fr_CH French - Switzerland
fr_FR French - France
fr_LU French - Luxembourg
gl_ES Galician - Spain
gu_IN Gujarati - India
he_IL Hebrew - Israel
hi_IN Hindi - India
hr_HR Croatian - Croatia
hu_HU Hungarian - Hungary
id_ID Indonesian - Indonesia
is_IS Icelandic - Iceland
it_CH Italian - Switzerland
it_IT Italian - Italy
ja_JP Japanese - Japan
ko_KR Korean - Republic of Korea
lt_LT Lithuanian - Lithuania
lv_LV Latvian - Latvia
mk_MK Macedonian - North Macedonia
mn_MN Mongolia - Mongolian
ms_MY Malay - Malaysia
nb_NO Norwegian(Bokmål) - Norway
nl_BE Dutch - Belgium
nl_NL Dutch - The Netherlands
no_NO Norwegian - Norway
pl_PL Polish - Poland
pt_BR Portugese - Brazil
pt_PT Portugese - Portugal
rm_CH Romansh - Switzerland
ro_RO Romanian - Romania
ru_RU Russian - Russia
ru_UA Russian - Ukraine
sk_SK Slovak - Slovakia
sl_SI Slovenian - Slovenia
sq_AL Albanian - Albania
sr_RS Serbian - Serbia
sv_FI Swedish - Finland
sv_SE Swedish - Sweden
ta_IN Tamil - India
te_IN Telugu - India
th_TH Thai - Thailand
tr_TR Turkish - Turkey
uk_UA Ukrainian - Ukraine
ur_PK Urdu - Pakistan
vi_VN Vietnamese - Vietnam
zh_CN Chinese - China
zh_HK Chinese - Hong Kong
zh_TW Chinese - Taiwan

默认值:’en_US’

示例:

1. openGauss=# select dayname('2000-1-1');
2. dayname
3. ----------
4. Saturday
5. (1 row)

7. openGauss=# alter system set dolphin.lc_time_names = 'zh_CN';
8. ALTER SYSTEM SET

10. openGauss=# select dayname('2000-1-1');
11. dayname
12. ---------
13. 星期六
14. (1 row)

dolphin.b_compatibility_mode

参数说明:参数值为布尔类型,该参数影响dolphin插件中的部分冲突的函数和操作符等,参数开启时这些函数和操作符会执行兼容性逻辑,关闭时则保持openGauss原有的逻辑。

当前影响的操作符有:

  1. LIKE/NOT LIKE
  2. (字符类型异或) ^
  3. (数字类型异或) ^
  4. &&
  5. #

影响的函数有:

  1. LAST_DAY
  2. TIMESTAMPDIFF
  3. FORMAT
  4. EXTRACT
  5. CAST

其他影响的参数:

  1. ?

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:布尔型

  • on表示使用新增兼容性功能。
  • off表示关闭兼容性功能,使用内核原有功能。

默认值:off

version_comment

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示数据库服务端及许可证信息。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:openGauss Server(MulanPSL-2.0)

auto_increment_increment

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为整数类型,表示自增列的自增步长。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[1, 65535]

默认值:1

character_set_client

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示客户端使用该字符集。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:utf8

character_set_connection

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示没有字符集引入程序时,使用该字符集。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:utf8

character_set_results

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示服务端使用该字符集向客户端返回查询结果。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:utf8

character_set_server

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示服务端使用该字符集。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:latin1

collation_server

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示服务端使用该排序规则。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:latin1_swedish_ci

collation_connection

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示连接字符集使用该排序规则。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:无

init_connect

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示连接初始化时执行的SQL语句。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:无

interactive_timeout

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为整数类型,表示交互式连接在持续无活动该秒数后,服务端会将其关闭。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[1, 31536000]

默认值:28800

license

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示服务端使用该许可证。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:MulanPSL-2.0

max_allowed_packet

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为整数类型,表示数据包的大小上限(字节)。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[1024, 1073741824]

默认值:4194304

net_buffer_length

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为整数类型,表示缓冲区的默认大小,缓冲区的大小可以动态的扩张到max_allowed_packet,并在SQL语句结束后还原。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[1024, 1048576]

默认值:16384

net_write_timeout

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为整数类型,表示在等待写入该秒数后,服务端会将其中止。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[1, 31536000]

默认值:60

query_cache_size

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为整数类型,表示在缓存查询结果时,分配的内存大小(字节)。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[0, 9223372036854775807]

默认值:1048576

query_cache_type

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为整数类型,表示查询缓存的类型。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[0, 2]

默认值:0

system_time_zone

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示服务器系统时区。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:字符串

默认值:无

time_zone

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示当前时区。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[-12:59, +13:00]

默认值:SYSTEM

wait_timeout

参数说明:该参数目前为只读参数,且未实现其具体意义。参数值为字符串类型,表示非交互式连接在持续无活动该秒数后,服务端会将其关闭。

该参数目前属于INTERNAL类型参数,用户无法对其进行设置。

取值范围:[1, 31536000]

默认值:28800

dolphin.lower_case_table_names

参数说明:该参数用于控制用户名、表名、视图名、模式名的大小写敏感;为0时大小写敏感,>0时为大小写不敏感

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:[0, 2]

默认值:1

dolphin.default_database_name

参数说明:dolphin协议插件默认使用的opengauss数据库实例名称

该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。

GUC参数说明 - 图1 须知:

  • 当加载了dophin插件,并且开启了dolphin数据库协议后,可以使用此功能。
  • 由于opengauss的database同mysql的database体系不一致,因此dophin需要选择一个opengauss的数据库实例。

取值范围:字符串

默认值:加载dolphin协议插件时,当前会话的database_name

dolphin.optimizer_switch

参数说明:控制优化器行为,该参数是一系列控制选项的集合。当前支持的控制选项如下:

选项名 默认 功能
use_invisible_index off 控制是否使用不可见索引

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

取值范围:字符串

有效取值: 各选项以逗号隔开,如下。

optimizer_switch=’command[,command]…’

command 描述
default 将所有控制选项设为其默认值
opt_name = default 将指定控制选项设为其默认值
opt_name = off 将指定控制选项设为关闭
opt_name = on 将指定控制选项设为打开

默认值:default

示例:

1. -- 设置use_invisible_index为on
2. openGauss=# set dolphin.optimizer_switch = 'use_invisible_index = on';

4. -- 设置dolphin.optimizer_switch为defalut,表示所有控制选项都设置为默认值
5. openGauss=# set dolphin.optimizer_switch = 'default';

7. -- 表示仅设置use_invisible_index选项为默认值
8. openGauss=# set dolphin.optimizer_switch = 'use_invisible_index = default';

dolphin.dolphin.div_precision_increment

参数说明:此变量指定使用/运算符执行除法运算的结果的小数位数。

该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。

GUC参数说明 - 图2 须知:

该参数用于提供除法运算结果的小数位数,在通过该参数以及入参计算出小数位数之后,与openGauss原生计算的小数位数进行对比,获取两者中的较大值作为计算结果的小数位数。大多数情况下openGauss的小数位数会比MySQL高,所以该参数在设置的值不大的情况下效果暂时不明显。

取值范围:[0, 30]

默认值:4

sql_note

参数说明:设置show warnings是否显示Note级别的信息开关。

取值范围:布尔型

默认值:ON

示例:

1. openGauss=# show sql_note;
2. sql_note
3. ----------
4. on
5. (1 row)