大象资讯 | IvorySQL 3.3 发版

时间:2024-07-11 22:47:01

IvorySQL 3.3 于 2024.07.11 日发版,该版本基于 PostgreSQL 16.3,修复若干问题。

IvorySQL 是一款以 PostgreSQL 为基础进行开发,并且兼容 Oracle 的开源数据库。该项目是在 Apache 2.0 许可证下发布的,社区鼓励且欢迎所有类型的贡献和参与。

IvorySQL 3.3 增强:

  1. 将 pg_stats_ext 和 pg_stats_ext_exprs 条目的可见性限制为表所有者。
  2. 修复将多个 VALUES 行插入到作为数组或复合类型域的目标列中的问题。
  3. 对于带有 DO NOTHING 子句的 MERGE 语句,要求对目标表具有 SELECT 权限。
  4. 修复处理 MERGE 中自我修改元组的问题。
  5. 修复当表按 boolean 列分区且查询中包含布尔 IS NOT 子句时错误地修剪 NULL 分区的问题。

IvorySQL 3.3 问题修复:

  • 修复使用 SYSDATE 作为日期默认值时的问题 #633
  • 修复使用 SYSTIMESTAMP 作为日期默认值时的问题 #661
  • 修复 nls mask 时间戳精度问题 #634
  • 为 ivorysql.datetime_ignore_nls_mask 参数添加更多测试用例 #657
  • 修复兼容模式下使用 timestamp(7) 类型返回错误问题 #658
  • 数据类型 VARCHAR2 问题的支持 #652
  • 解决 docker_library 项目中,有关 IvorySQL 的相关问题 #4

编译安装 IvorySQL 3.3 后,查看版本信息。

[ivorysql@ivorysql3 ~]$ psql
psql (16.3-ShawnYan)
Type "help" for help.

ivorysql=# select version();
                                                             version
----------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 16.3-ShawnYan (IvorySQL 3.3) on x86_64-pc-linux-gnu, compiled by gcc (GCC) 11.4.1 20231218 (Red Hat 11.4.1-3), 64-bit
(1 row)

ivorysql=# \l
                                                   List of databases
   Name    |  Owner   | Encoding | Locale Provider | Collate |  Ctype  | ICU Locale | ICU Rules |   Access privileges
-----------+----------+----------+-----------------+---------+---------+------------+-----------+-----------------------
 ivorysql  | ivorysql | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           |
 postgres  | ivorysql | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           |
 template0 | ivorysql | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/ivorysql          +
           |          |          |                 |         |         |            |           | ivorysql=CTc/ivorysql
 template1 | ivorysql | UTF8     | libc            | C.UTF-8 | C.UTF-8 |            |           | =c/ivorysql          +
           |          |          |                 |         |         |            |           | ivorysql=CTc/ivorysql
(4 rows)

ivorysql.datetime_ignore_nls_mask 测试用例

datetime_ignore_nls_mask:默认值为0,表示不屏蔽任何类型,所有时间格式均由nls格式化。

ivorysql=# set ivorysql.compatible_mode to oracle;
SET
ivorysql=# show nls_date_format;
 nls_date_format 
-----------------
 YYYY-MM-DD
(1 row)

ivorysql=# show ivorysql.datetime_ignore_nls_mask;
 ivorysql.datetime_ignore_nls_mask 
-----------------------------------
 0
(1 row)

ivorysql=# create table t(a int, c date);
CREATE TABLE
ivorysql=# insert into t values(1, '2024/07/11');
INSERT 0 1
ivorysql=# table t;
 a |     c      
---+------------
 1 | 2024-07-11
(1 row)
ivorysql=# set nls_date_format to 'yy-mm-dd';
SET
ivorysql=# insert into t values(2, '24/07/11');
INSERT 0 1
ivorysql=# insert into t values(2, '2024/07/11');
INSERT 0 1
ivorysql=# insert into t values(2, '2024-07-11');
INSERT 0 1
ivorysql=# table t;
 a |    c     
---+----------
 1 | 24-07-11
 2 | 24-07-11
 2 | 24-07-11
 2 | 24-07-11
(4 rows)

设定datetime_ignore_nls_mask为1,表示date类型不经过nls格式化。

ivorysql=# set ivorysql.datetime_ignore_nls_mask=1;
SET
ivorysql=# show ivorysql.datetime_ignore_nls_mask;
 ivorysql.datetime_ignore_nls_mask 
-----------------------------------
 1
(1 row)

ivorysql=# insert into t values(2, '24/07/11');
LINE 1: insert into t values(2, '24/07/11');
                                ^
HINT:  Perhaps you need a different "datestyle" setting.
ivorysql=# insert into t values(2, '2024/07/11');
INSERT 0 1

更多 IvorySQL 3 的内容参见:

  • PG 开源社区喜迎 IvorySQL 3.2 版本
  • IvorySQL 合集

???? 往期精彩 ▼

  • [Oracle]
    • Oracle 数据库全面升级为 23ai
    • python-oracledb 已率先支持 Oracle 23ai
    • 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
  • [MySQL]
    • MySQL 9.0 的 VECTOR 文档更新
    • MySQL 9.0.0 新鲜出炉!支持向量类型
    • 「合集」MySQL 8.x 系列文章汇总
    • 如何选择适合的 MySQL Connector/J 版本
  • [TiDB]
    • 星辰考古:TiDB v4.0 进化前夜
    • 国产基础软件“出海”标杆炼成记
    • 敢于公布BUG的国产数据库才是好数据库
  • [PG]
    • [RL9] Rocky Linux 9.4 搭载 PG 16.1
    • 即将告别PG 12,建议升级到PG 16.3版本
    • 后 EL 7 时代,PG 16 如何在 CentOS 7 上运行

-- / END / --

???? 这里可以找到我

  • 微信公众号: 少安事务所
  • 墨天轮: 严少安
  • PGFans: 严少安
  • ITPUB: 少安事务所
  • TiDB 专栏: @ShawnYan

如果这篇文章为你带来了灵感或启发,就请帮忙点『』or『在看』or『转发』吧,感谢!ღ( ´・ᴗ・` )~