Skip to content

Commit 7b3ab1c

Browse files
committed
update the code for IvorySQL v1.8 release
1 parent 1fd47d8 commit 7b3ab1c

32 files changed

Lines changed: 174 additions & 15677 deletions

CN/antora.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: ivorysql-doc
22
title: IvorySQL
3-
version: v3.0
4-
start_page: v3.0/welcome.adoc
3+
version: v1.8
4+
start_page: v1.8/welcome.adoc
55
asciidoc:
66
attributes:
77
source-language: asciidoc@

CN/modules/ROOT/nav.adoc

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,12 @@
66
** xref:v3.0/4.adoc[管理员指南]
77
** xref:v3.0/5.adoc[运维人员指南]
88
* xref:v3.0/6.adoc[安装部署]
9-
* xref:v3.0/7.adoc[开发者指南]
10-
* xref:v3.0/8.adoc[运维管理指南]
11-
* xref:v3.0/9.adoc[迁移指南]
129
* xref:v3.0/10.adoc[社区贡献指南]
1310
* xref:v3.0/11.adoc[工具参考]
1411
* xref:v3.0/12.adoc[FAQ]
1512
* 功能列表
1613
** xref:v3.0/14.adoc[1、Ivorysql框架设计]
1714
** xref:v3.0/15.adoc[2、GUC框架]
18-
** xref:v3.0/16.adoc[3、大小写转换]
15+
** xref:v3.0/16.adoc[3、适配插件]
1916
** xref:v3.0/17.adoc[4、双模式设计]
20-
** xref:v3.0/18.adoc[5、兼容Oracle like]
21-
** xref:v3.0/19.adoc[6、兼容Oracle匿名块]
22-
** xref:v3.0/20.adoc[7、兼容Oracle函数与存储过程]
23-
** xref:v3.0/21.adoc[8、内置数据类型与内置函数]
2417
** xref:v3.0/22.adoc[9、新增Oracle兼容模式的端口与Ip]

CN/modules/ROOT/pages/v3.0/1.adoc

Lines changed: 22 additions & 176 deletions
Original file line numberDiff line numberDiff line change
@@ -4,169 +4,29 @@
44

55
== 版本介绍
66

7-
[**发行日期:2023年11月17日**]
7+
[**发行日期:2024年11月20日**]
88

9-
IvorySQL 3.0 基于 PostgreSQL 16.0 ,包含来自 PostgreSQL 16.0 的各种修复。有关 PostgreSQL 16.0 中更详细的更新和错误修复,请参阅官方 https://www.postgresql.org/docs/release/16.0/[PostgreSQL 16.0 发行说明] 。
10-
11-
12-
== 版本差异
13-
IvorySQL 3.0 版本在架构上发生了很大的变化,其使用方式与 2.3 版本不同。还有一些以前在 2.3 版本中可用的功能尚不受支持,以下是两个版本的功能差异。
14-
15-
|====
16-
| 功能模块 | 功能|IvorySQL-2.3|IvorySQL-3.0
17-
.14+|内置数据类型|char|不支持|支持
18-
|varchar|支持|支持
19-
|varchar2|支持|支持
20-
|number|不支持|支持
21-
|binary_float|不支持|支持
22-
|binary_double|不支持|支持
23-
|date|支持|支持
24-
|timestamp|不支持|支持
25-
|timestamp with time zone|不支持|支持
26-
|timestamp with local time zone|不支持|支持
27-
|interval year to month|不支持|支持
28-
|interval day to second|不支持|支持
29-
|raw|不支持|支持
30-
|long|不支持|支持
31-
.44+|内置函数|char|不支持|支持
32-
|sysdate|支持|支持
33-
|systimestamp|支持|支持
34-
|add_months|支持|支持
35-
|last_day|支持|支持
36-
|next_day| 不支持|支持
37-
|months_between|支持 | 支持
38-
|current_date | 不支持 | 支持
39-
|current_timestamp | 不支持 | 支持
40-
|new_time | 支持 | 支持
41-
|tz_offset | 不支持 | 支持
42-
|trunc | 支持 | 支持
43-
|instr | 不支持 | 支持
44-
|instrb | 不支持 | 支持
45-
|substr | 不支持 | 支持
46-
|substrb | 支持 | 支持
47-
|trim | 不支持 | 支持
48-
|ltrim | 不支持 | 支持
49-
|rtrim | 不支持 | 支持
50-
|length | 不支持 | 支持
51-
|lengthb | 不支持 | 支持
52-
|rawtohex | 不支持 | 支持
53-
|replace | 不支持 | 支持
54-
|regexp_replace | 不支持 | 支持
55-
|regexp_substr | 不支持 | 支持
56-
|regexp_instr | 不支持 | 支持
57-
|regexp_like | 不支持 | 支持
58-
|to_number | 支持 | 支持
59-
|to_char | 支持 | 支持
60-
|to_date | 支持 | 支持
61-
|to_timestamp | 支持 | 支持
62-
|to_timestamp_tz | 支持 | 支持
63-
|to_yminterval | 不支持 | 支持
64-
|to_dsinterval | 支持 | 支持
65-
|numtodsinterval | 支持 | 支持
66-
|numtoyminterval | 支持 | 支持
67-
|localtimestamp | 不支持 | 支持
68-
|new_time | 不支持 | 支持
69-
|from_tz | 支持 | 支持
70-
|sys_extract_utc | 支持 | 支持
71-
|sessiontimezone | 支持 | 支持
72-
|hextoraw | 不支持 | 支持
73-
|uid | 不支持 | 支持
74-
|USERENV | 不支持 | 支持
75-
.4+|NLS参数|NLS_LENGTH_SEMANTICS|不支持|支持
76-
|NLS_DATE_FORMAT|不支持|支持
77-
|NLS_TIMESTAMP_FORMAT|不支持|支持
78-
|NLS_TIMESTAMP_TZ_FORMAT|不支持|支持
79-
|Function(函数)|支持语法兼容,并支持OUT参数|支持 | 支持
80-
|Procedure(存储过程|支持语法兼容,并支持OUT参数|支持 | 支持
81-
|Anonymous block(匿名块)|支持语法兼容,并支持OUT参数|不支持 | 支持
82-
|嵌套子过程|支持嵌套存储过程、函数等|不支持 | 支持
83-
|Merge|支持PG的Merge功能以及兼容Oralce语法的Merge功能|不支持 | 支持
84-
|q`|支持兼容的转义符|支持 | 支持
85-
|关键字处理|支持数据库中关键字的处理|不支持 | 支持
86-
.4+|对象大小写转换|全部大写加双引号转换为小写|不支持 | 支持
87-
|全部小写加双引号转换为大写|不支持 | 支持
88-
|大小写混合加双引号保持不变|不支持 | 支持
89-
|不加双引号(默认)全部转为小写|不支持 | 支持
90-
|Search Path|支持兼容模式下,默认搜索为sys模式,再搜索pg_catalog模式|不支持 | 支持
91-
|空串|支持Oracle兼容将空串转为NULL|不支持 | 支持
92-
|词法解析器分离|3.0框架的一部分|不支持 | 支持
93-
|包||支持|不支持
94-
|全局唯一索引||支持 | 支持
95-
|GUC切换oracle或pg||支持 | 支持
96-
|层级查询||支持 | 不支持
97-
|NANVL ||支持 | 不支持
98-
|GREATEST||支持 | 不支持
99-
|LEAST||支持 | 不支持
100-
|ADD_DAYS_TO_TIMESTAMP||支持 | 不支持
101-
|DAYS_BETWEEN ||支持 | 不支持
102-
|DAYS_BETWEEN_TMTZ ||支持 | 不支持
103-
|DBTIMEZONE||支持 | 不支持
104-
|TO_MULTI_BYTE||支持 | 不支持
105-
|TO_SINGLE_BYTE||支持 | 不支持
106-
|INTERVAL_TO_SECONDS||支持 |不支持
107-
|HEX_TO_DECIMAL||支持 | 不支持
108-
|TO_BINARY_DOUBLE||支持 | 不支持
109-
|TO_BINARY_FLOAT||支持 | 不支持
110-
|BIN_TO_NUM||支持 | 不支持
111-
|====
9+
IvorySQL 1.8 基于 PostgreSQL 14.8 ,包含来自 PostgreSQL 14.8 的各种修复。有关 PostgreSQL 14.8 中更详细的更新和错误修复,请参阅官方 https://www.postgresql.org/docs/release/14.8/[PostgreSQL 14.8 发行说明] 。
11210

11311
== 已知问题
11412

11513
* 暂无
11614

11715
== 增强功能
11816

119-
=== IvorySQL 框架
120-
121-
122-
* 添加双Parser支持不同的数据库parser https://github.com/IvorySQL/IvorySQL/issues/208[问题细节]
123-
* 添加双端口支持不同的数据库端口号 https://github.com/IvorySQL/IvorySQL/issues/200[问题细节]
124-
* 添加 initdb -m,支持postgres模式或 Oracle模式 https://github.com/IvorySQL/IvorySQL/issues/212[问题细节]
125-
126-
127-
=== SQL兼容
128-
129-
* 兼容oracle merge command https://github.com/IvorySQL/IvorySQL/issues/262[问题细节]
130-
* 兼容oracle q转义 https://github.com/IvorySQL/IvorySQL/issues/293[问题细节]
131-
* 兼容oracle like https://github.com/IvorySQL/IvorySQL/issues/291[问题细节]
132-
133-
=== PL/SQL兼容
134-
135-
* 解决PL/SQL 创建函数/存储过程存在问题 https://github.com/IvorySQL/IvorySQL/issues/477[问题细节]
136-
* 兼容Oracle匿名块 https://github.com/IvorySQL/IvorySQL/issues/304[问题细节]
137-
* 在 SQL parser中创建函数或过程支持嵌套子过程 https://github.com/IvorySQL/IvorySQL/issues/312[问题细节]
138-
* 嵌套的子进程和函数 is/as 不需要声明 https://github.com/IvorySQL/IvorySQL/issues/303[问题细节]
139-
140-
=== 其它
141-
* 在action中增加meson编译 https://github.com/IvorySQL/IvorySQL/issues/512[问题细节]
142-
* 支持meson编译 https://github.com/IvorySQL/IvorySQL/issues/325[问题细节]
143-
* 添加兼容的测试用例 https://github.com/IvorySQL/IvorySQL/issues/479[问题细节]
144-
* 添加contrib回归 https://github.com/IvorySQL/IvorySQL/issues/452[问题细节]
145-
* 兼容btree_gist索引 https://github.com/IvorySQL/IvorySQL/issues/354[问题细节]
146-
* 兼容btree_gin索引 https://github.com/IvorySQL/IvorySQL/issues/353[问题细节]
147-
* 添加Oracle数据类型 GIN索引操作 https://github.com/IvorySQL/IvorySQL/issues/347[问题细节]
148-
* 添加Oracle数据类型 Gist索引操作 https://github.com/IvorySQL/IvorySQL/issues/341[问题细节]
149-
* 兼容Oracle内置数据类型与内置函数 https://github.com/IvorySQL/IvorySQL/issues/239[问题细节]
150-
* 添加plisql扩展 https://github.com/IvorySQL/IvorySQL/issues/211[问题细节]
151-
152-
> 说明:关于新增功能更多介绍请参考本文档中心功能列表
153-
154-
155-
== 问题修复
156-
157-
* 使用meson编译后,initdb执行失败 https://github.com/IvorySQL/IvorySQL/issues/520[问题细节]
158-
* 字符类型 null 值的运算符结果不正确 https://github.com/IvorySQL/IvorySQL/issues/499[问题细节]
159-
* 还原备份时出错 https://github.com/IvorySQL/IvorySQL/issues/483[问题细节]
160-
* ivorysql_ora部分测试用例失败 https://github.com/IvorySQL/IvorySQL/issues/461[问题细节]
161-
* nls参数指定ff精度与表指定精度的三种关系下,对超出长度的数据处理不一致 https://github.com/IvorySQL/IvorySQL/issues/436[问题细节]
162-
* 日期格式中的DD HH.MI,SS AM中数据出现特殊符号后的数据处理与Oracle不一致 https://github.com/IvorySQL/IvorySQL/issues/435[问题细节]
163-
* 对日期格式,各部分 位数校验均存在问题 https://github.com/IvorySQL/IvorySQL/issues/434[问题细节]
164-
* NLS相关参数校验问题 https://github.com/IvorySQL/IvorySQL/issues/433[问题细节]
165-
* 解决NLS参数设置为12小时制,默认完成AM/PM关键字的规则与Oracle不一致问题 https://github.com/IvorySQL/IvorySQL/issues/405[问题细节]
166-
* 带默认值创建的函数/存储过程xx_arguments视图中DEFAULTED字段值为N 问题 https://github.com/IvorySQL/IvorySQL/issues/379[问题细节]
167-
* 无权限的函数/存储过程 可以被all_procedures/all_arguments/all_source视图查看 https://github.com/IvorySQL/IvorySQL/issues/378[问题细节]
168-
* 当自增列类型为numer类型,且指定了精度时,by default on null插入null值时,不是插入的具体序列值,而是插入的null值 https://github.com/IvorySQL/IvorySQL/issues/386[问题细节]
17+
* PostgreSQL 14.8
18+
1. 防止 CREATE SCHEMA 操作破坏 search_path 中的更改。
19+
2. 在内联集合返回函数后,正确执行行级安全策略。
20+
3. 修复在 CREATE SCHEMA 中省略新架构名称时可能导致的崩溃问题。
21+
4. 修复分区表中克隆触发器的启用/禁用问题。
22+
5. 禁止修改存储在索引中的复合类型。
16923

24+
* IvorySQL 1.8
25+
1. 添加默认数据库 "ivorysql"。
26+
2. 支持 X86 和 ARM 架构。
27+
3. 兼容国产操作系统,例如麒麟 V10。
28+
4. 更新部分 IvorySQL 回归测试。
29+
5. 支持更多开源插件,例如 ddlx 0.20、pgvector v0.8.0 和 PGroonga 3.0.0。
17030

17131
== 源代码
17232

@@ -178,26 +38,12 @@ IvorySQL主要包含2个代码仓库,数据库IvorySQL代码仓、IvorySQL网
17838
== 贡献人员
17939
以下个人作为补丁作者、提交者、审阅者、测试者或问题报告者为本版本做出了贡献。
18040

181-
- IvorySQL Pro开发及测试团队
182-
- 谭洋
183-
- 王杰
184-
- 穆帅楠
185-
- 张洪源
186-
- Cary Huang
18741
- Grant Zhou
188-
- David Zhang
189-
- 王守波
190-
- 任娇
191-
- 刘政
192-
- 肖哲凯
193-
- 金华建
194-
- 王丽
195-
- 宋金周
196-
- Leo X.M. Zeng
197-
- 严少安
198-
- M.Imran Zaheer
199-
- Yunhe Xu
200-
- 王皓
201-
- 董小姐
202-
- 韩伟博
203-
42+
- 高雪玉
43+
- 矫顺田
44+
- 梁翔宇
45+
- 吕新杰
46+
- 马继超
47+
- 牛世继
48+
- 仇振超
49+
- 王颖泽

CN/modules/ROOT/pages/v3.0/15.adoc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
| ivorysql.database_mode | 表示当前数据库的模式(pg/oracle),可以通过show命令查看,set/reset/reset all命令不影响该变量
2525
| ivorysql.datetime_ignore_nls_mask | 表示日期格式是否会受NLS参数影响,默认为0,可以通过set命令设置,reset 命令重置,reset all命令会重置该变量
2626
| ivorysql.enable_emptystring_to_NULL | 取值为(on/off),该变量为on时,会将插入的空字符串转成NULL值存储
27-
| ivorysql.identifier_case_switch | 设置字符大小写转换模式
2827
| ivorysql.listen_address | 表示兼容模式监听的地址,在初始化数据库时,从ivorysql.conf文件中读取该配置,在配置文件中修改该值,需要重启数据库生效,可以通过show命令查看
2928
| ivorysql.port | 表示兼容模式下连接的端口号,在初始化数据库时,从ivorysql.conf文件中读取该配置,在配置文件中修改该值,需要重启数据库生效,可以通过show命令查看
3029
| nls_date_format | 表示默认的日期格式,可以通过show命令查看,默认为‘YYYY-MM-DD’,可以通过set命令设置,可以通过reset命令重置回默认值,reset all 命令会重置该变量

CN/modules/ROOT/pages/v3.0/16.adoc

Lines changed: 11 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,63 +2,24 @@
22
:sectnums:
33
:sectnumlevels: 5
44

5-
= 引用标识符的大小写转换设计
5+
= 适配插件
66

77
== 目的
88

9-
- 为了满足PG和Oracle的引用标识符大小写兼容,ivorysql设计了三种引用标识符的大小写转换模式。通过guc参数“identifier_case_switch”选择转换模式;
9+
- 通过RPM包安装的用户已经涵盖了如上插件,用户可以根据自身需求连接数据库后执行create extension语句即可。对于其他插件,用户可自行下载源码并于IvorySQL结合使用进行探索。
1010

11-
== 功能
1211

13-
=== 大小写转换的三种模式(默认为interchange)
12+
== 说明
1413

15-
- 如果 guc参数“identifier_case_switch”值为“interchange”:
14+
- 通过RPM包安装的用户已经涵盖了如上插件,用户可以根据自身需求连接数据库后执行create extension语句即可。对于其他插件,用户可自行下载源码并于IvorySQL结合使用进行探索。
1615

17-
1). 如果双引号所引用的标识符中的字母全部为大写,则将大写转换为小写。
18-
19-
2). 如果双引号所引用的标识符中的字母全部为小写,则将小写转换为大写。
20-
21-
3). 如果用双引号引起来的标识符中的字母是大小写混合的,则保持标识符不变。
22-
23-
=== 初始化数据库集簇时
24-
25-
- 在initdb程序中加入 -C选项设置大小写转换模式,-C对应的值为:
26-
27-
"normal" ------ "0"同义
28-
29-
"interchange" ------ "1"同义
30-
31-
"lowercase" ------ "2"同义
32-
33-
在初始化数据库集簇的过程中,将大小写转换模式保存到data目录的global/pg_control文件中。
34-
35-
=== 测试用例
36-
37-
```
38-
SET ivorysql.enable_case_switch = true;
39-
SET ivorysql.identifier_case_switch = interchange;
40-
CREATE TABLE "ABC"(c1 int, c2 int);
41-
SELECT relname FROM pg_class WHERE relname = 'ABC';
42-
SELECT relname FROM pg_class WHERE relname = 'abc';
43-
SELECT * FROM "ABC";
44-
SELECT * FROM ABC;
45-
SELECT * FROM abc;
46-
SELECT * FROM Abc;
47-
SELECT * FROM "Abc"; -- ERROR
48-
DROP TABLE abc;
49-
50-
CREATE TABLE "Abc"(c1 int, c2 int);
51-
SELECT relname FROM pg_class WHERE relname = 'ABC';
52-
SELECT relname FROM pg_class WHERE relname = 'abc';
53-
SELECT relname FROM pg_class WHERE relname = 'Abc';
54-
SELECT * FROM "ABC"; -- ERROR
55-
SELECT * FROM ABC; -- ERROR
56-
SELECT * FROM abc; -- ERROR
57-
SELECT * FROM Abc; -- ERROR
58-
SELECT * FROM "Abc";
59-
DROP TABLE "Abc";
60-
61-
```
16+
== 使用
17+
详细使用说明请参照插件对应项目网址:
18+
|====
19+
|pgddl | https://github.com/lacanoid/pgddl
20+
|pgvector | https://github.com/pgvector/pgvector
21+
|pgroonga | https://github.com/pgroonga/pgroonga
22+
|====
6223

6324

6425

0 commit comments

Comments
 (0)