From 2dac69b806779ef302eab772ae58b969b84d86b9 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 25 Mar 2020 14:20:49 +0100 Subject: [PATCH] [jOOQ/jOOQ#9925] Added Oracle support --- .../java/org/jooq/XMLExistsPassingStep.java | 1 + .../java/org/jooq/XMLQueryPassingStep.java | 18 +++++++++++++++ .../jooq/XMLTableColumnForOrdinalityStep.java | 1 + .../java/org/jooq/XMLTableColumnPathStep.java | 1 + .../org/jooq/XMLTableColumnsFirstStep.java | 1 + .../java/org/jooq/XMLTablePassingStep.java | 1 + .../main/java/org/jooq/impl/ParserImpl.java | 7 ++++++ .../src/main/java/org/jooq/impl/XMLQuery.java | 22 ++++++++++++++++++- 8 files changed, 51 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/XMLExistsPassingStep.java b/jOOQ/src/main/java/org/jooq/XMLExistsPassingStep.java index 38e491e8a4..cee95da29d 100644 --- a/jOOQ/src/main/java/org/jooq/XMLExistsPassingStep.java +++ b/jOOQ/src/main/java/org/jooq/XMLExistsPassingStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... import static org.jooq.SQLDialect.POSTGRES; diff --git a/jOOQ/src/main/java/org/jooq/XMLQueryPassingStep.java b/jOOQ/src/main/java/org/jooq/XMLQueryPassingStep.java index 9ab7ffc59c..a7ce826d1d 100644 --- a/jOOQ/src/main/java/org/jooq/XMLQueryPassingStep.java +++ b/jOOQ/src/main/java/org/jooq/XMLQueryPassingStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... import static org.jooq.SQLDialect.POSTGRES; @@ -75,4 +76,21 @@ public interface XMLQueryPassingStep { @Support({ POSTGRES }) Field passingByRef(Field xml); + + + + + + + + + + + + + + + + + } diff --git a/jOOQ/src/main/java/org/jooq/XMLTableColumnForOrdinalityStep.java b/jOOQ/src/main/java/org/jooq/XMLTableColumnForOrdinalityStep.java index c6dda1f3ff..c7b39d4ba1 100644 --- a/jOOQ/src/main/java/org/jooq/XMLTableColumnForOrdinalityStep.java +++ b/jOOQ/src/main/java/org/jooq/XMLTableColumnForOrdinalityStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... import static org.jooq.SQLDialect.POSTGRES; diff --git a/jOOQ/src/main/java/org/jooq/XMLTableColumnPathStep.java b/jOOQ/src/main/java/org/jooq/XMLTableColumnPathStep.java index a47dbc663a..e8594a619e 100644 --- a/jOOQ/src/main/java/org/jooq/XMLTableColumnPathStep.java +++ b/jOOQ/src/main/java/org/jooq/XMLTableColumnPathStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... import static org.jooq.SQLDialect.POSTGRES; diff --git a/jOOQ/src/main/java/org/jooq/XMLTableColumnsFirstStep.java b/jOOQ/src/main/java/org/jooq/XMLTableColumnsFirstStep.java index d045b14bda..39b52b426b 100644 --- a/jOOQ/src/main/java/org/jooq/XMLTableColumnsFirstStep.java +++ b/jOOQ/src/main/java/org/jooq/XMLTableColumnsFirstStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... import static org.jooq.SQLDialect.POSTGRES; diff --git a/jOOQ/src/main/java/org/jooq/XMLTablePassingStep.java b/jOOQ/src/main/java/org/jooq/XMLTablePassingStep.java index e42f9a9992..fb406df90f 100644 --- a/jOOQ/src/main/java/org/jooq/XMLTablePassingStep.java +++ b/jOOQ/src/main/java/org/jooq/XMLTablePassingStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... import static org.jooq.SQLDialect.POSTGRES; diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index bf044332e8..61ae53e4ad 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -6899,10 +6899,17 @@ final class ParserImpl implements Parser { Field xpath = (Field) parseField(ctx); XMLPassingMechanism m = parseXMLPassingMechanism(ctx); Field xml = (Field) parseField(ctx); + parseKeywordIf(ctx, "RETURNING CONTENT"); parse(ctx, ')'); if (m == BY_REF) return xmlquery(xpath).passingByRef(xml); + + + + + + else return xmlquery(xpath).passing(xml); } diff --git a/jOOQ/src/main/java/org/jooq/impl/XMLQuery.java b/jOOQ/src/main/java/org/jooq/impl/XMLQuery.java index 4057aa3b60..9efd10c3d8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/XMLQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/XMLQuery.java @@ -40,9 +40,12 @@ package org.jooq.impl; import static org.jooq.impl.DSL.select; import static org.jooq.impl.DSL.unnest; import static org.jooq.impl.DSL.xmlagg; +import static org.jooq.impl.Keywords.K_CONTENT; +import static org.jooq.impl.Keywords.K_RETURNING; import static org.jooq.impl.Names.N_XMLQUERY; import static org.jooq.impl.SQLDataType.XML; import static org.jooq.impl.XMLPassingMechanism.BY_REF; +import static org.jooq.impl.XMLPassingMechanism.BY_VALUE; import static org.jooq.impl.XMLTable.acceptPassing; import static org.jooq.impl.XMLTable.acceptXPath; @@ -99,6 +102,20 @@ final class XMLQuery extends AbstractField implements XMLQueryPassingStep { return new XMLQuery(xpath, xml, BY_REF); } + + + + + + + + + + + + + + // ------------------------------------------------------------------------- // XXX: QueryPart API // ------------------------------------------------------------------------- @@ -126,12 +143,15 @@ final class XMLQuery extends AbstractField implements XMLQueryPassingStep { acceptXPath(ctx, xpath); acceptPassing(ctx, passing, passingMechanism); + + + + ctx.formatIndentEnd() .formatNewLine() .sql(')'); break; } - } }