注意事项 ============= 创建扩展 ~~~~~~~~~~~~~~~~ 安装一个扩展,Yukon目前共提供 postgis、postgis_raster、postgis_sfcgal、yukon_geomodel、yukon_geogridcoder五个扩展,postgis为基础扩展,被其他扩展依赖,因此安装其他扩展之前请先安装基础扩展; **语法** PostgreSQL .. code:: sql CREATE EXTENSION [ IF NOT EXISTS ] extension_name [ WITH ] [ SCHEMA schema_name ] [ VERSION version ] [ CASCADE ] openGauss/GaussDB .. code:: sql CREATE EXTENSION [ IF NOT EXISTS ] extension_name [ WITH ] [ SCHEMA schema_name ] [ VERSION version ] [ FROM old_version ] **参数说明** IF NOT EXISTS 如果系统已经存在一个同名的扩展,不会报错。这种情况下会给出一个提示。请注意该参数不保证系统存在的扩展和现在脚本创建的扩展相同。 extension_name 将被安装扩展的名字。 schema_name 扩展的实例被安装在该模式下,扩展的内容可以被重新安装。指定的模式必须已经存在,如果没有指定,扩展的控制文件也不指定一个模式,这样将使用默认模式。 .. note:: 注意: 扩展不认为它在任何模式里面:扩展在一个数据库范围内的名字是不受限制的,但是一个扩展的实例是属于一个模式的。 version 安装扩展的版本,可以写为一个标识符或者字符串.默认的版本在扩展的控制文件中指定。 CASCADE 自动安装此扩展所依赖但尚未安装的任何扩展。它们的依赖项同样以递归方式自动安装。该子句(如果给定)适用于以这种方式安装的所有扩展。语句的其他选项不适用于自动安装的扩展;特别是,始终选择其默认版本 old_version 当你想升级安装“old style” 模块中没有的内容时,你必须指定FROM old_version。这个选项使CREATE EXTENSION 运行一个安装脚本将新的内容安装到扩展中,而不是创建一个新的实体.注意SCHEMA指定了包括这些已存在实体的模式。 **示例** .. code:: sql --在当前数据库安装postgis扩展 CREATE EXTENSION postgis; --在当前数据库安装postgis扩展到指定模式下 CREATE EXTENSION postgis with schema schema_name; **注意事项** 1、部分模块在扩展时需要与PostGIS在相同的模式下,否则无法扩展,遇到该情况需要使用[ WITH ] [ SCHEMA schema_name ]指定扩展所属SCHEMA,根据提示扩展到PostGIS相同模式下。 目前postgis_raster、pgrouting、yukon_geogridcoder均需要与PostGIS在相同的模式下。 2、添加扩展后,如果需要用户在非扩展注册所属的模式(schema)下访问yukon函数和类型时,默认情况下不指定模式无法访问,必须指定模式,解决方法详情参考'openGauss/GaussDB 相关模式(schema)说明'。 .. note:: openGauss/GaussDB非初始化用户扩展时不支持public,使用 [ WITH ] [ SCHEMA schema_name ] 参数添加扩展,如果需要扩展到public下,必须使用数据库初始化用户进行扩展,解决权限有关问题; GaussDB有yukon_geogridcoder、yukon_geomodel、yukon_vector_pyramid三个试用模块,创建试用模块的扩展需要启用enable_extension参数,可尝试在数据库中执行"set enable_extension=on"。 移除扩展 ~~~~~~~~~~~~~~~~ Yukon支持从数据库移除扩展模块。 **语法** .. code:: DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ] **示例** 移除postgis扩展: .. code:: SQL DROP EXTENSION postgis; -- 如果有对象依赖该扩展,需要加CASCADE关键字进行级联删除 DROP EXTENSION postgis CASCADE; **注意事项** 该能力由数据库内核提供,移除扩展将从当前数据库中删除指定扩展模块的相关配置,如果使用CASCADE同时将自动删除依赖于该扩展的对象,其中包括与该模块相关的数据,依赖于此模块的其他扩展和数据,建议谨慎使用 ,提前做好相关数据备份。 参考 `DROP EXTENSION 语法 `__ .. note:: openGauss需要启用兼容参数,在数据库中执行"ALTER SYSTEM SET support_extended_features to on "并根据提示重启数据库,才能正常移除扩展,参考 `openGauss文档 `__