mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Create a new parsetree node type, TypeCast, so that transformation of
SQL cast constructs can be performed during expression transformation instead of during parsing. This allows constructs like x::numeric(9,2) and x::int2::float8 to behave as one would expect.
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: parsenodes.h,v 1.94 2000/01/16 20:04:58 petere Exp $
|
||||
* $Id: parsenodes.h,v 1.95 2000/01/17 00:14:48 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -868,6 +868,22 @@ typedef struct A_Const
|
||||
TypeName *typename; /* typecast */
|
||||
} A_Const;
|
||||
|
||||
/*
|
||||
* TypeCast - a CAST expression
|
||||
*
|
||||
* NOTE: for mostly historical reasons, A_Const and ParamNo parsenodes contain
|
||||
* room for a TypeName; we only generate a separate TypeCast node if the
|
||||
* argument to be casted is neither of those kinds of nodes. In theory either
|
||||
* representation would work, but it is convenient (especially for A_Const)
|
||||
* to have the target type immediately available.
|
||||
*/
|
||||
typedef struct TypeCast
|
||||
{
|
||||
NodeTag type;
|
||||
Node *arg; /* the expression being casted */
|
||||
TypeName *typename; /* the target type */
|
||||
} TypeCast;
|
||||
|
||||
/*
|
||||
* CaseExpr - a CASE expression
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user