KingbaseES数据库中 enable_upper_colname 参数配置测试指南
参数功能说明
enable_upper_colname 是 KingbaseES 数据库的一个配置参数,主要控制数据库在处理列名时的大小写行为:
作用: 当设置为 on 时,系统会将所有未加引号的列名转换为大写形式
默认值: 通常默认为 off
适用场景: 与 Oracle 数据库兼容时非常有用,因为 Oracle 默认将未加引号的标识符存储为大写
注意:enable_upper_colname只能在Oracle兼容模式、敏感实例下使用。
测试步骤
1. 查看当前参数设置
点击查看代码
-- 查看参数当前值
test=# SHOW enable_upper_colname;
enable_upper_colname
----------------------
off
(1 行记录)
-- 或在系统表中查询
test=# SELECT name, setting, unit FROM sys_settings WHERE name = 'enable_upper_colname';
name | setting | unit
----------------------+---------+------
enable_upper_colname | off |
(1 行记录)

2. 修改参数配置
2.1 临时修改(当前会话有效)
点击查看代码
test=# SET enable_upper_colname = on;
SET
test=# SHOW enable_upper_colname;
ENABLE_UPPER_COLNAME
----------------------
on
(1 行记录)

2.2 永久修改
-- 方式1:通过ALTER SYSTEM修改配置文件
点击查看代码
test=# ALTER SYSTEM SET enable_upper_colname = on;
ALTER SYSTEM
test=# SELECT sys_reload_conf();
SYS_RELOAD_CONF
-----------------
t
(1 行记录)
test=# SHOW enable_upper_colname;
ENABLE_UPPER_COLNAME
----------------------
on
(1 行记录)

-- 方式2:直接编辑kingbase.conf文件
点击查看代码
[kingbase@node3 ~]$ vi /home/kingbase/KingbaseES/V9/data/kingbase.conf
[kingbase@node3 ~]$ cat /home/kingbase/KingbaseES/V9/data/kingbase.conf |grep "enable_upper_colname"
enable_upper_colname = on
[kingbase@node3 ~]$ sys_ctl -D /home/kingbase/KingbaseES/V9/data reload
服务器进程发出信号

3. 测试不同设置下的行为
创建测试表
点击查看代码
test=# CREATE TABLE case_test (
test(# mixedCaseCol integer,
test(# "QuotedCaseCol" integer,
test(# lowercasecol integer,
test(# UPPERCASECOL integer
test(# );
CREATE TABLE

测试1:enable_upper_colname = off
点击查看代码
test=# SET enable_upper_colname = off;
SET
test=# SELECT mixedcasecol FROM case_test;
mixedcasecol
--------------
(0 行记录)
test=# SELECT "mixedcasecol" FROM case_test;
mixedcasecol
--------------
(0 行记录)
test=# SELECT MixedCaseCol FROM case_test;
mixedcasecol
--------------
(0 行记录)
test=# SELECT "MixedCaseCol" FROM case_test;
ERROR: 字段 "MixedCaseCol" 不存在
第1行SELECT "MixedCaseCol" FROM case_test;
^
提示: 也许您想要引用列"case_test.mixedcasecol"。

测试2:enable_upper_colname = on
点击查看代码
test=# SET enable_upper_colname = on;
SET
test=# SHOW enable_upper_colname;
ENABLE_UPPER_COLNAME
----------------------
on
(1 行记录)
test=# SELECT mixedcasecol FROM case_test;
MIXEDCASECOL
--------------
(0 行记录)
test=# SELECT "mixedcasecol" FROM case_test;
MIXEDCASECOL
--------------
(0 行记录)
test=# SELECT MixedCaseCol FROM case_test;
MIXEDCASECOL
--------------
(0 行记录)
test=# SELECT "MixedCaseCol" FROM case_test;
ERROR: 字段 "MixedCaseCol" 不存在
第1行SELECT "MixedCaseCol" FROM case_test;
^
提示: 也许您想要引用列"case_test.mixedcasecol"。


浙公网安备 33010602011771号