Bug #1: attribute name when column is type cast:
authorBruce Momjian
Mon, 10 Sep 2001 14:53:10 +0000 (14:53 +0000)
committerBruce Momjian
Mon, 10 Sep 2001 14:53:10 +0000 (14:53 +0000)
Given the following table:

test=# \d f
          Table "f"
 Column |  Type   | Modifiers
--------+---------+-----------
 i      | integer |
 test   | text    |

If I do the following:

test=# insert into f values(1,'test');
INSERT 139549 1
test=# select i::int8,test from f;
 ?column? | test
----------+------
        1 | test
(1 row)

It doesn't make much sense that the first column should be called
'?column?'.

The patch results in the output appearing like this:

test=# select i::int8,test from f;
 i | test
---+------
 1 | test
(1 row)

----------

Gavin Sherry

src/backend/parser/parse_target.c

index 37abe11ef6d4a0b9611f8e81e0244b24d70159f5..3f99e2c66d67e4370f4146aacd4c7e9e6303212f 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.70 2001/08/09 18:28:18 petere Exp $
+ *   $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.71 2001/09/10 14:53:10 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -462,7 +462,10 @@ FigureColname(Node *expr, Node *resval)
    /* Some of these are easiest to do with the untransformed node */
    switch (nodeTag(resval))
    {
-           case T_Ident:
+       case T_TypeCast: 
+           return( ( ((Ident *) ((TypeCast *) resval)->arg)->name));
+           
+       case T_Ident:
            return ((Ident *) resval)->name;
        case T_Attr:
            {