diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/DefaultGeneratorStrategy.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/DefaultGeneratorStrategy.java index dc63001f77..cccd3467ae 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/DefaultGeneratorStrategy.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/DefaultGeneratorStrategy.java @@ -42,6 +42,7 @@ import static java.util.Arrays.asList; import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... +// ... import java.util.ArrayList; import java.util.List; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractIndexDefinition.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractIndexDefinition.java index 74b7c9e80a..59a32644c6 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractIndexDefinition.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractIndexDefinition.java @@ -71,6 +71,7 @@ public abstract class AbstractIndexDefinition extends AbstractDefinition impleme + default: result.addAll(getSchema().getDefinitionPath()); } diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/Databases.java b/jOOQ-meta/src/main/java/org/jooq/meta/Databases.java index 74b74fa505..899b97250c 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/Databases.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/Databases.java @@ -55,6 +55,7 @@ import org.jooq.meta.mysql.MySQLDatabase; // ... import org.jooq.meta.postgres.PostgresDatabase; // ... +// ... import org.jooq.meta.sqlite.SQLiteDatabase; // ... // ... @@ -105,26 +106,27 @@ public class Databases { - case CUBRID: result = CUBRIDDatabase.class; break; - case DERBY: result = DerbyDatabase.class; break; + + case CUBRID: result = CUBRIDDatabase.class; break; + case DERBY: result = DerbyDatabase.class; break; case FIREBIRD_2_5: case FIREBIRD_3_0: - case FIREBIRD: result = FirebirdDatabase.class; break; - case H2: result = H2Database.class; break; - case HSQLDB: result = HSQLDBDatabase.class; break; - case MARIADB: result = MariaDBDatabase.class; break; + case FIREBIRD: result = FirebirdDatabase.class; break; + case H2: result = H2Database.class; break; + case HSQLDB: result = HSQLDBDatabase.class; break; + case MARIADB: result = MariaDBDatabase.class; break; case MYSQL_5_7: case MYSQL_8_0: - case MYSQL: result = MySQLDatabase.class; break; + case MYSQL: result = MySQLDatabase.class; break; case POSTGRES_9_3: case POSTGRES_9_4: case POSTGRES_9_5: case POSTGRES_10: - case POSTGRES: result = PostgresDatabase.class; break; - case SQLITE: result = SQLiteDatabase.class; break; + case POSTGRES: result = PostgresDatabase.class; break; + case SQLITE: result = SQLiteDatabase.class; break; case DEFAULT: - case SQL99: result = JDBCDatabase.class; break; + case SQL99: result = JDBCDatabase.class; break; } return result; diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java index 94a690f423..8f25d0a07b 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Database.java @@ -12,6 +12,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.List; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; @@ -20,6 +21,7 @@ import javax.xml.bind.annotation.XmlList; import javax.xml.bind.annotation.XmlSchemaType; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + import org.jooq.util.jaxb.tools.StringAdapter; @@ -154,6 +156,7 @@ public class Database implements Serializable *

* Natively supported values are: *

*

@@ -833,6 +838,7 @@ public class Database implements Serializable * {@link Boolean } * */ + @Deprecated public Boolean isIgnoreProcedureReturnValues() { return ignoreProcedureReturnValues; } diff --git a/jOOQ/src/main/java/org/jooq/SQLDialect.java b/jOOQ/src/main/java/org/jooq/SQLDialect.java index 6150162648..ecc0b1246f 100644 --- a/jOOQ/src/main/java/org/jooq/SQLDialect.java +++ b/jOOQ/src/main/java/org/jooq/SQLDialect.java @@ -380,6 +380,13 @@ public enum SQLDialect { + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java index 63bde7b93b..68483dd55d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java @@ -550,6 +550,7 @@ abstract class AbstractDMLQuery extends AbstractQuery { + case DERBY: case H2: case MARIADB: @@ -662,6 +663,7 @@ abstract class AbstractDMLQuery extends AbstractQuery { + case DERBY: case H2: case MARIADB: diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java index 04eabd1c54..37ebdf811a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java @@ -43,6 +43,7 @@ import static org.jooq.ExecuteType.DDL; // ... // ... // ... +// ... import static org.jooq.conf.ParamType.INDEXED; import static org.jooq.conf.ParamType.INLINED; import static org.jooq.conf.SettingsTools.executePreparedStatements; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java index fd54ff4350..e7f6fd12b4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java @@ -43,6 +43,7 @@ import static java.util.concurrent.Executors.newSingleThreadExecutor; import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.POSTGRES; // ... +// ... import static org.jooq.impl.DSL.field; import static org.jooq.impl.DSL.name; import static org.jooq.impl.Tools.blocking; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java index 651a3cd7de..8e4ca20de3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java @@ -44,6 +44,7 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... import static org.jooq.SQLDialect.POSTGRES; // ... +// ... import static org.jooq.XMLFormat.RecordFormat.COLUMN_NAME_ELEMENTS; import static org.jooq.conf.ThrowExceptions.THROW_NONE; import static org.jooq.impl.DSL.field; diff --git a/jOOQ/src/main/java/org/jooq/impl/Alias.java b/jOOQ/src/main/java/org/jooq/impl/Alias.java index 53f474bf6f..d1080c50a9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Alias.java +++ b/jOOQ/src/main/java/org/jooq/impl/Alias.java @@ -56,9 +56,10 @@ import static org.jooq.SQLDialect.HSQLDB; // ... // ... import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java index badb97bd57..88ad85e022 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterIndexImpl.java @@ -48,6 +48,7 @@ import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.FIREBIRD; // ... // ... +// ... import static org.jooq.impl.DSL.index; import static org.jooq.impl.DSL.inline; import static org.jooq.impl.DSL.name; @@ -205,6 +206,7 @@ final class AlterIndexImpl extends AbstractQuery implements + default: { diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java index be1647903c..ac9bcfb689 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java @@ -62,11 +62,12 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; // ... // ... +// ... import static org.jooq.impl.DSL.alterTable; import static org.jooq.impl.DSL.commentOnTable; import static org.jooq.impl.DSL.constraint; @@ -104,6 +105,7 @@ import static org.jooq.impl.Keywords.K_RENAME; import static org.jooq.impl.Keywords.K_RENAME_COLUMN; import static org.jooq.impl.Keywords.K_RENAME_CONSTRAINT; import static org.jooq.impl.Keywords.K_RENAME_INDEX; +import static org.jooq.impl.Keywords.K_RENAME_OBJECT; import static org.jooq.impl.Keywords.K_RENAME_TABLE; import static org.jooq.impl.Keywords.K_RENAME_TO; import static org.jooq.impl.Keywords.K_SET_DATA_TYPE; @@ -185,6 +187,8 @@ final class AlterTableImpl extends AbstractQuery implements + + private final Table table; private final boolean ifExists; private boolean ifExistsColumn; @@ -728,6 +732,7 @@ final class AlterTableImpl extends AbstractQuery implements + case MYSQL: break; @@ -771,10 +776,15 @@ final class AlterTableImpl extends AbstractQuery implements (renameConstraint != null && family == HSQLDB) || (renameColumn != null && family == DERBY); boolean renameTable = renameTo != null && SUPPORT_RENAME_TABLE.contains(family); + boolean renameObject = renameTo != null && (false ); if (!omitAlterTable) { ctx.start(ALTER_TABLE_TABLE) - .visit(renameTable ? K_RENAME_TABLE : K_ALTER_TABLE); + .visit(renameObject + ? K_RENAME_OBJECT + : renameTable + ? K_RENAME_TABLE + : K_ALTER_TABLE); if (ifExists && supportsIfExists(ctx)) ctx.sql(' ').visit(K_IF_EXISTS); @@ -793,7 +803,7 @@ final class AlterTableImpl extends AbstractQuery implements ctx.start(ALTER_TABLE_RENAME) .qualify(false) - .visit(renameTable ? K_TO : K_RENAME_TO).sql(' ') + .visit(renameObject || renameTable ? K_TO : K_RENAME_TO).sql(' ') .visit(renameTo) .qualify(qualify) .end(ALTER_TABLE_RENAME); @@ -903,13 +913,14 @@ final class AlterTableImpl extends AbstractQuery implements else if (add != null) { boolean qualify = ctx.qualify(); boolean multiAdd = REQUIRE_REPEAT_ADD_ON_MULTI_ALTER.contains(ctx.family()); + boolean parens = !multiAdd && !NO_SUPPORT_PARENS_ON_MULTI_ALTER.contains(ctx.family()); ctx.start(ALTER_TABLE_ADD) .visit(K_ADD) .qualify(false) .sql(' '); - if (!multiAdd) + if (parens) ctx.sql('('); boolean indent = !multiAdd && add.size() > 1; @@ -938,7 +949,7 @@ final class AlterTableImpl extends AbstractQuery implements ctx.formatIndentEnd() .formatNewLine(); - if (!multiAdd) + if (parens) ctx.sql(')'); ctx.qualify(qualify) @@ -960,6 +971,7 @@ final class AlterTableImpl extends AbstractQuery implements + case H2: case MARIADB: case POSTGRES: @@ -1026,6 +1038,7 @@ final class AlterTableImpl extends AbstractQuery implements + case CUBRID: case MARIADB: case MYSQL: { @@ -1197,6 +1210,7 @@ final class AlterTableImpl extends AbstractQuery implements + default: ctx.visit(K_DROP); break; @@ -1214,6 +1228,7 @@ final class AlterTableImpl extends AbstractQuery implements + case H2: case MARIADB: case POSTGRES: diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java index 77acd83802..19db45403e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterViewImpl.java @@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.HSQLDB; // ... // ... +// ... import static org.jooq.impl.DSL.commentOnView; import static org.jooq.impl.DSL.name; import static org.jooq.impl.Keywords.K_ALTER; @@ -177,6 +178,7 @@ final class AlterViewImpl extends AbstractQuery implements + accept1(ctx); } diff --git a/jOOQ/src/main/java/org/jooq/impl/BetweenCondition.java b/jOOQ/src/main/java/org/jooq/impl/BetweenCondition.java index 3ed24c4acf..7c8b89ed5f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/BetweenCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/BetweenCondition.java @@ -54,7 +54,8 @@ import static org.jooq.SQLDialect.H2; // ... // ... import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; +// ... // ... // ... import static org.jooq.SQLDialect.SQLITE; diff --git a/jOOQ/src/main/java/org/jooq/impl/BitCount.java b/jOOQ/src/main/java/org/jooq/impl/BitCount.java index 99ee3da93e..6fd9f4097f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/BitCount.java +++ b/jOOQ/src/main/java/org/jooq/impl/BitCount.java @@ -86,6 +86,7 @@ final class BitCount extends AbstractFunction { + // Better solutions very welcome! See also: // See also http://stackoverflow.com/questions/7946349/how-to-simulate-the-mysql-bit-count-function-in-sybase-sql-anywhere case H2: diff --git a/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java b/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java index 8033e7ca29..9b381d75ff 100644 --- a/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java @@ -152,6 +152,7 @@ final class BlockImpl extends AbstractQuery implements Block { + default: { accept0(ctx); break; @@ -178,6 +179,7 @@ final class BlockImpl extends AbstractQuery implements Block { + case FIREBIRD: case MARIADB: default: diff --git a/jOOQ/src/main/java/org/jooq/impl/Ceil.java b/jOOQ/src/main/java/org/jooq/impl/Ceil.java index 9dc07c7075..9c939b1bdb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Ceil.java +++ b/jOOQ/src/main/java/org/jooq/impl/Ceil.java @@ -75,6 +75,7 @@ final class Ceil extends AbstractFunction { + case H2: return DSL.field("{ceiling}({0})", getDataType(), argument); diff --git a/jOOQ/src/main/java/org/jooq/impl/Concat.java b/jOOQ/src/main/java/org/jooq/impl/Concat.java index 2ff5af5838..776cca899a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Concat.java +++ b/jOOQ/src/main/java/org/jooq/impl/Concat.java @@ -94,6 +94,7 @@ final class Concat extends AbstractFunction { + default: return new Expression(CONCAT, first, others); } diff --git a/jOOQ/src/main/java/org/jooq/impl/ConditionAsField.java b/jOOQ/src/main/java/org/jooq/impl/ConditionAsField.java index 4dcd64f137..98695fda9a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ConditionAsField.java +++ b/jOOQ/src/main/java/org/jooq/impl/ConditionAsField.java @@ -75,6 +75,7 @@ final class ConditionAsField extends AbstractFunction { + case CUBRID: case FIREBIRD: diff --git a/jOOQ/src/main/java/org/jooq/impl/ConstantSortField.java b/jOOQ/src/main/java/org/jooq/impl/ConstantSortField.java index c4f29024d9..dbfcd8d1c3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ConstantSortField.java +++ b/jOOQ/src/main/java/org/jooq/impl/ConstantSortField.java @@ -68,6 +68,7 @@ final class ConstantSortField extends CustomField { + case POSTGRES: case HSQLDB: ctx.sql('(').visit(select(one())).sql(')'); diff --git a/jOOQ/src/main/java/org/jooq/impl/ConstraintImpl.java b/jOOQ/src/main/java/org/jooq/impl/ConstraintImpl.java index 15b0c21d74..daa00d1a2f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ConstraintImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ConstraintImpl.java @@ -38,6 +38,7 @@ package org.jooq.impl; import static org.jooq.Clause.CONSTRAINT; +// ... import static org.jooq.impl.ConstraintImpl.Action.CASCADE; import static org.jooq.impl.ConstraintImpl.Action.NO_ACTION; import static org.jooq.impl.ConstraintImpl.Action.RESTRICT; @@ -48,6 +49,8 @@ import static org.jooq.impl.DSL.table; import static org.jooq.impl.Keywords.K_CHECK; import static org.jooq.impl.Keywords.K_CONSTRAINT; import static org.jooq.impl.Keywords.K_FOREIGN_KEY; +import static org.jooq.impl.Keywords.K_NONCLUSTERED; +import static org.jooq.impl.Keywords.K_NOT_ENFORCED; import static org.jooq.impl.Keywords.K_ON_DELETE; import static org.jooq.impl.Keywords.K_ON_UPDATE; import static org.jooq.impl.Keywords.K_PRIMARY_KEY; @@ -188,14 +191,30 @@ implements .visit(new QueryPartList>(unique)) .qualify(qualify) .sql(')'); + + + + + } else if (primaryKey != null) { - ctx.visit(K_PRIMARY_KEY) - .sql(" (") + ctx.visit(K_PRIMARY_KEY); + + + + + + + ctx.sql(" (") .qualify(false) .visit(new QueryPartList>(primaryKey)) .qualify(qualify) .sql(')'); + + + + + } else if (foreignKey != null) { ctx.visit(K_FOREIGN_KEY) diff --git a/jOOQ/src/main/java/org/jooq/impl/Cosh.java b/jOOQ/src/main/java/org/jooq/impl/Cosh.java index 42fa9926d5..36a2489d28 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Cosh.java +++ b/jOOQ/src/main/java/org/jooq/impl/Cosh.java @@ -77,6 +77,7 @@ final class Cosh extends AbstractFunction { + case CUBRID: case HSQLDB: case MARIADB: diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java index 744ea50d52..b5c0e1cda2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java @@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.POSTGRES; // ... // ... +// ... import static org.jooq.impl.DSL.name; import static org.jooq.impl.DSL.table; import static org.jooq.impl.Keywords.K_CREATE; @@ -266,7 +267,7 @@ final class CreateIndexImpl extends AbstractQuery implements ctx.visit(generatedName()) .sql(' '); - boolean supportsInclude = false ; + boolean supportsInclude = false ; boolean supportsFieldsBeforeTable = false ; QueryPartList list = new QueryPartList(); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateSchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateSchemaImpl.java index 107c1a9f2c..3d607d9457 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateSchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateSchemaImpl.java @@ -47,6 +47,7 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... // ... // ... +// ... import static org.jooq.impl.Keywords.K_CREATE_SCHEMA; import static org.jooq.impl.Keywords.K_EXEC; import static org.jooq.impl.Keywords.K_IF_NOT_EXISTS; diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java index 3e43caa5e6..272e6920c7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateTableImpl.java @@ -61,6 +61,7 @@ import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java index 0d20e8a7b2..09f5048eb0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateViewImpl.java @@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.H2; // ... // ... import static org.jooq.SQLDialect.POSTGRES; +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -194,6 +195,7 @@ final class CreateViewImpl extends AbstractQuery implements + default: ctx.sql(' ').visit(K_REPLACE); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentDate.java b/jOOQ/src/main/java/org/jooq/impl/CurrentDate.java index ea1993841a..7236579085 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CurrentDate.java +++ b/jOOQ/src/main/java/org/jooq/impl/CurrentDate.java @@ -82,6 +82,7 @@ final class CurrentDate extends AbstractFunction { + case DERBY: diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentSchema.java b/jOOQ/src/main/java/org/jooq/impl/CurrentSchema.java index dbc76c3bfd..0377afbf0e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CurrentSchema.java +++ b/jOOQ/src/main/java/org/jooq/impl/CurrentSchema.java @@ -78,6 +78,7 @@ final class CurrentSchema extends AbstractFunction { + case CUBRID: case FIREBIRD: case SQLITE: diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentTime.java b/jOOQ/src/main/java/org/jooq/impl/CurrentTime.java index fb16b1fb9b..4d9d2e2924 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CurrentTime.java +++ b/jOOQ/src/main/java/org/jooq/impl/CurrentTime.java @@ -88,6 +88,7 @@ final class CurrentTime extends AbstractFunction { + } return DSL.function("current_time", getDataType()); diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentTimestamp.java b/jOOQ/src/main/java/org/jooq/impl/CurrentTimestamp.java index 2fc884e63e..01b138cc84 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CurrentTimestamp.java +++ b/jOOQ/src/main/java/org/jooq/impl/CurrentTimestamp.java @@ -82,6 +82,7 @@ final class CurrentTimestamp extends AbstractFunction { + case DERBY: diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentUser.java b/jOOQ/src/main/java/org/jooq/impl/CurrentUser.java index e536481e24..117c04a525 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CurrentUser.java +++ b/jOOQ/src/main/java/org/jooq/impl/CurrentUser.java @@ -76,6 +76,7 @@ final class CurrentUser extends AbstractFunction { + case DERBY: case FIREBIRD: case HSQLDB: diff --git a/jOOQ/src/main/java/org/jooq/impl/DateAdd.java b/jOOQ/src/main/java/org/jooq/impl/DateAdd.java index 6fb0939893..89ad386650 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DateAdd.java +++ b/jOOQ/src/main/java/org/jooq/impl/DateAdd.java @@ -282,6 +282,7 @@ final class DateAdd extends AbstractFunction { + } diff --git a/jOOQ/src/main/java/org/jooq/impl/DateDiff.java b/jOOQ/src/main/java/org/jooq/impl/DateDiff.java index 5feb9e80d0..c572145937 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DateDiff.java +++ b/jOOQ/src/main/java/org/jooq/impl/DateDiff.java @@ -116,6 +116,7 @@ final class DateDiff extends AbstractFunction { + } diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index f9f38b3ee0..e56b8c7a5f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -52,10 +52,11 @@ import static org.jooq.SQLDialect.HSQLDB; // ... // ... import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -3636,6 +3637,7 @@ public class DefaultBinding implements Binding { + // Most databases don't have such a type. In this case, jOOQ // emulates the type default: { @@ -3667,6 +3669,7 @@ public class DefaultBinding implements Binding { + // Most databases don't have such a type. In this case, jOOQ // emulates the type default: @@ -3691,6 +3694,7 @@ public class DefaultBinding implements Binding { + // Most databases don't have such a type. In this case, jOOQ // emulates the type default: diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java index 2b85031cc4..8ed3458308 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultDSLContext.java @@ -3767,6 +3767,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri + default: throw new SQLDialectNotSupportedException("identity functionality not supported by " + configuration().dialect()); diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java index 0bdd9c2dbf..e0d3205aee 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java @@ -543,6 +543,7 @@ class DefaultRenderContext extends AbstractContext implements Ren + // [#5701] Tests were conducted with PostgreSQL 9.5 and pgjdbc 9.4.1209 diff --git a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java index b60d81e9e4..691c0f6fb9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropIndexImpl.java @@ -46,7 +46,8 @@ import static org.jooq.SQLDialect.CUBRID; import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; +// ... // ... // ... import static org.jooq.impl.DSL.name; diff --git a/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java index 37bf0d03fe..15c0f7111d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropSchemaImpl.java @@ -47,6 +47,7 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... // ... // ... +// ... import static org.jooq.impl.Keywords.K_CASCADE; import static org.jooq.impl.Keywords.K_DROP_SCHEMA; import static org.jooq.impl.Keywords.K_IF_EXISTS; diff --git a/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java index 508e421246..14ac4d8f6a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropTableImpl.java @@ -46,6 +46,7 @@ import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.FIREBIRD; // ... // ... +// ... import static org.jooq.impl.Keywords.K_CASCADE; import static org.jooq.impl.Keywords.K_DROP_TABLE; import static org.jooq.impl.Keywords.K_IF_EXISTS; diff --git a/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java b/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java index acfaff90ee..029ae7fe9c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DropViewImpl.java @@ -47,6 +47,7 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... // ... // ... +// ... import static org.jooq.impl.Keywords.K_DROP_VIEW; import static org.jooq.impl.Keywords.K_IF_EXISTS; diff --git a/jOOQ/src/main/java/org/jooq/impl/Dual.java b/jOOQ/src/main/java/org/jooq/impl/Dual.java index 94aa62e002..60de90c5c9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Dual.java +++ b/jOOQ/src/main/java/org/jooq/impl/Dual.java @@ -125,6 +125,7 @@ final class Dual extends AbstractTable { + case H2: case POSTGRES: case SQLITE: diff --git a/jOOQ/src/main/java/org/jooq/impl/Euler.java b/jOOQ/src/main/java/org/jooq/impl/Euler.java index 5c11150313..d92ec0500e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Euler.java +++ b/jOOQ/src/main/java/org/jooq/impl/Euler.java @@ -78,6 +78,7 @@ final class Euler extends AbstractFunction { + case CUBRID: case DERBY: case FIREBIRD: diff --git a/jOOQ/src/main/java/org/jooq/impl/Expression.java b/jOOQ/src/main/java/org/jooq/impl/Expression.java index 1fc5fe8fe7..dc15d65412 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Expression.java +++ b/jOOQ/src/main/java/org/jooq/impl/Expression.java @@ -50,6 +50,7 @@ import static org.jooq.SQLDialect.HSQLDB; // ... import static org.jooq.SQLDialect.POSTGRES; // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -470,6 +471,7 @@ final class Expression extends AbstractFunction { + case POSTGRES: @@ -514,6 +516,7 @@ final class Expression extends AbstractFunction { + case FIREBIRD: { if (operator == ADD) return DSL.field("{dateadd}(day, {0}, {1})", getDataType(), rhsAsNumber(), lhs); diff --git a/jOOQ/src/main/java/org/jooq/impl/Extract.java b/jOOQ/src/main/java/org/jooq/impl/Extract.java index 987a94714e..eef9863782 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Extract.java +++ b/jOOQ/src/main/java/org/jooq/impl/Extract.java @@ -183,6 +183,7 @@ final class Extract extends AbstractFunction { + case MARIADB: diff --git a/jOOQ/src/main/java/org/jooq/impl/FetchCount.java b/jOOQ/src/main/java/org/jooq/impl/FetchCount.java index a2aaacdd8d..ad09c5163d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FetchCount.java +++ b/jOOQ/src/main/java/org/jooq/impl/FetchCount.java @@ -94,6 +94,7 @@ final class FetchCount extends AbstractResultQuery> { + default: return select(count).from(query.asTable("q")); } diff --git a/jOOQ/src/main/java/org/jooq/impl/FieldCondition.java b/jOOQ/src/main/java/org/jooq/impl/FieldCondition.java index e39e95a70d..5900af84a9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FieldCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/FieldCondition.java @@ -88,6 +88,7 @@ final class FieldCondition extends AbstractCondition { + return (QueryPartInternal) condition("{0} = {1}", field, inline(true)); diff --git a/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java b/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java index fdc2b7930b..6b9d11b413 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java +++ b/jOOQ/src/main/java/org/jooq/impl/FieldMapsForInsert.java @@ -41,6 +41,7 @@ import static java.lang.Boolean.TRUE; import static org.jooq.Clause.FIELD_ROW; import static org.jooq.Clause.INSERT_SELECT; import static org.jooq.Clause.INSERT_VALUES; +// ... import static org.jooq.impl.DSL.name; import static org.jooq.impl.DSL.table; import static org.jooq.impl.Keywords.K_DEFAULT_VALUES; @@ -63,6 +64,7 @@ import java.util.Set; import org.jooq.Clause; import org.jooq.Context; import org.jooq.Field; +import org.jooq.Param; import org.jooq.Record; import org.jooq.Select; import org.jooq.Table; @@ -103,7 +105,7 @@ final class FieldMapsForInsert extends AbstractQueryPart { } // Single record inserts can use the standard syntax in any dialect - else if (rows == 1) { + else if (rows == 1 ) { ctx.formatSeparator() .start(INSERT_VALUES) .visit(K_VALUES) @@ -157,6 +159,7 @@ final class FieldMapsForInsert extends AbstractQueryPart { + case FIREBIRD: { @@ -182,6 +185,22 @@ final class FieldMapsForInsert extends AbstractQueryPart { } } + + + + + + + + + + + + + + + + final Select insertSelect() { Select select = null; diff --git a/jOOQ/src/main/java/org/jooq/impl/Greatest.java b/jOOQ/src/main/java/org/jooq/impl/Greatest.java index 9bd7b0d2a4..932977484b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Greatest.java +++ b/jOOQ/src/main/java/org/jooq/impl/Greatest.java @@ -78,6 +78,7 @@ final class Greatest extends AbstractFunction { + case DERBY: { Field first = (Field) getArguments()[0]; Field other = (Field) getArguments()[1]; diff --git a/jOOQ/src/main/java/org/jooq/impl/Identifiers.java b/jOOQ/src/main/java/org/jooq/impl/Identifiers.java index 482529b92a..4774bed0e6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Identifiers.java +++ b/jOOQ/src/main/java/org/jooq/impl/Identifiers.java @@ -98,6 +98,7 @@ final class Identifiers { + // Most dialects implement the SQL standard, using double quotes diff --git a/jOOQ/src/main/java/org/jooq/impl/InCondition.java b/jOOQ/src/main/java/org/jooq/impl/InCondition.java index 1e1b93154f..b5eae54bc2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/InCondition.java @@ -53,6 +53,7 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... // ... // ... +// ... import static org.jooq.conf.ParamType.INDEXED; import static org.jooq.impl.DSL.falseCondition; import static org.jooq.impl.DSL.trueCondition; @@ -116,6 +117,7 @@ final class InCondition extends AbstractCondition { + case FIREBIRD: { ctx.sql('(') .formatIndentStart() diff --git a/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java b/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java index 20c2dfda2d..20757d8c08 100644 --- a/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java +++ b/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java @@ -49,7 +49,8 @@ import static org.jooq.SQLDialect.DERBY; // ... // ... import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; +// ... // ... // ... import static org.jooq.SQLDialect.SQLITE; diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index 79cbbbd619..509396d1c6 100755 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -79,6 +79,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... import static org.jooq.impl.DSL.condition; import static org.jooq.impl.DSL.exists; import static org.jooq.impl.DSL.notExists; diff --git a/jOOQ/src/main/java/org/jooq/impl/Keywords.java b/jOOQ/src/main/java/org/jooq/impl/Keywords.java index ad7d2e69eb..11566aa241 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Keywords.java +++ b/jOOQ/src/main/java/org/jooq/impl/Keywords.java @@ -181,7 +181,9 @@ final class Keywords { static final Keyword K_MODIFY = keyword("modify"); static final Keyword K_NEW_TABLE = keyword("new table"); static final Keyword K_NOCYCLE = keyword("nocycle"); + static final Keyword K_NONCLUSTERED = keyword("nonclustered"); static final Keyword K_NOT = keyword("not"); + static final Keyword K_NOT_ENFORCED = keyword("not enforced"); static final Keyword K_NOT_EXISTS = keyword("not exists"); static final Keyword K_NOT_IN = keyword("not in"); static final Keyword K_NOT_NULL = keyword("not null"); @@ -225,6 +227,7 @@ final class Keywords { static final Keyword K_RENAME_COLUMN = keyword("rename column"); static final Keyword K_RENAME_CONSTRAINT = keyword("rename constraint"); static final Keyword K_RENAME_INDEX = keyword("rename index"); + static final Keyword K_RENAME_OBJECT = keyword("rename object"); static final Keyword K_RENAME_TABLE = keyword("rename table"); static final Keyword K_RENAME_TO = keyword("rename to"); static final Keyword K_REPLACE = keyword("replace"); diff --git a/jOOQ/src/main/java/org/jooq/impl/Least.java b/jOOQ/src/main/java/org/jooq/impl/Least.java index c28e2f74a9..fa6b59a65e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Least.java +++ b/jOOQ/src/main/java/org/jooq/impl/Least.java @@ -77,6 +77,7 @@ final class Least extends AbstractFunction { + case DERBY: { Field first = (Field) getArguments()[0]; Field other = (Field) getArguments()[1]; diff --git a/jOOQ/src/main/java/org/jooq/impl/Left.java b/jOOQ/src/main/java/org/jooq/impl/Left.java index e94ea25fc1..1a2edd4984 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Left.java +++ b/jOOQ/src/main/java/org/jooq/impl/Left.java @@ -80,6 +80,7 @@ final class Left extends AbstractFunction { + case CUBRID: case FIREBIRD: case H2: diff --git a/jOOQ/src/main/java/org/jooq/impl/Limit.java b/jOOQ/src/main/java/org/jooq/impl/Limit.java index 2558a4e799..b8678d4023 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Limit.java +++ b/jOOQ/src/main/java/org/jooq/impl/Limit.java @@ -286,6 +286,7 @@ final class Limit extends AbstractQueryPart { + // [#4785] OFFSET cannot be without LIMIT diff --git a/jOOQ/src/main/java/org/jooq/impl/Ln.java b/jOOQ/src/main/java/org/jooq/impl/Ln.java index 1642a1f596..1ef08566b0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Ln.java +++ b/jOOQ/src/main/java/org/jooq/impl/Ln.java @@ -72,7 +72,8 @@ final class Ln extends AbstractFunction { @Override final Field getFunction0(Configuration configuration) { if (base == null) { - switch (configuration.dialect().family()) { + switch (configuration.family()) { + @@ -89,7 +90,8 @@ final class Ln extends AbstractFunction { } } else { - switch (configuration.dialect().family()) { + switch (configuration.family()) { + diff --git a/jOOQ/src/main/java/org/jooq/impl/Lpad.java b/jOOQ/src/main/java/org/jooq/impl/Lpad.java index a2c91790a0..6f980a3e86 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Lpad.java +++ b/jOOQ/src/main/java/org/jooq/impl/Lpad.java @@ -84,6 +84,7 @@ final class Lpad extends AbstractFunction { + // This beautiful expression was contributed by "Ludo", here: // http://stackoverflow.com/questions/6576343/how-to-simulate-lpad-rpad-with-sqlite case SQLITE: { diff --git a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java index 2839e5a9b0..004ba9de84 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MergeImpl.java @@ -50,6 +50,7 @@ import static org.jooq.Clause.MERGE_WHEN_NOT_MATCHED_THEN_INSERT; import static org.jooq.Clause.MERGE_WHERE; // ... // ... +// ... import static org.jooq.impl.DSL.condition; import static org.jooq.impl.DSL.exists; import static org.jooq.impl.DSL.insertInto; @@ -1496,7 +1497,8 @@ implements - boolean onParentheses = false ; + + boolean onParentheses = false ; ctx.end(MERGE_USING) .formatSeparator() .start(MERGE_ON) @@ -1585,6 +1587,7 @@ implements + } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/Mod.java b/jOOQ/src/main/java/org/jooq/impl/Mod.java index 8f23d748d6..79ba2b062b 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 @@ final class Mod extends AbstractFunction { + case SQLITE: return new Expression(MODULO, arg1, arg2); } diff --git a/jOOQ/src/main/java/org/jooq/impl/NotField.java b/jOOQ/src/main/java/org/jooq/impl/NotField.java index 6c960b38da..78389e7a83 100644 --- a/jOOQ/src/main/java/org/jooq/impl/NotField.java +++ b/jOOQ/src/main/java/org/jooq/impl/NotField.java @@ -75,6 +75,7 @@ final class NotField extends AbstractField { + ctx.visit(DSL.field(not(condition(field)))); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/NullStatement.java b/jOOQ/src/main/java/org/jooq/impl/NullStatement.java index 00352c0d27..16bb25eea3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/NullStatement.java +++ b/jOOQ/src/main/java/org/jooq/impl/NullStatement.java @@ -68,6 +68,7 @@ final class NullStatement extends AbstractStatement { + default: ctx.visit(K_NULL); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/Position.java b/jOOQ/src/main/java/org/jooq/impl/Position.java index 37f179a7a6..ac11514cf5 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Position.java +++ b/jOOQ/src/main/java/org/jooq/impl/Position.java @@ -79,6 +79,7 @@ final class Position extends AbstractFunction { + default: return DSL.position(DSL.substring(in, startIndex), search).add(startIndex).sub(one()); } @@ -103,6 +104,7 @@ final class Position extends AbstractFunction { + case SQLITE: return DSL.field("{instr}({0}, {1})", SQLDataType.INTEGER, in, search); diff --git a/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java b/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java index e106cc1f33..60da0771e2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java +++ b/jOOQ/src/main/java/org/jooq/impl/RegexpLike.java @@ -126,6 +126,7 @@ final class RegexpLike extends AbstractCondition { + case DERBY: case FIREBIRD: default: { diff --git a/jOOQ/src/main/java/org/jooq/impl/Repeat.java b/jOOQ/src/main/java/org/jooq/impl/Repeat.java index 0f68f73b79..0f791505fe 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Repeat.java +++ b/jOOQ/src/main/java/org/jooq/impl/Repeat.java @@ -88,6 +88,7 @@ final class Repeat extends AbstractFunction { + default: return function("repeat", SQLDataType.VARCHAR, string, count); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Replace.java b/jOOQ/src/main/java/org/jooq/impl/Replace.java index cb889b12c7..f78d4bbec3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Replace.java +++ b/jOOQ/src/main/java/org/jooq/impl/Replace.java @@ -85,6 +85,7 @@ final class Replace extends AbstractFunction { + case FIREBIRD: diff --git a/jOOQ/src/main/java/org/jooq/impl/Reverse.java b/jOOQ/src/main/java/org/jooq/impl/Reverse.java index 8fb8e090d9..9fd6037385 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Reverse.java +++ b/jOOQ/src/main/java/org/jooq/impl/Reverse.java @@ -71,6 +71,7 @@ final class Reverse extends AbstractFunction { + case CUBRID: case HSQLDB: case POSTGRES: diff --git a/jOOQ/src/main/java/org/jooq/impl/Right.java b/jOOQ/src/main/java/org/jooq/impl/Right.java index 003686e82f..fa7a2ed6e9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Right.java +++ b/jOOQ/src/main/java/org/jooq/impl/Right.java @@ -82,6 +82,7 @@ final class Right extends AbstractFunction { + case CUBRID: case FIREBIRD: case H2: diff --git a/jOOQ/src/main/java/org/jooq/impl/Round.java b/jOOQ/src/main/java/org/jooq/impl/Round.java index 6e282f1165..7807befa44 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Round.java +++ b/jOOQ/src/main/java/org/jooq/impl/Round.java @@ -103,24 +103,21 @@ final class Round extends AbstractFunction { + // There's no function round(double precision, integer) in Postgres case POSTGRES: { - if (decimals == 0) { + if (decimals == 0) return function("round", getDataType(), argument); - } - else { + else return function("round", getDataType(), argument.cast(BigDecimal.class), val(decimals)); - } } // This is the optimal implementation by most RDBMS default: { - if (decimals == 0) { + if (decimals == 0) return function("round", getDataType(), argument); - } - else { + else return function("round", getDataType(), argument, val(decimals)); - } } } } diff --git a/jOOQ/src/main/java/org/jooq/impl/RowBetweenCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowBetweenCondition.java index a1a6a0760d..b0f918eead 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowBetweenCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowBetweenCondition.java @@ -57,6 +57,7 @@ import static org.jooq.SQLDialect.MARIADB; import static org.jooq.SQLDialect.MYSQL; // ... // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -72,14 +73,6 @@ import java.util.EnumSet; 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; @@ -90,11 +83,18 @@ 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; import org.jooq.Condition; import org.jooq.Configuration; @@ -103,14 +103,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; @@ -121,19 +113,19 @@ 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.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; @@ -144,9 +136,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; import org.jooq.SQLDialect; diff --git a/jOOQ/src/main/java/org/jooq/impl/RowCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowCondition.java index 12bf258e5b..ac67419667 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowCondition.java @@ -56,6 +56,7 @@ import static org.jooq.SQLDialect.FIREBIRD; // ... // ... // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... diff --git a/jOOQ/src/main/java/org/jooq/impl/RowInCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowInCondition.java index 30fae94e12..36ca689e2c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowInCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowInCondition.java @@ -50,6 +50,7 @@ import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.FIREBIRD; // ... // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... diff --git a/jOOQ/src/main/java/org/jooq/impl/RowIsDistinctFrom.java b/jOOQ/src/main/java/org/jooq/impl/RowIsDistinctFrom.java index a7dbd1e149..b163dbc27b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowIsDistinctFrom.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowIsDistinctFrom.java @@ -49,7 +49,8 @@ import static org.jooq.SQLDialect.DERBY; // ... // ... import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; +// ... // ... // ... import static org.jooq.SQLDialect.SQLITE; diff --git a/jOOQ/src/main/java/org/jooq/impl/RowIsNull.java b/jOOQ/src/main/java/org/jooq/impl/RowIsNull.java index 993bed0dc1..2a48eee3bb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowIsNull.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowIsNull.java @@ -52,7 +52,8 @@ import static org.jooq.SQLDialect.HSQLDB; // ... // ... import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; +// ... // ... import static org.jooq.SQLDialect.SQLITE; // ... diff --git a/jOOQ/src/main/java/org/jooq/impl/RowOverlapsCondition.java b/jOOQ/src/main/java/org/jooq/impl/RowOverlapsCondition.java index 76be2c8c0a..1dd50ac643 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowOverlapsCondition.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowOverlapsCondition.java @@ -52,7 +52,8 @@ import static org.jooq.SQLDialect.HSQLDB; // ... // ... import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... diff --git a/jOOQ/src/main/java/org/jooq/impl/Rpad.java b/jOOQ/src/main/java/org/jooq/impl/Rpad.java index c9bc3e21f6..45dcebf743 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Rpad.java +++ b/jOOQ/src/main/java/org/jooq/impl/Rpad.java @@ -83,10 +83,9 @@ final class Rpad extends AbstractFunction { - // This beautiful expression was contributed by "Ludo", here: // http://stackoverflow.com/questions/6576343/how-to-simulate-lpad-rpad-with-sqlite - case SQLITE: { + case SQLITE: return DSL.field( "{0} || substr(" + "replace(" + @@ -101,17 +100,14 @@ final class Rpad extends AbstractFunction { ")", String.class, field, length, character); - } // According to the Firebird documentation, LPAD outcomes should be // cast to truncate large results... - case FIREBIRD: { + case FIREBIRD: return DSL.field("cast(rpad({0}, {1}, {2}) as varchar(4000))", SQLDataType.VARCHAR, field, length, character); - } - default: { + default: return function("rpad", SQLDataType.VARCHAR, field, length, character); - } } } } diff --git a/jOOQ/src/main/java/org/jooq/impl/SQLDataType.java b/jOOQ/src/main/java/org/jooq/impl/SQLDataType.java index c080e5e2bf..b3aaad479c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SQLDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/SQLDataType.java @@ -79,6 +79,7 @@ import org.jooq.util.mysql.MySQLDataType; // ... import org.jooq.util.postgres.PostgresDataType; // ... +// ... import org.jooq.util.sqlite.SQLiteDataType; // ... // ... @@ -600,6 +601,7 @@ public final class SQLDataType { + Class.forName(CUBRIDDataType.class.getName()); Class.forName(DerbyDataType.class.getName()); Class.forName(FirebirdDataType.class.getName()); diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 29c63f54c3..d62ee33197 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -76,6 +76,7 @@ import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; // ... +// ... import static org.jooq.SQLDialect.SQLITE; // ... // ... @@ -213,6 +214,10 @@ final class SelectQueryImpl extends AbstractResultQuery imp + + + + private final WithImpl with; private final SelectFieldList select; private Table into; @@ -614,6 +619,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp + case CUBRID: @@ -922,7 +928,8 @@ final class SelectQueryImpl extends AbstractResultQuery imp // [#5068] Don't rely on nested query's ordering in case an operation // like DISTINCT or JOIN produces hashing. - if (!ctx.subquery()) + // [#7427] Don't order if not strictly required. + if (!ctx.subquery() && !getOrderBy().isEmpty()) ctx.formatSeparator() .visit(K_ORDER_BY) .sql(' ') @@ -1620,6 +1627,11 @@ final class SelectQueryImpl extends AbstractResultQuery imp + + + + + @@ -2067,6 +2079,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp + default: result.add(DSL.field("({select} 0)").asc()); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/Sinh.java b/jOOQ/src/main/java/org/jooq/impl/Sinh.java index 7f71a7a88b..7f4a1a47b7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Sinh.java +++ b/jOOQ/src/main/java/org/jooq/impl/Sinh.java @@ -37,6 +37,7 @@ */ package org.jooq.impl; +// ... import static org.jooq.impl.DSL.function; import static org.jooq.impl.DSL.one; import static org.jooq.impl.DSL.two; @@ -77,6 +78,7 @@ final class Sinh extends AbstractFunction { + case CUBRID: case HSQLDB: case MARIADB: diff --git a/jOOQ/src/main/java/org/jooq/impl/SortFieldImpl.java b/jOOQ/src/main/java/org/jooq/impl/SortFieldImpl.java index f1b5e88c50..be8ac82253 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SortFieldImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SortFieldImpl.java @@ -122,6 +122,7 @@ final class SortFieldImpl extends AbstractQueryPart implements SortField { + // These OSS dialects don't support this syntax at all case CUBRID: case MARIADB: diff --git a/jOOQ/src/main/java/org/jooq/impl/Space.java b/jOOQ/src/main/java/org/jooq/impl/Space.java index 643ae9aa98..326b74b39a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Space.java +++ b/jOOQ/src/main/java/org/jooq/impl/Space.java @@ -37,6 +37,8 @@ */ package org.jooq.impl; +// ... + import org.jooq.Configuration; import org.jooq.Field; import org.jooq.QueryPart; @@ -84,6 +86,7 @@ final class Space extends AbstractFunction { + case CUBRID: case MARIADB: case MYSQL: diff --git a/jOOQ/src/main/java/org/jooq/impl/Substring.java b/jOOQ/src/main/java/org/jooq/impl/Substring.java index a392f4470b..f521a07843 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Substring.java +++ b/jOOQ/src/main/java/org/jooq/impl/Substring.java @@ -68,12 +68,10 @@ final class Substring extends AbstractFunction { case FIREBIRD: { - if (getArguments().length == 2) { + if (getArguments().length == 2) return DSL.field("{substring}({0} {from} {1})", SQLDataType.VARCHAR, getArguments()); - } - else { + else return DSL.field("{substring}({0} {from} {1} {for} {2})", SQLDataType.VARCHAR, getArguments()); - } } @@ -108,9 +106,6 @@ final class Substring extends AbstractFunction { - - - diff --git a/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java index 83735db013..721a895999 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java @@ -42,7 +42,8 @@ import static java.lang.Boolean.TRUE; import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.MARIADB; -import static org.jooq.SQLDialect.*; +import static org.jooq.SQLDialect.MYSQL; +// ... // ... import static org.jooq.conf.SettingsTools.updatablePrimaryKeys; import static org.jooq.impl.RecordDelegate.delegate; diff --git a/jOOQ/src/main/java/org/jooq/impl/Tanh.java b/jOOQ/src/main/java/org/jooq/impl/Tanh.java index d860a65f60..94c5e433c2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tanh.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tanh.java @@ -37,6 +37,7 @@ */ package org.jooq.impl; +// ... import static org.jooq.impl.DSL.function; import static org.jooq.impl.DSL.one; import static org.jooq.impl.DSL.two; @@ -77,6 +78,7 @@ final class Tanh extends AbstractFunction { + case CUBRID: case HSQLDB: case MARIADB: diff --git a/jOOQ/src/main/java/org/jooq/impl/Term.java b/jOOQ/src/main/java/org/jooq/impl/Term.java index defd5675ce..b288f3e47e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Term.java +++ b/jOOQ/src/main/java/org/jooq/impl/Term.java @@ -65,6 +65,7 @@ enum Term { + return "atan2"; } }, @@ -89,6 +90,7 @@ enum Term { + case DERBY: case SQLITE: return "8 * length"; @@ -113,6 +115,7 @@ enum Term { + case DERBY: case SQLITE: return "length"; @@ -186,6 +189,7 @@ enum Term { + case DERBY: case SQLITE: return "length"; @@ -222,6 +226,7 @@ enum Term { + return "stddev_pop"; } }, @@ -242,6 +247,7 @@ enum Term { + return "stddev_samp"; } }, @@ -262,6 +268,7 @@ enum Term { + return "var_pop"; } }, @@ -282,6 +289,7 @@ enum Term { + return "var_samp"; } }, diff --git a/jOOQ/src/main/java/org/jooq/impl/TimestampDiff.java b/jOOQ/src/main/java/org/jooq/impl/TimestampDiff.java index e81e502555..c6aef75623 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TimestampDiff.java +++ b/jOOQ/src/main/java/org/jooq/impl/TimestampDiff.java @@ -37,6 +37,7 @@ */ package org.jooq.impl; +// ... import static org.jooq.impl.DSL.function; import static org.jooq.impl.SQLDataType.INTEGER; @@ -97,6 +98,7 @@ final class TimestampDiff extends AbstractFunction { + case POSTGRES: diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 7b2b7b8e45..3d1ed700b4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -51,6 +51,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; // ... import static org.jooq.conf.BackslashEscaping.DEFAULT; @@ -3359,6 +3360,7 @@ final class Tools { + } @@ -3886,6 +3888,7 @@ final class Tools { + case FIREBIRD: { @@ -4076,6 +4079,7 @@ final class Tools { + case FIREBIRD: { @@ -4144,6 +4148,7 @@ final class Tools { + case CUBRID: ctx.sql(' ').visit(K_AUTO_INCREMENT); break; case DERBY: ctx.sql(' ').visit(K_GENERATED_BY_DEFAULT_AS_IDENTITY); break; case HSQLDB: ctx.sql(' ').visit(K_GENERATED_BY_DEFAULT_AS_IDENTITY).sql('(').visit(K_START_WITH).sql(" 1)"); break; diff --git a/jOOQ/src/main/java/org/jooq/impl/Trim.java b/jOOQ/src/main/java/org/jooq/impl/Trim.java index 1b47c94988..c86b4b8a10 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Trim.java +++ b/jOOQ/src/main/java/org/jooq/impl/Trim.java @@ -74,6 +74,7 @@ final class Trim extends AbstractFunction { + return function("trim", SQLDataType.VARCHAR, argument); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/Trunc.java b/jOOQ/src/main/java/org/jooq/impl/Trunc.java index dc27204fbd..b5693fa8de 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Trunc.java +++ b/jOOQ/src/main/java/org/jooq/impl/Trunc.java @@ -38,6 +38,7 @@ package org.jooq.impl; import static java.math.BigDecimal.TEN; +// ... import static org.jooq.impl.DSL.inline; import static org.jooq.impl.DSL.keyword; import static org.jooq.impl.DSL.one; @@ -127,6 +128,7 @@ final class Trunc extends AbstractFunction { + case CUBRID: case HSQLDB: default: diff --git a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java index 8d65b05034..189a6bdd95 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UpdateQueryImpl.java @@ -54,6 +54,7 @@ import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.SQLDialect.POSTGRES; import static org.jooq.SQLDialect.POSTGRES_10; // ... +// ... import static org.jooq.conf.SettingsTools.getExecuteUpdateWithoutWhere; import static org.jooq.impl.DSL.select; import static org.jooq.impl.Keywords.K_FROM; @@ -524,6 +525,7 @@ final class UpdateQueryImpl extends AbstractStoreQuery impl + ) .visit(table) .declareTables(declareTables) diff --git a/jOOQ/src/main/java/org/jooq/impl/Values.java b/jOOQ/src/main/java/org/jooq/impl/Values.java index bc2e0a6acd..6c076849a0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Values.java +++ b/jOOQ/src/main/java/org/jooq/impl/Values.java @@ -108,6 +108,7 @@ final class Values extends AbstractTable { + case FIREBIRD: case MARIADB: case MYSQL: { diff --git a/jOOQ/src/main/java/org/jooq/impl/WithImpl.java b/jOOQ/src/main/java/org/jooq/impl/WithImpl.java index 110be89afd..918f8800a3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/WithImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/WithImpl.java @@ -41,6 +41,7 @@ import static org.jooq.Clause.WITH; // ... // ... // ... +// ... import static org.jooq.impl.DSL.count; import static org.jooq.impl.DSL.name; import static org.jooq.impl.DSL.one;