diff --git a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt index 71f948b80c..75623e4883 100644 --- a/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt +++ b/jOOQ-manual/src/main/resources/org/jooq/web/grammar-3.11.txt @@ -678,7 +678,7 @@ term = | 'REGR_SYY' | 'REGR_SXY' ) '(' sum ',' sum ')' -| 'REPLACE' '(' field ',' field [ ',' field ] ')' +| ( 'REPLACE' | 'OREPLACE' ) '(' field ',' field [ ',' field ] ')' | 'REPEAT' '(' field ',' field ')' | 'REVERSE' '(' field ')' | 'RPAD' '(' field ',' field [ ',' field ] ')' @@ -692,10 +692,8 @@ term = | 'ROW' '(' fields ')' | ( 'SUBSTR' | 'SUBSTRING' ) '(' field ',' sum [ ',' sum ] ')' | 'SECOND' '(' field ')' -| 'SHIFTLEFT' '(' field ',' field ')' -| 'SHIFTRIGHT' '(' field ',' field ')' -| 'SHL' '(' field ',' field ')' -| 'SHR' '(' field ',' field ')' +| ( 'SHL' | 'SHIFTLEFT' ) '(' field ',' field ')' +| ( 'SHR' | 'SHIFTRIGHT' ) '(' field ',' field ')' | 'SIGN' '(' field ')' | ( 'SQR' | 'SQRT' ) '(' sum ')' | 'SIN' '(' sum ')' @@ -703,6 +701,7 @@ term = | 'SPACE' '(' field ')' | 'STDDEV_POP' '(' field ')' [ over ] | 'STDDEV_SAMP' '(' field ')' [ over ] +| 'STR_REPLACE' '(' field ',' field ',' field ')' | 'SUBSTRING' '(' field 'FROM' sum [ 'FOR' sum ] ')' | 'SUM' '(' [ 'DISTINCT' | 'ALL' ] field ')' [ keep | filter ] | 'TAN' '(' sum ')' @@ -713,7 +712,7 @@ term = | 'TO_DATE' '(' field ',' field ')' | 'TO_NUMBER' '(' field ')' | 'TO_TIMESTAMP' '(' field ',' field ')' -| 'TRANSLATE' '(' field ',' field ',' field ')' +| ( 'TRANSLATE' | 'OTRANSLATE' ) '(' field ',' field ',' field ')' | 'TRIM' '(' field ')' | 'TRUNC' '(' field ',' stringLiteral ')' | 'TRUNC' '(' sum ',' sum ')' diff --git a/jOOQ/src/main/java/org/jooq/SQLDialect.java b/jOOQ/src/main/java/org/jooq/SQLDialect.java index 00483ac686..e541d719b5 100644 --- a/jOOQ/src/main/java/org/jooq/SQLDialect.java +++ b/jOOQ/src/main/java/org/jooq/SQLDialect.java @@ -632,6 +632,7 @@ public enum SQLDialect { + case CUBRID: return "org.hibernate.dialect.CUBRIDDialect"; diff --git a/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java b/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java index 0294f81179..ccb6488ae0 100644 --- a/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java @@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... import java.util.Collection; diff --git a/jOOQ/src/main/java/org/jooq/WindowOverStep.java b/jOOQ/src/main/java/org/jooq/WindowOverStep.java index 02aca9a345..d518508b5b 100644 --- a/jOOQ/src/main/java/org/jooq/WindowOverStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowOverStep.java @@ -52,6 +52,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... /** * This type is used for the window function DSL API. diff --git a/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java b/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java index e1a9fe3d12..19344cbd73 100644 --- a/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java @@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... import java.util.Collection; diff --git a/jOOQ/src/main/java/org/jooq/WindowRowsAndStep.java b/jOOQ/src/main/java/org/jooq/WindowRowsAndStep.java index 951b716e47..7a68a0848f 100644 --- a/jOOQ/src/main/java/org/jooq/WindowRowsAndStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowRowsAndStep.java @@ -45,6 +45,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... /** * This type is used for the window function DSL API. diff --git a/jOOQ/src/main/java/org/jooq/WindowRowsStep.java b/jOOQ/src/main/java/org/jooq/WindowRowsStep.java index b92df2c655..3baeafecc6 100644 --- a/jOOQ/src/main/java/org/jooq/WindowRowsStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowRowsStep.java @@ -46,6 +46,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... /** * This type is used for the window function DSL API. diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationOrderByStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationOrderByStep.java index 043c637af2..0c66c1082f 100644 --- a/jOOQ/src/main/java/org/jooq/WindowSpecificationOrderByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationOrderByStep.java @@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... import java.util.Collection; diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationPartitionByStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationPartitionByStep.java index cb3bc3cd54..073e93b1dd 100644 --- a/jOOQ/src/main/java/org/jooq/WindowSpecificationPartitionByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationPartitionByStep.java @@ -49,6 +49,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... import java.util.Collection; diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsAndStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsAndStep.java index cb01a53606..9766043df5 100644 --- a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsAndStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsAndStep.java @@ -46,6 +46,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... /** * An intermediate step in the construction of a {@link WindowSpecification}. diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java index 6abcc440a2..d03e32d92c 100644 --- a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java @@ -46,6 +46,7 @@ import static org.jooq.SQLDialect.POSTGRES; // ... // ... // ... +// ... /** * An intermediate step in the construction of a {@link WindowSpecification}. diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentSchema.java b/jOOQ/src/main/java/org/jooq/impl/CurrentSchema.java index 06b66bb5b3..eba430d58c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CurrentSchema.java +++ b/jOOQ/src/main/java/org/jooq/impl/CurrentSchema.java @@ -39,6 +39,7 @@ package org.jooq.impl; import static org.jooq.impl.DSL.function; import static org.jooq.impl.DSL.inline; +import static org.jooq.impl.SQLDataType.VARCHAR; import org.jooq.Configuration; import org.jooq.Field; @@ -54,7 +55,7 @@ final class CurrentSchema extends AbstractFunction { private static final long serialVersionUID = -7273879239726265322L; CurrentSchema() { - super("current_schema", SQLDataType.VARCHAR); + super("current_schema", VARCHAR); } @Override @@ -74,26 +75,29 @@ final class CurrentSchema extends AbstractFunction { + + + case CUBRID: case FIREBIRD: case SQLITE: return inline(""); case DERBY: - return DSL.field("{current schema}", String.class); + return DSL.field("{current schema}", VARCHAR); case H2: - return DSL.field("{schema}()", String.class); + return DSL.field("{schema}()", VARCHAR); case MARIADB: case MYSQL: - return DSL.field("{database}()", String.class); + return DSL.field("{database}()", VARCHAR); case HSQLDB: case POSTGRES: - return DSL.field("{current_schema}", String.class); + return DSL.field("{current_schema}", VARCHAR); } - return function("current_schema", String.class); + return function("current_schema", VARCHAR); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentUser.java b/jOOQ/src/main/java/org/jooq/impl/CurrentUser.java index 2f22eff3f8..e536481e24 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CurrentUser.java +++ b/jOOQ/src/main/java/org/jooq/impl/CurrentUser.java @@ -37,6 +37,8 @@ */ package org.jooq.impl; +import static org.jooq.impl.SQLDataType.VARCHAR; + import org.jooq.Configuration; import org.jooq.Field; @@ -51,7 +53,7 @@ final class CurrentUser extends AbstractFunction { private static final long serialVersionUID = -7273879239726265322L; CurrentUser() { - super("current_user", SQLDataType.VARCHAR); + super("current_user", VARCHAR); } @Override @@ -73,16 +75,17 @@ final class CurrentUser extends AbstractFunction { + case DERBY: case FIREBIRD: case HSQLDB: case POSTGRES: - return DSL.field("{current_user}", String.class); + return DSL.field("{current_user}", VARCHAR); case SQLITE: return DSL.inline(""); } - return DSL.function("current_user", SQLDataType.VARCHAR); + return DSL.function("current_user", VARCHAR); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index af8c3cde12..075ea47f08 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -3169,6 +3169,23 @@ public class DefaultBinding implements Binding { @Override final String get0(BindingGetResultSetContext ctx) throws SQLException { + + + + + + + + + + + + + + + + + return ctx.resultSet().getString(ctx.index()); } diff --git a/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java b/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java index b452d3d5cf..363674ddab 100644 --- a/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java +++ b/jOOQ/src/main/java/org/jooq/impl/IsDistinctFrom.java @@ -55,6 +55,7 @@ import static org.jooq.SQLDialect.SQLITE; // ... // ... // ... +// ... 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/Position.java b/jOOQ/src/main/java/org/jooq/impl/Position.java index dfe0908877..37f179a7a6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Position.java +++ b/jOOQ/src/main/java/org/jooq/impl/Position.java @@ -75,6 +75,10 @@ final class Position extends AbstractFunction { + + + + default: return DSL.position(DSL.substring(in, startIndex), search).add(startIndex).sub(one()); } diff --git a/jOOQ/src/main/java/org/jooq/impl/RatioToReport.java b/jOOQ/src/main/java/org/jooq/impl/RatioToReport.java index 5bebd51c19..536a8969f3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RatioToReport.java +++ b/jOOQ/src/main/java/org/jooq/impl/RatioToReport.java @@ -37,6 +37,8 @@ */ package org.jooq.impl; +import static org.jooq.impl.SQLDataType.DECIMAL; + import java.math.BigDecimal; import org.jooq.Context; @@ -54,7 +56,7 @@ final class RatioToReport extends Function { private final Field field; RatioToReport(Field field) { - super("ratio_to_report", SQLDataType.DECIMAL, field); + super("ratio_to_report", DECIMAL, field); this.field = field; } @@ -69,8 +71,15 @@ final class RatioToReport extends Function { + + + + + + + default: - ctx.visit(field.cast(SQLDataType.DECIMAL)) + ctx.visit(field.cast(DECIMAL)) .sql(" / ") .visit(DSL.sum(field)); toSQLOverClause(ctx); diff --git a/jOOQ/src/main/java/org/jooq/impl/Term.java b/jOOQ/src/main/java/org/jooq/impl/Term.java index 7923c6d3f3..f618718222 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Term.java +++ b/jOOQ/src/main/java/org/jooq/impl/Term.java @@ -88,6 +88,7 @@ enum Term { + case DERBY: case SQLITE: return "8 * length"; @@ -111,6 +112,7 @@ enum Term { + case DERBY: case SQLITE: return "length"; @@ -182,6 +184,7 @@ enum Term { + case DERBY: case SQLITE: return "length"; diff --git a/jOOQ/src/main/java/org/jooq/impl/Values.java b/jOOQ/src/main/java/org/jooq/impl/Values.java index badd9f4a8b..762eb19d5f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Values.java +++ b/jOOQ/src/main/java/org/jooq/impl/Values.java @@ -106,19 +106,19 @@ final class Values extends AbstractTable { + case FIREBIRD: case MARIADB: case MYSQL: { Select selects = null; - for (Row row : rows) { - Select select = create().select(row.fields()); - if (selects == null) { + for (Row row : rows) { + Select select = DSL.select(row.fields()); + + if (selects == null) selects = select; - } - else { + else selects = selects.unionAll(select); - } } ctx.formatIndentStart()