自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 资源 (2)
  • 收藏
  • 关注

原创 【oracle兼容】lightdb 支持 dba/all/user_objects 的created 字段

从24.2 版本开始 lightdb oracle 模式下的dba/all/user_objects 的created 字段的值不再为null,3具有实际值,可以用来查看对象的创建时间(同时新增了系统表lt_object_ext 用来记录对象创建时间,具体可以参看官方文档。

2024-08-12 16:18:19 313

原创 pg 统计信息及索引cost 简介

数据采样数据统计。

2024-04-30 14:38:41 436

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

在之前的版本中,在 LightDB 中创建的函数或存储过程,每个有默认值的参数后面的参数都需要有默认值(同c++中函数, 默认值从右向左赋值)。在 24.1 版本中支持oracle 中的默认值用法,有默认值的参数后面的参数可以没有默认值。

2024-04-10 15:04:55 340

原创 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 595

原创 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 485

原创 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 417

原创 LightDB - oracle_fdw join下推增强【24.1】

从24.1版本开始, LightDB 支持对semi-join 进行下推,可以把semi-join转为exists 子查询下推到 Oracle 中。同时也支持对insert select语句中的join 进行下推。

2024-01-23 10:38:38 546

原创 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 710

原创 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 123

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

从23.4 版本开始, LightDB 支持mysql 的curdate, current_date 函数。

2023-12-06 16:00:44 153

原创 LightDB - datediff 函数增强[mysql兼容]

LightDB在 23.4 版本对原先支持的mysql的datediff函数进行了增强,由原先只支持如下函数匹配:扩展到支持如下函数匹配:datediff 简介datediff 用于计算两个日期的差值,下面是mysql中对其的介绍:lightdb:mysql:

2023-12-06 09:16:57 143

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

从 23.4 开始 LightDB 支持 mysql 的 last_day 函数。目前LightDB 实现last_day的与mysql 并不完成相同,会在示例中列举出不同点, 主要是以下几点:last_day 用于获取指定日期所在月份的最后一天,下面是mysql中的介绍:

2023-12-05 13:24:41 177

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

quarter 函数用来确定日期对应的季度, 如‘20231204’ 对应12月,也就是第四季度。下面为mysql8.0中描述LightDB 目前支持只date 和 datetime(即timestamp)类型的入参。其他与mysql一致。

2023-12-04 17:26:38 467

原创 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 99

原创 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 97

原创 LightDB-no_push_pred hint

对于不能合并的视图,有两种连接方式,一种是不下推连接谓词,与视图的结果集进行连接;一种是下推连接谓词,对每个驱动行都获取对应的视图结果集(nestloop)。no_push_pred hint 在oracle 中用于不下推连接谓词到不能合并的视图中。

2023-11-29 14:59:51 166

原创 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 203

原创 LightDB-opt_param hint支持

LightDB 从23.4 版本开始支持opt_param hint, 用来设置优化器相关的guc参数,用法和oracle的opt_param 相同。

2023-11-20 15:19:09 85

原创 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 85

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

LightDB 从23.4开始支持mysql 的cast(expr as unsigned) 语法,下面说明下不兼容的注意点及示例。

2023-11-08 19:59:24 174

原创 LightDB - oracle匿名块支持绑定参数方式执行

LightDB 从23.4开始,支持使用绑定参数的方式执行oracle匿名块。绑定参数支持的参数个数为65535(libpq & jdbc)。。下面介绍通过libpq 执行带绑定参数的匿名块。

2023-10-10 14:23:32 134

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

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

2023-09-11 14:35:54 438

原创 lightdb23.3 调整orafce插件中函数的并发属性

之前版本的orafce插件中的有些函数并发属性为unsafe(包括常用的length, ltrim,lpad 等函数), 导致在执行使用这些函数的SQL时,SQL不能并行执行。在23.3版本,我们对orafce 插件中的函数进行了梳理,对可以设置为safe 的函数进行了设置。

2023-09-04 17:30:03 98

原创 pg 创建函数选项介绍

如果它们访问临时表、客户端连接状态、游标、预备语句或者系统无法在并行模式中同步的本地后端状态(例如setseed只能在组领导者中执行,因为另一个进程所作的更改不会在领导者中被反映出来,再比如pg_backend_pid, random),它们应该被标为PARALLEL RESTRICTED。比如:currval。指定函数的估计执行代价,若返回一个集合,这就是每个被返回行的代价,对 C 语言和内部函数会指定为 1 ,对其他语言的函数则会指定为 100。给planner提供了解函数的支持函数,需要为c函数,

2023-08-21 10:20:25 287

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

从 LightDB 23.3 版本开始表名和包名不能重复,与 oracle 一致。原先已已支持包名和schema名不能重复。

2023-08-11 14:33:53 118

原创 LightDB23.3 支持binary_float/binary_double

LightDB 从 23.3 版本开始在 oracl e模式下支持 oracle 的 binary_float 和 binary_double。都遵循IEEE754标准。

2023-08-02 19:11:59 166

原创 lightdb23.3 ecpg支持多种注释方式

原版的pg只支持在 ecpg 的 EXEC SQL 中使用 ‘/**/’ 形式的注释,因为ecpg 会转换SQL, 把SQL 转换为一行,去掉了换行符,导致 ‘–’ 和 ‘//’ 这种行注释的使用会有问题。在oracle 的pro*c 中这两种注释都支持。在使用ecpg 程序转换时, 会把’–’ 和 ‘//’ 注释去掉。LightDB 在 23.3 版本支持在ecpg代码中使用 ‘–’ 和 ‘//’ 注释。

2023-07-31 19:11:30 295

原创 pg谓词下推分析(一)

jtnode 当前处理节点below_outer_join 当前节点位于上层的外关联的 nullable side 时, 设置为true(deconstruct_jointree 中调用时为false)。如 a left join (b join c) , (b join c) 为 nullable side, b 就在 (b join c) 中。qualscope 当前节点下所有涉及的表的rtindex集合。

2023-07-18 11:19:26 508

原创 pg float4与oracle的binary_float 比较

oracle 的binary_float, binary_double (二进制精度)与 pg 的 浮点数(二进制精度)都遵循IEEE Standard 754-1985 (IEEE754) ,oracle 中 float 实际为 NUMBER类型,是十进制浮点数。

2023-06-27 17:19:52 723

原创 pg 绑定变量源码解析

下面以callstmt 为例 说明一下绑定参数的执行流程(基于pg13)

2023-06-21 16:58:35 490

转载 LightDB支持INSERT ALL语法

转载自 https://blog.csdn.net/s_lisheng/article/details/130646539。Oracle中支持INSERT ALL语法,可进行多表插入与条件插入,对此,LightDB对该语法实现了兼容。

2023-06-16 11:00:00 60

原创 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 982

原创 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 392

原创 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 1539

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

oracle (+) 操作符用于指定外连接,是 oracle 在 ANSI标准加入前就推出的,后面的版本支持 (+) 操作符只是为了向后兼容。oracle 不推荐使用 (+)建议使用from 子句中的outer join, 因为oracle (+) 具有一些限制。

2023-04-26 14:30:35 682 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 428

原创 pg编码相关问题梳理

lightdb/postgres编码相关问题。在使用Lightdb 过程中会涉及到多处的编码设置。下面分两种情况进行讨论,一种是通过ltsql/psql 交互式执行SQL, 一种是通过-f 选项执行SQL文件。

2023-04-18 14:07:09 1234

原创 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 615

原创 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 602

原创 lightdb-no_unnest hint

Lightdb 从 23.1 版本开始支持 oracle 中的unnest/no_unnest hint。

2023-02-03 14:00:36 572

采用AVL树实现简单登入系统

控制台程序,采用AVL模板,注释详细。

2014-12-28

队列飞机简单

队列飞机简单数据结构作业

2014-11-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除