本文介绍PolarDB PostgreSQL版(兼容Oracle)的产品功能动态,分别为内核小版本、控制台、时空数据库和API的更新说明。

说明 您可通过如下语句查看PolarDB PostgreSQL版(兼容Oracle)的内核小版本的版本号:
show polar_version;

2022年12月

内核小版本(V1.1.29)

类别名称描述相关文档
新增兼容Oracle DATE类型支持Oracle兼容的64位DATE类型。支持64位DATE类型

时空数据库(V5.1)

类别名称描述相关文档
新增ST_GeoHashID函数支持将GeoHash字符转为整数类型。ST_GeoHashID
ST_GeoHashFromID函数支持将Int类型转为GeoHash字符串。ST_GeoHashFromID
ST_UpdatePyramid函数支持更新矢量快显金字塔。ST_UpdatePyramid
ST_SetUpdatePyramidRules函数支持设置更新金字塔操作的规则。ST_SetUpdatePyramidRules
ST_BuildPyramidUseGeomSideLen函数支持考虑矢量外包框大小来构建矢量快显金字塔。ST_BuildPyramidUseGeomSideLen
ST_InterpolateRaster函数支持空间插值。ST_InterpolateRaster
ST_Contour函数支持等值线生成。ST_Contour
ST_Statistics函数支持以MultiPoint的方式对栅格数据进行自定义权重的统计分析操作。ST_Statistics
ST_Resample函数新增ST_Resample轨迹重采样功能。ST_Resample
ST_Density函数新增ST_Density轨迹密度统计功能。ST_Density
ST_StayPoint函数新增ST_StayPoint轨迹驻点识别功能。ST_StayPoint
缺陷修复修复运行st_buildhistogram后raster对象变为空的问题。
修复轨迹ST_AsTable传入空值导致崩溃问题和z值错误问题。
修复ST_Split中按GeoHash切分时结果错误的问题。
修复ST_Tile 属性字段编码错误问题。

2022年11月

内核小版本(V1.1.28)

类别名称描述相关文档
新增smlar插件您可以通过在数据库内使用smlar插件来高效计算数据相似度。smlar
部分参数默认值调整自数据库内核小版本V1.1.28起,PolarDB PostgreSQL版(兼容Oracle)调整了部分参数的默认值,仅针对新建集群生效,参数默认值的调整可以明显提升数据库的性能,您可以根据需要在控制台自行修改。部分参数默认值调整说明
hypopg插件hypopg插件用于帮助您检查某类索引是否有助于一个或者多个查询。hypopg
Global RelCacheGlobal RelCache将RelCache放到共享内存中,为所有进程共享,提高内存利用率。Global RelCache
pg_bigm插件pg_bigm插件提供了全文本搜索能力,允许创建一个二元语法(2-gram)的GIN索引来加速搜索过程。pg_bigm
hll插件hll插件支持的数据类型HyperLogLog(hll)可以帮助您快速预估PV、UV等业务指标。hll
存储过程中使用holdable cursorholdable模式可以使当前游标不被立即释放,从而实现游标跨事务操作。存储过程中使用holdable cursor
varbitx插件PolarDB PostgreSQL版(兼容Oracle)对varbit插件进行了扩展,支持更多的BIT操作,可以覆盖更多应用场景。varbitx
ZomboDB插件ZomboDB是一个PostgreSQL扩展插件,支持原生的访问方式,为PostgreSQL数据库带来了强大的文本索引和分析功能。ZomboDB

2022年10月

内核小版本(V1.1.27)

类别名称描述相关文档
新增新增实时物化视图PolarDB新增实时物化视图功能,当依赖表进行DML操作时,实时物化视图的数据始终和依赖表的数据保持一致,同时可以大幅提升查询性能。实时物化视图
新增log_fdw插件您可以通过log_fdw插件来查询CSV格式的数据库日志。log_fdw
sql_mapping支持用户自主使用您无需修改配置文件即可使用polar_sql_mapping插件。polar_sql_mapping
新增pg_sphere插件pg_sphere是支持球形数据类型、计算函数和操作符的PostgreSQL插件。pg_sphere
新增pg_repack插件通过pg_repack插件在线清理表空间,有效解决因对全表大量更新等操作引起的表膨胀问题。pg_repack
Global Partitioned Index支持执行器剪枝Global Partitioned Index支持索引剪枝优化,即优化器剪枝和执行器剪枝。创建GLOBAL INDEX
支持failover slot PolarDB PostgreSQL版(兼容Oracle)的逻辑复制槽故障转移(Logical Replication Slot Failover)功能可以将所有的逻辑复制槽从主实例同步到备实例,从而实现逻辑复制槽的故障转移。逻辑复制槽故障转移(Logical Replication Slot Failover)
会话级隔离级别设置您可以设置会话级隔离级别,设置后对当前会话有效,语法如下:
ALTER SESSION SET ISOLATION_LEVEL = {SERIALIZABLE | READ COMMITTED};
说明 其中,隔离级别如下:
  • SERIALIZABLE:可串行化。
  • READ COMMITTED:读已提交。
PX新增按tuple粒度扫描的方式新增polar_px_scan_granularity参数,用于控制PX按照不同的粒度扫描,取值如下:
  • set polar_px_scan_granularity = row;:表示PX按照tuple粒度进行扫描。
  • set polar_px_scan_granularity = block;:默认取值,表示PX按照block粒度扫描。
说明 当扫描的数据较多时,按照block粒度切分扫描会具备更高的性能。
polar_enable_strategy_reject_buffer参数新增polar_enable_strategy_reject_buffer参数,用于控制批量读场景下是否允许突破ring buffer的限制。取值如下:
  • off(默认):表示批量读场景下仍然使用ring buffer。如果从ring中获取的buffer为脏页,则backend进程需将该脏页落盘。
  • on:表示批量读场景下允许突破ring buffer限制。开启该参数后,如果从ring中获取的buffer为脏页,则允许从buffer pool中获取一个新的buffer。开启该参数后backend进程自身刷脏次数会降低,可提升查询速度,但由于突破了ring buffer限制,buffer pool可能会被当前查询的表数据占满,当多个连接查询多个不同表时,仍然会产生buffer淘汰从而带来IO操作。

2022年9月

内核小版本(V1.1.26)

类别名称描述相关文档
新增PLV8插件PLV8是PostgreSQL数据库受信任的JavaScript语言扩展。可以使用JavaScript来编写PostgreSQL数据库函数。PLV8
支持DBMS_METADATA通过DBMS_METADATA提供的方法获取数据库对象的元数据信息,用于重建数据库中的对象。DBMS_METADATA
支持nls_timestamp(_tz)_format支持nls_timestamp(_tz)_format时间显示格式。nls_timestamp(_tz)_format
支持登录登出触发器登录登出触发器是一种事件触发器,提供了可以在用户登录/登出时触发指定函数或存储过程的功能。登录登出触发器
批量写入支持全部写到缓存新增polar_enable_strat_bulkwrite参数,用于控制session写入的数据占用缓存(cache)空间的大小,默认值为true,取值如下:
  • true:与原生PostgreSQL行为完全一致。每个session写入的数据只允许占用部分缓存空间。
  • false:session写入的数据允许使用全部的缓存空间。
说明
  • 通常情况下,该参数保持默认值true即可。可以保证每个session都有一部分专属缓存空间,不会将其他session的缓存数据淘汰掉。
  • 建议将参数值设为false的场景:希望批量写入数据的数据全部都在缓存,读取这部分数据时基本都可在缓存命中,减少读盘次数。
    建议与polar_enable_strat_scan参数一同使用,将两者的值都设为false,数据既可以写入到全部的缓存空间,也可以读取到全部的缓存空间。
    set polar_enable_strat_bulkwrite = false; -- 允许写入全部缓存空间
    set polar_enable_strat_scan = false; -- 允许读取/加载到全部缓存空间
聚集函数下支持ORDER BY子句当存在聚集函数,但不存在分组子句,支持ORDER BY子句。
  • 语法
    SELECT aggfunc(xx) FROM yy ORDER BY any target;
  • 开启方法

    在控制台中将polar_enable_aggfunc_allowed_sort_target参数设置为on

ORDER BY 子句
ORDER BY支持识别distinct表达式支持在ORDER BY子句中识别distinct对象组成的表达式。
  • 语法
    SELECT distinct xx, yy FROM zz ORDER BY expr(xx, yy);
  • 开启方法

    在控制台中将polar_enable_distinct_order_by_expr参数设置为on

ORDER BY识别带别名的表达式支持在ORDER BY子句中识别带有别名的表达式。
  • 语法
    SELECT xx yy, mm nn FROM zz ORDER BY expr(yy,nn);
  • 开启方法

    在控制台中将polar_enable_order_by_use_alias_expr参数设置为on

说明 开启后,如果SELECT中的对象别名与FROM子句中的表的列名重复,则ORDER BY子句会优先将重名对象识别为SELECT中的对象。
历史兼容性功能全部开启PolarDB PostgreSQL版(兼容Oracle)新建集群默认开启以下参数:
  • polar_comp_redwood_greatest_least
  • polar_comp_redwood_strings
  • polar_enable_rownum_connectby_operator
  • polar_enable_rownum_rewrite_for_write
  • polar_plsql_auto_unpin_failed_portal
  • polar_plsql_auto_unpin_failed_portal_stmt_tx
  • polar_enable_inline_cte
  • polar_enable_comp_numeric_format
需要通过控制台开启以下参数:
  • polar_handle_substrb_utf8_truncation
  • polar_enable_base64_decode

时空数据库(V4.9)

类别名称描述相关文档
新增ST_Intersection聚合函数支持将Geometry对象数组聚合操作。ST_Intersection
ST_AddZ函数支持传入Z坐标数组作为参数,将Geometry 2D/3DM转为Geometry3D/4D。ST_AddZ
ST_SetValue函数支持指定像素位置设置像素值,以及按照指定几何对象空间范围设置像素值。ST_SetValue
优化S​T_ExportTo函数支持将Raster对象导出为cog文件。S​T_ExportTo
ST_CreateRast函数支持将规则的网格点多条记录或者数组转换为栅格对象。ST_CreateRast
ST_Split函数按照时间切分时,支持指定开始时间,并支持按轨迹点序号切分。ST_Split
ST_Union函数支持按内存使用量分批次执行,避免大数据量造成OOM。ST_Union
ST_CreateRast函数支持基于HDFS栅格数据创建。ST_CreateRast
ST_ImportFrom函数支持基于HDFS栅格数据导入。ST_ImportFrom
S​T_ExportTo函数支持栅格数据导出到HDFS文件系统。S​T_ExportTo
缺陷修复修复ST_makeTrajectory函数可能会崩溃的问题。
修复ST_lcsSimilarity函数无法识别以天为单位的时间段问题。
修复ST_AsEWKB函数无法转换从数据表中构建出的轨迹问题。
修复ST_BuildPyramid函数,解决超大数据构建矢量金字塔时的内存占用问题。

2022年8月

内核小版本(V1.1.25)

类别名称描述相关文档
新增pgAudit插件支持pgAudit插件,提供生成审计日志的能力。pgAudit
支持DBMS_UTILITY.FORMAT_ERROR_BACKTRACE新增DBMS_UTILITY.FORMAT_ERROR_BACKTRACE函数,用于返回异常抛出位置的调用堆栈的格式化内容。DBMS_UTILITY
支持直接修改视图的基础表类型当基础表上建有简单视图,支持直接修改基础表列的数据类型。ALTER TABLE
支持dml from subquery功能

支持在DML(INSERTUPDATEDELETE)语句中使用子查询。

可以通过polar_enable_dml_from_subquery参数开启或关闭dml from subquery功能。默认值为true,取值如下:
  • true:开启该功能。
  • false:关闭该功能。
DML支持GLOBAL PARTITIONED INDEX SCAN支持使用GLOBAL PARTITIONED INDEX SCAN进行DML操作。DML支持GLOBAL PARTITIONED INDEX SCAN
大小写不敏感新增大小写不敏感功能,开启大小写不敏感功能后,对于无双引号、双引号+全大写和双引号+全小写的数据库对象被视为等价。大小写不敏感
新增Oracle内置函数PolarDB PostgreSQL版(兼容Oracle)新增以下Oracle内置函数:
  • to_timestamp/to_char/to_date(.., nlsparam)
  • wm_concat
  • bitand/bitor
  • to_dsinterval/to_yminterval
默认安装已有插件PolarDB PostgreSQL版(兼容Oracle)默认安装以下插件:
  • polar_from_tz
  • polar_nlssort
  • polar_regexp_like
  • polar_utility
  • sys_guid
  • polar_constraint
  • polar_parameter_check
  • polar_worker
  • roaringbitmap
  • polar_csn
说明 其中前6个插件为兼容性插件。

2022年7月

内核小版本(V1.1.24)

类别名称描述相关文档
新增plan_cache_mode新增plan_cache_mode参数,表示允许设置计划缓存模式。默认值为auto,取值如下:
  • auto:表示自动从custom/generic两种模式中选择。
  • force_custom_plan:表示强制使用优化器生成的custom plan。
  • force_generic_plan:表示强制使用计划缓存中的generic plan。

时空数据库(V4.7)

类别名称描述相关文档
新增ST_makeTrajectory函数支持将表格中的行转化为轨迹。ST_makeTrajectory
ST_AsTable函数支持将轨迹转化为表类型。ST_AsTable
缺陷修复修复栅格数据操作时,匿名临时表无法自动删除的问题。

2022年6月

内核小版本(V1.1.23)

类别名称描述相关文档
新增支持DBMS_SQL.define_array。DBMS_SQL包增加了DEFINE_ARRAY存储过程。DBMS_SQL
支持同时使用%TYPE和:=指定默认值。存储过程中支持同时使用%TYPE和分配运算符:=指定默认值。在变量声明中使用%TYPE
Global Partitioned Index支持全局分区索引,支持在分区表上创建全局分区索引。创建GLOBAL INDEX
pg_hint_planpg_hint_plan插件通过特殊的注释语句提示来调整既定的执行计划。pg_hint_plan
优化resource manager内存释放过程性能优化
  • 新增mem_release_policy参数,表示内存释放策略。默认值为default,取值如下:
    • default:表示当数据库超限后,RM启动自适应策略,此参数不能与其他参数合并使用,按照resource manager默认策略进行内存释放。进程分为idle进程数组和active进程数组,优先对idle进程进行内存释放,然后再对active进程进行内存释放。
    • cancel_query:只对active进程进行取消查询操作。
    • terminate_idle_backend:停止用户idle进程。
    • terminate_any_backend:停止任意用户进程。
    • none:不做任何操作。
  • 新增total_memcontext_dump_rate参数,表示memory context信息输出阈值。默认值为75,取值范围:20~95,重启或者reload生效。
  • 新增max_proc_mcxtdump_num参数,表示memory context信息输出的进程数。默认值为1,取值范围:1~100,重启或者reload生效。
  • 新增interval_max_num参数,表示memory context信息输出的间隔数。默认值为0,取值范围:0~INT32_MAX,重启或者reload生效。

2022年3月

内核小版本(V1.1.22)

类别名称描述相关文档
新增隐式类型转换新增隐式类型转换功能,以兼容Oracle的隐式转换矩阵,且数字类型支持高精度到低精度的转换。
PX Analyze功能
  • 新增polar_px_enable_explain_allstat参数,用于并行查询场景下,配合explain analyze命令打印出每个worker的执行情况,包括每个worker处理的tuple数量,耗时等。
  • 新增polar_px_explain_memory_verbosity参数,用于并行查询场景下,配合explain analyze命令打印每个worker的内存使用情况。取值如下:
    • summary :汇总性的打印worker内存使用情况。
    • detail : 详细打印每个worker内存使用情况。
gtt支持修改列类型全局临时表支持ALTER语句。
port线下支持clang支持clang编译。

时空数据库(V4.6)

类别名称描述相关文档
新增对象存储服务路径栅格数据新增支持用户自建的Minio服务器访问。对象存储服务路径
ST_PointValues函数新增栅格ST_PointValues函数返回所有波段像素值。ST_PointValues
缺陷修复修复栅格ST_Clip函数波段顺序错误的问题。
修复栅格更新时由于缺少主键索引导致性能较低的问题。
修复轨迹从OSS读取数据失败时支持重试。

时空数据库(V4.5)

类别名称描述相关文档
新增新增Ganos支持PostgreSQL 14系列。
优化增强外部存储的轨迹对象增加缓存,提升访问性能。
缺陷修复修复栅格数据导出到OSS会缺少文件后缀的问题。
修复栅格对部分数据统计时失败的问题。

2022年1月

内核小版本(V1.1.20)

类别名称描述相关文档
新增支持表的闪回删除新增闪回删除功能,可以快速恢复已经删除的表,以及查看和清理回收站。闪回删除
OPT_PARAM Hint功能扩展增加了OPT_PARAM Hint在SQL级别指定特定的参数值。OPT_PARAM Hints
PX多级分区表支持多级分区的并行查询。对分区表使用跨机并行查询
DML use GLOBAL INDEX支持使用GLOBAL INDEX SCAN进行DML操作。DML支持GLOBAL INDEX SCAN
支持GBK/GB18030编码支持GBK/GB18030服务器编码格式。指定服务器编码格式

时空数据库(V4.4)

类别名称描述相关文档
新增ST_LinearStretch函数新增ST_LinearStretch函数,将影像进行线性拉伸,作为一个新的raster返回。ST_LinearStretch
ST_BuildPercentiles函数新增ST_BuildPercentiles函数,统计影像的像素值百分比。ST_BuildPercentiles
ST_ComputeStatistics函数新增ST_ComputeStatistics函数,一次性计算栅格数据的统计值,直方图以及百分比。ST_ComputeStatistics
ST_Percentile函数新增ST_Percentile函数,获取影像的像素百分比。ST_Percentile
优化并行计算ST_SummaryStats和ST_BuildHistogram函数支持并行计算能力。
ST_ExportTo函数ST_ExportTo函数在导出数据时,如果目标文件已存在,返回false取代报错消息。
ST_ImportFrom函数ST_ImportFrom函数在导入数据时出错,会返回具体的错误详情方便排查错误原因。ST_ImportFrom
缺陷修复修复栅格裁剪时由于四舍五入可能会有半个像素丢失的问题。
修复由于栅格数据带有NANINF等数据,在导入和统计值会出错的问题。