From c0882551eb4de3c7a1b324f7922b16efb59ce61a Mon Sep 17 00:00:00 2001 From: lukaseder Date: Mon, 17 Apr 2017 22:52:26 +0200 Subject: [PATCH] [#5955] PostgreSQL cast operator :: --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 04d133ce01..8f5bfc3a43 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -2352,19 +2352,19 @@ class ParserImpl implements Parser { } private static final FieldOrRow parseExp(ParserContext ctx, Type type) { - FieldOrRow r = parseSigned(ctx, type); + FieldOrRow r = parseUnaryOps(ctx, type); if (N.is(type) && r instanceof Field) for (;;) if (parseIf(ctx, '^')) - r = ((Field) r).pow(toField(ctx, parseSigned(ctx, type))); + r = ((Field) r).pow(toField(ctx, parseUnaryOps(ctx, type))); else break; return r; } - private static final FieldOrRow parseSigned(ParserContext ctx, Type type) { + private static final FieldOrRow parseUnaryOps(ParserContext ctx, Type type) { Integer sign = null; FieldOrRow r; @@ -2383,6 +2383,9 @@ class ParserImpl implements Parser { else if ((r = parseFieldUnsignedNumericLiteralIf(ctx, true)) == null) r = toField(ctx, parseTerm(ctx, type)).neg(); + while (parseIf(ctx, "::")) + r = cast(toField(ctx, r), parseDataType(ctx)); + return r; }