
# 历史版本兼容性
GaussDB介绍数据库的向下兼容性和对外兼容性特性的参数控制。数据库系统的向后兼容性能够为旧版本的数据库应用提供支持。本节介绍的参数主要控制数据库的向后兼容性。
#### array_nulls
**参数说明：**控制数组输入解析器是否将没有用引用的NULL识别为数组的一个NULL元素。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示允许向数组中输入空元素。
- off：表示向下兼容旧模式。仍然能够创建包含NULL值的数组。
**默认值：**on。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### backslash_quote
**参数说明：**控制字符串文本中的单引号是否能够用\\'表示。该参数可在PDB级别设置。
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
在字符串文本符合SQL标准的情况下，\\没有任何其他含义。这个参数影响的是如何处理不符合标准的字符串文本，包括明确的字符串转义语法是（E'...'）。
**参数类型：**枚举类型
**参数单位：**无
**取值范围：**
- on：表示一直允许用\\'表示。
- off：表示不能用\\'表示。
- safe_encoding：表示当客户端字符集编码在多字节字符末尾不包含\\的ASCII值时，允许使用。
**默认值：**safe_encoding。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### escape_string_warning
**参数说明：**控制是否对普通字符串中使用的反斜杠转义发出警告。该参数可在PDB级别设置。
- 如果需要使用反斜杠作为转义，可以调整为使用转义字符串语法（E'...'）来做转义，因为在SQL标准中，普通字符串的默认行为将反斜杠作为一个普通字符。
- 这个变量可以帮助定位需要改变的代码。
- 使用E转义会导致部分场景下日志记录不全。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：对普通字符串中使用的反斜杠转义发出警告。
- off：不对普通字符串中使用的反斜杠转义发出警告。
**默认值：**on。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### lo_compat_privileges
**参数说明：**控制是否启动对大对象权限检查的向后兼容模式。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示当读取或修改大对象时，禁用权限检查。
- off：表示启用大对象的权限检查。
**默认值：**off。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于SUSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### quote_all_identifiers
**参数说明：**当数据库生成SQL时，控制是否强制引用所有的标识符（包括非关键字）。这将影响到EXPLAIN的输出及函数的结果，例如pg_get_viewdef。详细说明请参见《工具参考》"数据导入导出工具 \> gs_dump导出数据库信息"中的--quote-all-identifiers选项。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示打开强制引用。
- off：表示关闭强制引用。
**默认值：**off。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### sql_inheritance
**参数说明：**用来控制继承表的访问策略，该参数是为了兼容旧版本而设置的。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示可以访问子表。
- off：表示不可以访问子表，即默认使用ONLY关键字。
**默认值：**on。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### standard_conforming_strings
**参数说明：**控制普通字符串文本（'...'）中是否按照SQL标准把反斜杠当作普通文本。应用程序通过检查这个参数可以判断字符串文本的处理方式。建议明确使用转义字符串语法（E'...'）来转义字符。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示按照SQL标准把反斜杠当作普通文本。
- off：表示反斜杠在字符串字面值中被解释为转义字符。
**默认值：**on。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### synchronize_seqscans
**参数说明：**控制并行执行的序列扫描是否相互同步。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示扫描可能从表的中间开始，然后选择"环绕"方式来覆盖所有的行，目的是与已在执行的扫描保持同步。这种同步机制可以提高并行序列扫描的性能，但可能导致没有ORDER BY的查询返回乱序结果
- off：禁用序列扫描的同步行为，每个扫描都从表的起始位置开始。可以确保没有ORDER BY的查询返回与物理存储顺序一致的结果，但并行扫描效率可能会降低。
**默认值：**on。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### enable_beta_features
**参数说明：**控制是否开启某些非正式发布的特性，仅用于POC验证。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示开启这些功能受限的特性，保持前向兼容。
- off：表示禁止使用这些特性。
**默认值：**off。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**这些特性属于延伸特性，建议用户谨慎开启，在某些功能场景下可能存在问题。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### enable_recordtype_check_strict
**参数说明：**控制是否要对PL/SQL中的record类型进行严格性校验，详见说明部分。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示会在编译procedure、function、package时，校验创建的record类型中不支持的功能，以及提供procedure、function里创建的record类型not null功能。
- off：表示向下兼容旧式模式，不会对record类型进行校验。
**默认值：**on。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**设置为off时，部分指定了not null约束和定义了列默认值的record变量在赋值时功能不生效。
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
- 若从老版本升级，该参数会默认设置为off。
- 打开该参数后有以下三点行为变更：
  - 存储过程、函数内部创建的record类型，列约束not null功能生效。
  
  - package里创建的record类型，如果有一列指定了not null或default，则会编译报错。通过访问package.rec类型来创建的变量不支持not null和default功能。
  
  - 其他类型嵌套一个record类型，如果有一列指定了not null或default，则会编译报错。创建嵌套record类型的变量，该变量的record元素不支持not null和default功能。
   
 
#### plsql_block_concat_typename
**参数说明：**控制PL/SQL的子块中自定义类型名字的拼接方式。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示PL/SQL子块中的自定义类型，其在SQL中实际创建的名字拼接格式为OID.\[m.n···\].typename，其中OID为存储过程的OID，typename为自定义类型的名称，m、n则为子块的序号，多层子块嵌套时，则需要多层序号，如果仅有单层子块，则仅需m一个数字拼接即可。
- off：表示向下兼容旧模式，名字拼接方式为OID.typename。
**默认值：**on。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**设置为off时，当子块内的自定义类型重名时，SQL中无法区分不同子块的自定义类型。
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
若从老版本升级，该参数会默认设置为off。
#### default_with_oids
**参数说明：**在没有声明WITH OIDS和WITHOUT OIDS的情况下，这个选项控制在新创建的表中CREATE TABLE和CREATE TABLE AS是否包含一个OID字段。它还决定SELECT INTO创建的表里面是否包含OID 。该参数可在PDB级别设置。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示在新创建的表中，CREATE TABLE和CREATE TABLE AS包含一个OID字段。
- off：表示在新创建的表中，CREATE TABLE和CREATE TABLE AS不包含一个OID字段。
**默认值：**off。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**不推荐在用户表中使用OID，故默认设置为off。需要带有OID字段的表应该在创建时声明WITH OIDS 。
**设置不当的风险与影响：**请在充分理解参数含义，并经过测试验证后进行修改。
#### system_view_version
**参数说明：** 控制系统视图的版本。具体详见[表1 系统视图版本参数说明]。所有版本向下兼容，例如system_view_version=3时同时满足版本2与版本1的所有特性。该参数可在PDB级别设置。
**参数类型：**整型
**参数单位：**无
**取值范围：**0 \~ 9999
**默认值：**0。在PDB场景内，若未设置该参数，则继承来自全局的设置。
**设置方式：** 该参数属于USERSET类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：** 升级场景不做修改，安装场景配置为[表1 系统视图版本参数说明]中的最大版本。
**设置不当的风险与影响：** 系统视图部分字段行为存在变更，参考[表1 系统视图版本参数说明]。
 表1系统视图版本参数说明 
| 取值 | 说明                                                                  |
|:---|:---|
| 0  | 默认行为。                                                               |
| 1  | 当GaussDB中不存在已准备好的事务时，V$GLOBAL_TRANSACTION视图的PREPARECOUNT字段由NULL变为0。 |
   
