目录
14.1. KingbaseES老版本 ¶
14.2. 平台和客户端兼容性 ¶
14.3. 一般特性兼容性 ¶
14.1. KingbaseES老版本 ¶
array_nulls
属性
描述
类型
boolean
默认值
on
级别
这个参数控制数组输入解析器是否把未用引号的
NULL
识别为一个空数组元素。默认为on
,允许输入包含空值的数组值。但是KingbaseES V8.6 之前的版本不支持数组中的空值,并且把NULL
当作指定一个值为字符串“NULL”的正常数组元素。对于那些要求旧行为的应用的向后兼容性,这个变量可以被设置为off
。注意即使这个变量为
off
也能够创建包含空值的数组值。
backslash_quote
属性
描述
类型
enum
默认值
safe_encoding
级别
这个参数控制字符串文本中的单引号是否能够用
\'
来表示。首选的 SQL 标准的方法是将其双写(''
),但是KingbaseES在历史上也接受\'
。不过使用\'
容易导致安全风险,因为在某些客户端字符集编码中,有多字节字符的最后一个字节在数值上等价于 ASCII 的\'
。如果客户端代码没有做到正确转义,那么将会导致 SQL 注入攻击。如果服务器拒绝看起来带有被反斜线转义的单引号的查询,那么就可以避免这种风险。backslash_quote
的可用值是on
(总是允许\'
)、off
(总是拒绝)以及safe_encoding
(只有客户端编码不允许在多字节字符中存在 ASCII\
时允许)。safe_encoding
是默认设置。注意在符合标准的字符串文本中,
\
就表示\
。这个参数只影响不符合标准的文本的处理,包括转义字符串语法(E'...'
)。
escape_string_warning
属性
描述
类型
boolean
默认值
on
级别
打开时,如果在普通字符串文本中(
'...'
语法)出现了 一个反斜线(\
)并且standard_conforming_strings
为关闭,那么就会发出一个警告。默认值是on
。希望使用反斜线作为转义符的应用应该被修改来使用转义字符串语法(
E'...'
),因为在 SQL 标准中普通字符串的默认行为是将反斜线视作一个普通字符。这个变量可以被启用来帮助定位需要被更改的代码。
lo_compat_privileges
属性
描述
类型
boolean
默认值
off
级别
在KingbaseES |V8R2| 之前,大对象不具有访问特权并且因此总是所有用户可读可写的。为了和以前的版本兼容,把这个变量设置为
on
可以禁用这种新的特权检查。默认是off
。只有超级用户可以更改这个设置。设置这个参数不会禁用所有与大对象相关的安全检查 -- 除了那些在KingbaseES |V8R2| 中已经修改了的默认行为。
operator_precedence_warning
属性
描述
类型
boolean
默认值
off
级别
当开启时,对于任何从KingbaseES |V8R2| 以来由于操作符优先级 变化而导致含义改变的结构,解析器将发出一个警告。这有助于审计应用,已检查是否 优先级变化破坏了什么东西。但是它的本意并不是希望在生产环境中保持打开,因为它 会对某些完全合法、兼容标准的 SQL 代码发出警告。默认为
off
。更多操作符优先级信息请见 KingbaseES SQL语言参考手册 中的操作符部分。
quote_all_identifiers
属性
描述
类型
boolean
默认值
on
级别
当数据库产生 SQL 时,强制所有标识符被引号包围,即使它们(当前)不是关键字。这将影响
EXPLAIN
的输出以及sys_get_viewdef
等函数的结果。另请参阅 sys_dump 和 sys_dumpall 的--quote-all-identifiers
选项。
standard_conforming_strings
属性
描述
类型
boolean
默认值
on
级别
控制普通字符串文本(
'...'
)是否按照 SQL 标准把反斜线当普通文本。从KingbaseES |V8R2| 开始,默认值为on
(之前的发行中默认值为off
)。应用可以检查这个参数来判断字符串文本如何被处理。这个参数的存在也可以被当做转义字符串语法(E'...'
)被支持的标志。如果一个应用希望反斜线被当做转义字符,应该使用转义字符串语法( 带有C型转义的字符串常量)。
synchronize_seqscans
属性
描述
类型
boolean
默认值
on
级别
它允许对大型表的顺序扫描与其他扫描同步,因此并发扫描可以在几乎相同的时刻读取相同的块,这样可以分担 I/O 负载。当启用这个参数时,一个扫描可能会从表的中间开始并且之后“绕回”到开头以覆盖所有的行,这样可以与已在进行中的扫描活动同步。对于没有
ORDER BY
子句的查询来,这样的扫描会在返回行的顺序中造成不可预料的改变。将这个参数设置为off
以保证 KingbaseES V7 之前的行为(顺序扫描总是从表的起始处开始)。默认值是on
。
enable_inplace_update
属性
描述
类型
boolean
默认值
off
级别
控制本地更新表能否进行inplace update,只有开启该参数且通过接口使用PBE方式才能进行本地更新,否则仍然是通过正常的MVCC方式更新。本地更新指在update操作数据时直接在元组上覆盖老数据,而不是插入新的元组,标记删除老元组。
inplace_update_lock_type
属性
描述
类型
integer
默认值
off
级别
控制本地更新表在进行inplace update时开表锁表粒度,该参数类型为int型,默认值为7,取值范围为3~7。
14.2. 平台和客户端兼容性 ¶
transform_null_equals
属性
描述
类型
boolean
默认值
off
级别
当打开时,形为
expr
= NULL(或NULL = expr
)的表达式将被当做expr
IS NULL, 也就是说,如果 ``expr`` 得出空值值则返回真,否则返回假。正确的 SQL 标准兼容的expr
= NULL行为总是返回空(未知)。因此这个参数默认为off
。不过,在Microsoft Access里的过滤表单生成的查询使用
expr
= NULL来测试空值,因此,如果希望使用这个接口访问数据库,此选项需打开。因为expr
= NULL形式的表达式总是返回空值(使用 SQL 标准解释)。它们不是非常有用并且在普通应用中也不常见,在应用中也不常见,因此这个选项实际上没有什么危害。但是新用户常常对涉及 空值的表达式的语义上感到困惑,因此这个选项默认为关闭。请注意这个选项只影响
= NULL
形式,而不影响其它比较操作符或者其它与一些涉及等值操作符的表达式在计算上等效的其他表达式(例如IN
)。因此,这个选项不是劣质程序的一般修复。相关信息请见 KingbaseES SQL语言参考手册 中的操作符部分。
14.3. 一般特性兼容性 ¶
enable_autocommit_fetch
属性
描述
类型
boolean
默认值
off
级别
当客户端设置了autocommit=true(自动提交模式)时,对于查询请求,在enable_autocommit_fetch设置为
off
,服务端将一次性返回给客户端符合条件的所有记录。在设置为on
时,服务端将按照客户端指定fetchsize值(JDBC客户端应用调用setFetchSize方法设置)的数据量按需执行查询,并按需获取数据集返回给客户端符合条件的记录。默认值是off
。
enable_autocommit_crossquery
属性
描述
类型
boolean
默认值
off
级别
在enable_autocommit_fetch设置为
on
的情况下有效。在enable_autocommit_crossquery设置为 ``on``时,客户端语句交叉执行,在不同语句执行后,前语句按照服务端调用HoldablePortal方式,可以继续执行。在设置为off
时,客户端语句交叉执行,在不同语句执行后,前语句不能继续执行。默认值是off
。
ora_forbid_func_polymorphism
属性
描述
类型
bool
默认值
off
级别
此参数设置为on,则表示开启禁用多态,同模式下不能创建同名的函数或存储过程;设置为off(默认),则表示启用多态。
ora_statement_level_rollback
属性
描述
类型
bool
默认值
off
级别
该参数指定了
plsql
中是否启用语句级回滚,取值为on或off。当指定为true时,启动语句级回滚功能;当指定为false时,关闭语句级回滚功能。
ora_style_nls_date_format
属性
描述
类型
boolean
默认值
off
级别
这个变量设置为
on
时,日期时间的隐式输入与输出字符串格式才会使用参数nls_date_format
、nls_timestamp_format
和nls_timestamp_tz_format
的配置。
ignore_char_null_check
属性
描述
类型
boolean
默认值
off
级别
当打开时,
Copy
支持导出数据中包含0x00字节记录,导出以后0x00字节以二进制方式保存; 也支持导入包含0x00字节的输入端数据,同样也要确保输入端是0x00字节而不是"0x00"字符串。 默认为off
。
ignore_char_converer
属性
描述
类型
boolean
默认值
off
级别
当打开时,
Copy
在导入文本格式的数据时,将"\0"当做0x00字节,而不转换为八进制数据。 默认为off
。
ignore_zero_number
属性
描述
类型
boolean
默认值
off
级别
当打开时,number类型输出时末尾忽略“0”。 默认为
off
。例如:
select 1.00::number; numeric --------- 1.00 (1 row) set ignore_zero_number =true; SET select 1.00::number; numeric --------- 1 (1 row)
escape
属性
描述
类型
string
默认值
null
级别
当打开时,转义符可设置为多种字符,可兼容oracle的特性。支持设置为off、on、其它单字符,当设置后将与oracle表现基本一致(除部分容错性)。默认为
null
,表示和老版本兼容 。例如:
set escape =off;
SET
select '\\' as test;
test
---------
\\
(1 row)
set escape =on;
SET
select '\\' as test;
test
---------
\
(1 row)