On 2013-06-22 15:10:07 -0400, Robert Haas wrote: > On Sat, Jun 22, 2013 at 9:16 AM, Cédric Villemain > <ced...@2ndquadrant.com> wrote: > > patch is in unified format and apply on HEAD. > > patch contains documentation, however I believe 'AS IMPLICIT' is a > > PostgreSQL > > extension with special behavior and 'AS EXPLICIT' respect the standard > > except > > that PostgreSQL adds only the expression 'AS EXPLICIT' (it is also the > > default > > in the standard). > > I object to this patch. This patch a new keyword, EXPLICIT, for > reasons that are strictly cosmetic. Everything that you can do with > this patch can also be done without this patch. It is not a good idea > to slow down parsing of every SQL statement we have just so that > someone can write CREATE CAST .. AS EXPLICIT. Granted, the parsing > slowdown for just one keyword is probably not noticeable, but it's > cumulative with every new keyword we add. Adding them to support new > features is one thing, but adding them to support purely optional > syntax is, I think, going too far.
What about simply not using a keyword at that location at all? Something like the attached hack? Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index 5094226..8021f96 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -6718,8 +6718,15 @@ CreateCastStmt: CREATE CAST '(' Typename AS Typename ')' } ; -cast_context: AS IMPLICIT_P { $$ = COERCION_IMPLICIT; } - | AS ASSIGNMENT { $$ = COERCION_ASSIGNMENT; } +cast_context: AS name + { + if (pg_strcasecmp($2, "EXPLICIT") == 0) + $$ = COERCION_EXPLICIT; + else if (pg_strcasecmp($2, "IMPLICIT") == 0) + $$ = COERCION_IMPLICIT; + else + elog(ERROR, "frak!"); + } | /*EMPTY*/ { $$ = COERCION_EXPLICIT; } ;
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers