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]