diff --git a/jOOQ/src/main/java/org/jooq/CreateIndexStep.java b/jOOQ/src/main/java/org/jooq/CreateIndexStep.java index b6d90c2f60..ed7a912480 100644 --- a/jOOQ/src/main/java/org/jooq/CreateIndexStep.java +++ b/jOOQ/src/main/java/org/jooq/CreateIndexStep.java @@ -40,6 +40,25 @@ */ package org.jooq; +// ... +// ... +import static org.jooq.SQLDialect.CUBRID; +// ... +import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.FIREBIRD; +import static org.jooq.SQLDialect.H2; +// ... +import static org.jooq.SQLDialect.HSQLDB; +// ... +// ... +import static org.jooq.SQLDialect.MARIADB; +import static org.jooq.SQLDialect.MYSQL; +// ... +import static org.jooq.SQLDialect.POSTGRES; +import static org.jooq.SQLDialect.SQLITE; +// ... +// ... + /** * A {@link Query} that can create indexes. * @@ -50,12 +69,12 @@ public interface CreateIndexStep { /** * Specify the table and column expressions on which to create an index. */ - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) CreateIndexFinalStep on(Table table, Field... fields); /** * Specify the table and column expressions on which to create an index. */ - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) CreateIndexFinalStep on(String tableName, String... fieldNames); } diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index e165c67e56..6829ef930f 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -4943,7 +4943,7 @@ public interface DSLContext extends Scope { * * @see DSL#createIndex(String) */ - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) CreateIndexStep createIndex(String index); /** @@ -4951,7 +4951,7 @@ public interface DSLContext extends Scope { * * @see DSL#createIndex(Name) */ - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) CreateIndexStep createIndex(Name index); /** @@ -5145,7 +5145,7 @@ public interface DSLContext extends Scope { * * @see DSL#dropIndex(String) */ - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) DropIndexOnStep dropIndex(String index); /** @@ -5153,7 +5153,7 @@ public interface DSLContext extends Scope { * * @see DSL#dropIndex(Name) */ - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) DropIndexOnStep dropIndex(Name index); /** diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java index c698a2b105..9fd201b2a3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java @@ -254,7 +254,7 @@ abstract class AbstractResultQuery extends AbstractQuery imple if (!many) { if (ctx.resultSet() != null) { Field[] fields = getFields(ctx.resultSet().getMetaData()); - cursor = new CursorImpl(ctx, listener, fields, intern.internIndexes(fields), keepStatement(), keepResultSet(), getRecordType()); + cursor = new CursorImpl(ctx, listener, fields, intern.internIndexes(fields), keepStatement(), keepResultSet(), getRecordType(), maxRows); if (!lazy) { result = cursor.fetch(); diff --git a/jOOQ/src/main/java/org/jooq/impl/BetweenCondition.java b/jOOQ/src/main/java/org/jooq/impl/BetweenCondition.java index c64a147fcf..6c15f67f45 100644 --- a/jOOQ/src/main/java/org/jooq/impl/BetweenCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/BetweenCondition.java @@ -59,6 +59,7 @@ import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -125,12 +126,9 @@ class BetweenCondition extends AbstractCondition implements BetweenAndStep private final QueryPartInternal delegate(Configuration configuration) { if (symmetric && asList(CUBRID, DERBY, FIREBIRD, H2, MARIADB, MYSQL, SQLITE).contains(configuration.dialect().family())) { - if (not) { - return (QueryPartInternal) field.notBetween(minValue, maxValue).and(field.notBetween(maxValue, minValue)); - } - else { - return (QueryPartInternal) field.between(minValue, maxValue).or(field.between(maxValue, minValue)); - } + return not + ? (QueryPartInternal) field.notBetween(minValue, maxValue).and(field.notBetween(maxValue, minValue)) + : (QueryPartInternal) field.between(minValue, maxValue).or(field.between(maxValue, minValue)); } else { return new Native(); diff --git a/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java b/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java index fa7eaf624d..2be48ca628 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CursorImpl.java @@ -99,6 +99,7 @@ class CursorImpl implements Cursor { private final boolean[] intern; private final boolean keepResultSet; private final boolean keepStatement; + private final int maxRows; private final RecordFactory factory; private boolean isClosed; @@ -107,12 +108,13 @@ class CursorImpl implements Cursor { private transient Iterator iterator; private transient int rows; + @SuppressWarnings("unchecked") CursorImpl(ExecuteContext ctx, ExecuteListener listener, Field[] fields, int[] internIndexes, boolean keepStatement, boolean keepResultSet) { - this(ctx, listener, fields, internIndexes, keepStatement, keepResultSet, (Class) RecordImpl.class); + this(ctx, listener, fields, internIndexes, keepStatement, keepResultSet, (Class) RecordImpl.class, 0); } - CursorImpl(ExecuteContext ctx, ExecuteListener listener, Field[] fields, int[] internIndexes, boolean keepStatement, boolean keepResultSet, Class type) { + CursorImpl(ExecuteContext ctx, ExecuteListener listener, Field[] fields, int[] internIndexes, boolean keepStatement, boolean keepResultSet, Class type, int maxRows) { this.ctx = ctx; this.listener = (listener != null ? listener : new ExecuteListeners(ctx)); this.cursorFields = fields; @@ -122,6 +124,7 @@ class CursorImpl implements Cursor { this.rs = new CursorResultSet(); this.rsContext = new DefaultBindingGetResultSetContext(ctx.configuration(), ctx.data(), rs, 0); this.intern = new boolean[fields.length]; + this.maxRows = maxRows; if (internIndexes != null) { for (int i : internIndexes) { @@ -1361,7 +1364,7 @@ class CursorImpl implements Cursor { /** * The (potentially) pre-fetched next record */ - private R next; + private R next; /** * Whether the underlying {@link ResultSet} has a next record. This @@ -1372,11 +1375,16 @@ class CursorImpl implements Cursor { *
  • false: there aren't any next records
  • * */ - private Boolean hasNext; + private Boolean hasNext; @Override public final boolean hasNext() { if (hasNext == null) { + + // Some databases (e.g. Redshift) do not implement JDBC's maxRows. + if (maxRows > 0 && rows >= maxRows) + return false; + next = fetchOne(); hasNext = (next != null); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 6fcf9f38f8..f0e54ccc7d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -62,6 +62,7 @@ import static org.jooq.SQLDialect.MYSQL; import static org.jooq.SQLDialect.POSTGRES; import static org.jooq.SQLDialect.POSTGRES_9_3; import static org.jooq.SQLDialect.POSTGRES_9_4; +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... diff --git a/jOOQ/src/main/java/org/jooq/impl/FieldMapForUpdate.java b/jOOQ/src/main/java/org/jooq/impl/FieldMapForUpdate.java index 20f358c1cb..814a12d34d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FieldMapForUpdate.java +++ b/jOOQ/src/main/java/org/jooq/impl/FieldMapForUpdate.java @@ -42,6 +42,7 @@ package org.jooq.impl; import static java.util.Arrays.asList; import static org.jooq.SQLDialect.POSTGRES; +// ... import static org.jooq.SQLDialect.SQLITE; import java.util.Map; diff --git a/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java b/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java index f6e955ad5f..121a9d3643 100644 --- a/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java +++ b/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java @@ -42,6 +42,7 @@ package org.jooq.impl; import static java.util.Arrays.asList; import static org.jooq.Comparator.IS_DISTINCT_FROM; +import static org.jooq.Comparator.IS_NOT_DISTINCT_FROM; // ... // ... import static org.jooq.SQLDialect.CUBRID; @@ -53,6 +54,7 @@ import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -149,38 +151,43 @@ class IsDistinctFrom extends AbstractCondition { // MySQL knows the <=> operator else if (asList(MARIADB, MYSQL).contains(configuration.family())) { - if (mySQLCondition == null) { - if (comparator == IS_DISTINCT_FROM) { - mySQLCondition = (QueryPartInternal) condition("{not}({0} <=> {1})", lhs, rhs); - } - else { - mySQLCondition = (QueryPartInternal) condition("{0} <=> {1}", lhs, rhs); - } - } + if (mySQLCondition == null) + mySQLCondition = (QueryPartInternal) ((comparator == IS_DISTINCT_FROM) + ? condition("{not}({0} <=> {1})", lhs, rhs) + : condition("{0} <=> {1}", lhs, rhs)); return mySQLCondition; } // SQLite knows the IS / IS NOT predicate else if (SQLITE == configuration.family()) { - if (sqliteCondition == null) { - if (comparator == IS_DISTINCT_FROM) { - sqliteCondition = (QueryPartInternal) condition("{0} {is not} {1}", lhs, rhs); - } - else { - sqliteCondition = (QueryPartInternal) condition("{0} {is} {1}", lhs, rhs); - } - } + if (sqliteCondition == null) + sqliteCondition = (QueryPartInternal) ((comparator == IS_DISTINCT_FROM) + ? condition("{0} {is not} {1}", lhs, rhs) + : condition("{0} {is} {1}", lhs, rhs)); return sqliteCondition; } + /* [pro] xx + xx xxxxxxxx xxxxx xx xxxxxxxx xxxx xxx xxxxxxx xxxx xx xxx xxxxxxxx xxxx + xxxx xx xxxxxxxxx xx xxxxxxxxxxxxxxxxxxxxxxx x + xx xxxxxxxxxxxxxxxxx xx xxxxx + xxxxxxxxxxxxxxxx x xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx xx xxxxxxxxxxxxxxxxxxxxx + x xxx xxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxxxxxxxxxxxx + x xxx xxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxxxxx + + + xxxxxx xxxxxxxxxxxxxxxxx + x + + xx [/pro] */ + // These dialects natively support the IS DISTINCT FROM predicate: // H2, Postgres else { - if (compareCondition == null) { + if (compareCondition == null) compareCondition = new CompareCondition(lhs, rhs, comparator); - } return compareCondition; } diff --git a/jOOQ/src/main/java/org/jooq/impl/Mod.java b/jOOQ/src/main/java/org/jooq/impl/Mod.java index 66e37d5cb0..e23e4053c7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Mod.java +++ b/jOOQ/src/main/java/org/jooq/impl/Mod.java @@ -75,6 +75,7 @@ class Mod extends AbstractFunction { xxxxxx xxxxxxxxxx xxxxx xxxxx xxxxxxxxxxxxxx xxxxx xxxxxx xxxx xxxx + xxxx xxxxxxxxx xxxx xxxxxxxxxx xx [/pro] */ case SQLITE: diff --git a/jOOQ/src/main/java/org/jooq/impl/Rand.java b/jOOQ/src/main/java/org/jooq/impl/Rand.java index 91940ec8ef..63a43fd854 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Rand.java +++ b/jOOQ/src/main/java/org/jooq/impl/Rand.java @@ -73,6 +73,7 @@ class Rand extends AbstractFunction { xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx xxxx xxxxxxx + xxxx xxxxxxxxx xx [/pro] */ case DERBY: case POSTGRES: diff --git a/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java b/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java index 9697c29881..5766e733a2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java +++ b/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java @@ -97,6 +97,9 @@ class RegexpLike extends AbstractCondition { } // [#620] Postgres has its own syntax + /* [pro] xx + xxxx xxxxxxxxx + xx [/pro] */ case POSTGRES: { // [#1570] TODO: Replace this by SQL.condition(String, QueryPart...) diff --git a/jOOQ/src/main/java/org/jooq/impl/RowBetweenCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowBetweenCondition.java index 381bf80b5f..68afef5d40 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowBetweenCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowBetweenCondition.java @@ -59,6 +59,7 @@ import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -67,14 +68,6 @@ import static org.jooq.impl.DSL.row; import javax.annotation.Generated; import org.jooq.BetweenAndStep1; -import org.jooq.BetweenAndStep2; -import org.jooq.BetweenAndStep3; -import org.jooq.BetweenAndStep4; -import org.jooq.BetweenAndStep5; -import org.jooq.BetweenAndStep6; -import org.jooq.BetweenAndStep7; -import org.jooq.BetweenAndStep8; -import org.jooq.BetweenAndStep9; import org.jooq.BetweenAndStep10; import org.jooq.BetweenAndStep11; import org.jooq.BetweenAndStep12; @@ -85,9 +78,17 @@ import org.jooq.BetweenAndStep16; import org.jooq.BetweenAndStep17; import org.jooq.BetweenAndStep18; import org.jooq.BetweenAndStep19; +import org.jooq.BetweenAndStep2; import org.jooq.BetweenAndStep20; import org.jooq.BetweenAndStep21; import org.jooq.BetweenAndStep22; +import org.jooq.BetweenAndStep3; +import org.jooq.BetweenAndStep4; +import org.jooq.BetweenAndStep5; +import org.jooq.BetweenAndStep6; +import org.jooq.BetweenAndStep7; +import org.jooq.BetweenAndStep8; +import org.jooq.BetweenAndStep9; import org.jooq.BetweenAndStepN; import org.jooq.BindContext; import org.jooq.Clause; @@ -98,14 +99,6 @@ import org.jooq.Field; import org.jooq.QueryPartInternal; import org.jooq.Record; import org.jooq.Record1; -import org.jooq.Record2; -import org.jooq.Record3; -import org.jooq.Record4; -import org.jooq.Record5; -import org.jooq.Record6; -import org.jooq.Record7; -import org.jooq.Record8; -import org.jooq.Record9; import org.jooq.Record10; import org.jooq.Record11; import org.jooq.Record12; @@ -116,20 +109,20 @@ import org.jooq.Record16; import org.jooq.Record17; import org.jooq.Record18; import org.jooq.Record19; +import org.jooq.Record2; import org.jooq.Record20; import org.jooq.Record21; import org.jooq.Record22; +import org.jooq.Record3; +import org.jooq.Record4; +import org.jooq.Record5; +import org.jooq.Record6; +import org.jooq.Record7; +import org.jooq.Record8; +import org.jooq.Record9; import org.jooq.RenderContext; import org.jooq.Row; import org.jooq.Row1; -import org.jooq.Row2; -import org.jooq.Row3; -import org.jooq.Row4; -import org.jooq.Row5; -import org.jooq.Row6; -import org.jooq.Row7; -import org.jooq.Row8; -import org.jooq.Row9; import org.jooq.Row10; import org.jooq.Row11; import org.jooq.Row12; @@ -140,9 +133,17 @@ import org.jooq.Row16; import org.jooq.Row17; import org.jooq.Row18; import org.jooq.Row19; +import org.jooq.Row2; import org.jooq.Row20; import org.jooq.Row21; import org.jooq.Row22; +import org.jooq.Row3; +import org.jooq.Row4; +import org.jooq.Row5; +import org.jooq.Row6; +import org.jooq.Row7; +import org.jooq.Row8; +import org.jooq.Row9; import org.jooq.RowN; /** @@ -713,12 +714,9 @@ implements // These dialects don't support the SYMMETRIC keyword at all if (symmetric && asList(CUBRID, DERBY, FIREBIRD, H2, MARIADB, MYSQL, SQLITE).contains(configuration.dialect().family())) { - if (not) { - return (QueryPartInternal) r.notBetween(min, max).and(r.notBetween(max, min)); - } - else { - return (QueryPartInternal) r.between(min, max).or(r.between(max, min)); - } + return not + ? (QueryPartInternal) r.notBetween(min, max).and(r.notBetween(max, min)) + : (QueryPartInternal) r.between(min, max).or(r.between(max, min)); } // These dialects either don't support row value expressions, or they diff --git a/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java index 4fb996aac7..e4deae899c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowSubqueryCondition.java @@ -47,13 +47,13 @@ import static org.jooq.Comparator.EQUALS; import static org.jooq.Comparator.IN; import static org.jooq.Comparator.NOT_EQUALS; import static org.jooq.Comparator.NOT_IN; -// ... import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; +// ... import static org.jooq.impl.DSL.exists; import static org.jooq.impl.DSL.field; import static org.jooq.impl.DSL.name; @@ -137,22 +137,24 @@ class RowSubqueryCondition extends AbstractCondition { return new Native(); } - // [#2395] These dialects have native support for = and <> - else if ( - asList(H2, HSQLDB, MARIADB, MYSQL, POSTGRES).contains(family) && - asList(EQUALS, NOT_EQUALS).contains(comparator)) { + /* [pro] xx + xx xxxxxxx xxxxx xxxxxxxx xxxx xxxxxx xxxxxxx xxx x xxx xx + xxxx xx x + xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xx + xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x - return new Native(); - } + xxxxxx xxx xxxxxxxxx + x - // [#2395] These dialects have native support for IN and NOT IN - else if ( - asList(H2, HSQLDB, MARIADB, MYSQL, POSTGRES).contains(family) && - asList(IN, NOT_IN).contains(comparator)) { + xx xxxxxxx xxxxx xxxxxxxx xxxx xxxxxx xxxxxxx xxx xx xxx xxx xx + xxxx xx x + xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xx + xxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxx x - return new Native(); - } + xxxxxx xxx xxxxxxxxx + x + xx [/pro] */ // [#2395] All other configurations have to be emulated else { String table = render == null ? "t" : render.nextAlias(); diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 2f6c9a6099..ec1743a068 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -75,6 +75,7 @@ import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -1076,7 +1077,7 @@ class SelectQueryImpl extends AbstractResultQuery implement context.sql('1'); } - // Few dialects support the SQL standard empty grouping set + // Few dialects support the SQL standard "grand total" (i.e. empty grouping set) else { context.sql("()"); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Values.java b/jOOQ/src/main/java/org/jooq/impl/Values.java index f2dba2d2fa..20dc9d7b60 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Values.java +++ b/jOOQ/src/main/java/org/jooq/impl/Values.java @@ -95,7 +95,7 @@ class Values extends AbstractTable { public final void accept(Context ctx) { switch (ctx.family()) { - // [#915] Simulate VALUES(..) with SELECT .. UNION ALL SELECT .. + // [#915] Emulate VALUES(..) with SELECT .. UNION ALL SELECT .. // for those dialects that do not support a VALUES() constructor /* [pro] xx xxxx xxxxxxx @@ -103,6 +103,7 @@ class Values extends AbstractTable { xxxx xxxxxxxxx xxxx xxxxxxx xxxx xxxxxxx + xxxx xxxxxxxxx xxxx xxxxxxx xx [/pro] */ case FIREBIRD: diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBCUtils.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBCUtils.java index 69e55b1c7e..6cacc56969 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBCUtils.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/JDBCUtils.java @@ -55,6 +55,7 @@ import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -124,12 +125,22 @@ public class JDBCUtils { * "Guess" the {@link SQLDialect} from a connection URL. */ public static final SQLDialect dialect(String url) { - if (url == null) + if (url == null) { return DEFAULT; + } // The below list might not be accurate or complete. Feel free to - // contribute fixes related to new / different JDBC driver configuraitons - if (url.startsWith("jdbc:cubrid:")) { + // contribute fixes related to new / different JDBC driver configurations + + /* [pro] xx + xx xxxx xxx xx xx xxxxx + xxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x + xxxxxx xxxxxxxxx + x + xx [/pro] */ + + else if (url.startsWith("jdbc:cubrid:")) { return CUBRID; } else if (url.startsWith("jdbc:derby:")) { @@ -233,6 +244,8 @@ public class JDBCUtils { xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxx xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx + xxxx xxxxxxxxx + xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxxxxx xxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxx xxxxxxx