]> granicus.if.org Git - postgresql/commitdiff
Remove option to write USING before opclass name in CREATE INDEX.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 May 2016 23:11:00 +0000 (19:11 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 May 2016 23:11:00 +0000 (19:11 -0400)
Dating back to commit f10b63923, our grammar has allowed "USING" to
optionally appear before an opclass name in CREATE INDEX (and, lately,
some related places such as ON CONFLICT specifications).  Nikolay Shaplov
noticed that this syntax existed but wasn't documented, and proposed
documenting it.  But what seems like a better idea is to remove the
production, thereby making the code match the docs not vice versa.
This isn't our usual modus operandi for such cases, but there are a
couple of good reasons to proceed this way:

* So far as I can find, this syntax has never been documented anywhere.
It isn't relied on by any of our own code or test cases, and there seems
little reason to suppose that it's been used in the wild either.

* Documenting it would mean that there would be two separate uses of
USING in the CREATE INDEX syntax, the other being "USING access_method".
That can lead to nothing but confusion.

So, let's just remove it.  On the off chance that somebody somewhere
is using it, this isn't something to back-patch, but we can fix it
in HEAD.

Discussion: <1593237.l7oKHRpxSe@nataraj-amd64>

src/backend/parser/gram.y

index 18ec5f03d81c6226eadf49d6184dc293d80f06cb..20384db2fb8e28a4220a43e83025758daab1a2eb 100644 (file)
@@ -6747,7 +6747,6 @@ opt_collate: COLLATE any_name                                             { $$ = $2; }
                ;
 
 opt_class:     any_name                                                                { $$ = $1; }
-                       | USING any_name                                                { $$ = $2; }
                        | /*EMPTY*/                                                             { $$ = NIL; }
                ;