Re: [HACKERS] I think we need an explicit parsetree node for CAST
От | Bruce Momjian |
---|---|
Тема | Re: [HACKERS] I think we need an explicit parsetree node for CAST |
Дата | |
Msg-id | 200001160237.VAA27062@candle.pha.pa.us обсуждение исходный текст |
Ответ на | I think we need an explicit parsetree node for CAST (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-hackers |
> These particular cases can be fixed with a one-line patch, I think, > because there is storage in an A_Const node to hold a reference to > a Typename, which includes typmod. parse_expr.c is just forgetting > to pass the typmod to parser_typecast(). > > BUT: there isn't any equally simple patch when the value being casted > is not a constant. For instance > > select field1 :: numeric(7,2) from table1; > > cannot work properly now, because gram.y transforms it into > > select numeric(field1) from table; > > which (a) drops the typmod and (b) bypasses all of the intelligence > that should be used to determine how to coerce the type. > > What I think we need is to add a new parsetree node type that explicitly > represents a CAST operator, and then modify parse_expr.c to transform > that node type into an appropriate function call (or, perhaps, nothing > at all if the source value is already the right type). I have on the TODO list, and once considered adding more passing around of atttypmod in the parser to keep such information. Maybe I shoud do that first to see what happens and what gets fixed. -- Bruce Momjian | http://www.op.net/~candle pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
В списке pgsql-hackers по дате отправления: