select open change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

SQL COMMANDS / VERSION COMPARISON

What changed?

SQL Commands · PostgreSQL 13 → 14

Browse PG 14 →

0 added · 0 removed · 55 changed · 0 coverage changes. These are changes in the pinned reference snapshots.

changedALTER MATERIALIZED VIEW
--- 13
+++ 14
@@ -17,9 +17,10 @@
 ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
 ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
 ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
+ALTER [ COLUMN ] column_name SET COMPRESSION compression_method
 CLUSTER ON index_name
 SET WITHOUT CLUSTER
 SET TABLESPACE new_tablespace
 SET ( storage_parameter [= value] [, ... ] )
 RESET ( storage_parameter [, ... ] )
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
changedALTER SEQUENCE
--- 13
+++ 14
@@ -6,6 +6,6 @@
 [ RESTART [ [ WITH ] restart ] ]
 [ CACHE cache ] [ [ NO ] CYCLE ]
 [ OWNED BY { table_name.column_name | NONE } ]
-ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name
 ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema
changedCREATE TABLE
--- 13
+++ 14
@@ -1,5 +1,5 @@
 CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
-{ column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
+{ column_name data_type [ COMPRESSION compression_method ] [ COLLATE collation ] [ column_constraint [ ... ] ]
 | table_constraint
 | LIKE source_table [ like_option ... ] }
 [, ... ]
@@ -63,7 +63,7 @@
 
 and like_option is:
 
-{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }
+{ INCLUDING | EXCLUDING } { COMMENTS | COMPRESSION | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }
 
 and partition_bound_spec is:
 
changedALTER TABLE
--- 13
+++ 14
@@ -13,7 +13,8 @@
 ALTER TABLE [ IF EXISTS ] name
 ATTACH PARTITION partition_name { FOR VALUES partition_bound_spec | DEFAULT }
 ALTER TABLE [ IF EXISTS ] name
-DETACH PARTITION partition_name
+DETACH PARTITION partition_name [ CONCURRENTLY | FINALIZE ]
+
 where action is one of:
 
 ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
@@ -30,6 +31,7 @@
 ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
 ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
 ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
+ALTER [ COLUMN ] column_name SET COMPRESSION compression_method
 ADD table_constraint [ NOT VALID ]
 ADD table_constraint_using_index
 ALTER CONSTRAINT constraint_name [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
@@ -58,7 +60,7 @@
 NO INHERIT parent_table
 OF type_name
 NOT OF
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING }
 
 and partition_bound_spec is:
changedALTER VIEW
--- 13
+++ 14
@@ -1,6 +1,6 @@
 ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
 ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
-ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name
 ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
 ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
changedREINDEX
--- 13
+++ 14
@@ -1,4 +1,6 @@
 REINDEX [ ( option [, ...] ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } [ CONCURRENTLY ] name
 where option can be one of:
 
-VERBOSE
+CONCURRENTLY [ boolean ]
+TABLESPACE new_tablespace
+VERBOSE [ boolean ]
changedCREATE STATISTICS
--- 13
+++ 14
@@ -1,4 +1,8 @@
+CREATE STATISTICS [ IF NOT EXISTS ] statistics_name
+ON ( expression )
+FROM table_name
+
 CREATE STATISTICS [ IF NOT EXISTS ] statistics_name
 [ ( statistics_kind [, ... ] ) ]
-ON column_name, column_name [, ...]
+ON { column_name | ( expression ) }, { column_name | ( expression ) } [, ...]
 FROM table_name
changedALTER STATISTICS
--- 13
+++ 14
@@ -1,4 +1,4 @@
-ALTER STATISTICS name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER STATISTICS name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER STATISTICS name RENAME TO new_name
 ALTER STATISTICS name SET SCHEMA new_schema
 ALTER STATISTICS name SET STATISTICS new_target
changedALTER AGGREGATE
--- 13
+++ 14
@@ -1,6 +1,6 @@
 ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
 ALTER AGGREGATE name ( aggregate_signature )
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema
 where aggregate_signature is:
 
changedCREATE FUNCTION
--- 13
+++ 14
@@ -16,4 +16,5 @@
 | SET configuration_parameter { TO value | = value | FROM CURRENT }
 | AS 'definition'
 | AS 'obj_file', 'link_symbol'
+| sql_body
 } ...
changedALTER FUNCTION
--- 13
+++ 14
@@ -3,7 +3,7 @@
 ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
 RENAME TO new_name
 ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
 SET SCHEMA new_schema
 ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
changedALTER LANGUAGE
--- 13
+++ 14
@@ -1,2 +1,2 @@
 ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO new_name
-ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
changedCREATE PROCEDURE
--- 13
+++ 14
@@ -6,4 +6,5 @@
 | SET configuration_parameter { TO value | = value | FROM CURRENT }
 | AS 'definition'
 | AS 'obj_file', 'link_symbol'
+| sql_body
 } ...
changedALTER PROCEDURE
--- 13
+++ 14
@@ -3,7 +3,7 @@
 ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
 RENAME TO new_name
 ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
 SET SCHEMA new_schema
 ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
changedALTER ROUTINE
--- 13
+++ 14
@@ -3,7 +3,7 @@
 ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
 RENAME TO new_name
 ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
 SET SCHEMA new_schema
 ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
changedALTER COLLATION
--- 13
+++ 14
@@ -1,5 +1,5 @@
 ALTER COLLATION name REFRESH VERSION
 
 ALTER COLLATION name RENAME TO new_name
-ALTER COLLATION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER COLLATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER COLLATION name SET SCHEMA new_schema
changedALTER CONVERSION
--- 13
+++ 14
@@ -1,3 +1,3 @@
 ALTER CONVERSION name RENAME TO new_name
-ALTER CONVERSION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER CONVERSION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER CONVERSION name SET SCHEMA new_schema
changedALTER DOMAIN
--- 13
+++ 14
@@ -11,7 +11,7 @@
 ALTER DOMAIN name
 VALIDATE CONSTRAINT constraint_name
 ALTER DOMAIN name
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER DOMAIN name
 RENAME TO new_name
 ALTER DOMAIN name
changedALTER OPERATOR
--- 13
+++ 14
@@ -1,10 +1,10 @@
-ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER OPERATOR name ( { left_type | NONE } , right_type )
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 
-ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
+ALTER OPERATOR name ( { left_type | NONE } , right_type )
 SET SCHEMA new_schema
 
-ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } )
+ALTER OPERATOR name ( { left_type | NONE } , right_type )
 SET ( { RESTRICT = { res_proc | NONE }
 | JOIN = { join_proc | NONE }
 } [, ... ] )
changedDROP OPERATOR
--- 13
+++ 14
@@ -1 +1 @@
-DROP OPERATOR [ IF EXISTS ] name ( { left_type | NONE } , { right_type | NONE } ) [, ...] [ CASCADE | RESTRICT ]
+DROP OPERATOR [ IF EXISTS ] name ( { left_type | NONE } , right_type ) [, ...] [ CASCADE | RESTRICT ]
changedALTER OPERATOR CLASS
--- 13
+++ 14
@@ -2,7 +2,7 @@
 RENAME TO new_name
 
 ALTER OPERATOR CLASS name USING index_method
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 
 ALTER OPERATOR CLASS name USING index_method
 SET SCHEMA new_schema
changedALTER OPERATOR FAMILY
--- 13
+++ 14
@@ -14,7 +14,7 @@
 RENAME TO new_name
 
 ALTER OPERATOR FAMILY name USING index_method
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 
 ALTER OPERATOR FAMILY name USING index_method
 SET SCHEMA new_schema
changedCREATE TYPE
--- 13
+++ 14
@@ -10,6 +10,7 @@
 [ , COLLATION = collation ]
 [ , CANONICAL = canonical_function ]
 [ , SUBTYPE_DIFF = subtype_diff_function ]
+[ , MULTIRANGE_TYPE_NAME = multirange_type_name ]
 )
 
 CREATE TYPE name (
@@ -20,6 +21,7 @@
 [ , TYPMOD_IN = type_modifier_input_function ]
 [ , TYPMOD_OUT = type_modifier_output_function ]
 [ , ANALYZE = analyze_function ]
+[ , SUBSCRIPT = subscript_function ]
 [ , INTERNALLENGTH = { internallength | VARIABLE } ]
 [ , PASSEDBYVALUE ]
 [ , ALIGNMENT = alignment ]
changedALTER TYPE
--- 13
+++ 14
@@ -1,4 +1,4 @@
-ALTER TYPE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER TYPE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER TYPE name RENAME TO new_name
 ALTER TYPE name SET SCHEMA new_schema
 ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ]
changedALTER DATABASE
--- 13
+++ 14
@@ -8,7 +8,7 @@
 
 ALTER DATABASE name RENAME TO new_name
 
-ALTER DATABASE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER DATABASE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 
 ALTER DATABASE name SET TABLESPACE new_tablespace
 
changedCREATE SCHEMA
--- 13
+++ 14
@@ -4,5 +4,6 @@
 CREATE SCHEMA IF NOT EXISTS AUTHORIZATION role_specification
 where role_specification can be:
 user_name
+| CURRENT_ROLE
 | CURRENT_USER
 | SESSION_USER
changedALTER SCHEMA
--- 13
+++ 14
@@ -1,2 +1,2 @@
 ALTER SCHEMA name RENAME TO new_name
-ALTER SCHEMA name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER SCHEMA name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
changedCREATE TABLESPACE
--- 13
+++ 14
@@ -1,4 +1,4 @@
 CREATE TABLESPACE tablespace_name
-[ OWNER { new_owner | CURRENT_USER | SESSION_USER } ]
+[ OWNER { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ]
 LOCATION 'directory'
 [ WITH ( tablespace_option = value [, ... ] ) ]
changedALTER TABLESPACE
--- 13
+++ 14
@@ -1,4 +1,4 @@
 ALTER TABLESPACE name RENAME TO new_name
-ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] )
 ALTER TABLESPACE name RESET ( tablespace_option [, ... ] )
changedGRANT
--- 13
+++ 14
@@ -3,58 +3,71 @@
 ON { [ TABLE ] table_name [, ...]
 | ALL TABLES IN SCHEMA schema_name [, ...] }
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
 [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
 ON [ TABLE ] table_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { { USAGE | SELECT | UPDATE }
 [, ...] | ALL [ PRIVILEGES ] }
 ON { SEQUENCE sequence_name [, ...]
 | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
 ON DATABASE database_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { USAGE | ALL [ PRIVILEGES ] }
 ON DOMAIN domain_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { USAGE | ALL [ PRIVILEGES ] }
 ON FOREIGN DATA WRAPPER fdw_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { USAGE | ALL [ PRIVILEGES ] }
 ON FOREIGN SERVER server_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { EXECUTE | ALL [ PRIVILEGES ] }
 ON { { FUNCTION | PROCEDURE | ROUTINE } routine_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
 | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { USAGE | ALL [ PRIVILEGES ] }
 ON LANGUAGE lang_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
 ON LARGE OBJECT loid [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
 ON SCHEMA schema_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { CREATE | ALL [ PRIVILEGES ] }
 ON TABLESPACE tablespace_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT { USAGE | ALL [ PRIVILEGES ] }
 ON TYPE type_name [, ...]
 TO role_specification [, ...] [ WITH GRANT OPTION ]
+[ GRANTED BY role_specification ]
 
 GRANT role_name [, ...] TO role_specification [, ...]
 [ WITH ADMIN OPTION ]
@@ -64,5 +77,6 @@
 
 [ GROUP ] role_name
 | PUBLIC
+| CURRENT_ROLE
 | CURRENT_USER
 | SESSION_USER
changedREVOKE
--- 13
+++ 14
@@ -4,6 +4,7 @@
 ON { [ TABLE ] table_name [, ...]
 | ALL TABLES IN SCHEMA schema_name [, ...] }
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
@@ -11,6 +12,7 @@
 [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
 ON [ TABLE ] table_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
@@ -19,30 +21,35 @@
 ON { SEQUENCE sequence_name [, ...]
 | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
 ON DATABASE database_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { USAGE | ALL [ PRIVILEGES ] }
 ON DOMAIN domain_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { USAGE | ALL [ PRIVILEGES ] }
 ON FOREIGN DATA WRAPPER fdw_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { USAGE | ALL [ PRIVILEGES ] }
 ON FOREIGN SERVER server_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
@@ -50,36 +57,42 @@
 ON { { FUNCTION | PROCEDURE | ROUTINE } function_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
 | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { USAGE | ALL [ PRIVILEGES ] }
 ON LANGUAGE lang_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
 ON LARGE OBJECT loid [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
 ON SCHEMA schema_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { CREATE | ALL [ PRIVILEGES ] }
 ON TABLESPACE tablespace_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
 { USAGE | ALL [ PRIVILEGES ] }
 ON TYPE type_name [, ...]
 FROM role_specification [, ...]
+[ GRANTED BY role_specification ]
 [ CASCADE | RESTRICT ]
 
 REVOKE [ ADMIN OPTION FOR ]
@@ -91,5 +104,6 @@
 
 [ GROUP ] role_name
 | PUBLIC
+| CURRENT_ROLE
 | CURRENT_USER
 | SESSION_USER
changedALTER GROUP
--- 13
+++ 14
@@ -3,6 +3,7 @@
 
 where role_specification can be:
 role_name
+| CURRENT_ROLE
 | CURRENT_USER
 | SESSION_USER
 
changedDROP OWNED
--- 13
+++ 14
@@ -1 +1 @@
-DROP OWNED BY { name | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]
+DROP OWNED BY { name | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]
changedREASSIGN OWNED
--- 13
+++ 14
@@ -1,2 +1,2 @@
-REASSIGN OWNED BY { old_role | CURRENT_USER | SESSION_USER } [, ...]
-TO { new_role | CURRENT_USER | SESSION_USER }
+REASSIGN OWNED BY { old_role | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...]
+TO { new_role | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
changedCREATE POLICY
--- 13
+++ 14
@@ -1,6 +1,6 @@
 CREATE POLICY name ON table_name
 [ AS { PERMISSIVE | RESTRICTIVE } ]
 [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
-[ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]
+[ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
 [ USING ( using_expression ) ]
 [ WITH CHECK ( check_expression ) ]
changedALTER POLICY
--- 13
+++ 14
@@ -1,6 +1,6 @@
 ALTER POLICY name ON table_name RENAME TO new_name
 
 ALTER POLICY name ON table_name
-[ TO { role_name | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]
+[ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
 [ USING ( using_expression ) ]
 [ WITH CHECK ( check_expression ) ]
changedALTER ROLE
--- 13
+++ 14
@@ -22,5 +22,6 @@
 
 where role_specification can be:
 role_name
+| CURRENT_ROLE
 | CURRENT_USER
 | SESSION_USER
changedALTER USER
--- 13
+++ 14
@@ -22,5 +22,6 @@
 
 where role_specification can be:
 role_name
+| CURRENT_ROLE
 | CURRENT_USER
 | SESSION_USER
changedALTER EVENT TRIGGER
--- 13
+++ 14
@@ -1,4 +1,4 @@
 ALTER EVENT TRIGGER name DISABLE
 ALTER EVENT TRIGGER name ENABLE [ REPLICA | ALWAYS ]
-ALTER EVENT TRIGGER name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER EVENT TRIGGER name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER EVENT TRIGGER name RENAME TO new_name
changedCREATE TRIGGER
--- 13
+++ 14
@@ -1,4 +1,4 @@
-CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
+CREATE [ OR REPLACE ] [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
 ON table_name
 [ FROM referenced_table_name ]
 [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]
changedALTER TEXT SEARCH CONFIGURATION
--- 13
+++ 14
@@ -9,5 +9,5 @@
 ALTER TEXT SEARCH CONFIGURATION name
 DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]
 ALTER TEXT SEARCH CONFIGURATION name RENAME TO new_name
-ALTER TEXT SEARCH CONFIGURATION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER TEXT SEARCH CONFIGURATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER TEXT SEARCH CONFIGURATION name SET SCHEMA new_schema
changedALTER TEXT SEARCH DICTIONARY
--- 13
+++ 14
@@ -2,5 +2,5 @@
 option [ = value ] [, ... ]
 )
 ALTER TEXT SEARCH DICTIONARY name RENAME TO new_name
-ALTER TEXT SEARCH DICTIONARY name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER TEXT SEARCH DICTIONARY name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER TEXT SEARCH DICTIONARY name SET SCHEMA new_schema
changedALTER FOREIGN DATA WRAPPER
--- 13
+++ 14
@@ -2,5 +2,5 @@
 [ HANDLER handler_function | NO HANDLER ]
 [ VALIDATOR validator_function | NO VALIDATOR ]
 [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]
-ALTER FOREIGN DATA WRAPPER name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER FOREIGN DATA WRAPPER name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER FOREIGN DATA WRAPPER name RENAME TO new_name
changedALTER FOREIGN TABLE
--- 13
+++ 14
@@ -8,7 +8,7 @@
 SET SCHEMA new_schema
 where action is one of:
 
-ADD [ COLUMN ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
+ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
 DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
 ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ]
 ALTER [ COLUMN ] column_name SET DEFAULT expression
@@ -29,5 +29,5 @@
 SET WITHOUT OIDS
 INHERIT parent_table
 NO INHERIT parent_table
-OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])
changedALTER SERVER
--- 13
+++ 14
@@ -1,4 +1,4 @@
 ALTER SERVER name [ VERSION 'new_version' ]
 [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]
-ALTER SERVER name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER SERVER name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER SERVER name RENAME TO new_name
changedCREATE USER MAPPING
--- 13
+++ 14
@@ -1,3 +1,3 @@
-CREATE USER MAPPING [ IF NOT EXISTS ] FOR { user_name | USER | CURRENT_USER | PUBLIC }
+CREATE USER MAPPING [ IF NOT EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC }
 SERVER server_name
 [ OPTIONS ( option 'value' [ , ... ] ) ]
changedALTER USER MAPPING
--- 13
+++ 14
@@ -1,3 +1,3 @@
-ALTER USER MAPPING FOR { user_name | USER | CURRENT_USER | SESSION_USER | PUBLIC }
+ALTER USER MAPPING FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | SESSION_USER | PUBLIC }
 SERVER server_name
 OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )
changedDROP USER MAPPING
--- 13
+++ 14
@@ -1 +1 @@
-DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_USER | PUBLIC } SERVER server_name
+DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC } SERVER server_name
changedALTER PUBLICATION
--- 13
+++ 14
@@ -2,5 +2,5 @@
 ALTER PUBLICATION name SET TABLE [ ONLY ] table_name [ * ] [, ...]
 ALTER PUBLICATION name DROP TABLE [ ONLY ] table_name [ * ] [, ...]
 ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] )
-ALTER PUBLICATION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER PUBLICATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER PUBLICATION name RENAME TO new_name
changedALTER SUBSCRIPTION
--- 13
+++ 14
@@ -1,8 +1,10 @@
 ALTER SUBSCRIPTION name CONNECTION 'conninfo'
-ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( set_publication_option [= value] [, ... ] ) ]
+ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
+ALTER SUBSCRIPTION name ADD PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
+ALTER SUBSCRIPTION name DROP PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
 ALTER SUBSCRIPTION name REFRESH PUBLICATION [ WITH ( refresh_option [= value] [, ... ] ) ]
 ALTER SUBSCRIPTION name ENABLE
 ALTER SUBSCRIPTION name DISABLE
 ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] )
-ALTER SUBSCRIPTION name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER SUBSCRIPTION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER SUBSCRIPTION name RENAME TO new_name
changedSELECT
--- 13
+++ 14
@@ -3,7 +3,7 @@
 [ { * | expression [ [ AS ] output_name ] } [, ...] ]
 [ FROM from_item [, ...] ]
 [ WHERE condition ]
-[ GROUP BY grouping_element [, ...] ]
+[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
 [ HAVING condition ]
 [ WINDOW window_name AS ( window_definition ) [, ...] ]
 [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
@@ -25,7 +25,7 @@
 [ LATERAL ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
 [ LATERAL ] ROWS FROM( function_name ( [ argument [, ...] ] ) [ AS ( column_definition [, ...] ) ] [, ...] )
 [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
-from_item join_type from_item { ON join_condition | USING ( join_column [, ...] ) }
+from_item join_type from_item { ON join_condition | USING ( join_column [, ...] ) [ AS join_using_alias ] }
 from_item NATURAL join_type from_item
 from_item CROSS JOIN from_item
 and grouping_element can be one of:
@@ -39,5 +39,7 @@
 
 and with_query is:
 with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( select | values | insert | update | delete )
+[ SEARCH { BREADTH | DEPTH } FIRST BY column_name [, ...] SET search_seq_col_name ]
+[ CYCLE column_name [, ...] SET cycle_mark_col_name [ TO cycle_mark_value DEFAULT cycle_mark_default ] USING cycle_path_col_name ]
 
 TABLE [ ONLY ] table_name [ * ]
changedDECLARE
--- 13
+++ 14
@@ -1,2 +1,2 @@
-DECLARE name [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
+DECLARE name [ BINARY ] [ ASENSITIVE | INSENSITIVE ] [ [ NO ] SCROLL ]
 CURSOR [ { WITH | WITHOUT } HOLD ] FOR query
changedCLUSTER
--- 13
+++ 14
@@ -1,2 +1,7 @@
 CLUSTER [VERBOSE] table_name [ USING index_name ]
+CLUSTER ( option [, ...] ) table_name [ USING index_name ]
 CLUSTER [VERBOSE]
+
+where option can be one of:
+
+VERBOSE [ boolean ]
changedVACUUM
--- 13
+++ 14
@@ -9,7 +9,8 @@
 ANALYZE [ boolean ]
 DISABLE_PAGE_SKIPPING [ boolean ]
 SKIP_LOCKED [ boolean ]
-INDEX_CLEANUP [ boolean ]
+INDEX_CLEANUP { AUTO | ON | OFF }
+PROCESS_TOAST [ boolean ]
 TRUNCATE [ boolean ]
 PARALLEL integer
 and table_and_columns is:
changedALTER LARGE OBJECT
--- 13
+++ 14
@@ -1 +1 @@
-ALTER LARGE OBJECT large_object_oid OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
+ALTER LARGE OBJECT large_object_oid OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }