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 11 → 12

Browse PG 12 →

Historical documentation for a PostgreSQL version that is no longer supported.

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

changedCREATE MATERIALIZED VIEW
--- 11
+++ 12
@@ -1,5 +1,6 @@
 CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
 [ (column_name [, ...] ) ]
+[ USING method ]
 [ WITH ( storage_parameter [= value] [, ... ] ) ]
 [ TABLESPACE tablespace_name ]
 AS query
changedCREATE TABLE
--- 11
+++ 12
@@ -6,7 +6,8 @@
 ] )
 [ INHERITS ( parent_table [, ... ] ) ]
 [ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
-[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
+[ USING method ]
+[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE tablespace_name ]
 
@@ -17,7 +18,8 @@
 [, ... ]
 ) ]
 [ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
-[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
+[ USING method ]
+[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE tablespace_name ]
 
@@ -28,7 +30,8 @@
 [, ... ]
 ) ] { FOR VALUES partition_bound_spec | DEFAULT }
 [ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
-[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
+[ USING method ]
+[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE tablespace_name ]
 
@@ -39,11 +42,12 @@
 NULL |
 CHECK ( expression ) [ NO INHERIT ] |
 DEFAULT default_expr |
+GENERATED ALWAYS AS ( generation_expr ) STORED |
 GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] |
 UNIQUE index_parameters |
 PRIMARY KEY index_parameters |
 REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
-[ ON DELETE action ] [ ON UPDATE action ] }
+[ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
 [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
 
 and table_constraint is:
@@ -54,18 +58,18 @@
 PRIMARY KEY ( column_name [, ... ] ) index_parameters |
 EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
 FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
-[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }
+[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
 [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
 
 and like_option is:
 
-{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }
+{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }
 
 and partition_bound_spec is:
 
-IN ( { numeric_literal | string_literal | TRUE | FALSE | NULL } [, ...] ) |
-FROM ( { numeric_literal | string_literal | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] )
-TO ( { numeric_literal | string_literal | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] ) |
+IN ( partition_bound_expr [, ...] ) |
+FROM ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] )
+TO ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] ) |
 WITH ( MODULUS numeric_literal, REMAINDER numeric_literal )
 
 index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:
changedALTER TABLE
--- 11
+++ 12
@@ -48,7 +48,6 @@
 NO FORCE ROW LEVEL SECURITY
 CLUSTER ON index_name
 SET WITHOUT CLUSTER
-SET WITH OIDS
 SET WITHOUT OIDS
 SET TABLESPACE new_tablespace
 SET { LOGGED | UNLOGGED }
@@ -63,9 +62,9 @@
 
 and partition_bound_spec is:
 
-IN ( { numeric_literal | string_literal | TRUE | FALSE | NULL } [, ...] ) |
-FROM ( { numeric_literal | string_literal | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] )
-TO ( { numeric_literal | string_literal | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] ) |
+IN ( partition_bound_expr [, ...] ) |
+FROM ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] )
+TO ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] ) |
 WITH ( MODULUS numeric_literal, REMAINDER numeric_literal )
 
 and column_constraint is:
@@ -75,11 +74,12 @@
 NULL |
 CHECK ( expression ) [ NO INHERIT ] |
 DEFAULT default_expr |
+GENERATED ALWAYS AS ( generation_expr ) STORED |
 GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] |
 UNIQUE index_parameters |
 PRIMARY KEY index_parameters |
 REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
-[ ON DELETE action ] [ ON UPDATE action ] }
+[ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
 [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
 
 and table_constraint is:
@@ -90,7 +90,7 @@
 PRIMARY KEY ( column_name [, ... ] ) index_parameters |
 EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
 FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
-[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }
+[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
 [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
 
 and table_constraint_using_index is:
changedCREATE TABLE AS
--- 11
+++ 12
@@ -1,6 +1,7 @@
 CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
 [ (column_name [, ...] ) ]
-[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
+[ USING method ]
+[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE tablespace_name ]
 AS query
changedREINDEX
--- 11
+++ 12
@@ -1 +1 @@
-REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } name
+REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } [ CONCURRENTLY ] name
changedCREATE AGGREGATE
--- 11
+++ 12
@@ -1,4 +1,4 @@
-CREATE AGGREGATE name ( [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
+CREATE [ OR REPLACE ] AGGREGATE name ( [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
 SFUNC = sfunc,
 STYPE = state_data_type
 [ , SSPACE = state_data_size ]
@@ -21,7 +21,7 @@
 [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]
 )
 
-CREATE AGGREGATE name ( [ [ argmode ] [ argname ] arg_data_type [ , ... ] ]
+CREATE [ OR REPLACE ] AGGREGATE name ( [ [ argmode ] [ argname ] arg_data_type [ , ... ] ]
 ORDER BY [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
 SFUNC = sfunc,
 STYPE = state_data_type
@@ -36,7 +36,7 @@
 
 or the old syntax
 
-CREATE AGGREGATE name (
+CREATE [ OR REPLACE ] AGGREGATE name (
 BASETYPE = base_type,
 SFUNC = sfunc,
 STYPE = state_data_type
changedCREATE FUNCTION
--- 11
+++ 12
@@ -12,6 +12,7 @@
 | PARALLEL { UNSAFE | RESTRICTED | SAFE }
 | COST execution_cost
 | ROWS result_rows
+| SUPPORT support_function
 | SET configuration_parameter { TO value | = value | FROM CURRENT }
 | AS 'definition'
 | AS 'obj_file', 'link_symbol'
changedALTER FUNCTION
--- 11
+++ 12
@@ -17,6 +17,7 @@
 PARALLEL { UNSAFE | RESTRICTED | SAFE }
 COST execution_cost
 ROWS result_rows
+SUPPORT support_function
 SET configuration_parameter { TO | = } { value | DEFAULT }
 SET configuration_parameter FROM CURRENT
 RESET configuration_parameter
changedCREATE COLLATION
--- 11
+++ 12
@@ -3,6 +3,7 @@
 [ LC_COLLATE = lc_collate, ]
 [ LC_CTYPE = lc_ctype, ]
 [ PROVIDER = provider, ]
+[ DETERMINISTIC = boolean, ]
 [ VERSION = version ]
 )
 CREATE COLLATION [ IF NOT EXISTS ] name FROM existing_collation
changedALTER DOMAIN
--- 11
+++ 12
@@ -16,3 +16,7 @@
 RENAME TO new_name
 ALTER DOMAIN name
 SET SCHEMA new_schema
+where domain_constraint is:
+
+[ CONSTRAINT constraint_name ]
+{ NOT NULL | CHECK (expression) }
changedALTER DEFAULT PRIVILEGES
--- 11
+++ 12
@@ -22,7 +22,8 @@
 ON TYPES
 TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
-GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] }
+GRANT { { USAGE | CREATE }
+[, ...] | ALL [ PRIVILEGES ] }
 ON SCHEMAS
 TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
 
@@ -53,7 +54,8 @@
 [ CASCADE | RESTRICT ]
 
 REVOKE [ GRANT OPTION FOR ]
-{ USAGE | CREATE | ALL [ PRIVILEGES ] }
+{ { USAGE | CREATE }
+[, ...] | ALL [ PRIVILEGES ] }
 ON SCHEMAS
 FROM { [ GROUP ] role_name | PUBLIC } [, ...]
 [ CASCADE | RESTRICT ]
changedSECURITY LABEL
--- 11
+++ 12
@@ -6,7 +6,7 @@
 DATABASE object_name |
 DOMAIN object_name |
 EVENT TRIGGER object_name |
-FOREIGN TABLE object_name
+FOREIGN TABLE object_name |
 FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
 LARGE OBJECT large_object_oid |
 MATERIALIZED VIEW object_name |
changedCREATE FOREIGN TABLE
--- 11
+++ 12
@@ -23,7 +23,8 @@
 { NOT NULL |
 NULL |
 CHECK ( expression ) [ NO INHERIT ] |
-DEFAULT default_expr }
+DEFAULT default_expr |
+GENERATED ALWAYS AS ( generation_expr ) STORED }
 
 and table_constraint is:
 
@@ -32,7 +33,7 @@
 
 and partition_bound_spec is:
 
-IN ( { numeric_literal | string_literal | TRUE | FALSE | NULL } [, ...] ) |
-FROM ( { numeric_literal | string_literal | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] )
-TO ( { numeric_literal | string_literal | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] ) |
+IN ( partition_bound_expr [, ...] ) |
+FROM ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] )
+TO ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] ) |
 WITH ( MODULUS numeric_literal, REMAINDER numeric_literal )
changedALTER FOREIGN TABLE
--- 11
+++ 12
@@ -26,7 +26,6 @@
 ENABLE TRIGGER [ trigger_name | ALL | USER ]
 ENABLE REPLICA TRIGGER trigger_name
 ENABLE ALWAYS TRIGGER trigger_name
-SET WITH OIDS
 SET WITHOUT OIDS
 INHERIT parent_table
 NO INHERIT parent_table
changedCOPY
--- 11
+++ 12
@@ -1,6 +1,7 @@
 COPY table_name [ ( column_name [, ...] ) ]
 FROM { 'filename' | PROGRAM 'command' | STDIN }
 [ [ WITH ] ( option [, ...] ) ]
+[ WHERE condition ]
 
 COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
 TO { 'filename' | PROGRAM 'command' | STDOUT }
@@ -9,7 +10,6 @@
 where option can be one of:
 
 FORMAT format_name
-OIDS [ boolean ]
 FREEZE [ boolean ]
 DELIMITER 'delimiter_character'
 NULL 'null_string'
changedDELETE
--- 11
+++ 12
@@ -2,4 +2,4 @@
 DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
 [ USING from_item [, ...] ]
 [ WHERE condition | WHERE CURRENT OF cursor_name ]
-[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
+[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
changedEXPLAIN
--- 11
+++ 12
@@ -5,6 +5,7 @@
 ANALYZE [ boolean ]
 VERBOSE [ boolean ]
 COSTS [ boolean ]
+SETTINGS [ boolean ]
 BUFFERS [ boolean ]
 TIMING [ boolean ]
 SUMMARY [ boolean ]
changedINSERT
--- 11
+++ 12
@@ -3,7 +3,7 @@
 [ OVERRIDING { SYSTEM | USER } VALUE ]
 { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
 [ ON CONFLICT [ conflict_target ] conflict_action ]
-[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
+[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
 
 where conflict_target can be one of:
 
changedSELECT
--- 11
+++ 12
@@ -1,6 +1,6 @@
 [ WITH [ RECURSIVE ] with_query [, ...] ]
 SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
-[ * | expression [ [ AS ] output_name ] [, ...] ]
+[ { * | expression [ [ AS ] output_name ] } [, ...] ]
 [ FROM from_item [, ...] ]
 [ WHERE condition ]
 [ GROUP BY grouping_element [, ...] ]
@@ -38,6 +38,6 @@
 GROUPING SETS ( grouping_element [, ...] )
 
 and with_query is:
-with_query_name [ ( column_name [, ...] ) ] AS ( select | values | insert | update | delete )
+with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( select | values | insert | update | delete )
 
 TABLE [ ONLY ] table_name [ * ]
changedUPDATE
--- 11
+++ 12
@@ -6,4 +6,4 @@
 } [, ...]
 [ FROM from_item [, ...] ]
 [ WHERE condition | WHERE CURRENT OF cursor_name ]
-[ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
+[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
changedSELECT INTO
--- 11
+++ 12
@@ -1,6 +1,6 @@
 [ WITH [ RECURSIVE ] with_query [, ...] ]
 SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
-* | expression [ [ AS ] output_name ] [, ...]
+[ { * | expression [ [ AS ] output_name ] } [, ...] ]
 INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table
 [ FROM from_item [, ...] ]
 [ WHERE condition ]
changedABORT
--- 11
+++ 12
@@ -1 +1 @@
-ABORT [ WORK | TRANSACTION ]
+ABORT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
changedCOMMIT
--- 11
+++ 12
@@ -1 +1 @@
-COMMIT [ WORK | TRANSACTION ]
+COMMIT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
changedEND
--- 11
+++ 12
@@ -1 +1 @@
-END [ WORK | TRANSACTION ]
+END [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
changedROLLBACK
--- 11
+++ 12
@@ -1 +1 @@
-ROLLBACK [ WORK | TRANSACTION ]
+ROLLBACK [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
changedANALYZE
--- 11
+++ 12
@@ -3,7 +3,8 @@
 
 where option can be one of:
 
-VERBOSE
+VERBOSE [ boolean ]
+SKIP_LOCKED [ boolean ]
 
 and table_and_columns is:
 table_name [ ( column_name [, ...] ) ]
changedVACUUM
--- 11
+++ 12
@@ -3,11 +3,14 @@
 
 where option can be one of:
 
-FULL
-FREEZE
-VERBOSE
-ANALYZE
-DISABLE_PAGE_SKIPPING
+FULL [ boolean ]
+FREEZE [ boolean ]
+VERBOSE [ boolean ]
+ANALYZE [ boolean ]
+DISABLE_PAGE_SKIPPING [ boolean ]
+SKIP_LOCKED [ boolean ]
+INDEX_CLEANUP [ boolean ]
+TRUNCATE [ boolean ]
 
 and table_and_columns is:
 table_name [ ( column_name [, ...] ) ]