diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index 6829ef930f..2a2e2855f9 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -5380,6 +5380,7 @@ public interface DSLContext extends Scope { *
  • {@link SQLDialect#SQLITE}: Using last_insert_rowid()
  • *
  • {@link SQLDialect#SQLSERVER}: Using @@identity
  • *
  • {@link SQLDialect#SYBASE}: Using @@identity
  • + *
  • {@link SQLDialect#VERTICA}: Using last_insert_id()
  • * * * @return The last inserted ID. This may be null in some diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java index 962e698417..c3ac6013ec 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java @@ -298,6 +298,7 @@ class AlterTableImpl extends AbstractQuery implements xxxxxx xxxx xxxxxxxxxx + xxxx xxxxxxxx xxxxxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxx xxxxxx xx [/pro] */ @@ -323,6 +324,7 @@ class AlterTableImpl extends AbstractQuery implements switch (family) { /* [pro] xx xxxx xxxx + xxxx xxxxxxxx xxxxxxxxx xxxxxxxxxxxxxxx xxxx xxxxxxx xxxxxx xx [/pro] */ diff --git a/jOOQ/src/main/java/org/jooq/impl/Concat.java b/jOOQ/src/main/java/org/jooq/impl/Concat.java index 2c53c821b6..91ff1bcb5b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Concat.java +++ b/jOOQ/src/main/java/org/jooq/impl/Concat.java @@ -79,7 +79,7 @@ class Concat extends AbstractFunction { Field[] others = new Field[cast.length - 1]; System.arraycopy(cast, 1, others, 0, others.length); - switch (configuration.dialect().family()) { + switch (configuration.family()) { case MARIADB: case MYSQL: return function("concat", SQLDataType.VARCHAR, cast); diff --git a/jOOQ/src/main/java/org/jooq/impl/DateAdd.java b/jOOQ/src/main/java/org/jooq/impl/DateAdd.java index bc2b74647e..99c7c3152a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DateAdd.java +++ b/jOOQ/src/main/java/org/jooq/impl/DateAdd.java @@ -51,7 +51,6 @@ import org.jooq.Configuration; import org.jooq.DatePart; import org.jooq.Field; import org.jooq.QueryPart; -import org.jooq.exception.SQLDialectNotSupportedException; /** * @author Lukas Eder @@ -272,8 +271,18 @@ class DateAdd extends AbstractFunction { x x - xxxx xxxxxxx x - xxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx xxxxxxxxxxx xx xxx xxx xxxxxxxxxxxxxx + xxxx xxxxxxxx x + xxxxxx xxxxxxxxxx x + xxxx xxxxx xxxxxxx x x xxxxxx xxxxxx + xxxx xxxxxx xxxxxxx x x xxxxxxx xxxxxx + xxxx xxxx xxxxxxx x x xxxxx xxxxxx + xxxx xxxxx xxxxxxx x x xxxxxx xxxxxx + xxxx xxxxxxx xxxxxxx x x xxxxxxxx xxxxxx + xxxx xxxxxxx xxxxxxx x x xxxxxxxx xxxxxx + xxxxxxxx xxxxxxxxxxxxxxxxxxx + x + + xxxxxx xxxxxxxxxxxxxxxxxxxxxxxx xx xxx xx xxxxxxxxxxxxx xxxxxxxxx xxxxxxxxxxxxxxxxxx x xx [/pro] */ } diff --git a/jOOQ/src/main/java/org/jooq/impl/DateDiff.java b/jOOQ/src/main/java/org/jooq/impl/DateDiff.java index 8958cb2d60..f605bda825 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DateDiff.java +++ b/jOOQ/src/main/java/org/jooq/impl/DateDiff.java @@ -105,6 +105,7 @@ class DateDiff extends AbstractFunction { xxxx xxxx xxxx xxxxxxxxxx xxxx xxxxxxx + xxxx xxxxxxxx xxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxx xxxxxxxxxxxxxx xxxxxx xxxxxxx xxxx xxxx diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java index e244737eb9..41fab0b45b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java @@ -1886,6 +1886,10 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri return select(field).fetchOne(field); } + /* [pro] xx + xxxx xxxxxxxx + xx [/pro] */ + case CUBRID: case MARIADB: case MYSQL: { diff --git a/jOOQ/src/main/java/org/jooq/impl/Euler.java b/jOOQ/src/main/java/org/jooq/impl/Euler.java index cff6226405..1412a5cbc1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Euler.java +++ b/jOOQ/src/main/java/org/jooq/impl/Euler.java @@ -77,6 +77,7 @@ class Euler extends AbstractFunction { xxxx xxxxxxxxx xxxx xxxxxxxxxx xxxx xxxxxxx + xxxx xxxxxxxx xx [/pro] */ case CUBRID: case DERBY: diff --git a/jOOQ/src/main/java/org/jooq/impl/LeadLag.java b/jOOQ/src/main/java/org/jooq/impl/LeadLag.java index f5e1e8b6ad..fcc5183f22 100644 --- a/jOOQ/src/main/java/org/jooq/impl/LeadLag.java +++ b/jOOQ/src/main/java/org/jooq/impl/LeadLag.java @@ -107,6 +107,13 @@ class LeadLag extends Function { xxxxxxxxxxxxxxxxxxxx xxxxxxxxxx xxxxxx + + xx xx xxxxxxxx xxx xxxxxxxxxxxx xxxx xx x xxxxxxxx + xxxx xxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxx xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx xxxxxx xxxxxxxxxxxxxxx xxx xxxxxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxx + xxxxxx + xx [/pro] */ default: diff --git a/jOOQ/src/main/java/org/jooq/impl/Limit.java b/jOOQ/src/main/java/org/jooq/impl/Limit.java index 37661a3ef9..a262131265 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Limit.java +++ b/jOOQ/src/main/java/org/jooq/impl/Limit.java @@ -78,6 +78,33 @@ class Limit extends AbstractQueryPart { // True LIMIT / OFFSET support provided by the following dialects // ----------------------------------------------------------------- + /* [pro] xx + xxxx xxxxxxxx x + + xx xxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxx x xx xxxxx x xxxxxx xx xxx xxxxxxxxx xxx xxxxxxxxxxx + xx xx xxxxxxx xxxx xxxxxxx xxxxxxx xxxxxxx xxxxxxxxxxx xx xxxxx xx xxxxxx + xx xxxxxxx xx xxxxxxx xxxxxx xx xxxxxxx xxxxxxx + xx xxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxx + + xxxxxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxx + xxxxxx xxxxxxxxxxxxxxxxxxxxxxx + + xx xxxxxxxxxxxxxxx + xxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx + xxxxxx xxxxxxxxxxxxxxxxxxxxxxx + + xxxxxxxxxxxxxxxxxxxxxxxxxxx + + xx xxxxxxxxxxxxxxxxxxxx + xxxxxxxxxxxxxxxxxxxxxxxxxxxxx + + xxxxxx + x + xx [/pro] */ + case MARIADB: case MYSQL: case H2: diff --git a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java index b05062afb5..44203117cd 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java @@ -939,7 +939,7 @@ implements // ------------------------------------------------------------------------- /** - * Return a standard MERGE statement simulating the H2-specific syntax + * Return a standard MERGE statement emulating the H2-specific syntax */ private final QueryPart getStandardMerge(Configuration config) { switch (config.dialect().family()) { @@ -949,6 +949,7 @@ implements xxxx xxxxxxx xxxx xxxxxxxxxx xxxx xxxxxxx + xxxx xxxxxxxx xx [/pro] */ case CUBRID: case HSQLDB: { diff --git a/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java b/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java index 5766e733a2..3b09ca7e93 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java +++ b/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java @@ -109,7 +109,8 @@ class RegexpLike extends AbstractCondition { /* [pro] xx xx xxxxxx xxxxxx xxx xxx xxx xxxxxx - xxxx xxxxxxx x + xxxx xxxxxxx + xxxx xxxxxxxx x xx xxxxxxx xxxxx xxxxxxx xxxx xx xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxx xxxxxxx xxxxxxxxxx diff --git a/jOOQ/src/main/java/org/jooq/impl/Replace.java b/jOOQ/src/main/java/org/jooq/impl/Replace.java index 0015e47925..157aec733b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Replace.java +++ b/jOOQ/src/main/java/org/jooq/impl/Replace.java @@ -83,6 +83,7 @@ class Replace extends AbstractFunction { xxxx xxxxxxx xxxx xxxxxxxxxx xxxx xxxxxxx + xxxx xxxxxxxx xx [/pro] */ case FIREBIRD: case HSQLDB: diff --git a/jOOQ/src/main/java/org/jooq/impl/SQLInline.java b/jOOQ/src/main/java/org/jooq/impl/SQLInline.java new file mode 100644 index 0000000000..2e17b7f952 --- /dev/null +++ b/jOOQ/src/main/java/org/jooq/impl/SQLInline.java @@ -0,0 +1,90 @@ +/** + * Copyright (c) 2009-2015, Data Geekery GmbH (http://www.datageekery.com) + * All rights reserved. + * + * This work is dual-licensed + * - under the Apache Software License 2.0 (the "ASL") + * - under the jOOQ License and Maintenance Agreement (the "jOOQ License") + * ============================================================================= + * You may choose which license applies to you: + * + * - If you're using this work with Open Source databases, you may choose + * either ASL or jOOQ License. + * - If you're using this work with at least one commercial database, you must + * choose jOOQ License + * + * For more information, please visit http://www.jooq.org/licenses + * + * Apache Software License 2.0: + * ----------------------------------------------------------------------------- + * 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. + * + * jOOQ License and Maintenance Agreement: + * ----------------------------------------------------------------------------- + * Data Geekery grants the Customer the non-exclusive, timely limited and + * non-transferable license to install and use the Software under the terms of + * the jOOQ License and Maintenance Agreement. + * + * This library is distributed with a LIMITED WARRANTY. See the jOOQ License + * and Maintenance Agreement for more details: http://www.jooq.org/licensing + */ +package org.jooq.impl; + +import static org.jooq.conf.ParamType.INLINED; +import static org.jooq.impl.DSL.sql; + +import org.jooq.Clause; +import org.jooq.Context; +import org.jooq.QueryPart; +import org.jooq.SQL; +import org.jooq.conf.ParamType; + +/** + * @author Lukas Eder + */ +class SQLInline extends AbstractQueryPart implements SQL { + + /** + * Generated UID + */ + private static final long serialVersionUID = 5352233054249655126L; + + private SQL sql; + + SQLInline(QueryPart part) { + this(sql("{0}", part)); + } + + SQLInline(SQL sql) { + this.sql = sql; + } + + @Override + public final void accept(Context ctx) { + ParamType paramType = ctx.paramType(); + + ctx.paramType(INLINED) + .visit(sql) + .paramType(paramType); + } + + @Override + public Clause[] clauses(Context ctx) { + return null; + } + + @Override + public String toString() { + return sql.toString(); + } +} diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 309e47dcde..88d7f07e81 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -591,7 +591,7 @@ class SelectQueryImpl extends AbstractResultQuery implement /* [pro] xx xx xxxx xxxxxxx xx xxxxxxxxxxxx - xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x + xx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxx xxxxxxxxxx x xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx diff --git a/jOOQ/src/main/java/org/jooq/impl/TimestampDiff.java b/jOOQ/src/main/java/org/jooq/impl/TimestampDiff.java index 613a4567ab..39120aaa1f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TimestampDiff.java +++ b/jOOQ/src/main/java/org/jooq/impl/TimestampDiff.java @@ -115,6 +115,10 @@ class TimestampDiff extends AbstractFunction { case DERBY: return (Field) field("1000 * {fn {timestampdiff}({sql_tsi_second}, {0}, {1}) }", INTEGER, timestamp2, timestamp1); + /* [pro] xx + xxxx xxxxxxxx + xx [/pro] */ + case FIREBIRD: return field("{datediff}(millisecond, {0}, {1})", getDataType(), timestamp2, timestamp1); diff --git a/jOOQ/src/main/java/org/jooq/impl/TruncDate.java b/jOOQ/src/main/java/org/jooq/impl/TruncDate.java index 9da003caa5..b0c2d461b2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TruncDate.java +++ b/jOOQ/src/main/java/org/jooq/impl/TruncDate.java @@ -124,6 +124,7 @@ class TruncDate extends AbstractFunction { /* [pro] xx xxxx xxxxxxxxx + xxxx xxxxxxxx xx [/pro] */ case POSTGRES: {