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 行记录)

image

2. 修改参数配置

2.1 临时修改(当前会话有效)

点击查看代码
test=# SET enable_upper_colname = on;
SET
test=# SHOW enable_upper_colname;
 ENABLE_UPPER_COLNAME
----------------------
 on
(1 行记录)

image

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 行记录)

image

-- 方式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
服务器进程发出信号

image

3. 测试不同设置下的行为

创建测试表

点击查看代码
test=# CREATE TABLE case_test (
test(#     mixedCaseCol integer,
test(#     "QuotedCaseCol" integer,
test(#     lowercasecol integer,
test(#     UPPERCASECOL integer
test(# );
CREATE TABLE

image

测试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"。

image

测试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"。

image

posted @ 2025-09-28 15:24  能豆豆!  阅读(12)  评论(0)    收藏  举报