lightdb

2024/4/12 23:44:04

lightdb oracle模式支持sys_refcursor类型

背景 在业务产品中,存在Oracle移植过来的函数以及存储过程。它们把sys_refcursor作为参数的类型。 LightDB 23.4版本对此进行了支持。 示例 准备环境 create database test_oracle with lightdb_syntax_compatible_type oracle; \c test_oracle准备数据 crea…

lightdb/pg reload guc 参数机制

lightdb/pg reload guc 参数机制 本文主要讲述调用pg_reload_conf 后,到guc被真正修改之间发送的故事。(基于pg13) pg_reload_conf 函数实现如下: Datum pg_reload_conf(PG_FUNCTION_ARGS) {if (kill(PostmasterPid, SIGHUP)){ereport(WARNING,(errms…

LightDB - oracle_fdw 过滤条件下推增强【24.1】

LightDB - oracle_fdw 过滤条件下推增强【24.1】 1. 字符串比较下推1.1 示例 2. 隐式转换下推2.1 示例 3. nvl 和trim 下推3.1 示例 LightDB 在24.1版本对oracle_fdw 的where下推进行了增强,新增对如下两种情况进行下推: 字符串比较下推,如 …

LightDB支持 no_expand hint【24.1】【oracle兼容】

LightDB 从 24.1 开始支持 oracle no_expand hint。 no_expand hint 用于取消OR-expansion优化,不进行OR-expansion优化。 OR-expansion 在 Oracle 中 优化器会基于cost 优化带析取的查询块(OR), 会拆分这个查询块为多个查询块,…

LightDB版本发布 13.8-23.3

文章目录 Oracle 兼容plorasql 增强MySQL 兼容lightdb 新特性ltjdbc 增强 Oracle 兼容 CREATE SEQUENCE 命令创建序列时支持声明 NOMAXVALUE,兼容Oracle创建序列时 NOMAXVALUE 定义。 示例: create sequence s1 nomaxvalue; \d s1Sequence "publi…

LightDB - 支持quarter 函数[mysql兼容]

LightDB 从23.4版本开始支持 quarter 函数。 简介 quarter 函数用来确定日期对应的季度, 如 ‘20231204’ 对应12月,也就是第四季度。 下面为mysql8.0中描述 Returns the quarter of the year for date, in the range 1 to 4, or NULL if date is NUL…

LightDB-A 兼容oracle支持mod操作符

LightDB-A 兼容oracle支持mod操作符 LightDB-A 为了兼容oracle,从23.3版本开始支持mod操作符,其语义同 ‘%’ 操作符,使用案例如下: select 5 mod 2;?column? ----------1 (1 row)do $$ DECLARE id int; beginid : 7 mod 4;R…

LightDB - 支持substring_index 函数[mysql兼容]

从 23.4 版本开始, LightDB 支持 mysql 的substring_index 函数。下面的这个函数进行介绍 substring_index(str, delim, count ) 这个函数用于从指定字符串str中返回到达分隔符delim出现次数(count)之前的子字符串。。具体见之后用例: mysql 中介绍&a…

lightdb object支持static函数

文章目录 背景介绍语法示例 背景 在信创适配中,从Oracle迁移过来的程序使用STATIC函数。为此LightDB从24.1版本开始,对该功能进行了支持。 介绍 LightDB 24.1版本中对象方法包括下列几种: MEMBER方法:MEMBER方法可以被对象实例…

LightDB to_char 三入参函数支持

文章目录 背景函数示例 背景 在信创适配中,从Oracle迁移过来的程序使用了TO_CHAR函数。 LightDB-X 23.3版本已经支持了两个入参的TO_CHAR函数,并不支持三个入参的TO_CHAR函数。LightDB-X 23.4版本对三个入参的TO_CHAR函数进行了支持。 函数示例 准备…

lightdb UPDATE INDEXES自动分区转换支持全大写索引名

文章目录 背景示例 背景 普通表转分区表,Oracle中的写法习惯索引名会使用大写并用双引号包起来。这导致LightDB 在匹配索引名时提示索引名不存在。 LightDB 23.3.02增量版本对此进行了支持。 示例 准备环境 create database test_oracle with lightdb_syntax_c…

lightdb MySQL兼容模式下timestampdiff函数支持首参无引号

文章目录 背景示例总结 背景 在信创适配中,从MySQL迁移过来的程序使用了timestampdiff函数计算两个日期或时间之间差值,它可以使用年、季、月、日、周、日、时、分、秒、微秒等单位。 LightDB 23.4版本对该函数进行了增强,支持了MySQL的用法…

LightDB 函数/存储过程支持在任意位置使用默认值【24.1】【oracle 兼容】

LightDB 函数/存储过程支持在任意位置使用默认值 在之前的版本中,在 LightDB 中创建的函数或存储过程,每个有默认值的参数后面的参数都需要有默认值(同c中函数, 默认值从右向左赋值)。 在 24.1 版本中支持oracle 中的默认值用法&…

LightDB - 支持 curdate, current_date 函数[mysql兼容]

从23.4 版本开始, LightDB 支持mysql 的curdate, current_date 函数。 curdate, current_date current_date 与 curdate相同, 都是用来获取当前时间,下面是mysql 中的介绍: Returns the current date as a value in ‘YYYY-MM-D…

LightDB 支持 (+) 操作符来指定外连接

LightDB 支持 () 操作符来指定外连接 LightDB 为了更好的兼容 oracle, 从23.2开始支持oracle的 () 操作符来指定外连接方式。下面梳理下 () 的限制已经与oracle的异同。 oracle () 简介 oracle () 操作符用于指定外连接,是 oracle 在 ANSI标准加入前就…

lightdb23.3 表名与包名不能重复

LightDB 表名与包名不能重复 从 LightDB 23.3 版本开始表名和包名不能重复,与 oracle 一致。原先已已支持包名和schema名不能重复。 背景 在之前版本在同一schema 下可以创建相同名字的表和包。这会导致在存储过程中使用%type指定变量类型时,如果存在…

LightDB ecpg 支持 exec sql execute ... end-exec【24.1】【oracle 兼容】

LightDB 从24.1 版本开始支持 oracle pro*c 中执行匿名块的语法(之前可以通过do 语句执行匿名块): EXEC SQL EXECUTEanonymous block END-EXEC;因为匿名块不是SQL标准的一部分,所以此用法也不存在于SQL标准中。 示例 #include …

lightdb object支持authid current_user

文章目录 背景语法示例 背景 在信创适配中,从Oracle迁移过来的程序使用authid current_user。为此LightDB从24.1版本开始,对该功能进行了语法层面上的支持。 语法 CREATE [ OR REPLACE ] TYPE name opt_invoker_rights_clause as_is OBJECT ( [ object…

LightDB - 支持 last_day 函数[mysql兼容]

从 23.4 开始 LightDB 支持 mysql 的 last_day 函数。 目前LightDB 实现last_day的与mysql 并不完成相同,会在示例中列举出不同点, 主要是以下几点: 对于错误日期mysql返回null,lightdb 是直接报错对于一些特殊日期,lightdb 不支…

lightdb Oracle模式下to_char支持格式‘HH24MiSS‘

文章目录 背景示例其他 背景 TO_CHAR(日期类型, 格式串) 函数根据格式串要求将日期类型的数据转为字符串, 以格式串HH24MISS举例,在Oracle中Hh24MiSS hh24miss结果都是一致的。 如下示例: SQL> select to_char(sysdate, HH24MISS) c1 …

lightdb支持cast(expr as unsigned)-mysql兼容

LightDB 从23.4开始支持mysql 的cast(expr as unsigned) 语法,下面说明下不兼容的注意点及示例 注意点 LightDB 还没有实际的unsigned bigint 类型返回类型与mysql不同,LightDB 为 numeric, mysql 为 unsigned bigint.表达式不能为日期/时间…

lightdb 普通用户拥有XMLTYPE类型的访问权限

文章目录 概述示例总结 概述 在信创移植的SQL语句中,有来源于Oracle数据库的SQL语句。 在Oracle中存在getClobVal函数,这个函数是Oracle中sys.XMLType的成员方法。 因此在LightDB23.3版本中实现了TYPE支持定义成员方法并且在新定义的XMLType类型中实现…

lightdb plorasql集合类型新增可变数组

文章目录 背景集合类型可变数组可变数组示例 背景 在信创适配中,从Oracle迁移过来的存储过程使用到可变数组。因此在LightDB-X 23.4版本中对现有的集合类型进行了增强,添加了可变数组类型。 集合类型 在LightDB-X 23.4版本开始plorasql支持的集合类型…