aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_target.c
diff options
context:
space:
mode:
authorThomas G. Lockhart <lockhart@fourpalms.org>2001-09-28 08:09:14 +0000
committerThomas G. Lockhart <lockhart@fourpalms.org>2001-09-28 08:09:14 +0000
commit6f58115dddfa8ca63004c4784f57ef660422861d (patch)
tree71816e03286e53113ec4b6de337f0b345028a314 /src/backend/parser/parse_target.c
parent1f075a32ee28004251f508f50a4325944801da10 (diff)
downloadpostgresql-6f58115dddfa8ca63004c4784f57ef660422861d.tar.gz
postgresql-6f58115dddfa8ca63004c4784f57ef660422861d.zip
Measure the current transaction time to milliseconds.
Define a new function, GetCurrentTransactionStartTimeUsec() to get the time to this precision. Allow now() and timestamp 'now' to use this higher precision result so we now have fractional seconds in this "constant". Add timestamp without time zone type. Move previous timestamp type to timestamp with time zone. Accept another ISO variant for date/time values: yyyy-mm-ddThh:mm:ss (note the "T" separating the day from hours information). Remove 'current' from date/time types; convert to 'now' in input. Separate time and timetz regression tests. Separate timestamp and timestamptz regression test.
Diffstat (limited to 'src/backend/parser/parse_target.c')
-rw-r--r--src/backend/parser/parse_target.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c
index a39e3108804..c40792072b1 100644
--- a/src/backend/parser/parse_target.c
+++ b/src/backend/parser/parse_target.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.72 2001/09/17 01:06:36 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.73 2001/09/28 08:09:09 thomas Exp $
*
*-------------------------------------------------------------------------
*/
@@ -462,10 +462,13 @@ FigureColname(Node *node)
{
if (node == NULL)
return "?column?";
+
switch (nodeTag(node))
{
case T_Ident:
return ((Ident *) node)->name;
+ case T_A_Const:
+ return (FigureColname((Node *)((A_Const *) node)->typename));
case T_Attr:
{
List *attrs = ((Attr *) node)->attrs;
@@ -481,7 +484,15 @@ FigureColname(Node *node)
case T_FuncCall:
return ((FuncCall *) node)->funcname;
case T_TypeCast:
- return FigureColname(((TypeCast *) node)->arg);
+ {
+ char *name;
+
+ name = FigureColname(((TypeCast *) node)->arg);
+ if (strcmp(name, "?column?") == 0)
+ name = FigureColname((Node *)((TypeCast *) node)->typename);
+ return name;
+ }
+ break;
case T_CaseExpr:
{
char *name;
@@ -492,6 +503,8 @@ FigureColname(Node *node)
return name;
}
break;
+ case T_TypeName:
+ return ((TypeName *) node)->name;
default:
break;
}