Skip to main content
The ALTER FUNCTION statement applies a schema change to a user-defined function.

Required privileges

Refer to the respective subcommands.

Synopsis

alter_func syntax diagram

Parameters

For more information about the statement syntax, see User-Defined Functions. Additional parameters are documented for the respective subcommands.

Subcommands

OWNER TO

ALTER FUNCTION ... OWNER TO is used to change the owner of a function.

Required privileges

  • To alter the owner of a function, the new owner must have CREATE privilege on the schema of the function.
  • To alter a function, a user must own the function.
  • To alter a function, a user must have DROP privilege on the schema of the function.

Parameters

For usage, see Synopsis.

RENAME TO

ALTER FUNCTION ... RENAME TO changes the name of a function.

Required privileges

  • To alter a function, a user must own the function.
  • To alter a function, a user must have DROP privilege on the schema of the function.

Parameters

For usage, see Synopsis.

SET SCHEMA

ALTER FUNCTION ... SET SCHEMA changes the schema of a function.
CockroachDB supports SET SCHEMA as an alias for setting the search_path session variable.

Required privileges

  • To change the schema of a function, a user must have CREATE privilege on the new schema.
  • To alter a function, a user must own the function.
  • To alter a function, a user must have DROP privilege on the schema of the function.

Parameters

For usage, see Synopsis.

Examples

Change the owner of a function

Suppose that the current owner of a sq function is root and you want to change the owner to a new user named max.
To verify that the owner is now max, run a join query against the pg_catalog.pg_proc and pg_catalog.pg_roles tables:

Rename a function

The following statement defines a function that computes the sum of two arguments:
The following statement renames the add function to sum:
The default schema for the function sum is public:
Since there is also a built-in function named sum, you must specify the public schema to invoke your user-defined sum function:
If you do not specify public when invoking a user-defined function, you will get an error when invoking a built-in function with the same name:

Change the schema of a function

Suppose you want to add the user-defined sum function from the preceding example to a new schema called cockroach_labs. By default, unqualified functions created in the database belong to the public schema:
If the new schema does not already exist, create it:
Then, change the function’s schema:

See also