On 2013-06-22 15:10:07 -0400, Robert Haas wrote:
> On Sat, Jun 22, 2013 at 9:16 AM, Cédric Villemain
> <[email protected]> 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 ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers