自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 简析pg_hint_plan支持parallel提示的执行流程

【代码】简析pg_hint_plan支持parallel提示的执行流程。

2024-06-28 16:47:28 59

原创 LightDB支持在窗口函数中使用distinct关键字

从24.1版本开始,LightDB oracle兼容模式下支持在窗口函数中使用distinct关键字,即窗口中的非重复值才会参与聚集运算,而那些重复值则不会参与聚集运算。例如select sum(distinct b) over(partition by a) from t;这样的sql,处理逻辑是:先对t表按字段a分组,再对分组内的b数据去重,之后将分组内去重后的b列进行汇总求和,最后把sum结果返回。

2024-05-21 19:32:47 265

原创 窗口函数(window function)在PG和Oracle中的区别

上图标注的1号位置处,PG支持先定义一个窗口名,然后在查询列表中可以引用该窗口名。--定义一个别名为“w”的window,查询列表中可以引用该别名sum | max2 | 12 | 14 | 21 | 13 | 2(5 rows)

2024-05-16 21:59:14 392

原创 LightDB支持group by常量

从24.1版本开始,LightDB oracle兼容模式下支持group by常量,即支持按常量分组聚集,其中分组字段可以有一个或多个常量字段,也可以常量字段和变量以及表达式混合使用。常量字段用于分组,实际上并没有什么作用,基于常量字段分组,实际上就相当于未分组。例如select count(*) from t group by 'aa'在oracle中完全等价于select count(*) from t。

2024-04-08 15:34:17 176

原创 LightDB支持dbms_sql包部分功能

在Oracle数据库中,dbms_sql是一个在PL/SQL中使用动态sql解析并执行dml/ddl语句功能的API。它是动态sql的一种补充,详见Oracle官网。为了更好的兼容oracle数据库,从24.1版本开始,LightDB也开始支持在plorasql(LightDB自己的存储过程语言,语法上尽量兼容Oracle的PL/SQL)中支持使用dbms_sql包动态解析并处理dml/ddl语句。由于时间问题,本期仅实现了dbms_sql的部分功能。

2024-03-28 16:08:28 1411

原创 记录bison解析时的shift/reduce步骤

3、设置client_min_messages参数为log,发起sql,查询~/pgbison.trace文件。2、make && make install &&重启数据库服务器。1、gram.y中c代码区添加博文提供的如下代码。

2024-03-18 09:25:50 143

原创 LightDB支持使用嵌套表元素作为插入数据源

为了更好地兼容oracle语法,从24.1版本开始,LightDB支持使用嵌套表元素作为数据源执行insert语句,即用嵌套表的一个元素作为整体插入到表中。

2024-03-14 10:50:02 163

原创 LightDB新增使用赋值符号直接为嵌套表元素赋值

LightDB 24.1之前的版本中,支持使用bulk collect into语法对嵌套表批量加载数据,也支持select into对单个嵌套表元素赋值。

2024-03-12 19:06:40 130

原创 LightDB支持带有keep关键字的聚集函数

聚集函数的作用是对查询结果按条件分组,然后对每个组内的所有记录进行汇总/统计,最后形成每组一个结果后输出。oracle中存在一种特殊的聚集函数,就是带有keep关键字的聚集函数,它的执行逻辑也是先对查询结果按条件分组,但不是直接对组内的所有记录进行汇总/统计,而是先将组内数据按照条件进行排序,选取最小或最大的一条或几条记录进行汇总/统计,最后形成每组一个结果后输出。oracle中带keep关键字的聚集函数的语法如下(仅first和last支持,图片展示的是first)

2024-02-23 11:07:01 460

原创 LightDB对decode函数功能增强

decode函数是oracle数据库中一个功能强大且使用频率极高的函数,先来个decode函数的原型:decode函数的使用方法是拿expr与search逐个比较,若满足expr与某个search相等,则函数返回该search对应的result;若expr与所有search值都不等,则返回default值,而当default参数未提供时,函数返回null。注:在decode函数中,两个null比较是认为相等的。

2023-12-13 17:16:43 1324

原创 LightDB支持guc参数修改留痕

LightDB中guc参数众多,目前共计有422个参数,而参数的修改可能会对系统行为产生较大的影响。因此在LightDB1.0.V202304.00.000中,新增对guc参数修改留痕功能:当通过SQL语句修改guc参数时,参数修改前和修改后的值、参数修改时间、修改人和修改的具体SQL语句都会被记录在日志文件中,日志文件位于$LTDATA/log目录下。

2023-12-05 20:57:06 52

原创 LightDB oracle模式增强ceil函数

LightDB致力于兼容 oracle语法,目标是 oracle 用户不用修改 sql 代码无缝切换到LightDB数据库。而原生pg并不能支持,因为在原生pg中,一个date减去另一个date的返回值,其类型是interval。因此在LightDB1.0.V202303.04.000中,LightDB对ceil函数做了增强,支持传入interval类型的参数,将interval类型中的天数先获取出来,这是个数值,再对其执行向上取整操作。

2023-12-01 17:13:40 66

原创 LightDB Oracle模式支持systimestamp(n)

目前,lightdb 在兼容 oracle,目标是 oracle 用户不用修改 sql 代码无缝切换到 lightdb 数据库。oracle中支持systimestamp(n)函数,n的范围为0-9,因此在LightDB1.0.V202304.00.000中,新增对systimestamp(n)函数的全面支持。注:不带参数的systimestamp在之前版本已经实现。

2023-11-23 10:26:54 77

原创 LightDB支持month作为列别名

目前,lightdb 在兼容 oracle,目标是 oracle 用户不用修改 sql 代码无缝切换到 lightdb 数据库。

2023-11-20 21:31:42 39

原创 LightDB支持在创建索引时指定local|global属性

最新版(13.8-23.4)的LightDB,在对分区表创建索引时,新增支持指定local|global属性,且新增的这组属性与[compress|nocompress]、[logging|nologging]、[tablespace tbs_name]这3组属性间是顺序无关的,即可以先指定[local|global]属性,也可以先指定[compress|nocompress]或其它属性。

2023-11-14 20:38:02 56

原创 LightDB对ecpg的功能增强

通常,c语言程序访问和操作PG系的数据库时,我们会使用PG提供的libpq,这是PG官方提供的一套c语言API,功能比较强大,但是使用比较繁琐且不优雅。而ecpg作为嵌入式的SQL,可以通过某些特殊的标记直接将SQL语句嵌入到c语言源程序中,使得代码更加简洁易读。嵌入式 SQL 程序(*.pgc)的工作原理是通过嵌入式 SQL 预处理器,将源代码(*.pgc)转换成一个普通 c 程序(*.c),而这个c程序中使用了libpq的库函数,因此经过编译链接后生成的可执行程序可以与PG数据库进行通信。

2023-09-20 11:23:23 92

原创 LightDB(13.8-23.3)支持ALTER TABLE name TRUNCATE PARTITION partition_name update indexes语法

【代码】LightDB(13.8-23.3)支持ALTER TABLE name TRUNCATE PARTITION partition_name update indexes语法。

2023-09-11 23:34:49 110

原创 关于使用mysql_fdw无法查询长度超过64K字段的原因分析

这个问题当然是mysql_fdw的bug,修改本身也比较简单,但是这个修复只是针对在pg上创建text类型的字段时的场景,若表中存在varchar和char字段,问题依然存在,因为pg的字符类型字段最大可以支持10485760(the length must be greater than zero and cannot exceed 10485760)。实际的修复也很简单,当表中存在varchar和char字段时,只要保持跟text一样的处理方式即可,在lightdb中,我们修复了这个问题。

2023-09-05 20:47:26 218

原创 LightDB游标的声明和使用

翻译过来简单讲就是oracle有两类游标,一类是不指定返回类型的弱类型游标,另一类是指定返回类型的强类型游标。弱类型可以通过ref cursor再加上无返回类型来声明,也可以通过sys_refcursor来声明。弱类型灵活通用但容易出错,强类型则相反。

2023-08-22 09:43:57 51

原创 安装分布式高可用模式LightDB

至少预留80GB空间,用于安装6台虚拟机。下图是刚安装后,还没怎么用过的分布式环境的空间占用情况,所以建议预留足够空间。安装配置单台虚拟机的步骤参考,里边有傻瓜化操作步骤,不再赘述。

2023-08-14 19:28:05 130

原创 浅析pg创建domain源码

从创建domain的函数分析可以得到,一个domain在底层实际就是一个type。此外,当创建一个type xxx时,pg还会默认为其创建一个元素类型为xxx的数组的type。现通过create domain myint int;这个最简单的案例来创建一个新的domain,入口函数是DefineDomain,调用逻辑如下。

2023-08-10 20:07:14 87

原创 使用WSL从0开始搭建LightDB

注意在下载CentOS.zip文件时,需复制其下载链接,确保是github开头的,否则下载过程中会弹出登录要求,且永远登录不成功。5、通过ftp传输LightDB1.0-x-V202302-00-000-el7-x86_64.zip到linux。6、安装lightdb单机版(其它版本操作步骤类似)1、安装wsl(默认为wsl1,需升级到wsl2)2、在wsl2上安装centos7。#安装firewalld。#安装zip和unzip。#安装并配置ftp服务。#安装libzstd。

2023-08-08 16:01:50 89

空空如也

空空如也

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

TA关注的人

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