lightdb
文章平均质量分 61
紫无之紫
这个作者很懒,什么都没留下…
展开
-
LightDB 函数/存储过程支持在任意位置使用默认值【24.1】【oracle 兼容】
在之前的版本中,在 LightDB 中创建的函数或存储过程,每个有默认值的参数后面的参数都需要有默认值(同c++中函数, 默认值从右向左赋值)。在 24.1 版本中支持oracle 中的默认值用法,有默认值的参数后面的参数可以没有默认值。原创 2024-04-10 15:04:55 · 312 阅读 · 0 评论 -
LightDB ecpg(pro*c兼容) 支持 exec sql execute ... end-exec【24.1】【oracle 兼容】
LightDB 从24.1 版本开始支持 oracle pro*c 中执行匿名块的语法(之前可以通过do 语句执行匿名块):end-exec;因为匿名块不是SQL标准的一部分,所以此用法也不存在与SQL标准中。原创 2024-03-08 17:01:28 · 564 阅读 · 0 评论 -
LightDB支持 no_expand hint【24.1】【oracle兼容】
LightDB 从 24.1 开始支持 oracle no_expand hint。no_expand hint 用于取消OR-expansion优化,不进行OR-expansion优化。原创 2024-03-07 16:59:08 · 473 阅读 · 0 评论 -
LightDB - ecpg 支持dml 中使用 return into 【24.1】
为了兼容oracle pro*c 中return into 的用法,从24.1 开始, LightDB 也支持通过return into 来返回return 的值到c变量中。原创 2024-02-29 11:30:11 · 397 阅读 · 0 评论 -
LightDB - oracle_fdw join下推增强【24.1】
从24.1版本开始, LightDB 支持对semi-join 进行下推,可以把semi-join转为exists 子查询下推到 Oracle 中。同时也支持对insert select语句中的join 进行下推。原创 2024-01-23 10:38:38 · 528 阅读 · 0 评论 -
LightDB - oracle_fdw 过滤条件下推增强【24.1】
在 LightDB 中 trim 会转换为 ltrim, rtrim 和 btrim 函数执行,原先已支持 ltrim, rtrim 函数的下推,24.1 支持了对btrim 的下推,也即完全支持了 trim 的下推。但对于某些场景,比如字符串都是数字,是个id, 那么不管什么排序规则,大小比较都是相同的。oracle_fdw 不支持字符串比较下推是因为 LightDB 和 Oracle 的排序规则可能不同,下推和不下推的结果可能不同,因此不进行下推。原创 2024-01-18 11:18:22 · 689 阅读 · 0 评论 -
LightDB - 支持substring_index 函数[mysql兼容]
从 23.4 版本开始, LightDB 支持 mysql 的substring_index 函数。下面的这个函数进行介绍这个函数用于从指定字符串str中返回到达分隔符delim出现次数(count)之前的子字符串。。具体见之后用例:mysql 中介绍:substring_index(str varchar, delim varchar, count integer) RETURNS varchar效果与mysql相同,不再列举mysql用例原创 2023-12-07 15:47:12 · 107 阅读 · 0 评论 -
LightDB - 支持 curdate, current_date 函数[mysql兼容]
从23.4 版本开始, LightDB 支持mysql 的curdate, current_date 函数。原创 2023-12-06 16:00:44 · 139 阅读 · 0 评论 -
LightDB - datediff 函数增强[mysql兼容]
LightDB在 23.4 版本对原先支持的mysql的datediff函数进行了增强,由原先只支持如下函数匹配:扩展到支持如下函数匹配:datediff 简介datediff 用于计算两个日期的差值,下面是mysql中对其的介绍:lightdb:mysql:原创 2023-12-06 09:16:57 · 130 阅读 · 0 评论 -
LightDB - 支持 last_day 函数[mysql兼容]
从 23.4 开始 LightDB 支持 mysql 的 last_day 函数。目前LightDB 实现last_day的与mysql 并不完成相同,会在示例中列举出不同点, 主要是以下几点:last_day 用于获取指定日期所在月份的最后一天,下面是mysql中的介绍:原创 2023-12-05 13:24:41 · 160 阅读 · 0 评论 -
LightDB - 支持quarter 函数[mysql兼容]
quarter 函数用来确定日期对应的季度, 如‘20231204’ 对应12月,也就是第四季度。下面为mysql8.0中描述LightDB 目前支持只date 和 datetime(即timestamp)类型的入参。其他与mysql一致。原创 2023-12-04 17:26:38 · 451 阅读 · 0 评论 -
LightDB - append hint
可以通过使用 append hint 对insert select 语句使用 direct-path insertLightDB 从23.4 开始支持 append hint, 但由于LightDB 不支持 direct-path insert, 因此即使使用了hint,也不会起效。目前只是为了兼容这种用法。原创 2023-12-01 17:12:55 · 87 阅读 · 0 评论 -
LightDB - no_star_transformation
LightDB 从23.4开始支持 no_star_transformation hint。在Oracle 中no_star_transformation hint 用于提示优化器不执行星型转换。LightDB 不支持星型转换,因此此hint总会起效,下面先介绍下星型转换,然后介绍下hint的用法。原创 2023-11-30 16:42:13 · 82 阅读 · 0 评论 -
LightDB-no_push_pred hint
对于不能合并的视图,有两种连接方式,一种是不下推连接谓词,与视图的结果集进行连接;一种是下推连接谓词,对每个驱动行都获取对应的视图结果集(nestloop)。no_push_pred hint 在oracle 中用于不下推连接谓词到不能合并的视图中。原创 2023-11-29 14:59:51 · 112 阅读 · 0 评论 -
lightdb-ignore_row_on_dupkey_index
LightDB 从23.4 开始支持oracle的 ignore_row_on_dupkey_index hint, 这个hint是用来忽略唯一键冲突的。类似与mysql的 insert ignore。语法如下:在LightDB中ignore_row_on_dupkey_index的效果等同于on conflict do nothing 子句。下面说明一下这个hint的注意点以及使用示例。原创 2023-11-27 16:14:09 · 163 阅读 · 0 评论 -
LightDB-opt_param hint支持
LightDB 从23.4 版本开始支持opt_param hint, 用来设置优化器相关的guc参数,用法和oracle的opt_param 相同。原创 2023-11-20 15:19:09 · 66 阅读 · 0 评论 -
lightdb-no_push_subq/push_subq
LightDB 从 23.4 版本开始支持no_push_subq/push_subq hint,在 LightDB 中下推过滤条件是RBO,会尽量下推过滤条件以过滤尽可能多的数据。通过使用这个 no_push_subq hint 可以强制不下推带子链接的过滤条件(带子链接的过滤条件可能效率较差)。使用push_subq hint 可以强制下推带子链接的过滤条件(LIghtDB的默认操作),一般不需使用。需要注意的是,对于被pull up 后的子链接不起效(因为已经不是过滤条件了)。原创 2023-11-16 10:59:59 · 66 阅读 · 0 评论 -
lightdb支持cast(expr as unsigned)-mysql兼容
LightDB 从23.4开始支持mysql 的cast(expr as unsigned) 语法,下面说明下不兼容的注意点及示例。原创 2023-11-08 19:59:24 · 152 阅读 · 0 评论 -
LightDB - oracle匿名块支持绑定参数方式执行
LightDB 从23.4开始,支持使用绑定参数的方式执行oracle匿名块。绑定参数支持的参数个数为65535(libpq & jdbc)。。下面介绍通过libpq 执行带绑定参数的匿名块。原创 2023-10-10 14:23:32 · 102 阅读 · 0 评论 -
lightdb23.3 调整orafce插件中函数的并发属性
之前版本的orafce插件中的有些函数并发属性为unsafe(包括常用的length, ltrim,lpad 等函数), 导致在执行使用这些函数的SQL时,SQL不能并行执行。在23.3版本,我们对orafce 插件中的函数进行了梳理,对可以设置为safe 的函数进行了设置。原创 2023-09-04 17:30:03 · 91 阅读 · 0 评论 -
lightdb23.3 表名与包名不能重复
从 LightDB 23.3 版本开始表名和包名不能重复,与 oracle 一致。原先已已支持包名和schema名不能重复。原创 2023-08-11 14:33:53 · 110 阅读 · 0 评论 -
LightDB23.3 支持binary_float/binary_double
LightDB 从 23.3 版本开始在 oracl e模式下支持 oracle 的 binary_float 和 binary_double。都遵循IEEE754标准。原创 2023-08-02 19:11:59 · 156 阅读 · 0 评论 -
lightdb23.3 ecpg支持多种注释方式
原版的pg只支持在 ecpg 的 EXEC SQL 中使用 ‘/**/’ 形式的注释,因为ecpg 会转换SQL, 把SQL 转换为一行,去掉了换行符,导致 ‘–’ 和 ‘//’ 这种行注释的使用会有问题。在oracle 的pro*c 中这两种注释都支持。在使用ecpg 程序转换时, 会把’–’ 和 ‘//’ 注释去掉。LightDB 在 23.3 版本支持在ecpg代码中使用 ‘–’ 和 ‘//’ 注释。原创 2023-07-31 19:11:30 · 261 阅读 · 0 评论 -
LightDB支持INSERT ALL语法
转载自 https://blog.csdn.net/s_lisheng/article/details/130646539。Oracle中支持INSERT ALL语法,可进行多表插入与条件插入,对此,LightDB对该语法实现了兼容。转载 2023-06-16 11:00:00 · 52 阅读 · 0 评论 -
lightdb ecpg 支持匿名块绑定参数
作为输入输出参数,以上述代码为例,会把上述匿名执行块转为如下的形式,作为 prepare stmt 发送给数据库。作为 调用存储过程传入的参数, 绑定v_error_no作为$1, iReturnCode 作为 $2。的block 相当于存储过程的block, (int, int) 相当于存储过程的入参定义,首先是不支持oracle 匿名块, 然后是不支持匿名块中绑定参数(:v_error_no 形式)。LightDB 从 23.2 版本开始支持在 ecpg 中使用绑定参数的匿名执行块。原创 2023-06-13 14:05:50 · 870 阅读 · 0 评论 -
lightdb-x 支持的oracle视图统计
视图主要基于oracle 11g,对于不支持的字段返回NULL。具体支持哪些字段,及字段与oracle的区别请参考。USER_JOBS , DBA_JOBS_RUNNING 获取的是使用lt_cron插件创建的job的信息。USER前缀开头的视图查询的是当前schema 下的信息, 即search_path 中第一个有效的schema。ALL前缀开头的视图没有权限校验,查询的是数据库下的所有信息。同DBA前缀开头视图。原创 2023-05-11 14:00:00 · 379 阅读 · 0 评论 -
pg 提升子链接源码分析
pg 支持对any 类型(包括in, any, some)的子链接提升,把子链接中的查询提升到from中作为一个子查询与表构成semijoin。此子查询可以被 pull up subquery 流程继续提升。提升条件:子链接的查询中不能引用父查询中表的列属性 any (select * from t2 where )子链接的条件需要引用父查询中的表的列属性 t1.key1 = any子链接的条件引用的表需要符合要求available_rels,比如左连接,子链接的条件只能使用右表的字段才能提升。原创 2023-05-05 16:32:01 · 1145 阅读 · 0 评论 -
LightDB 支持 (+) 操作符来指定外连接
oracle (+) 操作符用于指定外连接,是 oracle 在 ANSI标准加入前就推出的,后面的版本支持 (+) 操作符只是为了向后兼容。oracle 不推荐使用 (+)建议使用from 子句中的outer join, 因为oracle (+) 具有一些限制。原创 2023-04-26 14:30:35 · 630 阅读 · 1 评论 -
lightdb/pg reload guc 参数机制
本文主要讲述调用pg_reload_conf 后,到guc被真正修改之间发送的故事。(基于pg13)pg_reload_conf 会发送SIGHUP到postmaster 进程。而postmaster 进程中 SIGHUP 信号的处理函数为 SIGHUP_handler(主要流程是先在本进程reload conf(ProcessConfigFile), 然后给其他子进程发送 SIGHUP 信号。下面讲一下 postgres (客户端连接进程)收到 SIGHUP 的处理。原创 2023-04-20 15:59:12 · 389 阅读 · 0 评论 -
pg编码相关问题梳理
lightdb/postgres编码相关问题。在使用Lightdb 过程中会涉及到多处的编码设置。下面分两种情况进行讨论,一种是通过ltsql/psql 交互式执行SQL, 一种是通过-f 选项执行SQL文件。原创 2023-04-18 14:07:09 · 1056 阅读 · 0 评论 -
lightdb-sql拦截
通过新增 lt_sql_inspect 模块的方式对 SQL 进行拦截,目前 lt_sql_inspect 通过实现 planner_hook 和 post_parse_analyze_hook 的方式(hook 是一种用来控制 lightdb 表现的方式)来对 SQL 进行拦截。对于查询语句,如果只涉及单表,并且没有where条件,且没有 limit ,没有offset, 那就会被拦截。原创 2023-02-17 15:46:26 · 417 阅读 · 0 评论 -
lightdb-pq_distribute hint
lightdb 并发 join 支持两种模式,一种是只有外表并发,一种则内外表都可以并发(只支持hash join)。inner_table: 指定 join 中的内表名outer_distribution:指定外表的模式inner_distribution:指定内表的模式;hash, hash。其中hash, hash只支持语法。none, broadcast: 表示外表并发,内表广播。原创 2023-02-08 14:53:47 · 406 阅读 · 0 评论 -
lightdb-no_unnest hint
Lightdb 从 23.1 版本开始支持 oracle 中的unnest/no_unnest hint。原创 2023-02-03 14:00:36 · 317 阅读 · 0 评论 -
lightdb_service.py - lightdb一键启停脚本
lightdb_service.py 用于对lightdb 服务进行简易的一键启停操作,包括高可用模式,分布式模式和单机模式。lightdb_service.py 基于python3开发。原创 2022-12-29 14:45:19 · 412 阅读 · 1 评论 -
lightdb22.4-分布式逻辑备份与恢复
在22.4 之前对于分布式进行逻辑备份只能通过对cn节点执行lt_dump 来备份所有数据,虽然有-j选项来进行并发备份, 但-j只支持在表间进行并发,表内不能进行并发。在22.4 通过lt_distribute_dump.py脚本可以支持对表内数据进行并发备份, 通过lt_distributed_restore.py脚本 支持对表内数据进行并发恢复。原创 2022-12-15 20:33:28 · 280 阅读 · 0 评论 -
lightdb-分布式物理备份脚本
lt_distributed_probackup.py 通过指定cn节点信息,可以实现对整个分布式集群的备份,在原集群异常时对原集群恢复直接恢复即可,恢复到新集群需要指定新的cn和dn信息。原创 2022-12-09 09:47:10 · 335 阅读 · 0 评论 -
lightdb22.4-新增优化器提示cardinality 和ordered_predicates
下面对这两个hint 进行介绍。原创 2022-11-18 15:50:06 · 344 阅读 · 0 评论 -
lightdb-归档日志清理优化(22.4)
在LightDB 22.4 版本我们对归档日志清理进行了优化。原创 2022-11-08 17:22:48 · 252 阅读 · 0 评论 -
lightdb-归档日志清理
lightdb 归档清理原创 2022-10-24 13:44:40 · 190 阅读 · 0 评论 -
Oracle 与LightDB alter table 语法对比(部分)
本文对oracle(21)和lightdb(22.3)中常用的一些alter table 语法进行比较, 包括修改字段属性, 修改约束,修改表为分区表等。原创 2022-10-13 17:02:42 · 286 阅读 · 0 评论