在之前的一篇文章中,我们简要介绍了「IvorySQL的IVY_GUC框架介绍与使用指南」,除了数据类型和内置函数的兼容性外,IvorySQL还新增了一些GUC参数,以便更好地对数据库变量进行设置和对数据库进行控制。
接下来,本文将详细介绍IvorySQL支持多种SQL语句,并且可以与多种数据库进行交互。在IvorySQL中,新增命令和配置参数可以帮助优化查询性能和查询灵活性。
01 初始化指定模式命令
为了满足PG模式和兼容Oracle模式,IvorySQL特别设计了PG和Oracle两种模式,并且可以在initdb时指定所需模式。
相关文档链接:
https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/17
具体命令如下:
1.1 初始化PG模式
(1)./initdb -D ../data -m pg
(2)要检查是否已成功指定模式,请启动数据库。运行命令:./pg_ctl -D ../data start。如果显示以下信息,则表示已成功指定PG模式:
2023-12-01 15:02:22.327 CST [41358] LOG: listening on IPv4 address "127.0.0.1", port 5432
2023-12-01 15:02:22.338 CST [41358] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"2023-12-01 15:02:22.362 CST [41361] LOG: database system was shut down at 2023-12-01 15:01:47 CST
2023-12-01 15:02:22.394 CST [41358] LOG: database system is ready to accept connections
done
server started
1.2 初始化oracle兼容模式
(1)执行初始化数据库命令:./initdb -D ../data -m oracle
(2)验证初始化是否成功,并通过./pg_ctl -D ../data start启动数据库。启动后会显示以下内容
2023-12-01 15:14:10.357 CST [42280] LOG: listening on IPv4 address "127.0.0.1", port 5432
2023-12-01 15:14:10.362 CST [42280] LOG: listening on IPv4 address "127.0.0.1", port 1521
2023-12-01 15:14:10.368 CST [42280] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2023-12-01 15:14:10.379 CST [42280] LOG: listening on Unix socket "/tmp/.s.PGSQL.1521"
2023-12-01 15:14:10.410 CST [42283] LOG: database system was shut down at 2023-12-01 15:14:02 CST
2023-12-01 15:14:10.446 CST [42280] LOG: database system is ready to accept connections
done
server started
1.3 如果不添加-m参数,则默认为oralce兼容模式
(1)执行初始化数据库命令:/initdb -D ../data
(2)通过./pg_ctl -D ../data start启动数据库。启动后会显示以下内容
2023-12-01 15:14:10.357 CST [42280] LOG: listening on IPv4 address "127.0.0.1", port 5432
2023-12-01 15:14:10.362 CST [42280] LOG: listening on IPv4 address "127.0.0.1", port 1521
2023-12-01 15:14:10.368 CST [42280] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2023-12-01 15:14:10.379 CST [42280] LOG: listening on Unix socket "/tmp/.s.PGSQL.1521"
2023-12-01 15:14:10.410 CST [42283] LOG: database system was shut down at 2023-12-01 15:14:02 CST
2023-12-01 15:14:10.446 CST [42280] LOG: database system is ready to accept connections
done
server started
02 -C参数命令设置大小写转换
为了确保PG和Oracle在引用标识符大小写兼容方面的良好体验,IvorySQL提供了三种引用标识符的大小写转换模式以适应不同的场景。
在初始化数据库时,可以通过initdb命令的-C选项来设置大小写转换模式。该选项可以接受的值包括“normal”、“interchange”和“lowercase”。
相关文档链接:
https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/16
以下是具体命令的示例:
(1)设置正常大小写转换模式:./initdb -D ../data -C normal 标识符转换模式与原生PG相同。
(2)设置交互大小写转换模式:./initdb -D ../data -C interchange
(3)设置全部转换为小写模式:./initdb -D ../data -C lowercase
如果双引号所引用的标识符中的字母全部为大写,则将大写转换为小写。
测试如下
SET ivorysql.enable_case_switch = true;
SET ivorysql.identifier_case_switch = interchange;
CREATE TABLE "ABD"(c1 int, c2 int);
SELECT * FROM "ABD";
c1 | c2
----+----
(0 rows)
SELECT * FROM "Abd"; -- ERROR
SELECT * FROM "abd"; -- ERROR
DROP TABLE abd;
如果双引号所引用的标识符中的字母全部为小写,则将小写转换为大写。
测试如下
SET ivorysql.enable_case_switch = true;
SET ivorysql.identifier_case_switch = interchange;
CREATE TABLE "abd"(c1 int, c2 int);
SELECT * FROM "ABD";-- ERROR
SELECT * FROM "Abd"; -- ERROR
SELECT * FROM "abd";
c1 | c2
----+----
(0 rows)
DROP TABLE abd;
如果用双引号引起来的标识符中字母是大小写混合的,则保持标识符不变。
测试如下
SET ivorysql.enable_case_switch = true;
SET ivorysql.identifier_case_switch = interchange;
CREATE TABLE "Abd"(c1 int, c2 int);
SELECT * FROM "ABD"; -- ERROR
SELECT * FROM ABD; -- ERROR
SELECT * FROM abd; -- ERROR
SELECT * FROM Abd; -- ERROR
SELECT * FROM "Abd";
c1 | c2
----+----
(0 rows)
DROP TABLE "Abd";
/initdb -D ../data -C lowercase 将所有标识符转换为小写字母。
测试如下
SET ivorysql.enable_case_switch = true;
SET identifier_case_switch = lowercase;
CREATE TABLE "Abd"(c1 int, c2 int);
SELECT * FROM "Abd";
c1 | c2
----+----
(0 rows)
SELECT * FROM ABD; -- ERROR
SELECT * FROM abd; -- ERROR
SELECT * FROM Abd; -- ERROR
DROP TABLE "Abd";
03 \parser命令
在成功连接数据库后,您可以输入SQL语句\parser来查看当前数据库parser信息。具体实例如下:
1、输入\parser后,如果显示Oracle parser,则表明当前处于Oracle parser。
如果想要切换为PG,则输入命令:set ivorysql.comatible_mode=PG,此时客户端仍然处于Oralce parser,需要再次输入命令\parser,此时才能更新parser为PG parser;
2、输入\parser后,如果显示PG parser,则表明当前处于PG parser。
如果想要切换为Oracle,则输入命令:set ivorysql.comatible_mode=Oracle,此时客户端仍然处于PG parser,需要再次输入命令\parser,此时才能更新parser为PG parser;
04 --with-oraport命令
在执行configure时可以加上--with-oraport=number命令,将number设置为服务器和客户端的默认端口。这个端口可以在后续进行修改,但如果在此处声明,则服务器和客户端将具有相同的编译好的默认值,这样会更加方便。
相关文档链接:
https://docs.ivorysql.org/cn/ivorysql-doc/v3.0/v3.0/22
具体示例如下:
./configure CFLAGS="-O0 -g" \
--prefix=$PWD/inst \
--with-oraport=1521 \
......
执行命令:
./initdb -D ../data
./pg_ctl -D ../data start
./psql -d postgres -p 1521
05 有关配置参数介绍
官方网址:
社区仓库:
https://github.com/IvorySQL/IvorySQL
IvorySQL社区欢迎并赞赏所有类型的贡献,期待您的加入!
记得在GitHub给我们一个 ⭐奥~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。