1. 版本介绍
[发行日期:2023年11月17日]
IvorySQL 3.0 基于 PostgreSQL 16.0 ,包含来自 PostgreSQL 16.0 的各种修复。有关 PostgreSQL 16.0 中更详细的更新和错误修复,请参阅官方 PostgreSQL 16.0 发行说明 。
2. 版本差异
IvorySQL 3.0 版本在架构上发生了很大的变化,其使用方式与 2.3 版本不同。还有一些以前在 2.3 版本中可用的功能尚不受支持,以下是两个版本的功能差异。
功能模块 |
功能 |
IvorySQL-2.3 |
IvorySQL-3.0 |
内置数据类型 |
char |
不支持 |
支持 |
varchar |
支持 |
支持 |
|
varchar2 |
支持 |
支持 |
|
number |
不支持 |
支持 |
|
binary_float |
不支持 |
支持 |
|
binary_double |
不支持 |
支持 |
|
date |
支持 |
支持 |
|
timestamp |
不支持 |
支持 |
|
timestamp with time zone |
不支持 |
支持 |
|
timestamp with local time zone |
不支持 |
支持 |
|
interval year to month |
不支持 |
支持 |
|
interval day to second |
不支持 |
支持 |
|
raw |
不支持 |
支持 |
|
long |
不支持 |
支持 |
|
内置函数 |
char |
不支持 |
支持 |
sysdate |
支持 |
支持 |
|
systimestamp |
支持 |
支持 |
|
add_months |
支持 |
支持 |
|
last_day |
支持 |
支持 |
|
next_day |
不支持 |
支持 |
|
months_between |
支持 |
支持 |
|
current_date |
不支持 |
支持 |
|
current_timestamp |
不支持 |
支持 |
|
new_time |
支持 |
支持 |
|
tz_offset |
不支持 |
支持 |
|
trunc |
支持 |
支持 |
|
instr |
不支持 |
支持 |
|
instrb |
不支持 |
支持 |
|
substr |
不支持 |
支持 |
|
substrb |
支持 |
支持 |
|
trim |
不支持 |
支持 |
|
ltrim |
不支持 |
支持 |
|
rtrim |
不支持 |
支持 |
|
length |
不支持 |
支持 |
|
lengthb |
不支持 |
支持 |
|
rawtohex |
不支持 |
支持 |
|
replace |
不支持 |
支持 |
|
regexp_replace |
不支持 |
支持 |
|
regexp_substr |
不支持 |
支持 |
|
regexp_instr |
不支持 |
支持 |
|
regexp_like |
不支持 |
支持 |
|
to_number |
支持 |
支持 |
|
to_char |
支持 |
支持 |
|
to_date |
支持 |
支持 |
|
to_timestamp |
支持 |
支持 |
|
to_timestamp_tz |
支持 |
支持 |
|
to_yminterval |
不支持 |
支持 |
|
to_dsinterval |
支持 |
支持 |
|
numtodsinterval |
支持 |
支持 |
|
numtoyminterval |
支持 |
支持 |
|
localtimestamp |
不支持 |
支持 |
|
new_time |
不支持 |
支持 |
|
from_tz |
支持 |
支持 |
|
sys_extract_utc |
支持 |
支持 |
|
sessiontimezone |
支持 |
支持 |
|
hextoraw |
不支持 |
支持 |
|
uid |
不支持 |
支持 |
|
USERENV |
不支持 |
支持 |
|
NLS参数 |
NLS_LENGTH_SEMANTICS |
不支持 |
支持 |
NLS_DATE_FORMAT |
不支持 |
支持 |
|
NLS_TIMESTAMP_FORMAT |
不支持 |
支持 |
|
NLS_TIMESTAMP_TZ_FORMAT |
不支持 |
支持 |
|
Function(函数) |
支持语法兼容,并支持OUT参数 |
支持 |
支持 |
Procedure(存储过程 |
支持语法兼容,并支持OUT参数 |
支持 |
支持 |
Anonymous block(匿名块) |
支持语法兼容,并支持OUT参数 |
不支持 |
支持 |
嵌套子过程 |
支持嵌套存储过程、函数等 |
不支持 |
支持 |
Merge |
支持PG的Merge功能以及兼容Oralce语法的Merge功能 |
不支持 |
支持 |
q` |
支持兼容的转义符 |
支持 |
支持 |
关键字处理 |
支持数据库中关键字的处理 |
不支持 |
支持 |
对象大小写转换 |
全部大写加双引号转换为小写 |
不支持 |
支持 |
全部小写加双引号转换为大写 |
不支持 |
支持 |
|
大小写混合加双引号保持不变 |
不支持 |
支持 |
|
不加双引号(默认)全部转为小写 |
不支持 |
支持 |
|
Search Path |
支持兼容模式下,默认搜索为sys模式,再搜索pg_catalog模式 |
不支持 |
支持 |
空串 |
支持Oracle兼容将空串转为NULL |
不支持 |
支持 |
词法解析器分离 |
3.0框架的一部分 |
不支持 |
支持 |
包 |
支持 |
不支持 |
|
全局唯一索引 |
支持 |
支持 |
|
GUC切换oracle或pg |
支持 |
支持 |
|
层级查询 |
支持 |
不支持 |
|
NANVL |
支持 |
不支持 |
|
GREATEST |
支持 |
不支持 |
|
LEAST |
支持 |
不支持 |
|
ADD_DAYS_TO_TIMESTAMP |
支持 |
不支持 |
|
DAYS_BETWEEN |
支持 |
不支持 |
|
DAYS_BETWEEN_TMTZ |
支持 |
不支持 |
|
DBTIMEZONE |
支持 |
不支持 |
|
TO_MULTI_BYTE |
支持 |
不支持 |
|
TO_SINGLE_BYTE |
支持 |
不支持 |
|
INTERVAL_TO_SECONDS |
支持 |
不支持 |
|
HEX_TO_DECIMAL |
支持 |
不支持 |
|
TO_BINARY_DOUBLE |
支持 |
不支持 |
|
TO_BINARY_FLOAT |
支持 |
不支持 |
|
BIN_TO_NUM |
支持 |
不支持 |
5. 问题修复
-
使用meson编译后,initdb执行失败 问题细节
-
字符类型 null 值的运算符结果不正确 问题细节
-
还原备份时出错 问题细节
-
ivorysql_ora部分测试用例失败 问题细节
-
nls参数指定ff精度与表指定精度的三种关系下,对超出长度的数据处理不一致 问题细节
-
日期格式中的DD HH.MI,SS AM中数据出现特殊符号后的数据处理与Oracle不一致 问题细节
-
对日期格式,各部分 位数校验均存在问题 问题细节
-
NLS相关参数校验问题 问题细节
-
解决NLS参数设置为12小时制,默认完成AM/PM关键字的规则与Oracle不一致问题 问题细节
-
带默认值创建的函数/存储过程xx_arguments视图中DEFAULTED字段值为N 问题 问题细节
-
无权限的函数/存储过程 可以被all_procedures/all_arguments/all_source视图查看 问题细节
-
当自增列类型为numer类型,且指定了精度时,by default on null插入null值时,不是插入的具体序列值,而是插入的null值 问题细节
6. 源代码
IvorySQL主要包含2个代码仓库,数据库IvorySQL代码仓、IvorySQL网站仓:
-
IvorySQL代码仓: https://github.com/IvorySQL/IvorySQL
-
IvorySQL网站仓: https://github.com/IvorySQL/Ivory-www