61.2. 版本发布 13.8-24.3

61.2.1. Oracle 兼容
61.2.2. pl/sql 增强
61.2.3. MySQL 兼容
61.2.4. Lightdb-x 新功能

版本发布 date: 2024-12-31

61.2.1. Oracle 兼容

  • 增加对 Oracle 的 [DBA/ALL/USER]_SCHEDULER_JOBS 和 [DBA/ALL/USER]_SCHEDULER_RUNNING_JOBS 视图的支持,目前仅支持部分字段。

    详细信息请参阅 SCHEDULER_JOBSSCHEDULER_RUNNING_JOBS

  • 部分支持 Oracle 的 DBMS_SCHEDULER 包。

    支持 DBMS_SCHEDULER.CREATE_JOB, DBMS_SCHEDULER.DROP_JOB, DBMS_SCHEDULER.ENABLE, DBMS_SCHEDULER.DISABLE, DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING, DBMS_SCHEDULER.SET_ATTRIBUTE。

    详细信息请参阅 DBMS_SCHEDULER

  • proc 支持 EXEC ORACLE OPTION (ORACA = YES) 。

  • proc 支持结构体类型多别名 。

  • 支持SELECT UNIQUE column_name[,…] |(column_name)[,…] FROM from_item [, ...] [ ORDER BY expression ]用法。 unique后面支持直接表达式(带括号后者不带括号),如unique 表达式,(表达式),…。

  • like条件语句后面内容存在反斜杠情况下,兼容ORACLE,之前版本会被当做转义符号与Oracle不符。

  • 支持select字段与group by字段不一致。

  • trunc函数支持date类型的差值作为入参。

  • CREATE INDEX 支持使用 CASE WHEN 表达式。

  • 支持 CREATE BITMAP INDEX语法

  • 支持定义视图时,如果对象不带schema前缀则优先寻找视图所在schema下的对象。

  • 支持 CREATE VIEW 中带有 CONSTRAINT pk_name PRIMARY KEY (col) RELY DISABLE 语法。

  • 兼容Oracle的多行注释/* */

  • MERGE INTO 的 INSERT 语法后面支持添加块注释

  • 创建表时支持number(*,0)数据类型

  • nvl兼容,支持nvl(oracle.date, oracle.date)返回oracle.date类型

61.2.2. pl/sql 增强

  • plorasql支持多个EXCEPTION WHEN处理分支。用户在plorasql中可以预定义多个异常处理块,当程序执行过程中遇到了执行异常,执行会进入对应的异常处理模块。样例如下:

    create table t_uniq(a int primary key);
    
    CREATE OR REPLACE PROCEDURE pro100 is
    	a int:=0;
    BEGIN  
    	insert into t_uniq values(1);
    	insert into t_uniq values(1);
    	a:=10/0;
    EXCEPTION
    	when unique_violation then
    		dbms_output.put_line('unique_violation');
    	when division_by_zero then
    		dbms_output.put_line('division_by_zero');
    	when others then
    		dbms_output.put_line(sqlcode||' '||sqlerrm);
    END;  
    /
    
    call pro100;
    unique_violation
    CALL
                
  • 支持基于recordvarray. 样例如下:

    CREATE OR REPLACE PROCEDURE pro100 is
    	type test_rc_type is record(a int,b varchar,d date);
    	type va_type is varray(3) of test_rc_type;
    	v1 va_type := va_type();
    BEGIN  
    	v1(0).a = 11+88;
    	v1(1).b = 'ab'||'cd';
    	v1(2).d = to_date('2022-01-01','yyyy-mm-dd') + interval '1 day';
    	
    	dbms_output.put_line(v1(0).a || ',' || v1(1).b || ',' || v1(2).d);
    END;  
    /
    
    call pro100;
    99,abcd,2022-01-02 00:00:00
    CALL
                  
  • PL/SQL 支持语句级的 SYSDATE。

  • 支持匿名块、存储过程和函数中使用LOCK TABLE tablename IN EXCLUSIVE MODE。

  • 支持string(n)数据类型。

  • 支持存储过程中调用 RAISE_APPLICATION_ERROR。

  • 存储过程体中访问不带 schema 前缀的对象时优先寻找存储过程自身 schema 下的对象。

  • 支持在存储过程中使用 SYSDATE() 函数。

  • 支持 UNPIVOT 功能。

  • FOR xxx IN 语法支持非保留关键字做变量名,(如INFO 等)。

  • 支持GOTO使用非保留关键字作为标签名。

  • CREATE PACKAGE 支持变量命名为关键字(TABLESPACE, NO, YES )。

  • CREATE PACKAGE 支持 VARRAY 类型。

  • CREATE PACKAGE BODY 时支持 CONSTANT 常量定义。

61.2.3. MySQL 兼容

  • 本版本没有新增功能。

61.2.4. Lightdb-x 新功能

  • 通过新参数 lightdb_prefer_semi 支持不将半连接转换为内连接。

  • ltsql客户端连接时显示当前节点和集群信息,单机/单机分布式/多机单实例分布式、CN/DN。

  • lightdb 用户安全策略优化,在创建/修改角色(role)时,可以通过选项制定是否有可登录权限。

  • lightdb 密码安全策略优化,审计可配置黑白名单。 连接客户端黑名单,不记录指定客户端的审计日志;连接客户端白名单,记录指定客户端的审计日志;操作对象的黑名单,不记录指定表的审计日志;操作对象的白名单,记录指定表的审计日志; 可配置多个客户端。

  • lt_hba.conf增加校验,address中非localhost和127.0.0.1的ip,其他客户端有效ip的METHOD均禁止配置为trust(免密),如配置则无法生效报错。

  • 单机分布式访问分区表数据时候,执行计划改成union all的执行计划。

  • lt_upgrade升级逻辑优化。 用户在执行lt_upgrade版本升级的时候,默认执行lt_upgrade_check检查机制进行升级,并能正常升级成功。 lt_upgrade_check检查点如下: 1、关键字检查; 2、函数体、存储过程体、视图体、索引、触发器检查; 3、存储空间检测;

  • 分布式集群create和drop database默认为分布式库。部署分布式集群时自动创建分布式表。

  • lightdb 内置对象oid固定。

  • 开启语句级回滚后支持dump备份数据库。

  • 子查询结果集缓存优化,提升查询效率。

  • 支持自动调整会话排序或哈希区大小 减少磁盘排序。

  • 支持通过 GUC 控制 Parallel Worker 数量选择算法为线性增长。