时空引擎插件升级

Ganos时空引擎插件包括阿里云自研Ganos插件和PostGIS插件。本文介绍这些插件的升级方法。

您可以加入RDS PostgreSQL插件交流钉钉群(103525002795),进行咨询、交流和反馈,获取更多关于插件的信息。

Ganos插件升级

查询已安装的Ganos插件

  1. 使用PostgreSQL命令行工具连接数据库。

  2. 执行如下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_updatet时,表示需要升级。

升级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插件

  1. 使用PostgreSQL命令行工具连接数据库。

  2. 执行如下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_updatet时,表示需要升级。

升级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' ;