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:

    • 出现在select列表中的列(不使用聚合函数),是否一定要出现在group by子句中。当处在sql_mode_full_group模式(默认模式)下,如果select列表中的列没有使用聚合函数,也没有出现在group by子句,那么会报错,如果不在此模式下,则会执行成功,并在所有符合条件的元组中选取第一个元组。
    • 出现在order by中的列,是否一定要出现在distinct中(注意是distinct,不是distinct on)。当处在sql_mode_full_group模式(默认模式)下,不允许没有出现在distinct中的列出现在order by子句中,否则允许。
  6. pipes_as_concat:控制 || 当成连接符还是 或操作符

  7. 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;
  21. --向表中插入记录成功。
  22. openGauss=# set dolphin.sql_mode = '';
  23. SET
  24. openGauss=# insert into test1(a1,a2) values(123412342342314,3453453453434324);
  25. WARNING: invalid input syntax for numeric: ""
  26. CONTEXT: referenced column: a6
  27. WARNING: smallint out of range
  28. CONTEXT: referenced column: a1
  29. WARNING: integer out of range
  30. CONTEXT: referenced column: a2
  31. INSERT 0 1
  32. --查询表成功
  33. openGauss=# select a1,a2 from test1 group by a1;
  34. a1 | a2
  35. -------+------------
  36. 32767 | 2147483647
  37. (1 row)
  38. --删除表
  39. openGauss=# DROP TABLE test1;
  40. DROP TABLE
  41. --ansi_quotes效果展示
  42. openGauss=# create database test_db dbcompatibility 'B';
  43. CREATE DATABASE
  44. openGauss=# \c test_db
  45. Non-SSL connection (SSL connection is recommended when requiring high-security)
  46. You are now connected to database "test_db" as user "luozihao".
  47. test_db=# show dolphin.sql_mode ;
  48. dolphin.sql_mode
  49. ------------------------------------------------------------------------------------------------------
  50. sql_mode_strict,sql_mode_full_group,pipes_as_concat,ansi_quotes,no_zero_date,pad_char_to_full_length
  51. (1 row)
  52. test_db=# create table test(a varchar(20));
  53. CREATE TABLE
  54. test_db=# insert into test values('test');
  55. INSERT 0 1
  56. test_db=# select "a" from test;
  57. a
  58. ------
  59. test
  60. (1 row)
  61. 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';
  62. SET
  63. test_db=# select "a" from test;
  64. ?column?
  65. ----------
  66. a
  67. (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)
  6. openGauss=# select now();
  7. now()
  8. ---------------------
  9. 2022-09-18 19:52:23
  10. (1 row)
  11. openGauss=# set dolphin.b_db_timestamp = 1.0;
  12. SET
  13. openGauss=# select now();
  14. now()
  15. ---------------------
  16. 1970-01-01 08:00:01
  17. (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)
  6. openGauss=# select week('2000-1-1');
  7. week
  8. ------
  9. 0
  10. (1 row)
  11. openGauss=# alter system set dolphin.default_week_format = 2;
  12. ALTER SYSTEM SET
  13. openGauss=# select week('2000-1-1');
  14. week
  15. ------
  16. 52
  17. (1 row)

dolphin.lc_time_names

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

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

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

参数值语言集
ar_AEArabic - United Arab Emirates
ar_BHArabic - Bahrain
ar_DZArabic - Algeria
ar_EGArabic - Egypt
ar_INArabic - India
ar_IQArabic - Iraq
ar_JOArabic - Jordan
ar_KWArabic - Kuwait
ar_LBArabic - Lebanon
ar_LYArabic - Libya
ar_MAArabic - Morocco
ar_OMArabic - Oman
ar_QAArabic - Qatar
ar_SAArabic - Saudi Arabia
ar_SDArabic - Sudan
ar_SYArabic - Syria
ar_TNArabic - Tunisia
ar_YEArabic - Yemen
be_BYBelarusian - Belarus
bg_BGBulgarian - Bulgaria
ca_ESCatalan - Spain
cs_CZCzech - Czech Republic
da_DKDanish - Denmark
de_ATGerman - Austria
de_BEGerman - Belgium
de_CHGerman - Switzerland
de_DEGerman - Germany
de_LUGerman - Luxembourg
el_GRGreek - Greece
en_AUEnglish - Australia
en_CAEnglish - Canada
en_GBEnglish - United Kingdom
en_INEnglish - India
en_NZEnglish - New Zealand
en_PHEnglish - Philippines
en_USEnglish - United States
en_ZAEnglish - South Africa
en_ZWEnglish - Zimbabwe
es_ARSpanish - Argentina
es_BOSpanish - Bolivia
es_CLSpanish - Chile
es_COSpanish - Colombia
es_CRSpanish - Costa Rica
es_DOSpanish - Dominican Republic
es_ECSpanish - Ecuador
es_ESSpanish - Spain
es_GTSpanish - Guatemala
es_HNSpanish - Honduras
es_MXSpanish - Mexico
es_NISpanish - Nicaragua
es_PASpanish - Panama
es_PESpanish - Peru
es_PRSpanish - Puerto Rico
es_PYSpanish - Paraguay
es_SVSpanish - El Salvador
es_USSpanish - United States
es_UYSpanish - Uruguay
es_VESpanish - Venezuela
et_EEEstonian - Estonia
eu_ESBasque - Spain
fi_FIFinnish - Finland
fo_FOFaroese - Faroe Islands
fr_BEFrench - Belgium
fr_CAFrench - Canada
fr_CHFrench - Switzerland
fr_FRFrench - France
fr_LUFrench - Luxembourg
gl_ESGalician - Spain
gu_INGujarati - India
he_ILHebrew - Israel
hi_INHindi - India
hr_HRCroatian - Croatia
hu_HUHungarian - Hungary
id_IDIndonesian - Indonesia
is_ISIcelandic - Iceland
it_CHItalian - Switzerland
it_ITItalian - Italy
ja_JPJapanese - Japan
ko_KRKorean - Republic of Korea
lt_LTLithuanian - Lithuania
lv_LVLatvian - Latvia
mk_MKMacedonian - North Macedonia
mn_MNMongolia - Mongolian
ms_MYMalay - Malaysia
nb_NONorwegian(Bokmål) - Norway
nl_BEDutch - Belgium
nl_NLDutch - The Netherlands
no_NONorwegian - Norway
pl_PLPolish - Poland
pt_BRPortugese - Brazil
pt_PTPortugese - Portugal
rm_CHRomansh - Switzerland
ro_RORomanian - Romania
ru_RURussian - Russia
ru_UARussian - Ukraine
sk_SKSlovak - Slovakia
sl_SISlovenian - Slovenia
sq_ALAlbanian - Albania
sr_RSSerbian - Serbia
sv_FISwedish - Finland
sv_SESwedish - Sweden
ta_INTamil - India
te_INTelugu - India
th_THThai - Thailand
tr_TRTurkish - Turkey
uk_UAUkrainian - Ukraine
ur_PKUrdu - Pakistan
vi_VNVietnamese - Vietnam
zh_CNChinese - China
zh_HKChinese - Hong Kong
zh_TWChinese - Taiwan

默认值:’en_US’

示例

  1. openGauss=# select dayname('2000-1-1');
  2. dayname
  3. ----------
  4. Saturday
  5. (1 row)
  6. openGauss=# alter system set dolphin.lc_time_names = 'zh_CN';
  7. ALTER SYSTEM SET
  8. openGauss=# select dayname('2000-1-1');
  9. dayname
  10. ---------
  11. 星期六
  12. (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_indexoff控制是否使用不可见索引

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

取值范围:字符串

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

optimizer_switch=’command[,command]…’

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

默认值:default

示例

  1. -- 设置use_invisible_indexon
  2. openGauss=# set dolphin.optimizer_switch = 'use_invisible_index = on';
  3. -- 设置dolphin.optimizer_switchdefalut,表示所有控制选项都设置为默认值
  4. openGauss=# set dolphin.optimizer_switch = 'default';
  5. -- 表示仅设置use_invisible_index选项为默认值
  6. 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)