↑↓ 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 18 → 19 beta 4

Browse PG 19

Pre-release documentation. These definitions may change before the final release.

2 added · 0 removed · 21 changed. These are changes between the pinned reference snapshots.

changedCREATE TABLE
--- 18
+++ 19 beta 4
@@ -1,5 +1,5 @@
-CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
-{ column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] [ COMPRESSION compression_method ] [ COLLATE collation ] [ column_constraint [ ... ] ]
+CREATE [ persistence_mode ] TABLE [ IF NOT EXISTS ] table_name ( [
+{ column_name data_type [ column_storage ] [ column_compression ] [ COLLATE collation ] [ column_constraint [ ... ] ]
 | table_constraint
 | LIKE source_table [ like_option ... ] }
 [, ... ]
@@ -11,7 +11,7 @@
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE tablespace_name ]
 
-CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
+CREATE [ persistence_mode ] TABLE [ IF NOT EXISTS ] table_name
 OF type_name [ (
 { column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ]
 | table_constraint }
@@ -23,7 +23,7 @@
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE tablespace_name ]
 
-CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
+CREATE [ persistence_mode ] TABLE [ IF NOT EXISTS ] table_name
 PARTITION OF parent_table [ (
 { column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ]
 | table_constraint }
@@ -35,7 +35,18 @@
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE tablespace_name ]
 
-where column_constraint is:
+where persistence_mode is:
+
+{ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } } | UNLOGGED
+
+and column_storage is:
+
+STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }
+
+and column_compression is:
+
+COMPRESSION compression_method
+and column_constraint is:
 
 [ CONSTRAINT constraint_name ]
 { NOT NULL [ NO INHERIT ] |
@@ -73,16 +84,16 @@
 TO ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] ) |
 WITH ( MODULUS numeric_literal, REMAINDER numeric_literal )
 
-index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:
+and index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:
 
 [ INCLUDE ( column_name [, ... ] ) ]
 [ WITH ( storage_parameter [= value] [, ... ] ) ]
 [ USING INDEX TABLESPACE tablespace_name ]
 
-exclude_element in an EXCLUDE constraint is:
+and exclude_element in an EXCLUDE constraint is:
 
 { column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
 
-referential_action in a FOREIGN KEY/REFERENCES constraint is:
+and referential_action in a FOREIGN KEY/REFERENCES constraint is:
 
 { NO ACTION | RESTRICT | CASCADE | SET NULL [ ( column_name [, ... ] ) ] | SET DEFAULT [ ( column_name [, ... ] ) ] }
changedCREATE TABLE AS
--- 18
+++ 19 beta 4
@@ -1,8 +1,12 @@
-CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
-[ (column_name [, ...] ) ]
+CREATE [ persistence_mode ] TABLE [ IF NOT EXISTS ] table_name
+[ ( column_name [, ...] ) ]
 [ USING method ]
 [ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
 [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
 [ TABLESPACE tablespace_name ]
 AS query
 [ WITH [ NO ] DATA ]
+
+where persistence_mode is:
+
+{ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } } | UNLOGGED
changedCREATE STATISTICS
--- 18
+++ 19 beta 4
@@ -1,5 +1,5 @@
 CREATE STATISTICS [ [ IF NOT EXISTS ] statistics_name ]
-ON ( expression )
+ON { column_name | ( expression ) }
 FROM table_name
 
 CREATE STATISTICS [ [ IF NOT EXISTS ] statistics_name ]
changedCREATE AGGREGATE
--- 18
+++ 19 beta 4
@@ -18,6 +18,7 @@
 [ , MFINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]
 [ , MINITCOND = minitial_condition ]
 [ , SORTOP = sort_operator ]
+[ , SUPPORT = support_function ]
 [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]
 )
 
@@ -30,6 +31,7 @@
 [ , FINALFUNC_EXTRA ]
 [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]
 [ , INITCOND = initial_condition ]
+[ , SUPPORT = support_function ]
 [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]
 [ , HYPOTHETICAL ]
 )
@@ -57,4 +59,5 @@
 [ , MFINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]
 [ , MINITCOND = minitial_condition ]
 [ , SORTOP = sort_operator ]
+[ , SUPPORT = support_function ]
 )
changedCREATE OPERATOR
--- 18
+++ 19 beta 4
@@ -1,6 +1,6 @@
 CREATE OPERATOR name (
 {FUNCTION|PROCEDURE} = function_name
-[, LEFTARG = left_type ] [, RIGHTARG = right_type ]
+[, LEFTARG = left_type ] , RIGHTARG = right_type
 [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]
 [, RESTRICT = res_proc ] [, JOIN = join_proc ]
 [, HASHES ] [, MERGES ]
changedCREATE GROUP
--- 18
+++ 19 beta 4
@@ -13,8 +13,6 @@
 | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
 | VALID UNTIL 'timestamp'
 | IN ROLE role_name [, ...]
-| IN GROUP role_name [, ...]
 | ROLE role_name [, ...]
 | ADMIN role_name [, ...]
-| USER role_name [, ...]
 | SYSID uid
changedCREATE USER
--- 18
+++ 19 beta 4
@@ -13,8 +13,6 @@
 | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
 | VALID UNTIL 'timestamp'
 | IN ROLE role_name [, ...]
-| IN GROUP role_name [, ...]
 | ROLE role_name [, ...]
 | ADMIN role_name [, ...]
-| USER role_name [, ...]
 | SYSID uid
changedCREATE TRIGGER
--- 18
+++ 19 beta 4
@@ -1,7 +1,7 @@
 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 ] ]
+[ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ] [ ENFORCED ]
 [ REFERENCING { { OLD | NEW } TABLE [ AS ] transition_relation_name } [ ... ] ]
 [ FOR [ EACH ] { ROW | STATEMENT } ]
 [ WHEN ( condition ) ]
changedCREATE FOREIGN DATA WRAPPER
--- 18
+++ 19 beta 4
@@ -1,4 +1,5 @@
 CREATE FOREIGN DATA WRAPPER name
 [ HANDLER handler_function | NO HANDLER ]
 [ VALIDATOR validator_function | NO VALIDATOR ]
+[ CONNECTION connection_function | NO CONNECTION ]
 [ OPTIONS ( option 'value' [, ... ] ) ]
changedALTER FOREIGN DATA WRAPPER
--- 18
+++ 19 beta 4
@@ -1,6 +1,7 @@
 ALTER FOREIGN DATA WRAPPER name
 [ HANDLER handler_function | NO HANDLER ]
 [ VALIDATOR validator_function | NO VALIDATOR ]
+[ CONNECTION connection_function | NO CONNECTION ]
 [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]
 ALTER FOREIGN DATA WRAPPER name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER FOREIGN DATA WRAPPER name RENAME TO new_name
changedCREATE PUBLICATION
--- 18
+++ 19 beta 4
@@ -1,6 +1,5 @@
 CREATE PUBLICATION name
-[ FOR ALL TABLES
-| FOR publication_object [, ... ] ]
+[ FOR { publication_object [, ... ] | publication_all_object [, ... ] } ]
 [ WITH ( publication_parameter [= value] [, ... ] ) ]
 
 where publication_object is one of:
@@ -8,6 +7,18 @@
 TABLE table_and_columns [, ... ]
 TABLES IN SCHEMA { schema_name | CURRENT_SCHEMA } [, ... ]
 
+and publication_all_object is one of:
+
+ALL TABLES [ EXCEPT ( except_table_object [, ... ] ) ]
+ALL SEQUENCES
+
 and table_and_columns is:
+table_object [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ]
 
-[ ONLY ] table_name [ * ] [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ]
+and except_table_object is:
+
+TABLE table_object [, ... ]
+
+and table_object is:
+
+[ ONLY ] table_name [ * ]
changedALTER PUBLICATION
--- 18
+++ 19 beta 4
@@ -1,6 +1,6 @@
 ALTER PUBLICATION name ADD publication_object [, ...]
-ALTER PUBLICATION name SET publication_object [, ...]
 ALTER PUBLICATION name DROP publication_drop_object [, ...]
+ALTER PUBLICATION name SET { publication_object [, ...] | publication_all_object [, ... ] }
 ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] )
 ALTER PUBLICATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
 ALTER PUBLICATION name RENAME TO new_name
@@ -9,11 +9,23 @@
 TABLE table_and_columns [, ... ]
 TABLES IN SCHEMA { schema_name | CURRENT_SCHEMA } [, ... ]
 
+and publication_all_object is one of:
+
+ALL TABLES [ EXCEPT ( except_table_object [, ... ] ) ]
+ALL SEQUENCES
+
 and publication_drop_object is one of:
 
-TABLE [ ONLY ] table_name [ * ] [, ... ]
+TABLE table_object [, ... ]
 TABLES IN SCHEMA { schema_name | CURRENT_SCHEMA } [, ... ]
 
 and table_and_columns is:
+table_object [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ]
 
-[ ONLY ] table_name [ * ] [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ]
+and except_table_object is:
+
+TABLE table_object [, ... ]
+
+and table_object is:
+
+[ ONLY ] table_name [ * ]
changedCREATE SUBSCRIPTION
--- 18
+++ 19 beta 4
@@ -1,4 +1,4 @@
 CREATE SUBSCRIPTION subscription_name
-CONNECTION 'conninfo'
+{ SERVER server_name | CONNECTION 'conninfo' }
 PUBLICATION publication_name [, ...]
 [ WITH ( subscription_parameter [= value] [, ... ] ) ]
changedALTER SUBSCRIPTION
--- 18
+++ 19 beta 4
@@ -1,8 +1,10 @@
+ALTER SUBSCRIPTION name SERVER server_name
 ALTER SUBSCRIPTION name CONNECTION 'conninfo'
 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 REFRESH SEQUENCES
 ALTER SUBSCRIPTION name ENABLE
 ALTER SUBSCRIPTION name DISABLE
 ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] )
changedCOPY
--- 18
+++ 19 beta 4
@@ -14,9 +14,10 @@
 DELIMITER 'delimiter_character'
 NULL 'null_string'
 DEFAULT 'default_string'
-HEADER [ boolean | MATCH ]
+HEADER [ boolean | integer | MATCH ]
 QUOTE 'quote_character'
 ESCAPE 'escape_character'
+FORCE_ARRAY [ boolean ]
 FORCE_QUOTE { ( column_name [, ...] ) | * }
 FORCE_NOT_NULL { ( column_name [, ...] ) | * }
 FORCE_NULL { ( column_name [, ...] ) | * }
changedEXPLAIN
--- 18
+++ 19 beta 4
@@ -12,4 +12,5 @@
 TIMING [ boolean ]
 SUMMARY [ boolean ]
 MEMORY [ boolean ]
+IO [ boolean ]
 FORMAT { TEXT | XML | JSON | YAML }
changedINSERT
--- 18
+++ 19 beta 4
@@ -13,6 +13,7 @@
 and conflict_action is one of:
 
 DO NOTHING
+DO SELECT [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } ] [ WHERE condition ]
 DO UPDATE SET { column_name = { expression | DEFAULT } |
 ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |
 ( column_name [, ...] ) = ( sub-SELECT )
changedSELECT INTO
--- 18
+++ 19 beta 4
@@ -4,12 +4,12 @@
 INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table
 [ FROM from_item [, ...] ]
 [ WHERE condition ]
-[ GROUP BY expression [, ...] ]
+[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
 [ HAVING condition ]
 [ WINDOW window_name AS ( window_definition ) [, ...] ]
 [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
 [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
 [ LIMIT { count | ALL } ]
 [ OFFSET start [ ROW | ROWS ] ]
-[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
-[ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
+[ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES } ]
+[ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF from_reference [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]
addedWAIT
--- 18
+++ 19 beta 4
@@ -0,0 +1,12 @@
+WAIT FOR LSN 'lsn'
+[ WITH ( option [, ...] ) ]
+
+where option can be:
+
+MODE 'mode'
+TIMEOUT 'timeout'
+NO_THROW
+
+and mode can be:
+
+standby_replay | standby_write | standby_flush | primary_flush
changedSET
--- 18
+++ 19 beta 4
@@ -1,2 +1,2 @@
-SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
-SET [ SESSION | LOCAL ] TIME ZONE { value | 'value' | LOCAL | DEFAULT }
+SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value [, ...] | DEFAULT }
+SET [ SESSION | LOCAL ] TIME ZONE { value | LOCAL | DEFAULT }
changedCHECKPOINT
--- 18
+++ 19 beta 4
@@ -1 +1,6 @@
-CHECKPOINT
+CHECKPOINT [ ( option [, ...] ) ]
+
+where option can be one of:
+
+FLUSH_UNLOGGED [ boolean ]
+MODE { FAST | SPREAD }
changedVACUUM
--- 18
+++ 19 beta 4
@@ -2,7 +2,6 @@
 
 where option can be one of:
 
-FULL [ boolean ]
 FREEZE [ boolean ]
 VERBOSE [ boolean ]
 ANALYZE [ boolean ]
@@ -16,6 +15,8 @@
 SKIP_DATABASE_STATS [ boolean ]
 ONLY_DATABASE_STATS [ boolean ]
 BUFFER_USAGE_LIMIT size
+FULL [ boolean ]
+
 and table_and_columns is:
 
 [ ONLY ] table_name [ * ] [ ( column_name [, ...] ) ]
addedREPACK
--- 18
+++ 19 beta 4
@@ -0,0 +1,11 @@
+REPACK [ ( option [, ...] ) ] [ table_and_columns [ USING INDEX [ index_name ] ] ]
+REPACK [ ( option [, ...] ) ] USING INDEX
+
+where option can be one of:
+
+VERBOSE [ boolean ]
+ANALYZE [ boolean ]
+CONCURRENTLY [ boolean ]
+
+and table_and_columns is:
+table_name [ ( column_name [, ...] ) ]