diff --git a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationUtil.java b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationUtil.java
index 39093a9435..e2e7bf35a1 100644
--- a/jOOQ-codegen/src/main/java/org/jooq/util/GenerationUtil.java
+++ b/jOOQ-codegen/src/main/java/org/jooq/util/GenerationUtil.java
@@ -171,7 +171,7 @@ class GenerationUtil {
* Gets the base type for an array type, depending on the RDBMS dialect
*/
static String getArrayBaseType(SQLDialect dialect, String t, String u) {
- switch (dialect) {
+ switch (dialect.family()) {
case POSTGRES: {
// The convention is to prepend a "_" to a type to get an array type
diff --git a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java
index cfa3f42a36..f339f2b62e 100644
--- a/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java
+++ b/jOOQ-meta/src/main/java/org/jooq/util/AbstractDatabase.java
@@ -1078,7 +1078,7 @@ public abstract class AbstractDatabase implements Database {
@Override
public final boolean isArrayType(String dataType) {
- switch (getDialect()) {
+ switch (getDialect().family()) {
case POSTGRES:
case H2:
return "ARRAY".equals(dataType);
diff --git a/jOOQ/src/main/java/org/jooq/SQLDialect.java b/jOOQ/src/main/java/org/jooq/SQLDialect.java
index 24525ba702..5a04dd5ff6 100644
--- a/jOOQ/src/main/java/org/jooq/SQLDialect.java
+++ b/jOOQ/src/main/java/org/jooq/SQLDialect.java
@@ -48,11 +48,11 @@ import java.util.Set;
* Dialects and dialect families as supported by jOOQ.
*
* jOOQ supports a variety of dialects, which are grouped into dialect families.
- * For instance, the SQL Server dialect family {@link #SQLSERVER} is specialised
+ * For instance, the SQL Server dialect family {@link #POSTGRES} is specialised
* by its dialects
*
- *
{@link #SQLSERVER2008}
- *
{@link #SQLSERVER2012}
+ *
{@link #POSTGRES_9_3}
+ *
{@link #POSTGRES_9_4}
*
*
* @author Lukas Eder
diff --git a/jOOQ/src/main/java/org/jooq/Support.java b/jOOQ/src/main/java/org/jooq/Support.java
index a1db8eaf5d..7edfd5c613 100644
--- a/jOOQ/src/main/java/org/jooq/Support.java
+++ b/jOOQ/src/main/java/org/jooq/Support.java
@@ -69,7 +69,21 @@ import org.jooq.exception.SQLDialectNotSupportedException;
* annotated in such a way should be used only along with any of the dialects
* specified by the annotation. This is typically the case with jOOQ's SQL
* construction API for less common clauses, such as the creation of
- * MERGE, etc.
+ * MERGE, etc.
+ *
+ * There listed dialects can be either a:
+ *
+ *
A dialect family, in case of which all versions of the family support the
+ * feature. E.g. when {@link SQLDialect#POSTGRES} is referenced, then
+ * {@link SQLDialect#POSTGRES_9_3}, {@link SQLDialect#POSTGRES_9_4}, etc.
+ * support the feature as well
+ *
A dialect version, in case of which all versions larger or equal than the
+ * referenced version support the feature. E.g. when
+ * {@link SQLDialect#POSTGRES_9_4} is referenced, then
+ * {@link SQLDialect#POSTGRES_9_5} would support the feature as well, but not
+ * {@link SQLDialect#POSTGRES_9_3}
+ *
+ *
*
*
* Future versions of jOOQ may use these annotations for throwing
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
index 355d0e77d4..a3c7ee9e01 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRoutine.java
@@ -468,7 +468,7 @@ public abstract class AbstractRoutine extends AbstractQueryPart implements Ro
Field> value = getInValues().get(parameter);
// Disambiguate overloaded procedure signatures
- if (POSTGRES == context.configuration().dialect() && isOverloaded()) {
+ if (POSTGRES == context.family() && isOverloaded()) {
value = value.cast(parameter.getType());
}
@@ -864,7 +864,7 @@ public abstract class AbstractRoutine extends AbstractQueryPart implements Ro
for (Parameter> p : getInParameters()) {
// Disambiguate overloaded function signatures
- if (POSTGRES == ctx.dialect() && isOverloaded()) {
+ if (POSTGRES == ctx.family() && isOverloaded()) {
array[i] = getInValues().get(p).cast(p.getType());
}
else {
diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractStoreQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractStoreQuery.java
index 93d9a4f194..45fea0fc53 100644
--- a/jOOQ/src/main/java/org/jooq/impl/AbstractStoreQuery.java
+++ b/jOOQ/src/main/java/org/jooq/impl/AbstractStoreQuery.java
@@ -210,7 +210,7 @@ abstract class AbstractStoreQuery extends AbstractQuery implem
final void toSQLReturning(Context> ctx) {
if (!returning.isEmpty()) {
- switch (ctx.configuration().dialect()) {
+ switch (ctx.family()) {
case FIREBIRD:
case POSTGRES:
ctx.formatSeparator()
@@ -247,7 +247,7 @@ abstract class AbstractStoreQuery extends AbstractQuery implem
// Values should be returned from the INSERT
else {
- switch (ctx.configuration().dialect().family()) {
+ switch (ctx.family()) {
/* [pro] xx
xxxx xxxxxxx
@@ -322,7 +322,7 @@ abstract class AbstractStoreQuery extends AbstractQuery implem
else {
int result = 1;
ResultSet rs;
- switch (ctx.configuration().dialect().family()) {
+ switch (ctx.family()) {
// SQLite can select _rowid_ after the insert
case SQLITE: {
diff --git a/jOOQ/src/main/java/org/jooq/impl/Alias.java b/jOOQ/src/main/java/org/jooq/impl/Alias.java
index 35841fd5c0..7184466811 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Alias.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Alias.java
@@ -121,14 +121,14 @@ class Alias extends AbstractQueryPart {
@Override
public final void accept(Context> context) {
if (context.declareFields() || context.declareTables()) {
- SQLDialect dialect = context.configuration().dialect();
+ SQLDialect family = context.family();
boolean simulateDerivedColumnList = false;
// [#454] [#1801] Some databases don't allow "derived column names" in
// "simple class specifications", or "common table expression references".
// Hence, wrap the table reference in a subselect
if (fieldAliases != null
- && asList(CUBRID, FIREBIRD).contains(dialect.family())
+ && asList(CUBRID, FIREBIRD).contains(family)
&& (wrapped instanceof TableImpl || wrapped instanceof CommonTableExpressionImpl)) {
@SuppressWarnings("unchecked")
@@ -143,13 +143,13 @@ class Alias extends AbstractQueryPart {
// [#1801] Some databases do not support "derived column names".
// They can be simulated by concatenating a dummy SELECT with no
// results using UNION ALL
- else if (fieldAliases != null && asList(H2, MARIADB, MYSQL, SQLITE).contains(dialect.family())) {
+ else if (fieldAliases != null && asList(H2, MARIADB, MYSQL, SQLITE).contains(family)) {
simulateDerivedColumnList = true;
SelectFieldList fields = new SelectFieldList();
for (String fieldAlias : fieldAliases) {
- switch (dialect.family()) {
+ switch (family) {
/* [pro] xx
xxxx xxxxxxx x
@@ -209,7 +209,7 @@ class Alias extends AbstractQueryPart {
// SELECT t.column_value FROM UNNEST(ARRAY[1, 2]) AS t(column_value)
// TODO: Is this still needed?
- switch (dialect) {
+ switch (family) {
case HSQLDB:
case POSTGRES: {
// The javac compiler doesn't like casting of generics
@@ -241,7 +241,7 @@ class Alias extends AbstractQueryPart {
}
static void toSQLAs(Context> context) {
- if (asList(DERBY, HSQLDB, MARIADB, MYSQL, POSTGRES).contains(context.configuration().dialect())) {
+ if (asList(DERBY, HSQLDB, MARIADB, MYSQL, POSTGRES).contains(context.family())) {
context.sql(" ").keyword("as");
}
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayDataType.java b/jOOQ/src/main/java/org/jooq/impl/ArrayDataType.java
index 3b8f9b3ed0..4847923c90 100644
--- a/jOOQ/src/main/java/org/jooq/impl/ArrayDataType.java
+++ b/jOOQ/src/main/java/org/jooq/impl/ArrayDataType.java
@@ -76,7 +76,7 @@ class ArrayDataType extends DefaultDataType {
}
private static String getArrayType(Configuration configuration, String dataType) {
- switch (configuration.dialect()) {
+ switch (configuration.family()) {
case HSQLDB:
return dataType + " array";
case POSTGRES:
diff --git a/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java b/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java
index 9cabc814f7..7d31033ecb 100644
--- a/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java
+++ b/jOOQ/src/main/java/org/jooq/impl/ArrayTable.java
@@ -174,7 +174,7 @@ class ArrayTable extends AbstractTable {
}
private final Table table(Configuration configuration) {
- switch (configuration.dialect().family()) {
+ switch (configuration.family()) {
/* [pro] xx
xxxx xxxxxxx x
xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
diff --git a/jOOQ/src/main/java/org/jooq/impl/CompareCondition.java b/jOOQ/src/main/java/org/jooq/impl/CompareCondition.java
index 72d9637bec..349fb08f81 100644
--- a/jOOQ/src/main/java/org/jooq/impl/CompareCondition.java
+++ b/jOOQ/src/main/java/org/jooq/impl/CompareCondition.java
@@ -86,7 +86,7 @@ class CompareCondition extends AbstractCondition {
@Override
public final void accept(Context> ctx) {
- SQLDialect family = ctx.configuration().dialect().family();
+ SQLDialect family = ctx.family();
Field> lhs = field1;
Field> rhs = field2;
Comparator op = comparator;
diff --git a/jOOQ/src/main/java/org/jooq/impl/ConditionAsField.java b/jOOQ/src/main/java/org/jooq/impl/ConditionAsField.java
index a09799eb1a..4c26d5e0d5 100644
--- a/jOOQ/src/main/java/org/jooq/impl/ConditionAsField.java
+++ b/jOOQ/src/main/java/org/jooq/impl/ConditionAsField.java
@@ -66,7 +66,7 @@ class ConditionAsField extends AbstractFunction {
@Override
final QueryPart getFunction0(Configuration configuration) {
- switch (configuration.dialect().family()) {
+ switch (configuration.family()) {
// Some databases don't accept predicates where column expressions
// are expected.
diff --git a/jOOQ/src/main/java/org/jooq/impl/Cosh.java b/jOOQ/src/main/java/org/jooq/impl/Cosh.java
index 297b4f1c55..d5fcfd192b 100644
--- a/jOOQ/src/main/java/org/jooq/impl/Cosh.java
+++ b/jOOQ/src/main/java/org/jooq/impl/Cosh.java
@@ -69,7 +69,7 @@ class Cosh extends AbstractFunction {
@Override
final Field getFunction0(Configuration configuration) {
- switch (configuration.dialect().family()) {
+ switch (configuration.family()) {
/* [pro] xx
xxxx xxxxxxx
xxxx xxxx
diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentDate.java b/jOOQ/src/main/java/org/jooq/impl/CurrentDate.java
index 6402fd0a1f..f8f43c804d 100644
--- a/jOOQ/src/main/java/org/jooq/impl/CurrentDate.java
+++ b/jOOQ/src/main/java/org/jooq/impl/CurrentDate.java
@@ -64,7 +64,7 @@ class CurrentDate extends AbstractFunction {
@Override
final Field getFunction0(Configuration configuration) {
- switch (configuration.dialect().family()) {
+ switch (configuration.family()) {
/* [pro] xx
xxxx xxxxxxx
xxxxxx xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxx
diff --git a/jOOQ/src/main/java/org/jooq/impl/CurrentTime.java b/jOOQ/src/main/java/org/jooq/impl/CurrentTime.java
index 9f6bc0b2f9..66bd89c92a 100644
--- a/jOOQ/src/main/java/org/jooq/impl/CurrentTime.java
+++ b/jOOQ/src/main/java/org/jooq/impl/CurrentTime.java
@@ -64,7 +64,7 @@ class CurrentTime extends AbstractFunction