Doc: update documentation about EXCLUDE constraint elements.
authorTom Lane
Sun, 7 Apr 2024 19:36:08 +0000 (15:36 -0400)
committerTom Lane
Sun, 7 Apr 2024 19:36:08 +0000 (15:36 -0400)
What the documentation calls an exclude_element is an index_elem
according to gram.y, and it allows all the same options that
a CREATE INDEX column specification does.  The COLLATE patch
neglected to update the CREATE/ALTER TABLE docs about that,
and later the opclass-parameters patch made the same oversight.
Add those options to the syntax synopses, and polish the
associated text a bit.

Back-patch to v13 where opclass parameters came in.  We could
update v12 with just the COLLATE omission, but it doesn't quite
seem worth the trouble at this point.

Shihao Zhong, reviewed by Daniel Vérité, Shubham Khanna and myself

Discussion: https://postgr.es/m/CAGRkXqShbVyB8E3gapfdtuwiWTiK=Q67Qb9qwxu=+-w0w46EBA@mail.gmail.com

doc/src/sgml/ref/alter_table.sgml
doc/src/sgml/ref/create_table.sgml

index 5710d46121330e96da0ef638ab19832a5d337e17..0e5fdb8cff59d8b71df9c0ae30837f20200ec47b 100644 (file)
@@ -132,7 +132,7 @@ WITH ( MODULUS numeric_literal, REM
 
 exclude_element in an EXCLUDE constraint is:
 
-{ column_name | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
+{ column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
 
  
 
index 21279b078800123f5243c949536713b4da2291ee..bf7e15db403ce445007ddbf71cf41f4e29dea9d2 100644 (file)
@@ -104,7 +104,7 @@ WITH ( MODULUS numeric_literal, REM
 
 exclude_element in an EXCLUDE constraint is:
 
-{ column_name | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
+{ column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
 
 
  
@@ -998,6 +998,7 @@ WITH ( MODULUS numeric_literal, REM
       no two rows in the table contain overlapping circles
       (see ) by using the
       && operator.
+      The operator(s) are required to be commutative.
      
 
      
@@ -1006,11 +1007,10 @@ WITH ( MODULUS numeric_literal, REM
       appropriate operator class
       (see ) for the index access
       method index_method.
-      The operators are required to be commutative.
       Each exclude_element
-      can optionally specify an operator class and/or ordering options;
-      these are described fully under
-      .
+      defines a column of the index, so it can optionally specify a collation,
+      an operator class, operator class parameters, and/or ordering options;
+      these are described fully under .