From a4c7c2f6bb33eb57186b1aff71cd4b317590a3dd Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 18 Feb 2021 16:23:41 +0100 Subject: [PATCH] [jOOQ/jOOQ#2620] Support Google BigQuery - WIP --- .../main/java/org/jooq/AlterTableStep.java | 1 + .../main/java/org/jooq/ContinueWhenStep.java | 1 + .../main/java/org/jooq/CreateViewAsStep.java | 1 + jOOQ/src/main/java/org/jooq/DSLContext.java | 8 +- jOOQ/src/main/java/org/jooq/DataType.java | 16 +++ jOOQ/src/main/java/org/jooq/Declaration.java | 1 + .../main/java/org/jooq/DerivedColumnList.java | 1 + jOOQ/src/main/java/org/jooq/ExitWhenStep.java | 1 + jOOQ/src/main/java/org/jooq/Field.java | 1 + jOOQ/src/main/java/org/jooq/ForByStep.java | 2 +- jOOQ/src/main/java/org/jooq/ForInStep.java | 2 +- .../java/org/jooq/GroupConcatOrderByStep.java | 1 + .../org/jooq/GroupConcatSeparatorStep.java | 1 + jOOQ/src/main/java/org/jooq/IfElseStep.java | 1 + jOOQ/src/main/java/org/jooq/IfThenStep.java | 1 + jOOQ/src/main/java/org/jooq/LoopStep.java | 2 +- jOOQ/src/main/java/org/jooq/Name.java | 1 + .../main/java/org/jooq/RepeatUntilStep.java | 2 +- jOOQ/src/main/java/org/jooq/SelectQuery.java | 1 + .../main/java/org/jooq/SelectWindowStep.java | 1 + .../main/java/org/jooq/UpdateFromStep.java | 1 + jOOQ/src/main/java/org/jooq/UpdateQuery.java | 1 + jOOQ/src/main/java/org/jooq/Variable.java | 1 + .../main/java/org/jooq/WindowExcludeStep.java | 1 + .../java/org/jooq/WindowIgnoreNullsStep.java | 2 +- .../main/java/org/jooq/WindowOrderByStep.java | 1 + .../main/java/org/jooq/WindowOverStep.java | 1 + .../java/org/jooq/WindowPartitionByStep.java | 1 + .../main/java/org/jooq/WindowRowsAndStep.java | 1 + .../main/java/org/jooq/WindowRowsStep.java | 1 + .../jooq/WindowSpecificationExcludeStep.java | 1 + .../jooq/WindowSpecificationOrderByStep.java | 1 + .../jooq/WindowSpecificationRowsAndStep.java | 1 + .../org/jooq/WindowSpecificationRowsStep.java | 1 + jOOQ/src/main/java/org/jooq/WithAsStep.java | 1 + jOOQ/src/main/java/org/jooq/WithStep.java | 1 + .../java/org/jooq/impl/AbstractDMLQuery.java | 1 + .../java/org/jooq/impl/AbstractDataType.java | 16 ++- .../java/org/jooq/impl/AlterTableImpl.java | 30 +++-- .../main/java/org/jooq/impl/AsteriskImpl.java | 9 +- .../src/main/java/org/jooq/impl/Continue.java | 1 + jOOQ/src/main/java/org/jooq/impl/DSL.java | 6 +- .../java/org/jooq/impl/DefaultBinding.java | 30 ++++- jOOQ/src/main/java/org/jooq/impl/Dual.java | 7 +- jOOQ/src/main/java/org/jooq/impl/Execute.java | 1 + jOOQ/src/main/java/org/jooq/impl/Exit.java | 1 + jOOQ/src/main/java/org/jooq/impl/IfImpl.java | 1 + .../src/main/java/org/jooq/impl/Keywords.java | 1 + .../src/main/java/org/jooq/impl/LoopImpl.java | 1 + .../main/java/org/jooq/impl/RowIsNull.java | 1 + .../java/org/jooq/impl/SelectQueryImpl.java | 21 ++- jOOQ/src/main/java/org/jooq/impl/Tools.java | 127 ++++++++++++------ 52 files changed, 244 insertions(+), 73 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/AlterTableStep.java b/jOOQ/src/main/java/org/jooq/AlterTableStep.java index 0d85895b64..7820921b95 100644 --- a/jOOQ/src/main/java/org/jooq/AlterTableStep.java +++ b/jOOQ/src/main/java/org/jooq/AlterTableStep.java @@ -42,6 +42,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.DERBY; diff --git a/jOOQ/src/main/java/org/jooq/ContinueWhenStep.java b/jOOQ/src/main/java/org/jooq/ContinueWhenStep.java index 6312365c62..f982dfb0d6 100644 --- a/jOOQ/src/main/java/org/jooq/ContinueWhenStep.java +++ b/jOOQ/src/main/java/org/jooq/ContinueWhenStep.java @@ -76,5 +76,6 @@ package org.jooq; + diff --git a/jOOQ/src/main/java/org/jooq/CreateViewAsStep.java b/jOOQ/src/main/java/org/jooq/CreateViewAsStep.java index 2058494ca1..0f5b374f69 100644 --- a/jOOQ/src/main/java/org/jooq/CreateViewAsStep.java +++ b/jOOQ/src/main/java/org/jooq/CreateViewAsStep.java @@ -42,6 +42,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.DERBY; diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index 1bfc67d711..c71704fc40 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -43,6 +43,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.DERBY; @@ -79,7 +80,6 @@ import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.Collection; import java.util.List; import java.util.Map; @@ -10541,7 +10541,7 @@ public interface DSLContext extends Scope { * @see DSL#dropView(String) */ @NotNull - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) DropViewFinalStep dropView(@Stringly.Name String view); /** @@ -10550,7 +10550,7 @@ public interface DSLContext extends Scope { * @see DSL#dropView(Name) */ @NotNull - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) DropViewFinalStep dropView(Name view); /** @@ -10559,7 +10559,7 @@ public interface DSLContext extends Scope { * @see DSL#dropView(Table) */ @NotNull - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) DropViewFinalStep dropView(Table view); /** diff --git a/jOOQ/src/main/java/org/jooq/DataType.java b/jOOQ/src/main/java/org/jooq/DataType.java index ab7edf358b..45be1ce6eb 100644 --- a/jOOQ/src/main/java/org/jooq/DataType.java +++ b/jOOQ/src/main/java/org/jooq/DataType.java @@ -40,15 +40,31 @@ package org.jooq; // ... // ... // ... +// ... +// ... +import static org.jooq.SQLDialect.CUBRID; +// ... +import static org.jooq.SQLDialect.DERBY; +import static org.jooq.SQLDialect.FIREBIRD; +import static org.jooq.SQLDialect.H2; +// ... import static org.jooq.SQLDialect.HSQLDB; +import static org.jooq.SQLDialect.IGNITE; +// ... +// ... 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 java.sql.Types; import java.util.Collection; diff --git a/jOOQ/src/main/java/org/jooq/Declaration.java b/jOOQ/src/main/java/org/jooq/Declaration.java index a4ae458ed0..0c124cdee0 100644 --- a/jOOQ/src/main/java/org/jooq/Declaration.java +++ b/jOOQ/src/main/java/org/jooq/Declaration.java @@ -130,5 +130,6 @@ import org.jetbrains.annotations.*; + diff --git a/jOOQ/src/main/java/org/jooq/DerivedColumnList.java b/jOOQ/src/main/java/org/jooq/DerivedColumnList.java index 83a54ac2f2..908e490495 100644 --- a/jOOQ/src/main/java/org/jooq/DerivedColumnList.java +++ b/jOOQ/src/main/java/org/jooq/DerivedColumnList.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; import static org.jooq.SQLDialect.HSQLDB; diff --git a/jOOQ/src/main/java/org/jooq/ExitWhenStep.java b/jOOQ/src/main/java/org/jooq/ExitWhenStep.java index f982dfb0d6..4a5953f4ee 100644 --- a/jOOQ/src/main/java/org/jooq/ExitWhenStep.java +++ b/jOOQ/src/main/java/org/jooq/ExitWhenStep.java @@ -77,5 +77,6 @@ package org.jooq; + diff --git a/jOOQ/src/main/java/org/jooq/Field.java b/jOOQ/src/main/java/org/jooq/Field.java index 91ca9c5276..0fac147675 100644 --- a/jOOQ/src/main/java/org/jooq/Field.java +++ b/jOOQ/src/main/java/org/jooq/Field.java @@ -43,6 +43,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.DERBY; diff --git a/jOOQ/src/main/java/org/jooq/ForByStep.java b/jOOQ/src/main/java/org/jooq/ForByStep.java index 6a1809a7ef..4a5953f4ee 100644 --- a/jOOQ/src/main/java/org/jooq/ForByStep.java +++ b/jOOQ/src/main/java/org/jooq/ForByStep.java @@ -37,7 +37,7 @@ */ package org.jooq; -import org.jetbrains.annotations.*; + diff --git a/jOOQ/src/main/java/org/jooq/ForInStep.java b/jOOQ/src/main/java/org/jooq/ForInStep.java index c3de861fa0..033db91638 100644 --- a/jOOQ/src/main/java/org/jooq/ForInStep.java +++ b/jOOQ/src/main/java/org/jooq/ForInStep.java @@ -37,7 +37,7 @@ */ package org.jooq; -import org.jetbrains.annotations.*; + diff --git a/jOOQ/src/main/java/org/jooq/GroupConcatOrderByStep.java b/jOOQ/src/main/java/org/jooq/GroupConcatOrderByStep.java index 6103fa330f..2641201b1f 100644 --- a/jOOQ/src/main/java/org/jooq/GroupConcatOrderByStep.java +++ b/jOOQ/src/main/java/org/jooq/GroupConcatOrderByStep.java @@ -43,6 +43,7 @@ import org.jetbrains.annotations.*; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.H2; diff --git a/jOOQ/src/main/java/org/jooq/GroupConcatSeparatorStep.java b/jOOQ/src/main/java/org/jooq/GroupConcatSeparatorStep.java index 38158b0c12..6646caba8b 100644 --- a/jOOQ/src/main/java/org/jooq/GroupConcatSeparatorStep.java +++ b/jOOQ/src/main/java/org/jooq/GroupConcatSeparatorStep.java @@ -43,6 +43,7 @@ import org.jetbrains.annotations.*; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.H2; diff --git a/jOOQ/src/main/java/org/jooq/IfElseStep.java b/jOOQ/src/main/java/org/jooq/IfElseStep.java index 98d1db681c..c0fff31448 100644 --- a/jOOQ/src/main/java/org/jooq/IfElseStep.java +++ b/jOOQ/src/main/java/org/jooq/IfElseStep.java @@ -85,5 +85,6 @@ package org.jooq; + diff --git a/jOOQ/src/main/java/org/jooq/IfThenStep.java b/jOOQ/src/main/java/org/jooq/IfThenStep.java index 4a5953f4ee..df164c5721 100644 --- a/jOOQ/src/main/java/org/jooq/IfThenStep.java +++ b/jOOQ/src/main/java/org/jooq/IfThenStep.java @@ -78,5 +78,6 @@ package org.jooq; + diff --git a/jOOQ/src/main/java/org/jooq/LoopStep.java b/jOOQ/src/main/java/org/jooq/LoopStep.java index 8604e8907a..df164c5721 100644 --- a/jOOQ/src/main/java/org/jooq/LoopStep.java +++ b/jOOQ/src/main/java/org/jooq/LoopStep.java @@ -37,7 +37,7 @@ */ package org.jooq; -import org.jetbrains.annotations.*; + diff --git a/jOOQ/src/main/java/org/jooq/Name.java b/jOOQ/src/main/java/org/jooq/Name.java index 94dc14d072..70178e6b66 100644 --- a/jOOQ/src/main/java/org/jooq/Name.java +++ b/jOOQ/src/main/java/org/jooq/Name.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... // ... import static org.jooq.SQLDialect.CUBRID; diff --git a/jOOQ/src/main/java/org/jooq/RepeatUntilStep.java b/jOOQ/src/main/java/org/jooq/RepeatUntilStep.java index 39b196a3e2..a568ea2570 100644 --- a/jOOQ/src/main/java/org/jooq/RepeatUntilStep.java +++ b/jOOQ/src/main/java/org/jooq/RepeatUntilStep.java @@ -37,7 +37,7 @@ */ package org.jooq; -import org.jetbrains.annotations.*; + diff --git a/jOOQ/src/main/java/org/jooq/SelectQuery.java b/jOOQ/src/main/java/org/jooq/SelectQuery.java index 362ff129b3..e206e15930 100644 --- a/jOOQ/src/main/java/org/jooq/SelectQuery.java +++ b/jOOQ/src/main/java/org/jooq/SelectQuery.java @@ -42,6 +42,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CUBRID; // ... // ... diff --git a/jOOQ/src/main/java/org/jooq/SelectWindowStep.java b/jOOQ/src/main/java/org/jooq/SelectWindowStep.java index 0d70e66c9b..0203da6da0 100644 --- a/jOOQ/src/main/java/org/jooq/SelectWindowStep.java +++ b/jOOQ/src/main/java/org/jooq/SelectWindowStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... // ... import static org.jooq.SQLDialect.CUBRID; diff --git a/jOOQ/src/main/java/org/jooq/UpdateFromStep.java b/jOOQ/src/main/java/org/jooq/UpdateFromStep.java index 454152dc3d..29fe9e2bba 100644 --- a/jOOQ/src/main/java/org/jooq/UpdateFromStep.java +++ b/jOOQ/src/main/java/org/jooq/UpdateFromStep.java @@ -42,6 +42,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.POSTGRES; // ... // ... diff --git a/jOOQ/src/main/java/org/jooq/UpdateQuery.java b/jOOQ/src/main/java/org/jooq/UpdateQuery.java index 314bc950cc..6c00bc3ea7 100644 --- a/jOOQ/src/main/java/org/jooq/UpdateQuery.java +++ b/jOOQ/src/main/java/org/jooq/UpdateQuery.java @@ -42,6 +42,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; // ... diff --git a/jOOQ/src/main/java/org/jooq/Variable.java b/jOOQ/src/main/java/org/jooq/Variable.java index a7fa51f8dd..3c15437be3 100644 --- a/jOOQ/src/main/java/org/jooq/Variable.java +++ b/jOOQ/src/main/java/org/jooq/Variable.java @@ -117,5 +117,6 @@ package org.jooq; + diff --git a/jOOQ/src/main/java/org/jooq/WindowExcludeStep.java b/jOOQ/src/main/java/org/jooq/WindowExcludeStep.java index e4bf9a4501..af599e556f 100644 --- a/jOOQ/src/main/java/org/jooq/WindowExcludeStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowExcludeStep.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.MARIADB; diff --git a/jOOQ/src/main/java/org/jooq/WindowIgnoreNullsStep.java b/jOOQ/src/main/java/org/jooq/WindowIgnoreNullsStep.java index f2a9dedd7b..105339e56f 100644 --- a/jOOQ/src/main/java/org/jooq/WindowIgnoreNullsStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowIgnoreNullsStep.java @@ -39,7 +39,7 @@ package org.jooq; import org.jetbrains.annotations.*; - +// ... // ... import static org.jooq.SQLDialect.H2; // ... diff --git a/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java b/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java index 641d48e06b..bbfaad9122 100644 --- a/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowOrderByStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... // ... import static org.jooq.SQLDialect.CUBRID; diff --git a/jOOQ/src/main/java/org/jooq/WindowOverStep.java b/jOOQ/src/main/java/org/jooq/WindowOverStep.java index 5c0d1a615b..a4aac77027 100644 --- a/jOOQ/src/main/java/org/jooq/WindowOverStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowOverStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... // ... import static org.jooq.SQLDialect.CUBRID; diff --git a/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java b/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java index 2d5d179f91..bbc25d793e 100644 --- a/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowPartitionByStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... // ... import static org.jooq.SQLDialect.CUBRID; diff --git a/jOOQ/src/main/java/org/jooq/WindowRowsAndStep.java b/jOOQ/src/main/java/org/jooq/WindowRowsAndStep.java index 0cf8632aaa..fbec7e6f65 100644 --- a/jOOQ/src/main/java/org/jooq/WindowRowsAndStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowRowsAndStep.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.MARIADB; diff --git a/jOOQ/src/main/java/org/jooq/WindowRowsStep.java b/jOOQ/src/main/java/org/jooq/WindowRowsStep.java index bb4d7e1c0d..ce95c6910d 100644 --- a/jOOQ/src/main/java/org/jooq/WindowRowsStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowRowsStep.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.MARIADB; diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationExcludeStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationExcludeStep.java index b9343b261a..37d3186625 100644 --- a/jOOQ/src/main/java/org/jooq/WindowSpecificationExcludeStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationExcludeStep.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.MARIADB; diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationOrderByStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationOrderByStep.java index 08ca113f91..bd05b0dc3c 100644 --- a/jOOQ/src/main/java/org/jooq/WindowSpecificationOrderByStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationOrderByStep.java @@ -37,6 +37,7 @@ */ package org.jooq; +// ... // ... // ... import static org.jooq.SQLDialect.CUBRID; diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsAndStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsAndStep.java index ce052ef1bf..b28f786f09 100644 --- a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsAndStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsAndStep.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.MARIADB; diff --git a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java index 005424a0ea..c9829a5f66 100644 --- a/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java +++ b/jOOQ/src/main/java/org/jooq/WindowSpecificationRowsStep.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.H2; // ... import static org.jooq.SQLDialect.MARIADB; diff --git a/jOOQ/src/main/java/org/jooq/WithAsStep.java b/jOOQ/src/main/java/org/jooq/WithAsStep.java index 56ea0ca5da..14628c205a 100644 --- a/jOOQ/src/main/java/org/jooq/WithAsStep.java +++ b/jOOQ/src/main/java/org/jooq/WithAsStep.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; // ... diff --git a/jOOQ/src/main/java/org/jooq/WithStep.java b/jOOQ/src/main/java/org/jooq/WithStep.java index fb262a3245..c8f6ab3652 100644 --- a/jOOQ/src/main/java/org/jooq/WithStep.java +++ b/jOOQ/src/main/java/org/jooq/WithStep.java @@ -40,6 +40,7 @@ package org.jooq; // ... // ... // ... +// ... import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; // ... diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java index 3cc2999b6a..4254347e32 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java @@ -44,6 +44,7 @@ import static java.lang.Boolean.TRUE; // ... // ... // ... +// ... import static org.jooq.SQLDialect.DERBY; import static org.jooq.SQLDialect.FIREBIRD; import static org.jooq.SQLDialect.H2; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java index e1806444ff..c78eb15aed 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java @@ -47,6 +47,7 @@ import static org.jooq.impl.SQLDataType.CLOB; import static org.jooq.impl.SQLDataType.NCHAR; import static org.jooq.impl.SQLDataType.NCLOB; import static org.jooq.impl.SQLDataType.NVARCHAR; +import static org.jooq.impl.Tools.NO_SUPPORT_BINARY_TYPE_LENGTH; import java.lang.reflect.Array; import java.math.BigDecimal; @@ -100,8 +101,8 @@ abstract class AbstractDataType extends AbstractNamed implements DataType /** * Generated UID */ - private static final long serialVersionUID = 4155588654449505119L; - private static final Set NO_SUPPORT_TIMESTAMP_PRECISION = SQLDialect.supportedBy(DERBY, FIREBIRD); + private static final long serialVersionUID = 4155588654449505119L; + static final Set NO_SUPPORT_TIMESTAMP_PRECISION = SQLDialect.supportedBy(DERBY, FIREBIRD); AbstractDataType(Name name, Comment comment) { super(name, comment); @@ -429,7 +430,14 @@ abstract class AbstractDataType extends AbstractNamed implements DataType // a null value, historically, so removing this check would // introduce a lot of regressions! if (lengthDefined() && length() > 0) { - return castTypePrefix0() + "(" + length() + ")" + castTypeSuffix0(); + if (isBinary() && NO_SUPPORT_BINARY_TYPE_LENGTH.contains(dialect)) + return castTypeName0(); + + + + + else + return castTypePrefix0() + "(" + length() + ")" + castTypeSuffix0(); } else if (precisionDefined() && (isTimestamp() || precision() > 0)) { @@ -444,6 +452,8 @@ abstract class AbstractDataType extends AbstractNamed implements DataType + + else if (scaleDefined() && scale() > 0) return castTypePrefix0() + "(" + precision() + ", " + scale() + ")" + castTypeSuffix0(); else diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java index 580e9ca23f..44c4ab2b54 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java @@ -93,6 +93,7 @@ import static org.jooq.impl.DSL.select; import static org.jooq.impl.DSL.sql; // ... import static org.jooq.impl.Keywords.K_ADD; +import static org.jooq.impl.Keywords.K_ADD_COLUMN; import static org.jooq.impl.Keywords.K_AFTER; import static org.jooq.impl.Keywords.K_ALTER; import static org.jooq.impl.Keywords.K_ALTER_COLUMN; @@ -185,10 +186,12 @@ import org.jooq.DataType; import org.jooq.Field; import org.jooq.FieldOrConstraint; import org.jooq.Index; +import org.jooq.Keyword; import org.jooq.Name; import org.jooq.Nullability; // ... import org.jooq.Query; +import org.jooq.QueryPart; import org.jooq.Record1; import org.jooq.SQLDialect; import org.jooq.Select; @@ -1272,7 +1275,7 @@ final class AlterTableImpl extends AbstractRowCountQuery implements boolean comma = true ; ctx.start(ALTER_TABLE_ADD) - .visit(K_ADD) + .visit(addColumnKeyword(ctx)) .sql(' '); if (parens) @@ -1285,11 +1288,12 @@ final class AlterTableImpl extends AbstractRowCountQuery implements .formatNewLine(); for (int i = 0; i < add.size(); i++) { - if (i > 0) + if (i > 0) { + ctx.sql(comma ? "," : "").formatSeparator(); + if (multiAdd) - ctx.sql(comma ? "," : "").formatSeparator().visit(K_ADD).sql(' '); - else - ctx.sql(comma ? "," : "").formatSeparator(); + ctx.visit(addColumnKeyword(ctx)).sql(' '); + } FieldOrConstraint part = add.get(i); ctx.qualify(false, c -> c.visit(part)); @@ -1312,12 +1316,7 @@ final class AlterTableImpl extends AbstractRowCountQuery implements } else if (addColumn != null) { ctx.start(ALTER_TABLE_ADD) - .visit(K_ADD).sql(' '); - - - - - + .visit(addColumnKeyword(ctx)).sql(' '); if (ifNotExistsColumn && supportsIfNotExistsColumn(ctx)) ctx.visit(K_IF_NOT_EXISTS).sql(' '); @@ -1647,6 +1646,15 @@ final class AlterTableImpl extends AbstractRowCountQuery implements ctx.formatIndentEnd(); } + private final Keyword addColumnKeyword(Context ctx) { + + + + + + return K_ADD; + } + private final void acceptCascade(Context ctx) { switch (ctx.family()) { case H2: diff --git a/jOOQ/src/main/java/org/jooq/impl/AsteriskImpl.java b/jOOQ/src/main/java/org/jooq/impl/AsteriskImpl.java index 518eb96e3b..e0ef96a543 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AsteriskImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AsteriskImpl.java @@ -37,14 +37,18 @@ */ package org.jooq.impl; +// ... +import static org.jooq.SQLDialect.H2; import static org.jooq.impl.Keywords.K_EXCEPT; import java.util.Arrays; +import java.util.Set; import org.jooq.Asterisk; import org.jooq.Context; import org.jooq.Field; import org.jooq.Name; +import org.jooq.SQLDialect; /** * @author Lukas Eder @@ -54,8 +58,9 @@ final class AsteriskImpl extends AbstractQueryPart implements Asterisk { /** * Generated UI */ - private static final long serialVersionUID = 6298415939984684260L; - static final AsteriskImpl INSTANCE = new AsteriskImpl(new QueryPartList<>()); + private static final long serialVersionUID = 6298415939984684260L; + static final AsteriskImpl INSTANCE = new AsteriskImpl(new QueryPartList<>()); + static final Set SUPPORT_NATIVE_EXCEPT = SQLDialect.supportedBy(H2); final QueryPartList> fields; private AsteriskImpl(QueryPartList> fields) { diff --git a/jOOQ/src/main/java/org/jooq/impl/Continue.java b/jOOQ/src/main/java/org/jooq/impl/Continue.java index 0aafcf67ed..25724c04b1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Continue.java +++ b/jOOQ/src/main/java/org/jooq/impl/Continue.java @@ -159,5 +159,6 @@ package org.jooq.impl; + diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index e25841c955..16edde5e36 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -9316,7 +9316,7 @@ public class DSL { * @see DSLContext#dropView(String) */ @NotNull - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) public static org.jooq.DropViewFinalStep dropView(@Stringly.Name String view) { return dsl().dropView(view); } @@ -9331,7 +9331,7 @@ public class DSL { * @see DSLContext#dropView(Name) */ @NotNull - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) public static org.jooq.DropViewFinalStep dropView(Name view) { return dsl().dropView(view); } @@ -9346,7 +9346,7 @@ public class DSL { * @see DSLContext#dropView(Table) */ @NotNull - @Support + @Support({ CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE }) public static org.jooq.DropViewFinalStep dropView(Table view) { return dsl().dropView(view); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index 2ed7265c22..a90003f606 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -615,7 +615,8 @@ public class DefaultBinding implements Binding { case CUBRID: // [#1029] Postgres and [#632] Sybase need explicit casting - // in very rare cases. + // in very rare cases. BigQuery doesn't support NULL BOOLEAN or INT64 bind values + @@ -1743,6 +1744,9 @@ public class DefaultBinding implements Binding { + + + default: return Types.BOOLEAN; } @@ -1792,6 +1796,11 @@ public class DefaultBinding implements Binding { @Override final int sqltype(Statement statement, Configuration configuration) { + + + + + return Types.TINYINT; } } @@ -2353,6 +2362,8 @@ public class DefaultBinding implements Binding { + + return Types.DOUBLE; } } @@ -2523,6 +2534,8 @@ public class DefaultBinding implements Binding { + + return Types.FLOAT; } } @@ -2570,6 +2583,11 @@ public class DefaultBinding implements Binding { @Override final int sqltype(Statement statement, Configuration configuration) { + + + + + return Types.INTEGER; } } @@ -2623,6 +2641,11 @@ public class DefaultBinding implements Binding { @Override final int sqltype(Statement statement, Configuration configuration) { + + + + + return Types.BIGINT; } } @@ -3712,6 +3735,11 @@ public class DefaultBinding implements Binding { @Override final int sqltype(Statement statement, Configuration configuration) { + + + + + return Types.SMALLINT; } } diff --git a/jOOQ/src/main/java/org/jooq/impl/Dual.java b/jOOQ/src/main/java/org/jooq/impl/Dual.java index 789372d1fc..a213769ab2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Dual.java +++ b/jOOQ/src/main/java/org/jooq/impl/Dual.java @@ -44,6 +44,8 @@ import static org.jooq.impl.Keywords.K_AS; import static org.jooq.impl.Keywords.K_FROM; import static org.jooq.impl.Keywords.K_LIMIT; import static org.jooq.impl.Keywords.K_SELECT; +import static org.jooq.impl.Keywords.K_STRUCT; +import static org.jooq.impl.Keywords.K_UNNEST; import static org.jooq.impl.Keywords.K_WHERE; import static org.jooq.impl.Names.N_COUNT; import static org.jooq.impl.Names.N_DUAL; @@ -134,7 +136,6 @@ final class Dual extends AbstractTable { - case H2: case POSTGRES: case SQLITE: @@ -190,6 +191,10 @@ final class Dual extends AbstractTable { + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/Execute.java b/jOOQ/src/main/java/org/jooq/impl/Execute.java index 3b3b476845..2dbfe77f7e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Execute.java +++ b/jOOQ/src/main/java/org/jooq/impl/Execute.java @@ -100,5 +100,6 @@ package org.jooq.impl; + diff --git a/jOOQ/src/main/java/org/jooq/impl/Exit.java b/jOOQ/src/main/java/org/jooq/impl/Exit.java index 25724c04b1..b5a24b3414 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Exit.java +++ b/jOOQ/src/main/java/org/jooq/impl/Exit.java @@ -160,5 +160,6 @@ package org.jooq.impl; + diff --git a/jOOQ/src/main/java/org/jooq/impl/IfImpl.java b/jOOQ/src/main/java/org/jooq/impl/IfImpl.java index f71f479a41..accf43220d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/IfImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/IfImpl.java @@ -231,5 +231,6 @@ package org.jooq.impl; + diff --git a/jOOQ/src/main/java/org/jooq/impl/Keywords.java b/jOOQ/src/main/java/org/jooq/impl/Keywords.java index 4b634bb170..a0dd85b746 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Keywords.java +++ b/jOOQ/src/main/java/org/jooq/impl/Keywords.java @@ -50,6 +50,7 @@ final class Keywords { static final Keyword K_ABSENT = keyword("absent"); static final Keyword K_ADD = keyword("add"); + static final Keyword K_ADD_COLUMN = keyword("add column"); static final Keyword K_AFTER = keyword("after"); static final Keyword K_ALIAS = keyword("alias"); static final Keyword K_ALL = keyword("all"); diff --git a/jOOQ/src/main/java/org/jooq/impl/LoopImpl.java b/jOOQ/src/main/java/org/jooq/impl/LoopImpl.java index 04c7929177..473c05542d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/LoopImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/LoopImpl.java @@ -386,5 +386,6 @@ package org.jooq.impl; + diff --git a/jOOQ/src/main/java/org/jooq/impl/RowIsNull.java b/jOOQ/src/main/java/org/jooq/impl/RowIsNull.java index 123f7029e6..2bf3f2e701 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RowIsNull.java +++ b/jOOQ/src/main/java/org/jooq/impl/RowIsNull.java @@ -42,6 +42,7 @@ package org.jooq.impl; // ... // ... // ... +// ... import static org.jooq.SQLDialect.CUBRID; // ... import static org.jooq.SQLDialect.DERBY; diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 5842637ccf..0619fc3182 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -102,6 +102,7 @@ import static org.jooq.SQLDialect.SQLITE; // ... // ... import static org.jooq.SortOrder.DESC; +import static org.jooq.impl.AsteriskImpl.SUPPORT_NATIVE_EXCEPT; import static org.jooq.impl.CombineOperator.EXCEPT; import static org.jooq.impl.CombineOperator.EXCEPT_ALL; import static org.jooq.impl.CombineOperator.INTERSECT; @@ -288,6 +289,8 @@ final class SelectQueryImpl extends AbstractResultQuery imp + + private static final Set SUPPORT_FULL_WITH_TIES = SQLDialect.supportedBy(H2, POSTGRES); private static final Set EMULATE_DISTINCT_ON = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB, MARIADB, MYSQL, SQLITE); @@ -1984,7 +1987,21 @@ final class SelectQueryImpl extends AbstractResultQuery imp // [#....] Some SQL dialects do not require a FROM clause. Others do and // jOOQ generates a "DUAL" table or something equivalent. // See also org.jooq.impl.Dual for details. - boolean hasFrom = !getFrom().isEmpty() || !OPTIONAL_FROM_CLAUSE.contains(context.dialect()); + boolean hasFrom = !getFrom().isEmpty() + || !OPTIONAL_FROM_CLAUSE.contains(context.dialect()) + + + + + + + + + + + + ; + List semiAntiJoinPredicates = null; ConditionProviderImpl where = getWhere(); @@ -3361,7 +3378,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp SelectFieldList result = new SelectFieldList<>(); // [#7921] Only H2 supports the * EXCEPT (..) syntax - boolean resolveExcept = resolveSupported || c.family() != H2; + boolean resolveExcept = resolveSupported || !SUPPORT_NATIVE_EXCEPT.contains(c.dialect()); // [#7921] TODO Find a better, more efficient way to resolve asterisks for (SelectFieldOrAsterisk f : getSelectResolveImplicitAsterisks()) diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 43f5f1f29e..41880d85fb 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -77,27 +77,20 @@ import static org.jooq.conf.SettingsTools.reflectionCaching; import static org.jooq.conf.SettingsTools.updatablePrimaryKeys; import static org.jooq.conf.ThrowExceptions.THROW_FIRST; import static org.jooq.conf.ThrowExceptions.THROW_NONE; -import static org.jooq.impl.DDLStatementType.ALTER_INDEX; import static org.jooq.impl.DDLStatementType.ALTER_SCHEMA; -import static org.jooq.impl.DDLStatementType.ALTER_SEQUENCE; import static org.jooq.impl.DDLStatementType.ALTER_TABLE; import static org.jooq.impl.DDLStatementType.ALTER_VIEW; import static org.jooq.impl.DDLStatementType.CREATE_DATABASE; import static org.jooq.impl.DDLStatementType.CREATE_DOMAIN; -import static org.jooq.impl.DDLStatementType.CREATE_FUNCTION; import static org.jooq.impl.DDLStatementType.CREATE_INDEX; -import static org.jooq.impl.DDLStatementType.CREATE_PROCEDURE; import static org.jooq.impl.DDLStatementType.CREATE_SCHEMA; import static org.jooq.impl.DDLStatementType.CREATE_SEQUENCE; import static org.jooq.impl.DDLStatementType.CREATE_TABLE; import static org.jooq.impl.DDLStatementType.CREATE_VIEW; -import static org.jooq.impl.DDLStatementType.DROP_FUNCTION; import static org.jooq.impl.DDLStatementType.DROP_INDEX; -import static org.jooq.impl.DDLStatementType.DROP_PROCEDURE; import static org.jooq.impl.DDLStatementType.DROP_SCHEMA; import static org.jooq.impl.DDLStatementType.DROP_SEQUENCE; import static org.jooq.impl.DDLStatementType.DROP_TABLE; -import static org.jooq.impl.DDLStatementType.DROP_TRIGGER; import static org.jooq.impl.DDLStatementType.DROP_VIEW; import static org.jooq.impl.DSL.asterisk; import static org.jooq.impl.DSL.concat; @@ -106,6 +99,7 @@ import static org.jooq.impl.DSL.getDataType; import static org.jooq.impl.DSL.jsonEntry; import static org.jooq.impl.DSL.keyword; import static org.jooq.impl.DSL.name; +import static org.jooq.impl.DSL.noCondition; import static org.jooq.impl.DSL.row; import static org.jooq.impl.DSL.select; import static org.jooq.impl.DSL.val; @@ -133,6 +127,7 @@ import static org.jooq.impl.Keywords.K_END_CATCH; import static org.jooq.impl.Keywords.K_END_IF; import static org.jooq.impl.Keywords.K_END_TRY; import static org.jooq.impl.Keywords.K_ENUM; +import static org.jooq.impl.Keywords.K_ERROR; import static org.jooq.impl.Keywords.K_EXCEPTION; import static org.jooq.impl.Keywords.K_EXEC; import static org.jooq.impl.Keywords.K_EXECUTE_BLOCK; @@ -729,51 +724,51 @@ final class Tools { * The default escape character for [a] LIKE [b] ESCAPE [...] * clauses. */ - static final char ESCAPE = '!'; + static final char ESCAPE = '!'; /** * A lock for the initialisation of other static members */ - private static final Object initLock = new Object(); + private static final Object initLock = new Object(); /** * Indicating whether JPA (javax.persistence) is on the * classpath. */ - private static volatile Boolean isJPAAvailable; + private static volatile Boolean isJPAAvailable; /** * Indicating whether Kotlin (kotlin.*) is on the classpath. */ - private static volatile Boolean isKotlinAvailable; - private static volatile Reflect ktJvmClassMapping; - private static volatile Reflect ktKClasses; - private static volatile Reflect ktKClass; - private static volatile Reflect ktKTypeParameter; + private static volatile Boolean isKotlinAvailable; + private static volatile Reflect ktJvmClassMapping; + private static volatile Reflect ktKClasses; + private static volatile Reflect ktKClass; + private static volatile Reflect ktKTypeParameter; /** * [#3696] The maximum number of consumed exceptions in * {@link #consumeExceptions(Configuration, PreparedStatement, SQLException)} * helps prevent infinite loops and {@link OutOfMemoryError}. */ - static int maxForceSettingsAttempts = 16; - static int maxConsumedExceptions = 256; - static int maxConsumedResults = 65536; + static int maxForceSettingsAttempts = 16; + static int maxConsumedExceptions = 256; + static int maxConsumedResults = 65536; /** * A pattern for the dash line syntax */ - private static final Pattern DASH_PATTERN = Pattern.compile("(-+)"); + private static final Pattern DASH_PATTERN = Pattern.compile("(-+)"); /** * A pattern for the pipe line syntax */ - private static final Pattern PIPE_PATTERN = Pattern.compile("(?<=\\|)([^|]+)(?=\\|)"); + private static final Pattern PIPE_PATTERN = Pattern.compile("(?<=\\|)([^|]+)(?=\\|)"); /** * A pattern for the dash line syntax */ - private static final Pattern PLUS_PATTERN = Pattern.compile("\\+(-+)(?=\\+)"); + private static final Pattern PLUS_PATTERN = Pattern.compile("\\+(-+)(?=\\+)"); /** * All characters that are matched by Java's interpretation of \s. @@ -783,25 +778,25 @@ final class Tools { * processing, it is probably safe to ignore most of those alternative * Unicode whitespaces. */ - private static final char[] WHITESPACE_CHARACTERS = " \t\n\u000B\f\r".toCharArray(); + private static final char[] WHITESPACE_CHARACTERS = " \t\n\u000B\f\r".toCharArray(); /** * Acceptable prefixes for JDBC escape syntax. */ - private static final char[][] JDBC_ESCAPE_PREFIXES = { + private static final char[][] JDBC_ESCAPE_PREFIXES = { "{fn ".toCharArray(), "{d ".toCharArray(), "{t ".toCharArray(), "{ts ".toCharArray() }; - private static final char[] TOKEN_SINGLE_LINE_COMMENT = { '-', '-' }; - private static final char[] TOKEN_SINGLE_LINE_COMMENT_C = { '/', '/' }; - private static final char[] TOKEN_HASH = { '#' }; - private static final char[] TOKEN_MULTI_LINE_COMMENT_OPEN = { '/', '*' }; - private static final char[] TOKEN_MULTI_LINE_COMMENT_CLOSE = { '*', '/' }; - private static final char[] TOKEN_APOS = { '\'' }; - private static final char[] TOKEN_ESCAPED_APOS = { '\'', '\'' }; + private static final char[] TOKEN_SINGLE_LINE_COMMENT = { '-', '-' }; + private static final char[] TOKEN_SINGLE_LINE_COMMENT_C = { '/', '/' }; + private static final char[] TOKEN_HASH = { '#' }; + private static final char[] TOKEN_MULTI_LINE_COMMENT_OPEN = { '/', '*' }; + private static final char[] TOKEN_MULTI_LINE_COMMENT_CLOSE = { '*', '/' }; + private static final char[] TOKEN_APOS = { '\'' }; + private static final char[] TOKEN_ESCAPED_APOS = { '\'', '\'' }; /** * "Suffixes" that are placed behind a "?" character to form an operator, @@ -836,7 +831,7 @@ final class Tools { *
  • ?|
  • * */ - private static final char[][] NON_BIND_VARIABLE_SUFFIXES = { + private static final char[][] NON_BIND_VARIABLE_SUFFIXES = { { '?' }, { '|' }, { '&' }, @@ -855,7 +850,7 @@ final class Tools { * such as "?<>", which is a non-equality operator, not * an operator on its own. */ - private static final char[][] BIND_VARIABLE_SUFFIXES = { + private static final char[][] BIND_VARIABLE_SUFFIXES = { { '<', '>' } }; @@ -863,16 +858,16 @@ final class Tools { * All hexadecimal digits accessible through array index, e.g. * HEX_DIGITS[15] == 'f'. */ - private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray(); + private static final char[] HEX_DIGITS = "0123456789abcdef".toCharArray(); - private static final Set REQUIRES_BACKSLASH_ESCAPING = SQLDialect.supportedBy(MARIADB, MYSQL); - private static final Set NO_SUPPORT_NULL = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB); - private static final Set NO_SUPPORT_BINARY_TYPE_LENGTH = SQLDialect.supportedBy(POSTGRES); - private static final Set NO_SUPPORT_CAST_TYPE_IN_DDL = SQLDialect.supportedBy(MARIADB, MYSQL); - private static final Set SUPPORT_NON_BIND_VARIABLE_SUFFIXES = SQLDialect.supportedBy(POSTGRES); - private static final Set DEFAULT_BEFORE_NULL = SQLDialect.supportedBy(FIREBIRD, HSQLDB); - static final Set NO_SUPPORT_TIMESTAMP_PRECISION = SQLDialect.supportedBy(DERBY); - private static final Set DEFAULT_TIMESTAMP_NOT_NULL = SQLDialect.supportedBy(MARIADB); + static final Set REQUIRES_BACKSLASH_ESCAPING = SQLDialect.supportedBy(MARIADB, MYSQL); + static final Set NO_SUPPORT_NULL = SQLDialect.supportedBy(DERBY, FIREBIRD, HSQLDB); + static final Set NO_SUPPORT_BINARY_TYPE_LENGTH = SQLDialect.supportedBy(POSTGRES); + static final Set NO_SUPPORT_CAST_TYPE_IN_DDL = SQLDialect.supportedBy(MARIADB, MYSQL); + static final Set SUPPORT_NON_BIND_VARIABLE_SUFFIXES = SQLDialect.supportedBy(POSTGRES); + static final Set DEFAULT_BEFORE_NULL = SQLDialect.supportedBy(FIREBIRD, HSQLDB); + static final Set NO_SUPPORT_TIMESTAMP_PRECISION = SQLDialect.supportedBy(DERBY); + static final Set DEFAULT_TIMESTAMP_NOT_NULL = SQLDialect.supportedBy(MARIADB); @@ -4727,6 +4722,56 @@ final class Tools { + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +