diff --git a/jOOQ/src/main/java/org/jooq/Context.java b/jOOQ/src/main/java/org/jooq/Context.java index 560ba32bd7..0b40649e23 100644 --- a/jOOQ/src/main/java/org/jooq/Context.java +++ b/jOOQ/src/main/java/org/jooq/Context.java @@ -174,6 +174,32 @@ public interface Context> extends Scope { @NotNull C declareWindows(boolean declareWindows, Consumer consumer); + + + + + + + + + + + + + + + + + + + + + + + + + + /** * Whether the current context is rendering a common table expression (e.g. * a {@link CommonTableExpression} in the WITH clause of the diff --git a/jOOQ/src/main/java/org/jooq/QueryPartInternal.java b/jOOQ/src/main/java/org/jooq/QueryPartInternal.java index 291f76608a..1c77e26a7f 100644 --- a/jOOQ/src/main/java/org/jooq/QueryPartInternal.java +++ b/jOOQ/src/main/java/org/jooq/QueryPartInternal.java @@ -158,6 +158,22 @@ public interface QueryPartInternal extends QueryPart { */ boolean declaresCTE(); + + + + + + + + + + + + + + + + /** * Check whether this {@link QueryPart} is able to generate * CAST expressions around bind variables. diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java index ecdda9290a..77d4123816 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java @@ -111,6 +111,10 @@ abstract class AbstractContext> extends AbstractScope imple boolean declareAliases; boolean declareWindows; boolean declareCTE; + + + + int subquery; BitSet subqueryScopedNestedSetOperations; int stringLiteral; @@ -258,6 +262,17 @@ abstract class AbstractContext> extends AbstractScope imple declareCTE(true); } + + + + + + + + + + + else if (!castModeOverride && castMode() != CastMode.DEFAULT && !internal.generatesCast()) { CastMode previous = castMode(); @@ -570,6 +585,29 @@ abstract class AbstractContext> extends AbstractScope imple return toggle(f, this::declareWindows, this::declareWindows, consumer); } + + + + + + + + + + + + + + + + + + + + + + + @Override public final boolean declareCTE() { return declareCTE; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java index 0d8089b690..97b9393e67 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQueryPart.java @@ -48,6 +48,7 @@ import org.jooq.Clause; import org.jooq.Configuration; import org.jooq.Context; import org.jooq.DSLContext; +// ... import org.jooq.QueryPart; import org.jooq.QueryPartInternal; import org.jooq.RenderContext; @@ -144,6 +145,19 @@ abstract class AbstractQueryPart implements QueryPartInternal { return false; } + + + + + + + + + + + + + /** * Subclasses may override this */ diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateProcedureImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateProcedureImpl.java index ed417f23ed..cf618370f3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateProcedureImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateProcedureImpl.java @@ -253,27 +253,6 @@ package org.jooq.impl; - - - - - - - - - - - - - - - - - - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/DDLStatementType.java b/jOOQ/src/main/java/org/jooq/impl/DDLStatementType.java index ccf870ddda..2eaf661084 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DDLStatementType.java +++ b/jOOQ/src/main/java/org/jooq/impl/DDLStatementType.java @@ -44,7 +44,9 @@ package org.jooq.impl; enum DDLStatementType { ALTER_DATABASE, ALTER_DOMAIN, + ALTER_FUNCTION, ALTER_INDEX, + ALTER_PROCEDURE, ALTER_SCHEMA, ALTER_SEQUENCE, ALTER_TABLE, @@ -53,7 +55,9 @@ enum DDLStatementType { CREATE_DATABASE, CREATE_DOMAIN, + CREATE_FUNCTION, CREATE_INDEX, + CREATE_PROCEDURE, CREATE_SCHEMA, CREATE_SEQUENCE, CREATE_TABLE, @@ -62,7 +66,9 @@ enum DDLStatementType { DROP_DATABASE, DROP_DOMAIN, + DROP_FUNCTION, DROP_INDEX, + DROP_PROCEDURE, DROP_SCHEMA, DROP_SEQUENCE, DROP_TABLE, diff --git a/jOOQ/src/main/java/org/jooq/impl/DropFunctionImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropFunctionImpl.java index e77d780813..37f3e645b7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropFunctionImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropFunctionImpl.java @@ -92,6 +92,19 @@ package org.jooq.impl; + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/DropProcedureImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropProcedureImpl.java index e77d780813..37f3e645b7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropProcedureImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropProcedureImpl.java @@ -92,6 +92,19 @@ package org.jooq.impl; + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/ParameterImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParameterImpl.java index ab5a28e159..e2e43b6a6b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParameterImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParameterImpl.java @@ -38,6 +38,15 @@ package org.jooq.impl; +// ... +import static org.jooq.SQLDialect.POSTGRES; +// ... +// ... +import static org.jooq.impl.Keywords.K_INOUT; +import static org.jooq.impl.Keywords.K_OUT; + +import java.util.Set; + import org.jooq.Context; import org.jooq.DataType; import org.jooq.Field; @@ -46,6 +55,7 @@ import org.jooq.ParamMode; import org.jooq.Parameter; // ... import org.jooq.Record1; +import org.jooq.SQLDialect; import org.jooq.Select; import org.jooq.Statement; // ... @@ -94,6 +104,13 @@ final class ParameterImpl extends AbstractField implements Parameter { // XXX: QueryPart API // ------------------------------------------------------------------------- + + + + + + + @Override public final void accept(Context ctx) { @@ -101,6 +118,27 @@ final class ParameterImpl extends AbstractField implements Parameter { + + + + + + + + + + + + + + + + + + + + + ctx.visit(getUnqualifiedName()); } @@ -143,6 +181,12 @@ final class ParameterImpl extends AbstractField implements Parameter { + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/ParameterList.java b/jOOQ/src/main/java/org/jooq/impl/ParameterList.java new file mode 100644 index 0000000000..77ac65295b --- /dev/null +++ b/jOOQ/src/main/java/org/jooq/impl/ParameterList.java @@ -0,0 +1,72 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Other licenses: + * ----------------------------------------------------------------------------- + * Commercial licenses for this work are available. These replace the above + * ASL 2.0 and offer limited warranties, support, maintenance, and commercial + * database integrations. + * + * For more information, please visit: http://www.jooq.org/licenses + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +package org.jooq.impl; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/Return.java b/jOOQ/src/main/java/org/jooq/impl/Return.java index ce86fab08e..92a67ac8bc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Return.java +++ b/jOOQ/src/main/java/org/jooq/impl/Return.java @@ -108,14 +108,6 @@ package org.jooq.impl; - - - - - - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/ScopeMarkers.java b/jOOQ/src/main/java/org/jooq/impl/ScopeMarkers.java index 8bd278bc2f..57b027b61d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ScopeMarkers.java +++ b/jOOQ/src/main/java/org/jooq/impl/ScopeMarkers.java @@ -40,6 +40,7 @@ package org.jooq.impl; import org.jooq.BindContext; import org.jooq.Clause; import org.jooq.Context; +// ... import org.jooq.QueryPartInternal; import org.jooq.RenderContext; @@ -90,6 +91,16 @@ enum ScopeMarkers implements QueryPartInternal { return false; } + + + + + + + + + + @Override public final boolean generatesCast() { return false; diff --git a/jOOQ/src/main/java/org/jooq/impl/VariableImpl.java b/jOOQ/src/main/java/org/jooq/impl/VariableImpl.java index 5048214229..986c8f6bd2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/VariableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/VariableImpl.java @@ -117,6 +117,15 @@ package org.jooq.impl; + + + + + + + + +