Updated on 2024-08-20 GMT+08:00

ALTER EXTENSION

The extended function is for internal use only. You are advised not to use it.

Description

Modifies the definition of an installed extension.

Precautions

  • UPDATE

    Updates the extension to a target version. The extension must be applicable to an update script (or a series of scripts) so that the current installation version can be modified to a required version.

  • SET SCHEMA

    Moves the extended object to another schema. This extension must be relocatable to make the command successful.

  • ADD member_object

    Adds an existing object to an extension, which is mainly applicable to the extension update script. This object is then treated as a member of the extension and can only be canceled by canceling the extension.

  • DROP member_object

    Removes a member object from the extension, which is mainly applicable to the extension update script. The object is not canceled but removed from the extension.

    You must have an extension before using ALTER EXTENSION. You must have the permission on adding or deleting an object before using the ADD or DROP statement.

To use this function, set support_extended_features to true.

Syntax

  • Modify the version of an extension.
ALTER EXTENSION name UPDATE [ TO new_version ];
  • Modify the schema of the extension.
ALTER EXTENSION name SET SCHEMA new_schema;
  • Add or delete member objects of the extension.
ALTER EXTENSION name { ADD | DROP } member_object;

The member object member_object is written as follows:

{AGGREGATE agg_name (agg_type [, ...] ) |
  CAST (source_type AS target_type) |
  COLLATION object_name |
  CONVERSION object_name |
  DOMAIN object_name |
  EVENT TRIGGER object_name |
  FOREIGN DATA WRAPPER object_name |
 
  FUNCTION function_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) |
  MATERIALIZED VIEW object_name |
  OPERATOR operator_name (left_type, right_type) |
  OPERATOR CLASS object_name USING index_method |
  OPERATOR FAMILY object_name USING index_method |
  [ PROCEDURAL ] LANGUAGE object_name |
  SCHEMA object_name |
  SEQUENCE object_name |
  SERVER object_name |
  TABLE object_name |
  TEXT SEARCH CONFIGURATION object_name |
  TEXT SEARCH DICTIONARY object_name |
  TEXT SEARCH PARSER object_name |
  TEXT SEARCH TEMPLATE object_name |
  TYPE object_name |
  VIEW object_name}

Parameters

  • name

    Name of an installed extension.

  • new_version

    Latest version of the extension, which can be overridden by identifiers and string literals. If a target version of the extension is not specified, ALTER EXTENSION UPDATE updates to the default version shown in the extension's control file.

  • new_schema

    New schema of the extension.

  • object_name

    agg_name

    function_name

    operator_name

    Names of objects that are added or removed from the extension, including names of tables, aggregations, domains, external linked lists, functions, operators, operator classes, operator families, sequences, text search objects, types, and views that can be schema-qualified.

  • agg_type

    Input data type of the aggregate function. To reference a zero-parameter aggregate function, use * to replace the input data type list.

  • source_type

    Name of the source data type to be forcibly converted.

  • target_type

    Name of the target data type to be forcibly converted.

  • argmode

    Model of the function parameter. The value can be IN, OUT, INOUT, or VARIADIC. The default value is IN. ALTER EXTENSION does not relate to the OUT parameter, because you only need to enter parameters to confirm the consistency of functions. Therefore, the IN, INOUT, and VARIADIC parameters are enough.

  • argname

    Name of a function parameter. ALTER EXTENSION does not relate to the parameter name. Only the parameter data type is required to confirm the consistency of the function.

  • argtype

    Data type (optionally schema-qualified) of a function parameter.

  • left_type

    right_type

    Data type (optionally schema-qualified) of an operator parameter. NONE is written for a missing parameter of a prefix or suffix operator.

Examples

Update the PL/pgSQL extension to version 2.0.

gaussdb=# ALTER EXTENSION plpgsql UPDATE TO '2.0';

-- Create a schema.
gaussdb=# CREATE SCHEMA utils;


-- Delete a schema.
gaussdb=# DROP SCHEMA utils;

Update the PL/pgSQL extension mode to utils.

-- Create a schema.
gaussdb=# CREATE SCHEMA utils;

-- Update the PL/pgSQL extension mode to utils.
gaussdb=# ALTER EXTENSION plpgsql SET SCHEMA utils;

-- Delete a schema.
gaussdb=# DROP SCHEMA utils;

Add an existing function for PL/pgSQL extension.

gaussdb=# ALTER EXTENSION plpgsql ADD FUNCTION populate_record(anyelement, plpgsql);

Helpful Links

CREATE EXTENSION and DROP EXTENSION