SET

    注意事项

    大多数运行时参数都可以用SET在运行时设置,但有些则在服务运行过程中或会话开始之后不能修改。

    • 设置所处的时区。

    • 设置所属的模式。

      1. {CURRENT_SCHEMA { TO | = } { schema | DEFAULT }
      2. | SCHEMA 'schema'};
    • 设置客户端编码集。

    • 设置XML的解析方式。

      1. SET [ SESSION | LOCAL ] XML OPTION { DOCUMENT | CONTENT };
    • 设置其他运行时参数。

    • 在兼容B模式(sql_compatibility = ‘B’)下设置参数。

      1. SET [ SESSION | @@SESSION. | @@]
      2. { {config_parameter = { expr | DEFAULT }}};
      3. SET { GLOBAL | @@GLOBAL.}
      4. { {config_parameter = { expr | DEFAULT }}}
    • 设置自定义用户变量。

    参数说明

    • SESSION

      声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现,则SESSION为缺省值。

      如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个SET命令重置参数。

    • LOCAL

      声明的参数只在当前事务中有效。在COMMIT或ROLLBACK之后,会话级别的设置将再次生效。

      不论事务是否提交,此命令的影响只持续到当前事务结束。一个特例是:在一个事务里面,即有SET命令,又有SET LOCAL命令,且SET LOCAL在SET后面,则在事务结束之前,SET LOCAL命令会起作用,但事务提交之后,则是SET命令会生效。

    • CURRENT_SCHEMA

      schema

      CURRENT_SCHEMA用于指定当前的模式。

      取值范围:已存在模式名称。如果模式名不存在,会导致CURRENT_SCHEMA值为空。

    • SCHEMA schema

      同CURRENT_SCHEMA。此处的schema是个字符串。

      例如:set schema ‘public’;

    • NAMES encoding_name

      用于设置客户端的字符编码。等价于set client_encoding to encoding_name。

      取值范围:有效的字符编码。该选项对应的运行时参数名称为client_encoding,默认编码为UTF8。

    • XML OPTION option

      用于设置XML的解析方式。

      取值范围:CONTENT(缺省)、DOCUMENT

    • config_parameter

    • value

      config_parameter的新值。可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。

    • SESSION | @@SESSION. | @@

      声明的参数生效方式为superuser、user,可通过pg_settings系统视图的context字段确定,如果没有出现GLOBAL /SESSION,则SESSION为缺省值。支持config_parameter赋值为表达式。

    • GLOBAL | @@GLOBAL.

      声明的参数生效范围为postmaster、sighup、backend,可通过pg_settings系统视图的context字段确定。设置参数范围和生效方式与ALTER SYSTEM SET 语法相同。支持config_parameter赋值为表达式。

    • var_name

      自定义变量名。变量名只能由数字、字母、下划线(_),点(.)、$组成,如果使用单引号、双引号等引用时,则可以使用其他字符,如’var_name’,“var_name”,`var_name`。

    • expr

      表达式,支持可直接或间接转为整型、浮点型、字符串、位串和NULL的表达式。

    1. --设置模式搜索路径。
    2. openGauss=# SET search_path TO tpcds, public;
    3. --把日期时间风格设置为传统的 POSTGRES 风格(日在月前)。
    4. --SET自定义用户变量的功能
    5. openGauss=# create database user_var dbcompatibility 'b';
    6. openGauss=# \c user_var
    7. user_var=# SET b_format_behavior_compat_options = enable_set_variables;
    8. user_var=# SET @v1 := 1, @v2 := 1.1, @v3 := true, @v4 := 'dasda', @v5 := x'41';
    9. --查询自定义用户变量
    10. user_var=# select @v1, @v2, @v3, @v4, @v5, @v6, @v7;
    11. --PREPARE语法使用自定义用户变量
    12. user_var=# SET @sql = 'select 1';
    13. user_var=# PREPARE stmt as @sql;
    14. --设置B兼容性参数
    15. openGauss=# create database test_set dbcompatibility 'B';
    16. openGauss=# \c test_set
    17. test_set=# set b_format_behavior_compat_options = 'enable_set_variables';
    18. --session变量设置
    19. test_set=# set @@codegen_cost_threshold = 10000;
    20. test_set=# set @@session.codegen_cost_threshold = @@codegen_cost_threshold * 2;
    21. --global变量设置
    22. test_set=#set @@global.most_available_sync = t;

    相关链接

    RESET