pgpool2.git / summary / log / commit / refs
commit 3d9b750c5677e8a579607419b33a621b72c06ea3
Author: Yoshiyuki Asaba <y-asaba at pgfoundry.org>
Date: Mon Oct 15 10:18:33 2007 +0000
Support interval operator.
parser/outfuncs.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/parser/outfuncs.c b/parser/outfuncs.c
index 0fcd6690f..7427961d1 100644
--- a/parser/outfuncs.c
+++ b/parser/outfuncs.c
@@ -1287,6 +1287,15 @@ static void
_outAConst(String *str, A_Const *node)
{
char buf[16];
+ char *name = NULL;
+
+ if (node->typename)
+ {
+ Value *v = linitial(node->typename->names);
+ name = v->val.str;
+ _outNode(str, node->typename);
+ string_append_char(str, " ");
+ }
switch (node->val.type)
{
@@ -1312,6 +1321,41 @@ _outAConst(String *str, A_Const *node)
default:
break;
}
+
+ if (name && (strcmp(name, "interval") == 0) &&
+ node->typename->typmods)
+ {
+ A_Const *v = linitial(node->typename->typmods);
+ int mask = v->val.val.ival;
+
+ if (mask == INTERVAL_MASK(YEAR))
+ string_append_char(str, " YEAR");
+ else if (mask == INTERVAL_MASK(MONTH))
+ string_append_char(str, " MONTH");
+ else if (mask == INTERVAL_MASK(DAY))
+ string_append_char(str, " DAY");
+ else if (mask == INTERVAL_MASK(HOUR))
+ string_append_char(str, " HOUR");
+ else if (mask == INTERVAL_MASK(MINUTE))
+ string_append_char(str, " MINUTE");
+ else if (mask == INTERVAL_MASK(SECOND))
+ string_append_char(str, " SECOND");
+ else if (mask == (INTERVAL_MASK(YEAR) | INTERVAL_MASK(MONTH)))
+ string_append_char(str, " YEAR TO MONTH");
+ else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR)))
+ string_append_char(str, " DAY TO HOUR");
+ else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) |
+ INTERVAL_MASK(MINUTE)))
+ string_append_char(str, " DAY TO MINUTE");
+ else if (mask == (INTERVAL_MASK(DAY) | INTERVAL_MASK(HOUR) |
+ INTERVAL_MASK(MINUTE) | INTERVAL_MASK(SECOND)))
+ string_append_char(str, " DAY TO SECOND");
+ else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE)))
+ string_append_char(str, " HOUR TO MINUTE");
+ else if (mask == (INTERVAL_MASK(HOUR) | INTERVAL_MASK(MINUTE) |
+ INTERVAL_MASK(SECOND)))
+ string_append_char(str, " HOUR TO SECOND");
+ }
}
static void
[parent: 99cc4f62643b]