- 博客(49)
- 收藏
- 关注
原创 LightDB pro*c迁移指南(游标模块)
(1)fetch into获取的长度不一样;导致获取字段结果的算法不一致;(2)错误码不一样(3)断开连接的方式不一样(关于连接有空再单独介绍)
2024-05-30 16:07:03 752
原创 LightDB pro*c支持exec sql for :i update(or insert)语法
在适配过程中,发现pro*c支持exec sql for :i update(or insert)语法,其功能是取代其中i决定循环执行的次数,update(or insert)表示循环执行的次数。我们在oracle环境下测试得到如下经验:(1) char str[]一维数组在update更新时,在where条件中不能使用如下格式作为右值":str[1]"。如果出现这种情况,则报段错误。
2024-04-09 10:10:14 482
原创 LightDB24.1 存储过程支持inner和outer对变量的引用
oracle plsql支持如下场景:在for循环中,将select查询的结果给一个record类型,这一操作也被称为隐式游标操作。record类型中一个字段用来接收查询结果中的一个select查询语句(update,delete,insert在这个语法中都会报错),这个字段被用作open for动态打开一个游标的对象。这个rec变量可以为关键字,在业务适配的过程中,我们发现了这一点,客户现场使用的关键字有两个outer和inner。
2024-03-20 22:10:25 295
原创 LightDB24.1 plorasql支持open dynamic_cur for rec.vc_dynamic_sql(rec record变量中包含vc_dynamic_sql变量)
oracle plsql支持如下场景:在for循环中,将select查询的结果给一个record类型,这一操作也被称为隐式游标操作。record类型中一个字段用来接收查询结果中的一个select查询(update,delete,insert在这个语法中都会报错),这个字段被用作open for动态打开一个游标的对象。这里需要注意oracle plsql在使用这个语法时有以下限制:(1)FOR和IN中间的字段只能是A格式(即不包含A.B,A.B.C等以上格式);
2024-03-05 19:05:56 323
原创 LightDB24.1 lt_package系统表字段 pkgboby一行长度限制为8160
plsql支持创建package和package boby,且支持的长度超过postgres所限定的8192个字节的长度(实际上postgres出去元组头部分所占的空间,长度肯定是小于8192字节的)。目前遇到的情况就是oracle环境下包的长度远远大于LightDB支持的长度。
2024-02-28 19:51:44 178
原创 LightDB24.1 存储过程中声明的不带参数的游标,支持open 游标名加括号的调用方式
存储过程中不带参数声明的游标,可以在open打开时加上括号进行调用。在老的业务中经常能够看到这种用法。虽然觉得不合理,但是oracle人家支持,作为兼容性极强的LightDB不会在这个小水沟翻车的,果断进行支持一波。
2024-02-01 15:58:22 251
原创 lightdb 23.4 支持pivot行转列
Lightdb-x支持行转列、列转行功能:pivot支持的语法如下:create table hs_pivot(name varchar(40),course varchar(100),score int);insert into hs_pivot values(‘zhangsan’,‘chinese’,90);insert into hs_pivot values(‘zhangsan’,‘math’,100);insert into hs_pivot values(‘lisi’,‘chine
2023-12-12 20:23:05 953
原创 LightDB 23.3 通过GUC参数控制commit fetch
在同一个会话中的后续事务中还能够继续访问该游标( 但是如果创建事务被中止,游标会被移除)。对于for update和for share lightdb_cursor_after_commit 参数使能单机模式还是支持的,分布式模式下由于不支持for update和for share直接报错。java端同理。declare。
2023-09-11 20:58:26 230
原创 Lightdb 23.3 plorasql函数支持DML
oracle在函数中使用dml语句时,有两者情况。即:(1)直接使用select调用该函数;(2)在匿名块中调用该函数。针对第一种情况我们测试一下简单的函数:beginreturn 12;end;报错针对第二种情况我们测试一下declarebeginend;12由此可以知道定义在函数中的dml,只能在plsql中使用。
2023-09-11 17:19:03 175
原创 LightDB 23.3 plorasql 函数支持inout参数输出
在lightdb中,使用该功能需要注意:函数用inout修饰需要返回的变量。
2023-08-17 19:44:16 516
原创 LightDB 23.3支持dbms_output.new_line函数
(1)LightDB 23.3支持dbms_out.new_line函数其实是增加了一种创建函数的方式,不用加括号,函数也能创建成功。(2)并且加括号和不加括号创建的函数其实在内核中是同一个函数。(3)使用一种创建方式另外一种就不可使用,使用会报错。(4)数据迁移备份不会有问题。
2023-08-09 21:47:55 124
原创 LightDB 23.2 plorasql支持open游标大小写问题
由于oracle在匿名块、函数、存储过程和包中,open打开游标时,指定的游标变量可以是不敏感的。但是LightDB不支持这种情况,因为plorasql词法扫描使用的是LightDB内核的词法解析器导致的。众所周知,LightDB内核的词法解析器将标识符转换成小写。然而在plorasql在对open子句处理时,采用的是硬编码的逻辑。获取的标识符为输入的标识符,大小写原文保存。在该段逻辑处理过程中,比较的时候采用的又是大小写敏感的比较方法,因此造成了open使用含有大写字母的游标出现找不到变量名的错误。
2023-06-15 20:42:57 106
原创 LightDB 23.2兼容mysql insert ignore into语法
如insert ignore into使用在存储过程中,表现则会与oracle不同,Oracle能正常执行完整个存储过程,LigtDB则报错。
2023-06-13 17:57:02 71
原创 LightDB 23.2兼容oracle psql中使用with子句
在适配过程中发现oracle可以在过程语言中使用with子句,因此在LightDB 23.2上做了兼容性开发。oracle的with_clause语法仅支持select子句之前使用。其语法结构如下:语法上不支持:(1)不支持plsql_declarations(2)不支持subav_factoring_clause(3)不支持search_clause(4)不支持cycle_clause。
2023-06-08 20:35:11 93
原创 Mysql 安装流程
在数据库内核对Oracle、Mysql进行兼容性开发时,不可缺少的就是拿需要兼容的数据库对这个功能进行测试,安装数据库的步骤就必不可少。开发过程中,每个人不是都拿着服务器进行开发,因此机器磁盘的容量是有限的。这会导致开发过程中数据库删了又装,装了又删,如此反复。为节约时间,我在这里简单记录一下。
2023-06-07 17:18:07 55
原创 LightDB-A 数据库开发和使用
基于对LightDB-A开发总结的经验,因为-A数据库与其他postgres数据库的线性回归测试不同,启动方式不同,所以在这儿单独进行记录,方便笔者后续开发,以及读者能够更快的接触-A数据库。
2023-06-07 16:29:45 186
原创 Lightdb-A 兼容oracle unpivot和pivot
Lightdb-A 支持行转列、列转行功能:pivot支持的语法如下:unpivot支持的语法如下:create table hs_pivot(name varchar(40),course varchar(100),score int);insert into hs_pivot values(‘zhangsan’,‘chinese’,90);insert into hs_pivot values(‘zhangsan’,‘math’,100);insert into hs_pivot v
2023-06-02 15:16:04 68
原创 多表之间使用oracle(+)的语法,替换成左、右外连接的形式等价测试
对比postgres使用order by 排序与不排序存在的差异的执行计划。
2023-04-04 17:19:41 203
原创 LightDB-x 23.1 发布声明
(1)内存分配时出现out of memory问题,增加detail和hint提示。(2)lightdb支持K8S部署,分布式结构为1CN、2DN。核心模块有LightDB-patroni镜像、LightDB-operator镜像。LightDB-patroni镜像,又叫Light-POD(容器),由LightDB和patroni高可用工具组成。LightDB-operator镜像为用于管理LightDB库。K8S通过读取集群配置信息,通知LightDB-operator集群变更通知。
2023-04-03 20:54:44 212
原创 oracle rownum与greenplum分析性函数row_number的异同点
熟悉oracle rownum伪列的人,都知道下面两个注意事项:(1)不能对rownum使用>(大于1的数值)、>=(大于1的数值)、=(大于1的数值),否则无结果。(2)在使用rownum时,只有当Order By的字段是主键时,查询结果才会先排序再计算rownum,但是,对非主键字段(如:name)进行排序时,结果可能就混乱了。
2023-03-23 15:17:55 341
原创 LightDB23.1 兼容oracle plsql支持创建procedure时,支持out和return;一起使用
目前LightDB plorasql不支持创建procedure时,支持out和return;一起使用。而在业务中,实际使用时这种情况还比较多,因此这次这了这样的兼容。
2023-03-10 21:34:31 99
原创 Lightdb 存储过程兼容Oracle dbms_utility.format_error_backtrace函数
Oracle Database 10g Release 2 中添加的 DBMS_UTILITY.format_error_backtrace 函数是记录异常时要调用的关键子程序。它返回一个字符串,将错误追溯到引发错误的行!注意:如果在堆栈向上传播时重新引发异常,您将丢失“原始”行号。回溯跟踪函数始终只追溯到最近引发的异常。错误返回最大长度为10000个字符。。
2023-03-10 10:32:28 176
原创 LightDB 22.4发布声明
dist表示当前数据库是分布式架构,在这架构下,使用create table 创建的表默认是分布式表;(2)添加了lt_patch表以保存修补程序信息,apply_type和apply_version属性将添加到修补程序描述信息中;8、添加 GUC 参数 lightdb_aborted_rollback 支持当前事务出错立即报错,并且回滚整个事务;17、使用lt_dump和lt_restore工具实现分布式集群的备份和恢复;18、使用lt_probackup工具实现分布式集群的备份和恢复;
2023-01-29 17:16:38 104
原创 lightdb 支持jdbc设置fetchsize,在事务非自动提交的情况下,使用commit,依旧可以连续获取查询的结果集
lightdb 22.4版本完美解决上面所描述的问题。
2022-12-27 14:30:00 321 1
原创 Lightdb22.4兼容mysql alter modify修改表字段类型、默认值、非空约束
继22.3版本兼容oracle alter table modify语法后,最近又接入mysql的应用,功能不足以应对现在的使用场景。要对mysql的alter table modify常用功能进行兼容。oracle和mysql针对这个功能,区别在于:默认值(default)和非空约束(NOT NULL和NULL)位置可以交换;相同点:如果需要设置数据类型,则必须在默认值和非空约束前。
2022-12-19 10:08:12 465
原创 Lightdb 22.4 ltuldr工具使用介绍(兼容sqluldr2)
lightdb支持数据备份的方式比较多,常见的方式为逻辑备份和物理备份。物理备份:冷备份及恢复(文件级别的复制恢复):热备份及恢复(基于时间点的备份恢复)逻辑备份:pg_dump:可以选择一个数据库或部分表备份pg_dumpall:备份整个 clustercopy \copy:导入导出数据ltuldr跟copy功能类似,也属于逻辑备份。区别在于ltuldr是相当于客户端是外部工具,而copy属于ltsql内部命令行工具。性能方面:是oracle sqluldr2的1.3倍。
2022-12-13 11:00:12 350
原创 Lightdb 22.3 事务中语句出错,报错并回滚
事务出错,要求在出错语句处报错,并回滚整个事务。此功能与语句级功能有冲突。22.3语句级回滚是由插件提供的,要求参数lightdb_aborted_rollback和语句级回滚不能同时生效。
2022-12-09 19:53:11 184
原创 Lightdb 22.4 事务中语句出错,报错并回滚
事务出错,要求在出错语句处报错,并回滚整个事务。此功能与语句级功能有冲突。由于22.4版本语句级实现与22.3不同,22.4要求参数lightdb_aborted_rollback和lt_statement_rollback_enable不能同时设置,包括两种设置方式:一是配置文件的方式;二是客户端设置的方式。两种方式,在一个参数设置成true时,另外一个参数不允许设置成true。
2022-12-09 17:23:50 189
原创 Lightdb22.3兼容oracle alter modify修改表字段类型、默认值、非空约束
1、CONSTRAINT name modify_constraintElem(单一使用支持,复合使用不支持)2、ALTER TABLE test_modify MODIFY a(a为列名);–表中有数据,修改表的列属性为not null, 报错。3、默认值后面跟on null。改变类型、默认值和非空约束。
2022-11-09 17:09:41 821
原创 最快融入postgres community,最快的pull requests提法
具体就是在patch列表、Tdo列表、邮件列表(例如:bugs列表https://www.postgresql.org/list/pgsql-bugs/ 、https://www.postgresql.org/list/pgsql-hackers/)一、通过https://www.postgresql.org/account/submitbug/提交问题;注意:如修复问题已存在,这里可以引用该问题的链接。GIT地址:git://git.postgresql.org/git/postgresql.git。
2022-11-02 11:08:45 230
原创 lightdb22.3 plorasql 错误处理兼容
预定义异常是 PLoraSQL 给定名称的内部定义异常。运行时系统隐式(自动)引发内部定义的异常。可以在任何 PLoraSQL 匿名块、子程序或包的声明部分中声明自己的异常。目前仅支持预定义中较为常用的异常处理测试内容涉及到存储过程的包、函数、存储过程、匿名块。(1)匿名块中的动态SQL中含有commit和rollback的匿名块,不支持;(2)存储过程中的动态SQL中含有commit和rollback的匿名块,不支持;
2022-09-26 15:40:40 140
原创 oracle创建用户密码和权限--ORA-65096 invalid common user or role name
oracle创建用户密码和权限。
2022-09-13 21:08:31 1534
原创 lightdb22.3 plorasql与oracle plsql对比2(存储过程、函数、匿名块、包)
主要介绍游标操作和事务操作(commit和rollback)结合使用的情况。具体分为以下5大类。
2022-09-13 18:54:52 310
原创 lightdb22.3 plorasql与oracle plsql对比(存储过程、函数、匿名块、包)
借存储过程开发, 总结oracle plsql常用四大方面内容(存储过程、函数、匿名块、包)特点, 并与lightdb22.3 plorasql进行对比.总结差异点,为下次完善plorasql做准备
2022-08-31 15:35:29 382
原创 oracle存储过程迁移到lightdb(包括oracle user_col_comments、user_synonyms视图等)
工欲善其事必先利oracle存储过程迁移到lightdb(包括oracle user_col_comments、user_synonyms视图等)其器。
2022-08-23 17:08:02 218
原创 lightdb22.3 plorasql存储过程使用游标补充(open游标时与定义时参数不一致问题)
兼容目前正火的Oracle plsql,功能强大和它的架构有关,我们做的是就是不断完善我们自己的存储过程框架
2022-08-23 16:36:11 167
原创 关于反编译那些事
在从事软件开发这件事上,有很多东西是绕不开的,我们能做到的事情,就是记笔记,经常看,唯手熟尔。本篇重点介绍编译优化、gdb调试、反编译命令。
2022-07-15 10:38:56 778 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人