[#7358] Add support for SQL Data Warehouse
This commit is contained in:
parent
9cf6e785a9
commit
0512228565
@ -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;
|
||||
|
||||
@ -71,6 +71,7 @@ public abstract class AbstractIndexDefinition extends AbstractDefinition impleme
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
result.addAll(getSchema().getDefinitionPath());
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
* <p>
|
||||
* Natively supported values are:
|
||||
* <ul>
|
||||
* <li>{@link org.jooq.meta.auroramysql.AuroraMySQLDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.ase.ASEDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.cubrid.CUBRIDDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.db2.DB2Database}</li>
|
||||
@ -170,8 +173,10 @@ public class Database implements Serializable
|
||||
* <li>{@link org.jooq.meta.postgres.PostgresDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.redshift.RedshiftDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.sqlite.SQLiteDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.sqldatawarehouse.SQLDataWarehouseDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.sqlserver.SQLServerDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.sybase.SybaseDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.teradata.TeradataDatabase}</li>
|
||||
* <li>{@link org.jooq.meta.vertica.VerticaDatabase}</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
@ -833,6 +838,7 @@ public class Database implements Serializable
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
@Deprecated
|
||||
public Boolean isIgnoreProcedureReturnValues() {
|
||||
return ignoreProcedureReturnValues;
|
||||
}
|
||||
|
||||
@ -380,6 +380,13 @@ public enum SQLDialect {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -550,6 +550,7 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractQuery {
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY:
|
||||
case H2:
|
||||
case MARIADB:
|
||||
@ -662,6 +663,7 @@ abstract class AbstractDMLQuery<R extends Record> extends AbstractQuery {
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY:
|
||||
case H2:
|
||||
case MARIADB:
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
// ...
|
||||
// ...
|
||||
|
||||
@ -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: {
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -86,6 +86,7 @@ final class BitCount extends AbstractFunction<Integer> {
|
||||
|
||||
|
||||
|
||||
|
||||
// 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:
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -75,6 +75,7 @@ final class Ceil<T extends Number> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
case H2:
|
||||
return DSL.field("{ceiling}({0})", getDataType(), argument);
|
||||
|
||||
|
||||
@ -94,6 +94,7 @@ final class Concat extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
return new Expression<String>(CONCAT, first, others);
|
||||
}
|
||||
|
||||
@ -75,6 +75,7 @@ final class ConditionAsField extends AbstractFunction<Boolean> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case FIREBIRD:
|
||||
|
||||
|
||||
@ -68,6 +68,7 @@ final class ConstantSortField<T> extends CustomField<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
case POSTGRES:
|
||||
case HSQLDB:
|
||||
ctx.sql('(').visit(select(one())).sql(')');
|
||||
|
||||
@ -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<Field<?>>(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<Field<?>>(primaryKey))
|
||||
.qualify(qualify)
|
||||
.sql(')');
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
else if (foreignKey != null) {
|
||||
ctx.visit(K_FOREIGN_KEY)
|
||||
|
||||
@ -77,6 +77,7 @@ final class Cosh extends AbstractFunction<BigDecimal> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case HSQLDB:
|
||||
case MARIADB:
|
||||
|
||||
@ -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<QueryPart> list = new QueryPartList<QueryPart>();
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -61,6 +61,7 @@ import static org.jooq.SQLDialect.MYSQL;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.POSTGRES;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
|
||||
@ -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<R extends Record> extends AbstractQuery implements
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
ctx.sql(' ').visit(K_REPLACE);
|
||||
break;
|
||||
|
||||
@ -82,6 +82,7 @@ final class CurrentDate<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY:
|
||||
|
||||
@ -78,6 +78,7 @@ final class CurrentSchema extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case FIREBIRD:
|
||||
case SQLITE:
|
||||
|
||||
@ -88,6 +88,7 @@ final class CurrentTime<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
return DSL.function("current_time", getDataType());
|
||||
|
||||
@ -82,6 +82,7 @@ final class CurrentTimestamp<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY:
|
||||
|
||||
@ -76,6 +76,7 @@ final class CurrentUser extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY:
|
||||
case FIREBIRD:
|
||||
case HSQLDB:
|
||||
|
||||
@ -282,6 +282,7 @@ final class DateAdd<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -116,6 +116,7 @@ final class DateDiff<T> extends AbstractFunction<Integer> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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<T, U> implements Binding<T, U> {
|
||||
|
||||
|
||||
|
||||
|
||||
// Most databases don't have such a type. In this case, jOOQ
|
||||
// emulates the type
|
||||
default: {
|
||||
@ -3667,6 +3669,7 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
|
||||
|
||||
|
||||
|
||||
|
||||
// Most databases don't have such a type. In this case, jOOQ
|
||||
// emulates the type
|
||||
default:
|
||||
@ -3691,6 +3694,7 @@ public class DefaultBinding<T, U> implements Binding<T, U> {
|
||||
|
||||
|
||||
|
||||
|
||||
// Most databases don't have such a type. In this case, jOOQ
|
||||
// emulates the type
|
||||
default:
|
||||
|
||||
@ -3767,6 +3767,7 @@ public class DefaultDSLContext extends AbstractScope implements DSLContext, Seri
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
throw new SQLDialectNotSupportedException("identity functionality not supported by " + configuration().dialect());
|
||||
|
||||
@ -543,6 +543,7 @@ class DefaultRenderContext extends AbstractContext<RenderContext> implements Ren
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// [#5701] Tests were conducted with PostgreSQL 9.5 and pgjdbc 9.4.1209
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -125,6 +125,7 @@ final class Dual extends AbstractTable<Record> {
|
||||
|
||||
|
||||
|
||||
|
||||
case H2:
|
||||
case POSTGRES:
|
||||
case SQLITE:
|
||||
|
||||
@ -78,6 +78,7 @@ final class Euler extends AbstractFunction<BigDecimal> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case DERBY:
|
||||
case FIREBIRD:
|
||||
|
||||
@ -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<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case POSTGRES:
|
||||
@ -514,6 +516,7 @@ final class Expression<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
case FIREBIRD: {
|
||||
if (operator == ADD)
|
||||
return DSL.field("{dateadd}(day, {0}, {1})", getDataType(), rhsAsNumber(), lhs);
|
||||
|
||||
@ -183,6 +183,7 @@ final class Extract extends AbstractFunction<Integer> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case MARIADB:
|
||||
|
||||
@ -94,6 +94,7 @@ final class FetchCount extends AbstractResultQuery<Record1<Integer>> {
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
return select(count).from(query.asTable("q"));
|
||||
}
|
||||
|
||||
@ -88,6 +88,7 @@ final class FieldCondition extends AbstractCondition {
|
||||
|
||||
|
||||
|
||||
|
||||
return (QueryPartInternal) condition("{0} = {1}", field, inline(true));
|
||||
|
||||
|
||||
|
||||
@ -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<Record> insertSelect() {
|
||||
Select<Record> select = null;
|
||||
|
||||
|
||||
@ -78,6 +78,7 @@ final class Greatest<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY: {
|
||||
Field<T> first = (Field<T>) getArguments()[0];
|
||||
Field<T> other = (Field<T>) getArguments()[1];
|
||||
|
||||
@ -98,6 +98,7 @@ final class Identifiers {
|
||||
|
||||
|
||||
|
||||
|
||||
// Most dialects implement the SQL standard, using double quotes
|
||||
|
||||
|
||||
|
||||
@ -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<T> extends AbstractCondition {
|
||||
|
||||
|
||||
|
||||
|
||||
case FIREBIRD: {
|
||||
ctx.sql('(')
|
||||
.formatIndentStart()
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -77,6 +77,7 @@ final class Least<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY: {
|
||||
Field<T> first = (Field<T>) getArguments()[0];
|
||||
Field<T> other = (Field<T>) getArguments()[1];
|
||||
|
||||
@ -80,6 +80,7 @@ final class Left extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case FIREBIRD:
|
||||
case H2:
|
||||
|
||||
@ -286,6 +286,7 @@ final class Limit extends AbstractQueryPart {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// [#4785] OFFSET cannot be without LIMIT
|
||||
|
||||
@ -72,7 +72,8 @@ final class Ln extends AbstractFunction<BigDecimal> {
|
||||
@Override
|
||||
final Field<BigDecimal> getFunction0(Configuration configuration) {
|
||||
if (base == null) {
|
||||
switch (configuration.dialect().family()) {
|
||||
switch (configuration.family()) {
|
||||
|
||||
|
||||
|
||||
|
||||
@ -89,7 +90,8 @@ final class Ln extends AbstractFunction<BigDecimal> {
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (configuration.dialect().family()) {
|
||||
switch (configuration.family()) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -84,6 +84,7 @@ final class Lpad extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
// This beautiful expression was contributed by "Ludo", here:
|
||||
// http://stackoverflow.com/questions/6576343/how-to-simulate-lpad-rpad-with-sqlite
|
||||
case SQLITE: {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -75,6 +75,7 @@ final class Mod<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
case SQLITE:
|
||||
return new Expression<T>(MODULO, arg1, arg2);
|
||||
}
|
||||
|
||||
@ -75,6 +75,7 @@ final class NotField extends AbstractField<Boolean> {
|
||||
|
||||
|
||||
|
||||
|
||||
ctx.visit(DSL.field(not(condition(field))));
|
||||
break;
|
||||
|
||||
|
||||
@ -68,6 +68,7 @@ final class NullStatement extends AbstractStatement {
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
ctx.visit(K_NULL);
|
||||
break;
|
||||
|
||||
@ -79,6 +79,7 @@ final class Position extends AbstractFunction<Integer> {
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
return DSL.position(DSL.substring(in, startIndex), search).add(startIndex).sub(one());
|
||||
}
|
||||
@ -103,6 +104,7 @@ final class Position extends AbstractFunction<Integer> {
|
||||
|
||||
|
||||
|
||||
|
||||
case SQLITE:
|
||||
return DSL.field("{instr}({0}, {1})", SQLDataType.INTEGER, in, search);
|
||||
|
||||
|
||||
@ -126,6 +126,7 @@ final class RegexpLike extends AbstractCondition {
|
||||
|
||||
|
||||
|
||||
|
||||
case DERBY:
|
||||
case FIREBIRD:
|
||||
default: {
|
||||
|
||||
@ -88,6 +88,7 @@ final class Repeat extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
return function("repeat", SQLDataType.VARCHAR, string, count);
|
||||
}
|
||||
|
||||
@ -85,6 +85,7 @@ final class Replace extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case FIREBIRD:
|
||||
|
||||
@ -71,6 +71,7 @@ final class Reverse extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case HSQLDB:
|
||||
case POSTGRES:
|
||||
|
||||
@ -82,6 +82,7 @@ final class Right extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case FIREBIRD:
|
||||
case H2:
|
||||
|
||||
@ -103,24 +103,21 @@ final class Round<T extends Number> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
// 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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -56,6 +56,7 @@ import static org.jooq.SQLDialect.FIREBIRD;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
|
||||
@ -50,6 +50,7 @@ import static org.jooq.SQLDialect.DERBY;
|
||||
import static org.jooq.SQLDialect.FIREBIRD;
|
||||
// ...
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
// ...
|
||||
|
||||
@ -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;
|
||||
// ...
|
||||
// ...
|
||||
|
||||
@ -83,10 +83,9 @@ final class Rpad extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
// 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> {
|
||||
")",
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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<R extends Record> extends AbstractResultQuery<R> imp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private final WithImpl with;
|
||||
private final SelectFieldList<SelectFieldOrAsterisk> select;
|
||||
private Table<?> into;
|
||||
@ -614,6 +619,7 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
@ -922,7 +928,8 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> 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<R extends Record> extends AbstractResultQuery<R> imp
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -2067,6 +2079,7 @@ final class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> imp
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
result.add(DSL.field("({select} 0)").asc());
|
||||
break;
|
||||
|
||||
@ -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<BigDecimal> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case HSQLDB:
|
||||
case MARIADB:
|
||||
|
||||
@ -122,6 +122,7 @@ final class SortFieldImpl<T> extends AbstractQueryPart implements SortField<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
// These OSS dialects don't support this syntax at all
|
||||
case CUBRID:
|
||||
case MARIADB:
|
||||
|
||||
@ -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<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case MARIADB:
|
||||
case MYSQL:
|
||||
|
||||
@ -68,12 +68,10 @@ final class Substring extends AbstractFunction<String> {
|
||||
|
||||
|
||||
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<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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<BigDecimal> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case HSQLDB:
|
||||
case MARIADB:
|
||||
|
||||
@ -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";
|
||||
}
|
||||
},
|
||||
|
||||
@ -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<DayToSecond> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case POSTGRES:
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -74,6 +74,7 @@ final class Trim extends AbstractFunction<String> {
|
||||
|
||||
|
||||
|
||||
|
||||
return function("trim", SQLDataType.VARCHAR, argument);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<T> extends AbstractFunction<T> {
|
||||
|
||||
|
||||
|
||||
|
||||
case CUBRID:
|
||||
case HSQLDB:
|
||||
default:
|
||||
|
||||
@ -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<R extends Record> extends AbstractStoreQuery<R> impl
|
||||
|
||||
|
||||
|
||||
|
||||
)
|
||||
.visit(table)
|
||||
.declareTables(declareTables)
|
||||
|
||||
@ -108,6 +108,7 @@ final class Values<R extends Record> extends AbstractTable<R> {
|
||||
|
||||
|
||||
|
||||
|
||||
case FIREBIRD:
|
||||
case MARIADB:
|
||||
case MYSQL: {
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user