SQL COMMANDS / VERSION COMPARISON
What changed?
SQL Commands · PostgreSQL 17 → 18
0 added · 0 removed · 13 changed · 0 coverage changes. These are changes in the pinned reference snapshots.
changedCREATE SEQUENCE
--- 17
+++ 18
@@ -2,5 +2,7 @@
[ AS data_type ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
-[ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
+[ [ NO ] CYCLE ]
+[ START [ WITH ] start ]
+[ CACHE cache ]
[ OWNED BY { table_name.column_name | NONE } ]changedALTER SEQUENCE
--- 17
+++ 18
@@ -2,9 +2,10 @@
[ AS data_type ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
+[ [ NO ] CYCLE ]
[ START [ WITH ] start ]
[ RESTART [ [ WITH ] restart ] ]
-[ CACHE cache ] [ [ NO ] CYCLE ]
+[ CACHE cache ]
[ OWNED BY { table_name.column_name | NONE } ]
ALTER SEQUENCE [ IF EXISTS ] name SET { LOGGED | UNLOGGED }
ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }changedCREATE TABLE
--- 17
+++ 18
@@ -38,28 +38,29 @@
where column_constraint is:
[ CONSTRAINT constraint_name ]
-{ NOT NULL |
+{ NOT NULL [ NO INHERIT ] |
NULL |
CHECK ( expression ) [ NO INHERIT ] |
DEFAULT default_expr |
-GENERATED ALWAYS AS ( generation_expr ) STORED |
+GENERATED ALWAYS AS ( generation_expr ) [ STORED | VIRTUAL ] |
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] |
UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters |
PRIMARY KEY index_parameters |
REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
-[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ]
and table_constraint is:
[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) [ NO INHERIT ] |
-UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters |
-PRIMARY KEY ( column_name [, ... ] ) index_parameters |
+NOT NULL column_name [ NO INHERIT ] |
+UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] [, column_name WITHOUT OVERLAPS ] ) index_parameters |
+PRIMARY KEY ( column_name [, ... ] [, column_name WITHOUT OVERLAPS ] ) index_parameters |
EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
-FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
+FOREIGN KEY ( column_name [, ... ] [, PERIOD column_name ] ) REFERENCES reftable [ ( refcolumn [, ... ] [, PERIOD refcolumn ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
-[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ]
and like_option is:
changedALTER TABLE
--- 17
+++ 18
@@ -35,7 +35,8 @@
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 ]
+ALTER CONSTRAINT constraint_name [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ]
+ALTER CONSTRAINT constraint_name [ INHERIT | NO INHERIT ]
VALIDATE CONSTRAINT constraint_name
DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
DISABLE TRIGGER [ trigger_name | ALL | USER ]
@@ -75,28 +76,29 @@
and column_constraint is:
[ CONSTRAINT constraint_name ]
-{ NOT NULL |
+{ NOT NULL [ NO INHERIT ] |
NULL |
CHECK ( expression ) [ NO INHERIT ] |
DEFAULT default_expr |
-GENERATED ALWAYS AS ( generation_expr ) STORED |
+GENERATED ALWAYS AS ( generation_expr ) [ STORED | VIRTUAL ] |
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] |
UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters |
PRIMARY KEY index_parameters |
REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
-[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ]
and table_constraint is:
[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) [ NO INHERIT ] |
-UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters |
-PRIMARY KEY ( column_name [, ... ] ) index_parameters |
+NOT NULL column_name [ NO INHERIT ] |
+UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] [, column_name WITHOUT OVERLAPS ] ) index_parameters |
+PRIMARY KEY ( column_name [, ... ] [, column_name WITHOUT OVERLAPS ] ) index_parameters |
EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
-FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
+FOREIGN KEY ( column_name [, ... ] [, PERIOD column_name ] ) REFERENCES reftable [ ( refcolumn [, ... ] [, PERIOD refcolumn ] ) ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
-[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
+[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ ENFORCED | NOT ENFORCED ]
and table_constraint_using_index is:
changedALTER DEFAULT PRIVILEGES
--- 17
+++ 18
@@ -25,6 +25,11 @@
GRANT { { USAGE | CREATE }
[, ...] | ALL [ PRIVILEGES ] }
ON SCHEMAS
+TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
+
+GRANT { { SELECT | UPDATE }
+[, ...] | ALL [ PRIVILEGES ] }
+ON LARGE OBJECTS
TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
REVOKE [ GRANT OPTION FOR ]
@@ -59,3 +64,10 @@
ON SCHEMAS
FROM { [ GROUP ] role_name | PUBLIC } [, ...]
[ CASCADE | RESTRICT ]
+
+REVOKE [ GRANT OPTION FOR ]
+{ { SELECT | UPDATE }
+[, ...] | ALL [ PRIVILEGES ] }
+ON LARGE OBJECTS
+FROM { [ GROUP ] role_name | PUBLIC } [, ...]
+[ CASCADE | RESTRICT ]changedCREATE FOREIGN TABLE
--- 17
+++ 18
@@ -1,6 +1,7 @@
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
{ column_name data_type [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ]
-| table_constraint }
+| table_constraint
+| LIKE source_table [ like_option ... ] }
[, ... ]
] )
[ INHERITS ( parent_table [, ... ] ) ]
@@ -20,16 +21,23 @@
where column_constraint is:
[ CONSTRAINT constraint_name ]
-{ NOT NULL |
+{ NOT NULL [ NO INHERIT ] |
NULL |
CHECK ( expression ) [ NO INHERIT ] |
DEFAULT default_expr |
-GENERATED ALWAYS AS ( generation_expr ) STORED }
+GENERATED ALWAYS AS ( generation_expr ) [ STORED | VIRTUAL ] }
+[ ENFORCED | NOT ENFORCED ]
and table_constraint is:
[ CONSTRAINT constraint_name ]
-CHECK ( expression ) [ NO INHERIT ]
+{ NOT NULL column_name [ NO INHERIT ] |
+CHECK ( expression ) [ NO INHERIT ] }
+[ ENFORCED | NOT ENFORCED ]
+
+and like_option is:
+
+{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | STATISTICS | ALL }
and partition_bound_spec is:
changedCOPY
--- 17
+++ 18
@@ -21,5 +21,6 @@
FORCE_NOT_NULL { ( column_name [, ...] ) | * }
FORCE_NULL { ( column_name [, ...] ) | * }
ON_ERROR error_action
+REJECT_LIMIT maxerror
ENCODING 'encoding_name'
LOG_VERBOSITY verbositychangedDELETE
--- 17
+++ 18
@@ -2,4 +2,5 @@
DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
[ USING from_item [, ...] ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
-[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
+[ RETURNING [ WITH ( { OLD | NEW } AS output_alias [, ...] ) ]
+{ * | output_expression [ [ AS ] output_name ] } [, ...] ]changedINSERT
--- 17
+++ 18
@@ -3,7 +3,8 @@
[ OVERRIDING { SYSTEM | USER } VALUE ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
[ ON CONFLICT [ conflict_target ] conflict_action ]
-[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
+[ RETURNING [ WITH ( { OLD | NEW } AS output_alias [, ...] ) ]
+{ * | output_expression [ [ AS ] output_name ] } [, ...] ]
where conflict_target can be one of:
changedMERGE
--- 17
+++ 18
@@ -2,7 +2,8 @@
MERGE INTO [ ONLY ] target_table_name [ * ] [ [ AS ] target_alias ]
USING data_source ON join_condition
when_clause [...]
-[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
+[ RETURNING [ WITH ( { OLD | NEW } AS output_alias [, ...] ) ]
+{ * | output_expression [ [ AS ] output_name ] } [, ...] ]
where data_source is:
changedUPDATE
--- 17
+++ 18
@@ -6,4 +6,5 @@
} [, ...]
[ FROM from_item [, ...] ]
[ WHERE condition | WHERE CURRENT OF cursor_name ]
-[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
+[ RETURNING [ WITH ( { OLD | NEW } AS output_alias [, ...] ) ]
+{ * | output_expression [ [ AS ] output_name ] } [, ...] ]changedANALYZE
--- 17 +++ 18 @@ -6,4 +6,5 @@ SKIP_LOCKED [ boolean ] BUFFER_USAGE_LIMIT size and table_and_columns is: -table_name [ ( column_name [, ...] ) ] + +[ ONLY ] table_name [ * ] [ ( column_name [, ...] ) ]
changedVACUUM
--- 17 +++ 18 @@ -17,4 +17,5 @@ ONLY_DATABASE_STATS [ boolean ] BUFFER_USAGE_LIMIT size and table_and_columns is: -table_name [ ( column_name [, ...] ) ] + +[ ONLY ] table_name [ * ] [ ( column_name [, ...] ) ]