Ganos時空引擎插件包括阿里云自研Ganos插件和PostGIS插件。本文介紹這些插件的升級方法。
Ganos插件升級
查詢已安裝的Ganos插件
使用PostgreSQL命令行工具連接數據庫。
執行如下SQL查詢當前已安裝的Ganos插件。
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時,表示需要升級。
升級Ganos插件
如果您的Ganos插件版本大于等于3.1,請使用如下語句對全部Ganos插件進行升級。
SELECT ganos_update();
如果您的Ganos插件版本小于3.1,請參考如下命令,手動創建函數對全部Ganos插件進行升級。
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' ;