GanosBase时空引擎插件包括阿里云自研GanosBase插件和PostGIS插件。本文介绍这些插件的升级方法。
GanosBase插件升级
查询已安装的GanosBase插件
使用PostgreSQL命令行工具连接数据库。
执行如下SQL查询当前已安装的GanosBase插件。
SELECT *, installed_version < default_version AS need_update FROM pg_available_extensions WHERE name LIKE 'ganos%';
结果示例:
name | default_version | installed_version | comment | need_update -------------------------------+-----------------+-------------------+--------------------------------------------------------------------------------------+------------- ganos_trajectory | 5.5 | 5.4 | Ganos trajectory extension for PostgreSQL | t ganos_pointcloud_geometry | 5.5 | 5.4 | Ganos_pointcloud LIDAR data and ganos_geometry data for PostgreSQL | t ganos_raster | 5.5 | 5.4 | Ganos raster extension for PostgreSQL | t ganos_networking | 5.5 | 5.4 | Ganos networking extension for PostgreSQL | t ganos_geometry_pyramid | 5.5 | 5.4 | Ganos Geometry Pyramid extension for PostgreSQL | t ganos_scene | 5.5 | 5.4 | Ganos scene extension for PostgreSQL | t ganos_geometry_topology | 5.5 | 5.4 | Ganos geometry topology spatial types and functions extension for PostgreSQL | t ganos_tiger_geocoder | 5.5 | 5.4 | Ganos tiger geocoder and reverse geocoder | t ganos_importer | 5.5 | 5.4 | Ganos Spatial importer extension for PostgreSQL | t ganos_vomesh | 5.5 | 5.4 | Ganos volumn mesh extension for PostgreSQL | t ...
查询结果
说明
name
插件名称。
default_version
当前数据库可安装的版本。
installed_version
目前安装的版本。
comment
插件描述。
need_update
是否需要升级。
说明查询结果中,need_update为t时,表示需要升级。
升级GanosBase插件
如果您的GanosBase插件版本大于等于3.1,请使用如下语句对全部GanosBase插件进行升级。
SELECT ganos_update();
如果您的GanosBase插件版本小于3.1,请参考如下命令,手动创建函数对全部GanosBase插件进行升级。
CREATE OR REPLACE FUNCTION ganos_update() RETURNS text AS $$ DECLARE rec RECORD; sql text; BEGIN FOR rec IN SELECT extname FROM pg_extension WHERE extname like 'ganos_%' LOOP sql = 'ALTER EXTENSION ' || rec.extname || ' UPDATE '; RAISE NOTICE '%', sql; EXECUTE sql; END LOOP; return 'All Ganos extensions have updated to latest version'; END $$ LANGUAGE 'plpgsql' volatile STRICT;
PostGIS插件升级
查询已安装的PostGIS插件
使用PostgreSQL命令行工具连接数据库。
执行如下SQL查询当前已安装的PostGIS插件。
SELECT *, installed_version < default_version AS need_update FROM pg_available_extensions WHERE name LIKE 'postgis%';
结果示例:
name | default_version | installed_version | comment | need_update ------------------------+-----------------+-------------------+------------------------------------+------------- postgis | 3.3.2 | 3.1.4 | Ganos PostGIS+ | t postgis_tiger_geocoder | 3.3.2 | 3.1.4 | Ganos PostGIS+ tiger geocoder | t postgis_raster | 3.3.2 | 3.1.4 | PostGIS raster types and functions | t ...
查询结果
说明
name
插件名称。
default_version
当前数据库可安装的版本。
installed_version
目前安装的版本。
comment
插件描述。
need_update
是否需要升级。
说明查询结果中,need_update为t时,表示需要升级。
升级PostGIS插件
PostGIS插件根据RDS PostgreSQL实例大版本不同,升级方法不同。
以下操作只针对单个数据库有效,如果实例中存在多个数据库,需要对每个数据库均执行以下操作。
如果RDS PostgreSQL实例大版本为PostgreSQL 10、13、14或15,升级方法如下:
执行如下SQL升级PostGIS插件版本。
ALTER EXTENSION <插件名> UPDATE;
说明每一个插件都需要单独执行上述语句进行升级操作。
您也可以通过执行PostGIS_Extensions_Upgrade函数对插件进行升级。更多信息,请参见PostGIS_Extensions_Upgrade。
SELECT PostGIS_Extensions_Upgrade();
如果RDS PostgreSQL实例大版本为PostgreSQL 11、12,升级方法如下:
执行如下SQL升级PostGIS插件版本。
do $$ DECLARE with_pgis boolean; with_ganos boolean; BEGIN SELECT ((SELECT 1 FROM pg_extension WHERE extname='postgis') IS NOT null) INTO with_pgis; SELECT ((SELECT 1 FROM pg_extension WHERE extname='ganos_geometry') IS NOT null) INTO with_ganos; IF with_pgis AND with_ganos THEN PERFORM ganos_update(); ELSIF with_ganos THEN PERFORM ganos_update(); ELSIF with_pgis THEN PERFORM PostGIS_Extensions_Upgrade(); END IF; return 'PostGIS has update to ' || postgis_lib_version(); END $$ LANGUAGE 'plpgsql' ;