V2.2 Build 10(Patch No.9)
发布日期
2023年06月08日
升级方式
VPatch工具升级。可参考使用VPatch进行版本控制。
commit 标识:13573
新特性
1、新增MySQL兼容性:
支持使用FORCE INDEX语法,为优化器提供有关如何在查询处理期间选择索引的信息。
支持通过lower_case_table_names参数来控制对象名的大小写敏感,需注意该参数仅支持在建库时指定,数据库创建成功后不支持修改。
字段定义支持使用UNSIGNED属性,仅能插入正数,如遇到负数则报错。
对于MySQL兼容模式下的数据类型:int,tinyint和bigint,支持int(N),tinyint(N),bigint(N)的写法。
新增了对以下函数的支持:
SUBSTRING_INDEX:按照指定的分隔符划分字符串,返回以分隔符分割的原字符串中对应索引位的子字符串。
UNIX_TIMESTAMP:获取时间戳。
FROM_UNIXTIME:用于将数值格式的时间戳转换为字符串类型的日期时间格式。
DAY:用于返回某个日期是当月中的第几天。
DAYOFMONTH:用于返回某个日期是当月中的第几天。
WEEKDAY:用于获取某个日期是一周中的星期几。
DAYOFYEAR:用于获取某个日期是一年中的第几天。
WEEKOFYEAR:用于获取某个日期是一年中的第几周。
WEEK:用于计算某个日期所在的周数。
DAYOFWEEK:用于获取某个日期为星期几。
HOUR:用于提取并返回时间值中的小时部分。
ANY_VALUE:字符处理函数,用于解决查询字段不属于GROUP BY字段的问题。当SELECT的字段没有出现在GROUP BY子句中时,可使用ANY_VALUE函数让语句正常执行。
2、新增Oracle兼容性:
-
LONG:可变长的字符串数据,具有VARCHAR2的特性,最多存储1GB的字符数据。
LONG RAW:可变长二进制数据,最多存储1GB的二进制数据。
新增以下函数:
使用限制
使用PL/Python实现自定义过程语言时,禁止使用plpy模块。
在开启线程池模式时,有触发宕机风险。在生产环境中,可以通过关闭线程池模式来规避。
在字符集编码为GBK环境下升级时,解压后需要将补丁包中
share/postgresql/extension
目录下的pg_zhtrgm--1.0--1.1.sql,pg_zhtrgm--1.1.sql
和pg_zhtrgm--unpackage--1.0.sql
文件中的中文注释删除,否则可能导致升级失败
缺陷修复
1、【1027633】修复了由于pg_zhtrgm插件的脚本是utf8编码且存在中文注释,导致gbk编码数据库在读取插件脚本时发生编码错误,出现了执行字符集相关操作后升级失败的情况。
2、【1027458】修复了由于主进程在stream方式下备份,连接数据库时释放了已经获取的密码,导致fork后的子进程在连接数据库时密码为空而报错提示密码错误的问题。
3、【1027457】修复了由于插件获取到的sql语句只在查询接口显示时对密码脱敏,存储时未脱敏导致了$PGDATA/global目录下pg_stat_statements.stat文件中存在明文密码信息的问题。
4、【1027370】修复了由于pg_database表中datacl字段有值,但程序采用了结构体内的取值对lower_case_table_names赋值,在用户赋予权限后,pg_database表中datacl字段值发生改变的问题。
5、【1027365】由于SQL Server兼容模式下未合入多表联合删除语法,导致在SQL Server兼容模式下执行delete操作数据库挂库的问题。
6、【1027359】修复了由于未考虑到检查当前用户是否是超级用户,导致在执行vb_ttrestore导入命令,-U
指定用户为非管理员时报错提示信息不明确的问题。
7、【1027341】修复了由于高速导入导出没有正确筛选出Ustore表,导致vb_ttrestore导入数据后,查询时数据库宕机的问题。
8、【1027340】修复了动态加载过程中出现挂库的情况。
9、【1027302】修复了MySQL兼容模式下,建表时为CLOB类型字段指定COLLATE,查询带空格的值时返回结果错误的问题。
10、【1027237】修复了由于函数表别名未做敏感处理,导致报错的问题。
11、【1026963】修复了由于MySQL兼容模式下的视图名大小写敏感,但升级脚本中包含了大写视图名的语句,导致带对象数据库升级失败的情况。
12、【1026844】修复了由于栈上空间申请有问题,导致栈内存空间溢出,数据库宕机的问题。
13、【1026769】修复了由于增加longtext类型的操作符和cast时未增加raw类型cast,导致插入数据报错的问题。
14、【1026614】修复了由于启动AI进程继承端口,导致新的vastbase启动和AI进程之间端口冲突,出现报错的情况。
15、【1026597】修复了审计未记录对表的DML具体SQL信息的问题。
16、【1026548】修复了由于缺少style为NULL的语法,导致报错的问题。
17、【1025556】修复了由于反引号和!
等都属于操作符,当这些操作符一起出现时,词法解析将其作为操作符串传入,导致当变量名为反引号包裹的特殊字符时,部分字符报错的问题。
18、【1025135】修复了由于对insert into xx values [数组]
的处理存在问题,导致创建存储过程失败的问题。
19、【1025130】修复了部分内置函数在集合为空时未报错的问题。
20、【1024654】修复了vb_dump和vb_restore使用--no-tablespaces
参数无效的问题。
21、【1026714】修复了由于fixbug升级时,readnode读取了旧版本没有的内容,导致升级失败的问题。
22、【1027298】修复了由于日志打印时错把int类型数据按照%c 输出,导致在报错信息中看不到具体type的问题。