VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

Vastbase V2.2 Build 15(Patch No.3)

发布日期

2024年5月7日

升级方式

VPatch工具升级。可参考使用VPatch进行版本控制

commit 标识:19980

新特性

GUC参数

1、新增GUC参数max_archive_directory_size:用于控制指定的归档文件所在挂载点或文件系统的空间限制操作。若开启本参数,则将在一个归档日志落盘后检查归档目录所在挂载点或文件系统已用空间大小,判断是否进行告警或删除操作。

2、参数rewrite_rule新增可选取值enable_any_sublink_pullup_enhanced,启用此选项后计划器会尝试将相关子连接进行提升,生成更好的执行计划。

3、新增参数wdr_snapshot_auto_vacuum_full,用于控制是否在清理快照后对相关表进行vacuum full的功能。

插件

新增pg_repack插件:用来重新组织和压缩数据库中的astore,行存表和索引,主要用于在线重建表和索引,以解决表或索引膨胀的问题,减少碎片并提高性能。

Oracle兼容性

1、DBMS_SQL.DEFINE_COLUMN 函数新增了对 DATE、CHAR 和 VARCHAR这三种数据类型的支持。详见DBMS_SQL

2、使用DATABASE LINK(jdbc_fdw)时支持子查询下推功能。当一个子查询可在远端执行时,可将其下推到远端执行,无需将子查询中的远端表拉到本地再执行子查询。

特性优化

1、Vastbase逻辑复制支持DDL新增支持的DDL包括:

  • ALTER INDEX
  • ALTER VIEW
  • CREATE/ALTER/DROP/REFRESH [INCREMENTAL] MATERIALIZED VIEW
  • CREATE/ALTER/DROP TYPE
  • CREATE/ALTER/DROP FUNCTION
  • CREATE/ALTER/DROP PROCEDURE
  • CREATE/ALTER/DROP TRIGGER
  • CREATE/DROP PACKAGE

2、分区剪枝功能增强。

  • 静态剪枝

    支持的分区类型及表达式类型:

    分区类型 表达式 分区等级
    范围(Range)分区 <,<=,=,>,>=,like,any,all 一级、二级分区
    列表(List)分区 <,<=,>,>=,<>(不等于) 一级、二级分区
    哈希(Hash)分区 = 一级、二级分区
    间隔(Interval)分区 <,<=,=,>,>=,any,all 一级、二级分区
  • 动态剪枝(由GUC参数enable_runtime_prune控制,默认值为on)

    支持对Range、List、Hash、Interval分区表进行动态分区剪枝,支持的场景如下:

    • 支持PREPARE/EXECUTE语法对一级、二级分区表动态分区剪枝。需注意查询条件需包含分区键,且条件值为参数。

    • 支持InitPlan场景的一级、二级动态分区剪枝;需注意分区键的条件为子连接,且为非相关子连接。

    • 支持Nested Loop且连接条件可下推至分区表场景的一级、二级动态分区剪枝,查询走nestloop计划,且包含分区键的条件,其中分区键存在本地分区索引。

3、支持通过以下策略改善启用wdr后产生的快照占用空间大的问题:

  • 用于控制后台线程Snapshot自动对数据库监控数据执行快照操作时间间隔的参数wdr_snapshot_interval,其最大值从60min提升为720min。适当提高此参数值可以降低采样频率。

  • 设置参数wdr_snapshot_auto_vacuum_full为on后,wdr相关统计表中的死亡元组会在原有每次的清理操作之后被清除。

升级须知

使用PL/Python实现自定义过程语言时,禁止使用plpy模块。

行为变更说明

模块 变更项 变更前 变更后 注意事项
SQL语法 PG模式下的rownum 将rownum作为一个伪列来处理,不能作为列的别名。 rownum不会被作为一个伪列来处理,可以作为列的别名。 -
'1' + '2'结果与MySQL相同为3 二进制拼接。 数字相加。 当前修改后与MySQL保持一致。
b兼容的returning * returning * 的返回顺序固定为建表顺序。 set b_format_behavior_compat_options='mybatis_returning'; 后,returning * 的返回顺序为insert into xx(...)括号中的字段顺序,如果字段个数 < 表字段个数,剩余的字段会放在后面。 -
是否允许消除DISTINCT ON子查询中的ORDER BY子句。 允许消除DISTINCT ON子查询中的ORDER BY子句。 不允许消除DISTINCT ON子查询中的ORDER BY子句。 需注意DISTINCT ON子查询中需包含ORDER BY子句。
是否允许在UStore表上创建DEFERRED约束。 允许在UStore表上创建DEFERRED约束。 不允许在UStore表上创建DEFERRED约束。 需调整UStore表上创建DEFERRED约束的相关业务。
函数 upper和lower的参数为char类型,显示结果变更。 char类型末尾的空格会被丢掉。 char类型末尾的空格会保留。 需调整upper和lower函数入参为char时的结果预期。
外部数据封装器 jdbc_fdw带rownum,limit,fetch first row only的查询语句的远端执行计划。 仅有rownum下推,且可能会改变查询语义,造成结果问题。 均会下推,且不会改变查询语义,理论上能减少这些sql语句的查询时间。 -
PL/pgSQL plsql模块使用call function语法调用无返回值/out参数,且非重载的函数。 若没有变量接收返回值则报错。 不报错,按照无call调用执行。 -
GUC参数 增加了GUC选项控制format_type函数行为,改变了format_type函数对于varchar类型的输出 format_type函数在输入为varchar的OID时输出varchar。 增加了选项pg_format_behavior_compat_options,默认值为空;当选项设置为pg_format_type_compt时format_type变更为character varing。 -
通过enable_oranumber_type参数控制来确定number关键字映射的底层类型。 number关键字直接映射为number类型。 通过enable_oranumber_type参数控制,默认为true,即映射为number类型;设置为false时,映射为numeric。 -
b_format_behavior_compat_options 不支持选项b_format_escape。 新增选项b_format_escape,用来控制逃逸字符在MySQL兼容模式中的表现
  • 开启该选项时,逃逸字符为反斜线时需要双写,与MySQL表现保持一致。
  • 关闭该选项时,表示使用standard conforming_strings控制逃逸字符,与历史版本一致,参数设置为on时,逃逸字符为反斜线不用双写,参数设置为off时,在文串常量中写的任何反斜线都需要被双写。
  • 该选项仅在V2.2 Build 15(Patch No.3)及以上版本支持。
    max_query_retry_times - 废弃该参数。 -
    系统表 pg_publication - 新增字段ignorerefreshmatview,用于控制刷新物化视图操作是否同步至订阅端。 字段数增加

    缺陷修复

    SQL

    【1041851】【致命】修复了列存表执行含pivot和unpivot的用例出现挂库的问题。

    【1042161】【致命】修复了由于解析json数据未检查堆栈深度,出现解析嵌套json层数过深导致core的问题。

    【1035085】【1039979】【致命】修复了由于UStore没有HOT机制,导致在UStore表上创建DEFERRED约束时,数据库宕机的问题。

    【1040278】【严重】修复了JPA自动生成insert语句字段顺序和数据库表字段顺序不一致,插入数据报错的问题。

    【1040783】【严重】修复了由于没有考虑默认的复合类型和对象复合类型的情况,导致create type后,create or replace type报错的问题。

    【1041667】【严重】修复了CTE查询中order by子句,报错cache lookup failed for attribute 188589 of relation 2的问题。

    【1040025】【严重】修复了对longblob字段创建外键约束,建表报错的问题。

    【1040019】【严重】修复了SELECT列表及HAVING子句同时使用聚合函数报错ERROR: aggregate function calls cannot be nested的问题。

    【1040012】【严重】修复了分区表批量插入性能与普通表相比差两倍的问题。

    【1041080】【严重】修复了由于connect by中出现level时,connect by条件被完全下推到了递归部分的临时表上,没有过滤掉第一次迭代数据,造成死循环,导致connectby后面跟level,结果不符合预期的问题。

    【1040317】【严重】修复了使用hint方式传入query_dop时,执行过程中如果用到了query_dop可能会出现宕机的问题。

    【1041008】【严重】修复了由于start with中未考虑level出现在表达式右边的情况,导致递归查询start with语句含有level语义分析报错的问题。

    【1041007】【严重】修复了由于start with中含有level,直接将start with语句结果设置成了false,导致不输出数据的问题。

    【1041828】【严重】修复了由于->> 的语法优先级错误,应高于is null,导致建表包含json时,delete语句使用json->>'$.x'操作符,执行报错的问题。

    【1041352】【严重】修复了由于foreign schema的生成方式的问题,导致两个不同的dblink,连接同个数据库,生成的foreign schema名相同的问题。

    【1040798】【严重】修复了由于递归查询语义分析漏掉了普通表的value字段,导致start with..connect by语法中含表别名及value关键字导致查询错误的问题。

    【1039991】【严重】修复了并行操作期间,执行DDL操作-safe,多次执行,数据库卡住,无法关闭的问题。

    【1041600】【严重】修复了表数据字段类型和业务传参类型不一致,SQL性能低下的问题。

    【1042209】【一般】修复了由于sys_connect_by_path读取smalldatetime未设置参数,导致执行查询报错的问题。

    【1041763】【一般】修复了INTEGER类型转换不兼容问题。

    【1041762】【一般】修复了由于fulljoin重写,导致异常的报错信息ERROR: no relation entry for relid 10的问题。

    【1040554】【一般】修复了定义as object复杂对象类型,匿名块中select into赋值失败的问题。

    【1041372】【一般】修复了通过analyze收集表统计信息后,查询all_tab_columns信息有重复的问题。

    【1042110】【一般】修复了递归查询语义解析存在无用代码的问题。

    【1041050】【一般】修复了由于create schema if not exists相关语法未设置charset = PG_INVALID_ENCODING,导致charset默认为0,选择了错误的collate,最终导致查询pg_namespace,nspcollation中不为空的问题。

    【1040346】【一般】修复了format_type函数获取varchar的SQL名称与openGauss和PG都不相同的问题。

    【1039998】【一般】修复了由于number类型改造,导致的自定义type number类型,无法处理text或varchar等字符类型的问题。

    【1037184】【一般】修复了普通用户执行analyze verify异常的问题。

    【1037716】【一般】修复了由于vacuum过程中的一处heap_open在非if逻辑中缺少close,导致对宽表执行vacuum full报warning,存在relcache leak的问题。

    【1039002】【一般】修复了由于创建对象类型后引用对象类型属性时,将属性误判为对象类型方法,导致函数入参为自定义类型,变量声明使用入参%type报错invalid type name的问题。

    【1039539】【一般】修复了由于在获取精度时,没有对于number类型处理,导致无法获取number类型的精度和长度的问题。

    【1040863】【一般】修复了start with后面跟level,结果异常的问题。

    【1041394】【一般】修复了由于对pg分区表少了对分区的判断逻辑,导致建索引和约束时报错pg_toast_xxx已存在的问题。

    函数

    【1039071】【致命】修复了由于未对from_base64入参做参数校验和拦截,当base64的长度不是4的整数倍时,会导致执行from_base64 函数出现挂库的问题。

    【1037233】【致命】修复了由于缺少全局缓存拷贝函数,导致调用包内存储过程,通过同义词调用类型发生挂库的问题。

    【1037626】【致命】修复了由于未对domain constraint类型的参数进行判空处理,导致调用pg_get_object_address函数,指定relation为空,获取域约束对象地址,数据库宕机的问题。

    【1042098】【严重】修复了由于参数类型不匹配,导致的char类型嵌套upper函数后,长度显示有误的问题。

    【1040138】【严重】修复了由于函数的参数和函数的依赖关系创建到了vb_dependencies中,导致创建函数的输入参数是type类型,删除type类型后,\df报错cache lookup failed for type 27804的问题。

    【1042109】【严重】修复了由于对聚集函数加order by的SQL, 直接丢弃了order by语句,导致order by不存在的列不报错的问题。

    【1042029】【严重】修复了由于递归查询内置函数读取timestamp数据时,少了2个参数,导sys_connect_by_path中为timestamp时,执行查询报错的问题。

    【1039946】【一般】修复了由于UserVar在获取Collation时强转错误,导致PATINDEX函数匹配字段不同字符数据类型时报错cache lookup failed for collation的问题。

    【1040186】【一般】修复了由于jsonb类型转换函数未添加STRICT属性,导致jsonb类型的null强转为boolean类型,返回结果错误的问题。

    【1041618】【一般】修复了由于GetCommandLogLevel函数中没有对语法节点TableOfTypeStmt做适配,导致og_statement设为ddl时创建type提示WARNING的问题。

    GUC参数

    【1039974】【严重】修复了由于遗漏了部分场景下的standard_conforming_strings处理,导致standard_conforming_strings开启时,逃逸字符使用不双写反斜线无法正常返回结果的问题。

    【1040124】【严重】修复了关闭参数enable_opfusion后,插入性能变差的问题。

    【1040136】【严重】修复了开启enable_segment参数,创建函数的输入参数是type类型,\df查不到结果的问题。

    【1040876】【一般】修复了由于屏蔽关键字时有遗漏,导致参数vb_exclude_reserved_words不能够在参数文件中重复设置的问题。

    【1041489】【一般】修复了由于未检查配置参数长度,导致修改audit_data_format、audit_directory参数超出长度限制,报错信息不合理的问题。

    【1042193】【一般】修复了由于配置参数失败后没有释放文件锁,导致获取文件配置不能获取到文件锁,alter system set方式修改audit_directory值超出长度限制后,通过GUC set方式修改ssl值为on报错的问题。

    【1038435】【一般】修复了由于SIHUP级别的GUC参数username_check_enabled被存储在g_instance中,导致其他线程收到SIGHUP信号反复对内存中的GUC参数重载默认值、设为更新值,从而导致集成测试hw_identifier用例不稳定的问题。

    【1038728】【一般】修复了由于参数proc_outparam_override开启时,对于非plsql函数也进行了重载,导致behavior_compat_options中添加proc_outparam_override配置,无法使用调试功能的问题。

    安全

    【1042184】【严重】修复了审计日志开启转存后,执行存储过程,触发审计,数据库夯住的问题。

    【1041265】【严重】修复了由于集成社区代码与Vastbase原有审计空间告警功能冲突,导致设置日志空间告警,触发审计,生成审计日志,会话卡住的问题。

    【1041180】【严重】修复了由于依赖的三方库版本存在漏洞,且使用的版本固定,所以扫描软件会扫描到相关依赖的漏洞问题。

    【1040296】【一般】修复了由于防篡改表支持number类型,导致防篡改模式下创建包含各种数据类型字段的表,报错unsupport column type "pg_catelog.number" of ledger user table的问题。

    内存

    【1041940】【严重】修复了磁盘空间不足,清理磁盘后数据库启动失败的问题。

    【1040776】【严重】修复了由于相关内存未释放,导致2.2.15mem check版本vb_dump出现内存泄漏的问题。

    【1039480】【严重】修复了2.2.15.1 环境运行数据迁移后,日志大量刷新,导致磁盘空间占满的问题。

    【1040933】【严重】修复了在hashjoin构建hash表扩容时,如果同时触发了应对内存不足的优化,导致skew bucket内存被释放,从而导致宕机的问题。

    逻辑复制

    【1042189】【严重】修复了由于订阅端在tablesync.cpp中获取发布端表信息时,查询语句没有连接namespace和rel,查到了其他模式下的同名表,导致字段匹配失败,发布订阅时指定表发布未同步的问题。

    【1041915】【严重】修复了由于逻辑导出时部分对象模式设置错误,导致对象丢失的问题。

    【1041770】【严重】修复了vsql逻辑导入,package中函数的函数体丢失的问题。

    高可用

    【1039777】【严重】修复了一主一备集群,备库查询报错terminating connection due to conflict with recovery后,hasctl显示无备节点的问题。

    【1038877】【一般】修复了主库预生成的xlog文件太多的问题。

    PL/pgSQL

    【1040130】【致命】修复了由于错误修改的大数编译宏没有回退,导致TPCH性能测试10GB数据,列存表sql6宕机的问题。

    【1041083】【严重】修复了由于PL/SQL将call function作为普通的 execsql 发到内核执行,SPI(PL/SQL与内核交互的方法)没有地方接收返回值,导致存储过程嵌套调用,外层过程入参为null时报错ERROR: query has no destination for result data的问题。

    【1037283】【严重】修复了停止执行任务报错的问题。

    【1041040】【严重】修复了执行匿名块报错dbms.lob_og.cpp : 120 : The destination buffer or format is a NUlL pointer or the invalid parameter handle is invoked.的问题。

    【1042056】【严重】修复了由于DBMS_JOB定时任务内置函数的provolite属性设置成了IMMUTABLE,因此PL/SQL语义解析时生成函数执行计划时,执行了该函数,导致call调用存储过程,执行定时任务,执行结果错误的问题。

    【1039793】【严重】修复了由于PQresult未释放,导致的内存泄漏问题。

    【1039891】【一般】修复了由于funcexpr序列化树read out顺序错误,导致手动生成快照失败的问题。

    【1038178】【一般】修复了由于row变量上automically_null_object为true,属性赋值时未改变该值导致空值,最终导致定义as object 复杂类型,匿名块中赋值失败的问题。

    安装升级

    【1039798】【致命】修复了升级2.2.15.2后,执行dbms_aqadm测试用例,执行报错的问题。

    【1040896】【严重】修复了打完补丁后,select * from t查询变得异常慢,且query_dop线程回收缓慢的问题。

    【1042142】【严重】修复了由于缺少升级和回滚脚本,导致升级后创建发布,查询pg_publication缺少ignorerefreshmatview列的问题。

    【1041994】【严重】修复了由于升级脚本重新创建视图,未授予public权限,导致普通用户查询user_tab_columns 和all_tab_columns 报错的问题。

    【1039906】【严重】修复了由于升级脚本缺失,导致导入导出测试时,导出失败的问题。

    【1039896】【一般】修复了Vastbase G100 V2.2 Build15(Patch NO.2)补丁升级后,查看版本,patch为0的问题。

    【1041475】【一般】修复了Vastbase G1002.2.15适配<威视1.0>+<龙芯 3C5000>系统时不支持jdbc_fdw的问题。

    备份恢复

    【1038549】【严重】修复了由于做物化视图需求的时候没有适配dump,导致vb_dump导出语句没有带refresh语法的问题。

    【1037282】【严重】修复了由于并发备份时需要导入快照,快照格式化时类型不匹配,导致vb_dump开启多线程导出多个表时报错could not import the requested snapshot的问题。

    【1037279】【严重】修复了由于嵌套表类型使用的oid,没有转化为对应的类型名,导致vb_dump导出嵌套表类型,导入报语法错误的问题。

    【1040814】【严重】修复了vb_dump导出将date_part函数做了错误的类型转换的问题。

    【1040319】【严重】修复了由于B模式下会将双引号中的\当成转义符,因此vb_dump工具在使用已经持有表名的时候使用”表名”进行选择时,会使表名中的\变成转义符号从而和原表名不同,导致创建表的名字中含多个"\",vb_dump导出时报错的问题。

    【1040957】【严重】修复了全量迁移导致数据库实例CRASH的问题。

    【1042022】【一般】修复了由于用户过期时执行SQL都会报错,vb_dump里获取数据库兼容模式时没有判断libpq接口执行结果直接去使用返回值,导致core的问题。

    插件

    【1040050】【1037351】【严重】修复了由于pljson插件中的get函数包含注释,导致pljson插件的get函数未获取到值的问题。

    【1037718】【一般】修复了pg_stat_statements插件,调用gs_decrypt函数计算脱敏位置错误的问题。

    外部数据封装器

    【1041324】【严重】修复了由于jdbc_fdw禁止了外表的rownum转化为limit,rownum错误进行了下推,导致查询语句语义不再等价,结果不正确的问题。

    【1041330】【严重】修复了dblink连接oracle时,使用connect by报错failed to get table metadata:vbdblink_wzr_xn_wzr.t3的问题。

    【1037078】【一般】修复了由于oracle_fdw 中缺少BLOB等类型转换和判断,导致无法查询Oracle端的NVARCHAR2和CLOB类型数据,报错无法转换的问题。

    【1040429】【提示】修复了重复创建oracle_fdw时,报错提示与预期不符的问题。

    驱动

    【1042034】【严重】修复了由于缺少bytea->varbinary的转换,导致通过JDBC连接时,varbinary类型无法通过preparestatement.setBinaryStream()来传参的问题。

    【1042035】【严重】修复了由于缺少blob->varbinary的转换,导致通过JDBC连接时,varbinary类型无法通过preparestatement.SetBlob传值的问题。

    【1042037】【严重】修复了由于缺少blob->varbinary的转换,导致通过JDBC连接时,varbinary类型无法通过Preparestatement.setBytes传值的问题。

    【1042063】【严重】修复了由于JDBC环境下执行的SQL语句在反引号为末尾的时候词法解析失败,导致使用JDBC连接执行反引号SQL,报错的问题。

    Oracle兼容性

    【1040106】【严重】修复了Oracle兼容模式下,缺少对foreign table类型的objectType赋值的逻辑,导致存储过程中使用外表,创建时报错ERROR: SetPlpgsglRefDependObj arguemts is invalid.的问题。

    【1039614】【严重】修复了Oracle兼容模式下,包A存储过程依赖包B内公有变量,包B内公有变量依赖视图,重建视图,调用包A存储过程报错的问题。

    【1037201】【严重】修复了Oracle兼容模式下,由于nclob没有进行参数控制映射,直接映射为oraclob,导致在旧lob场景下执行异常,dbms_output.put_line输出nclob类型变量时,报错的问题。

    【1041336】【严重】修复了Oracle兼容模式下,由于触发器函数运行时,并没有对package变量的拷贝进行相应的处理,导致在触发器函数内,出现package变量未赋值的问题,导致表触发器中调用包变量返回结果不符合预期的问题。

    【1037196】【严重】修复了Oracle兼容模式下,由于nclob没有进行参数控制映射,直接映射为oraclob,导致在旧lob场景下执行异常,to_clob函数给类型为nclob的表字段插入数据时报错的问题。

    【1037062】【严重】修复了Oracle兼容模式下,由于不支持对子查询的某个组合类型列的子域直接使用 “.” 来访问,导致自定义函数出现在子查询中出现报错的问题。

    【1036827】【严重】修复了Oracle兼容模式下,由于当amount>文件实际长度时,禁止读取,导致enable_oralob_type设置为off使用旧lob时,LOADBLOBFROMFILE函数对bin文件处理时报错的问题。

    【1040884】【严重】修复了Oracle兼容模式下,由于修改package的owner时,传参错误,导致判断错误,alter package 报错 unrecognized object的问题。

    【1036059】【严重】修复了Oracle兼容模式下,由于递归失效,隐式编译问题导致的对象依赖关系删除不符合预期的问题。

    【1035698】【严重】修复了Oracle兼容模式下,variadic参数后面跟out参数,out参数与variadic参数交互,创建存储过程时报错的问题。

    【1035695】【严重】修复了Oracle兼容模式下,多会话多次调用包中存储过程报错:cache lookup failed for XXX的问题。

    【1035501】【严重】修复了Oracle兼容模式下,由于递归依赖问题,导致函数自定义类型依赖包体B类型,包体B私有函数自定义类型依赖对象类型,删除并重建对象类型后手动编译函数,包体B仍无效的问题。

    【1034801】【严重】修复了Oracle兼容模式下,NUMBER类型精度限制未适配完全的问题。

    【1040238】【严重】修复了Oracle兼容模式下,由于replace时,未区分原包残留与新包中的重复定义类型,导致重建package时,subtype仍指向旧的number类型的问题。

    【1041236】【严重】修复了Oracle兼容模式下,由于递归查询的connect by 条件时prior列加level时,原有逻辑会将level改成level+1,导致多表相互外连接嵌套,inner joinleft JOIN,结果与Oracle不一致的问题。

    【1042031】【严重】修复了Oracle兼容模式下,由于升级脚本问题导致DBMS_SQL.VARCHAR2A相关用例均执行失败的问题。

    【1041291】【严重】修复了Oracle兼容模式下,由于swcb语句中的rownum在语义分析和执行阶段做了特殊处理,没有处理子查询中的varno就通过conetctLevelExpr放到了qual里,导致update tab set (col) = (select start with )语法报错的问题。

    【1034031】【一般】修复了Oracle兼容模式下,由于数组初始化赋值时如果有NULL元素对应位置不可见的问题,导致自定义嵌套表类型,匿名块中使用类型方法delete,打印结果与Oracle不一致的问题。

    【1041237】【一般】修复了Oracle兼容模式下,由于sys_connect_by_path参数是2个列组成,没预进行处理,直接保存了原始值,导致交叉连接,sys_connect_by_path结果与Oracle不一致的问题。

    【1034537】【一般】修复了Oracle兼容模式下,由于缺少对 nchar 等类型的处理和判断,导致to_nchar函数嵌套自身使用,查询报错的问题。

    【1034510】【一般】修复了Oracle兼容模式下,由于缺少对 nchar 等类型的处理和判断,导致创建表达式索引时使用to_nchar函数,报错创建失败的问题。

    【1034472】【一般】修复了Oracle兼容模式下,由于where in后面不加括号的时未适配绑定变量语法,导致语法错误的问题。

    【1034453】【一般】修复了Oracle兼容模式下,in后面直接接常量没有支持表达式的问题。

    【1039611】【一般】修复了Oracle兼容模式下,函数自定义类型依赖视图,视图依赖存储过程,级联删除存储过程,函数依然有效的问题。

    【1039605】【一般】修复了Oracle兼容模式下,由于递归失效,隐式编译问题,导致的普通函数的重载函数类型记录预期记录在pg_depend表,实际vb_dependencies表中未删除记录的问题。

    【1039603】【一般】修复了Oracle兼容模式下,多层依赖,备份恢复时,导出导入,查询不到未失效数据的问题。

    【1039600】【一般】修复了Oracle兼容模式下,由于递归失效逻辑不完善,导致当包依赖视图,视图无效时,包创建成功,与预期不符的问题。

    【1039599】【一般】修复了Oracle兼容模式下,由于对象类型在导出时设置了enable_proc param_name_overide=on,导致再导入时,对象类型的默认构造函数有两个,备库中调用默认构造函数时无法选出最佳的函数,导致备份恢复失败的问题。

    【1039831】【一般】修复了Oracle兼容模式下,关联数组嵌套record作为package中存储过程的入参,执行报错的问题。

    【1040192】【一般】修复了Oracle兼容模式下, 对于table of type,不支持直接插入type类型数据,导致用抽象数据类型,创建行对象表,并插入数据,插入数据时失败的问题。

    【1040576】【一般】修复了Oracle兼容模式下, 由于表达式遍历漏掉relcolumn表达式,导致递归查询语法中,START WITH condition中condition中无法使用table函数的问题。

    【1042079】【一般】修复了Oracle兼容模式下,in后不带括号接NULL的语法的问题。

    MySQL兼容性

    【1040632】【致命】修复了MySQL兼容模式下,由于执行聚集算子的时候,在记录扫完之后错误地继续迭代了set变量操作,导致重复扫描,执行查询数据库卡住,ctl+c无法停止的问题。

    【1041633】【致命】修复了MySQL兼容模式下,由于default函数解析未添加列名合法性验证,导致使用default函数时崩溃的问题。

    【1041631】【致命】修复了MySQL兼容模式下,执行带@变量的查询语句时数据库宕机并产生 core文件的问题。

    【1042091】【严重】修复了MySQL兼容模式下,由于SQL Server实现varbinary类型操作符,导致用户自定义变量多次赋值,赋值字符串拼接结果,varbinary到text转换报错的问题。

    【1040277】【严重】修复了MySQL兼容模式下,@变量作为内置函数入参,报错的问题。

    【1040255】【严重】修复了MySQL兼容模式下,由于vastbase_sql_mode设置会改变'||'含义,导致用户自定义变量多次赋值,备份失败的问题。

    【1041966】【严重】修复了MySQL兼容模式下,由于未处理转义字符,导致建表包含json,数据包含各种转义符的数据,使用->>查询时候结果为null的问题。

    【1039997】【严重】修复了MySQL兼容模式下,用户自定义变量多次赋值、类型转换,多次执行结果报错不一致的问题。

    【1039740】【严重】修复了MySQL兼容模式下,jdbc连接,驱动返回\0转义符结果不符合预期的问题。

    【1034580】【严重】修复了MySQL兼容模式下,由于convert to没修改列的字符序属性,导致修改表的字符集失败,大小写仍敏感的问题。

    【1039984】【严重】修复了MySQL兼容模式下,cast转换varchar类型为bool,update执行未成功的问题。

    【1041665】【严重】修复了MySQL兼容模式下,由于JDBC环境下执行的SQL语句在反引号为末尾的时候词法解析失败,导致使用jdbc连接执行反引号SQL,报错的问题。

    【1040974】【严重】修复了MySQL兼容模式下,由于语法分析阶段错误,导致unix_timestamp函数,clock_timestamp使用报错的问题。

    【1040970】【严重】修复了MySQL兼容模式下,由于create table as + with no data语句,会在rewrite阶段生成一条insert into xxx select null where false 语句,但B兼容目前insert列数必须与表列数相同,因此在列数大于1时会报错的问题。

    【1042148】【严重】修复了MySQL兼容模式下,由于子查询在递归时产生了多个结果,导致递归查询时行存表获取各层级记录,结果报错的问题。

    【1040560】【严重】修复了由于外键检查构造的sql语句都是用双引号包schema和表名的,但是MySQL兼容模式不开ansi_quote的话,双引号只能用来包字符串,导致业务代码执行SQL时在数据库端自行添加了模式名的问题。

    【1042016】【严重】修复了MySQL兼容模式下,由于缺少numeric到interval的转换,导致使用pg_query_audit函数报错函数不存在的问题。

    【1042010】【严重】修复了MySQL兼容模式下,在存储过程内部定义prepare语句并deallocate,在第二个存储过程中定义同名prepare语句,调用时报错的问题。

    【1040792】【一般】修复了MySQL兼容模式下,lower_case_table_names为0,当表名含有大写字母时,vb_dump使用-t导出报错no matching tables were found的问题。

    【1041228】【一般】修复了MySQL兼容模式下,由于lower_case_column_names为0的时候,没有采用不区分大小写的方式比较列名,导致lower_case_column_names设置为0/1(开启/关闭)时,建表指定外键,列名大小写与前面建表列名大小写不同,执行失败的问题。

    【1041220】【一般】修复了MySQL兼容模式下,由于date_add函数解析interval类型中没有考虑用户变量的情况,导致@变量出现在interval后报错的问题。

    【1041753】【一般】修复了MySQL兼容模式下,datetime2类型转换语法丢失的问题。

    【1041640】【一般】修复了MySQL兼容模式下,未设置ansi_quotes,返回字符串,没有处理delimiter分隔结束符导致没有正常结束的问题。

    【1041508】【一般】修复了MySQL兼容模式下,由于正则表达式函数对于不同兼容模式的行为错误,导致使用regexp_replace函数与MySQL数据库结果不一致的问题。

    【1041485】【一般】修复了MySQL兼容模式下,由于密钥名受到lower_case_table_names影响没有转换为小写,导致使用 has_cmk_privilege和 has_cek_privilege查询密钥的使用权限时,报错密钥不存在的问题。

    【1041441】【一般】修复了MySQL兼容模式下,由于词法分析有问题,导致反引号作为标识符,执行报错的问题。

    【1042122】【一般】修复了MySQL兼容模式下,由于没有在cluster_guc.conf中增加vastbase_sql_mode参数的信息,导致vastbase_sql_mode参数是USERSET类型,但是只能通过ALTER方式设置。

    【1039952】【一般】修复了MySQL兼容模式下,由于在transformColumnRef()中没有对B模式下无入参进行处理,导致JSON_ARRAY函数无括号,预期结果与实际不符的问题。

    【1042248】【一般】修复了MySQL兼容模式下,float(p,0) 类型解析为numeric(p,0) 该类型转换将浮点类型转换为整数类型,类型转换不合理的问题。

    【1038357】【一般】修复了MySQL兼容模式下,由于userset表达式返回错误,子查询上拉之后relid没有加上偏移量,导致select关联查询中给@变量赋值报错:rel 1 already exists的问题。

    【1039650】【一般】修复了MySQL兼容模式下,在建表指定主键,列名与前面的建表列名不同,且使用了双引号区分大小写存储,比较的时候认为列不存在,导致create table key语句执行报错ERROR: coludmn "incID" named in key does not exist的问题。

    【1040087】【一般】修复了MySQL兼容模式下,由于serial类型内部应该转化为bigint,在建表的时候转成了bigint,但是在接收函数参数的时候转化为了int,导致类型不一致的问题。

    【1040515】【一般】修复了MySQL兼容模式下,含有自增列的表名称带有空格时,vb_dump导出报错query failed: ERROR: unterminated quoted identifier at or near ""\""的问题。

    【1040477】【一般】修复了MySQL兼容模式下,由于prepare触发计划缓存,缓存中的prepare stmt as @var中的变量不更新,导致java中preparestatement协议多次执行prepare as,每次变量值不同,无法更新结果的问题。

    【1038338】【一般】修复了MySQL兼容模式下,由于词法层处理关键字的控制不正确,导致lower_case_column_names设置为0,列名为Type等关键字时不生效的问题。

    【1041648】【一般】修复了MySQL兼容模式下,由于代码内置的PI精度不足,导致DEGREES(PI())函数精度错误的问题。

    PostgreSQL兼容性

    【1042068】【严重】修复了PostgreSQL兼容模式下,由于把rownum当成了Oracle的伪列来处理了,导致不能作为列别名的问题。

    【1040029】【严重】修复了PostgreSQL兼容模式下,由于rewrite_rule参数默认值为magicset,会消除子查询中的order by操作,导致子查询中的SELECT DISTINCT ON语义错误的问题。

    【1041735】【严重】修复了PostgreSQL兼容模式下,由于系统内核对该场景做了拦截,导致修改字段名为tid失败的问题。

    【1040647】【严重】修复了PostgreSQL兼容模式下,由于vb_dump中获取type_id列时调用executesqlquery没有释放result 内存,导致建表和btree索引,执行备份时,内存泄漏的问题。

    【1040134】【一般】修复了PostgreSQL兼容模式下,由于缺少类型转换jsonb到boolean转换,导致jsonb_path_query_first函数不支持返回值true或false到boolean类型t或f的转换问题。

    【1042043】【一般】修复了PostgreSQL兼容模式下,numeric转换interval类型失败的问题。

    SQL Server兼容性

    【1040030】【严重】修复了SQL Server兼容模式下,由于Exec没有走到CALL的处理的相同逻辑中,导致存储过程多个出入参,结果集混用场景,exec调用报错的问题。

    【1040027】【严重】修复了SQL Server兼容模式下,对象使用方括号分隔符,结合动态SQL调用,执行报错,与block_return_multi_results参数冲突的问题。

    【1042084】【严重】修复了SQL Server兼容模式下,由于导出类型出错,导致的视图定义中convert函数出错的问题。

    【1040850】【严重】修复了SQL Server兼容模式下,由于CopyStmt不允许自定义类型使用空字符串作为输入,导致vb_dump导入create domain 自定义类型字段的数据时将空值当成了null的问题。

    【1041755】【一般】修复了SQL Server兼容模式下,datetime2范围与sqlserver的datetime2范围不一致的问题。

    【1042033】【一般】修复了SQL Server兼容模式下,由于没有同步主线对动态SQL的修改,导致存储过程支持@var形式的出入参,动态调用存储过程,打印@var结果为空的问题。

    【1037053】【一般】修复了在SQL Server兼容模式下,由于未支持PL/pgSQL中查询语句带变量赋值操作,导致调用存储过程,=号被识别为判断的问题。

    【1039873】【一般】修复了SQL Server兼容模式下,由于timestamp_in 未处理不支持的类型,导致date参数为不支持的类型,调用成功的问题。

    【1039872】【一般】修复了SQL Server兼容模式下,由于charindex对expressionToFind或expressionToSearch为空字符串未处理,导致CHARINDEX函数expressionToFind或expressionToSearch为空字符串、执行结果不符合预期的问题。

    【1040062】【一般】修复了SQL Server兼容模式下,由于空值在降序排列时空值在最后,升序时空值在前,但是代码中在初始化window add状态时其nulls_first结果错误导致后续执行断言宕机的问题。

    【1040223】【一般】修复了SQL Server兼容模式下,由于未修改psql词法解析,导致标识符内有空格或特殊字符,使用方括号分隔符,创建库报错的问题。

    【1041258】【一般】修复了SQL Server兼容模式下,由于表字段为Numeric类型时,没有判断是否省略小数为情况,导致当表字段为decimal(n)类型时使用IDENTITY属性创建表报错的问题。

    【1041108】【一般】修复了SQL Server兼容模式下,由于未考虑临时表#table按位异或运算符#相区分,导致数字操作符#计算失败的问题。