HHH-16316 Move version specific dialects of unsupported versions to hibernate-community-dialects

This commit is contained in:
Christian Beikov 2023-03-15 20:07:19 +01:00
parent b631b0224c
commit 39f4fdda5e
42 changed files with 305 additions and 174 deletions

View File

@ -312,23 +312,6 @@ include::{extrasdir}/entity-inheritance-table-per-class-query-example.sql[]
[IMPORTANT] [IMPORTANT]
==== ====
Polymorphic queries require multiple UNION queries, so be aware of the performance implications of a large class hierarchy. Polymorphic queries require multiple UNION queries, so be aware of the performance implications of a large class hierarchy.
Unfortunately, not all database systems support UNION ALL, in which case, UNION is going to be used instead of UNION ALL.
The following Hibernate dialects support UNION ALL:
- `AbstractHANADialect`
- `AbstractTransactSQLDialect`
- `CUBRIDDialect`
- `DB2Dialect`
- `H2Dialect`
- `HSQLDialect`
- `Ingres9Dialect`
- `MySQL5Dialect`
- `Oracle8iDialect`
- `Oracle9Dialect`
- `PostgreSQL81Dialect`
- `RDMSOS2200Dialect`
==== ====
[[entity-inheritance-polymorphism]] [[entity-inheritance-polymorphism]]

View File

@ -20,6 +20,6 @@
LANGUAGE plpgsql; LANGUAGE plpgsql;
</create> </create>
<drop></drop> <drop></drop>
<dialect-scope name="org.hibernate.dialect.PostgreSQL95Dialect" /> <dialect-scope name="org.hibernate.dialect.PostgreSQLDialect" />
</database-object> </database-object>
</hibernate-mapping> </hibernate-mapping>

View File

@ -20,12 +20,24 @@ public class CommunityDialectSelector implements DialectSelector {
return null; return null;
} }
switch ( name ) { switch ( name ) {
case "DB297":
return DB297Dialect.class;
case "DB2390":
return DB2390Dialect.class;
case "DB2390V8":
return DB2390V8Dialect.class;
case "Cache": case "Cache":
return CacheDialect.class; return CacheDialect.class;
case "Cache71": case "Cache71":
return Cache71Dialect.class; return Cache71Dialect.class;
case "CUBRID": case "CUBRID":
return CUBRIDDialect.class; return CUBRIDDialect.class;
case "DerbyTenFive":
return DerbyTenFiveDialect.class;
case "DerbyTenSix":
return DerbyTenSixDialect.class;
case "DerbyTenSeven":
return DerbyTenSevenDialect.class;
case "Firebird": case "Firebird":
return FirebirdDialect.class; return FirebirdDialect.class;
case "Informix": case "Informix":
@ -38,16 +50,56 @@ public class CommunityDialectSelector implements DialectSelector {
return Ingres9Dialect.class; return Ingres9Dialect.class;
case "Ingres10": case "Ingres10":
return Ingres10Dialect.class; return Ingres10Dialect.class;
case "MariaDB53":
return MariaDB53Dialect.class;
case "MariaDB10":
return MariaDB10Dialect.class;
case "MariaDB102":
return MariaDB102Dialect.class;
case "MimerSQL": case "MimerSQL":
return MimerSQLDialect.class; return MimerSQLDialect.class;
case "MySQL5":
return MySQL5Dialect.class;
case "MySQL55":
return MySQL55Dialect.class;
case "Oracle8i":
return Oracle8iDialect.class;
case "Oracle9i":
return Oracle9iDialect.class;
case "Oracle10g":
return Oracle10gDialect.class;
case "PostgreSQL81":
return PostgreSQL81Dialect.class;
case "PostgreSQL82":
return PostgreSQL82Dialect.class;
case "PostgreSQL9":
return PostgreSQL9Dialect.class;
case "PostgreSQL91":
return PostgreSQL91Dialect.class;
case "PostgreSQL92":
return PostgreSQL92Dialect.class;
case "PostgreSQL93":
return PostgreSQL93Dialect.class;
case "PostgreSQL94":
return PostgreSQL94Dialect.class;
case "PostgreSQL95":
return PostgreSQL95Dialect.class;
case "RDMSOS2200": case "RDMSOS2200":
return RDMSOS2200Dialect.class; return RDMSOS2200Dialect.class;
case "SAPDB": case "SAPDB":
return SAPDBDialect.class; return SAPDBDialect.class;
case "SQLServer2005":
return SQLServer2005Dialect.class;
case "MaxDB": case "MaxDB":
return MaxDBDialect.class; return MaxDBDialect.class;
case "Sybase11":
return Sybase11Dialect.class;
case "SybaseAnywhere": case "SybaseAnywhere":
return SybaseAnywhereDialect.class; return SybaseAnywhereDialect.class;
case "SybaseASE15":
return SybaseASE15Dialect.class;
case "SybaseASE157":
return SybaseASE157Dialect.class;
case "Teradata": case "Teradata":
return TeradataDialect.class; return TeradataDialect.class;
case "Teradata14": case "Teradata14":

View File

@ -4,8 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DB2zDialect;
import org.hibernate.dialect.identity.DB2zIdentityColumnSupport; import org.hibernate.dialect.identity.DB2zIdentityColumnSupport;
import org.hibernate.dialect.identity.IdentityColumnSupport; import org.hibernate.dialect.identity.IdentityColumnSupport;
import org.hibernate.dialect.pagination.FetchLimitHandler; import org.hibernate.dialect.pagination.FetchLimitHandler;
@ -24,7 +25,7 @@ import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
* @deprecated Use {@link DB2zDialect} * @deprecated Use {@link DB2zDialect}
*/ */
@Deprecated @Deprecated
public class DB2390Dialect extends DB2Dialect { public class DB2390Dialect extends DB2LegacyDialect {
private final int version; private final int version;

View File

@ -4,7 +4,7 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
/** /**

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for DB2 9.7. * An SQL dialect for DB2 9.7.
@ -13,7 +15,7 @@ package org.hibernate.dialect;
* @deprecated use {@code DB2Dialect(970)} * @deprecated use {@code DB2Dialect(970)}
*/ */
@Deprecated @Deprecated
public class DB297Dialect extends DB2Dialect { public class DB297Dialect extends DB2LegacyDialect {
public DB297Dialect() { public DB297Dialect() {
super( DatabaseVersion.make( 9, 7 ) ); super( DatabaseVersion.make( 9, 7 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* Dialect for Derby/Cloudscape 10.5 * Dialect for Derby/Cloudscape 10.5
@ -15,7 +17,7 @@ package org.hibernate.dialect;
* @deprecated use {@code DerbyDialect(1050)} * @deprecated use {@code DerbyDialect(1050)}
*/ */
@Deprecated @Deprecated
public class DerbyTenFiveDialect extends DerbyDialect { public class DerbyTenFiveDialect extends DerbyLegacyDialect {
public DerbyTenFiveDialect() { public DerbyTenFiveDialect() {
super( DatabaseVersion.make( 10, 5 ) ); super( DatabaseVersion.make( 10, 5 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* Dialect for Derby 10.7 * Dialect for Derby 10.7
@ -14,7 +16,7 @@ package org.hibernate.dialect;
* @deprecated use {@code DerbyDialect(1070)} * @deprecated use {@code DerbyDialect(1070)}
*/ */
@Deprecated @Deprecated
public class DerbyTenSevenDialect extends DerbyDialect { public class DerbyTenSevenDialect extends DerbyLegacyDialect {
public DerbyTenSevenDialect() { public DerbyTenSevenDialect() {
super( DatabaseVersion.make( 10, 7 ) ); super( DatabaseVersion.make( 10, 7 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* Dialect for Derby/Cloudscape 10.6 * Dialect for Derby/Cloudscape 10.6
@ -15,7 +17,7 @@ package org.hibernate.dialect;
* @deprecated use {@code DerbyDialect(1060)} * @deprecated use {@code DerbyDialect(1060)}
*/ */
@Deprecated @Deprecated
public class DerbyTenSixDialect extends DerbyDialect { public class DerbyTenSixDialect extends DerbyLegacyDialect {
public DerbyTenSixDialect() { public DerbyTenSixDialect() {
super( DatabaseVersion.make( 10, 6 ) ); super( DatabaseVersion.make( 10, 6 ) );

View File

@ -4,13 +4,15 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* @deprecated use {@code MariaDBDialect(1020)} * @deprecated use {@code MariaDBDialect(1020)}
*/ */
@Deprecated @Deprecated
public class MariaDB102Dialect extends MariaDBDialect { public class MariaDB102Dialect extends MariaDBLegacyDialect {
public MariaDB102Dialect() { public MariaDB102Dialect() {
super( DatabaseVersion.make( 10, 2 ) ); super( DatabaseVersion.make( 10, 2 ) );

View File

@ -4,13 +4,15 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* @deprecated use {@code MariaDBDialect(1000)} * @deprecated use {@code MariaDBDialect(1000)}
*/ */
@Deprecated @Deprecated
public class MariaDB10Dialect extends MariaDBDialect { public class MariaDB10Dialect extends MariaDBLegacyDialect {
public MariaDB10Dialect() { public MariaDB10Dialect() {
super( DatabaseVersion.make( 10 ) ); super( DatabaseVersion.make( 10 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* @author Vlad Mihalcea * @author Vlad Mihalcea
@ -12,7 +14,7 @@ package org.hibernate.dialect;
* @deprecated use {@code MariaDBDialect(530)} * @deprecated use {@code MariaDBDialect(530)}
*/ */
@Deprecated @Deprecated
public class MariaDB53Dialect extends MariaDBDialect { public class MariaDB53Dialect extends MariaDBLegacyDialect {
public MariaDB53Dialect() { public MariaDB53Dialect() {
super( DatabaseVersion.make( 5, 3 ) ); super( DatabaseVersion.make( 5, 3 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for MySQL 5.5.x specific features. * An SQL dialect for MySQL 5.5.x specific features.
@ -14,7 +16,7 @@ package org.hibernate.dialect;
* @deprecated use {@code MySQLDialect(550)} * @deprecated use {@code MySQLDialect(550)}
*/ */
@Deprecated @Deprecated
public class MySQL55Dialect extends MySQLDialect { public class MySQL55Dialect extends MySQLLegacyDialect {
public MySQL55Dialect() { public MySQL55Dialect() {
super( DatabaseVersion.make( 5, 5 ) ); super( DatabaseVersion.make( 5, 5 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for MySQL 5.x specific features. * An SQL dialect for MySQL 5.x specific features.
@ -14,7 +16,7 @@ package org.hibernate.dialect;
* @deprecated use {@code MySQLDialect(500)} * @deprecated use {@code MySQLDialect(500)}
*/ */
@Deprecated @Deprecated
public class MySQL5Dialect extends MySQLDialect { public class MySQL5Dialect extends MySQLLegacyDialect {
public MySQL5Dialect() { public MySQL5Dialect() {
super( DatabaseVersion.make( 5 ) ); super( DatabaseVersion.make( 5 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* A dialect specifically for use with Oracle 10g. * A dialect specifically for use with Oracle 10g.
@ -18,7 +20,7 @@ package org.hibernate.dialect;
* @deprecated use {@code OracleDialect(10)} * @deprecated use {@code OracleDialect(10)}
*/ */
@Deprecated @Deprecated
public class Oracle10gDialect extends OracleDialect { public class Oracle10gDialect extends OracleLegacyDialect {
public Oracle10gDialect() { public Oracle10gDialect() {
super( DatabaseVersion.make( 10 ) ); super( DatabaseVersion.make( 10 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* A dialect for Oracle 8i databases. * A dialect for Oracle 8i databases.
@ -12,7 +14,7 @@ package org.hibernate.dialect;
* @deprecated use {@code OracleDialect(8)} * @deprecated use {@code OracleDialect(8)}
*/ */
@Deprecated @Deprecated
public class Oracle8iDialect extends OracleDialect { public class Oracle8iDialect extends OracleLegacyDialect {
public Oracle8iDialect() { public Oracle8iDialect() {
super( DatabaseVersion.make( 8 ) ); super( DatabaseVersion.make( 8 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* A dialect for Oracle 9i databases. * A dialect for Oracle 9i databases.
@ -17,7 +19,7 @@ package org.hibernate.dialect;
* @deprecated use {@code OracleDialect(9)} * @deprecated use {@code OracleDialect(9)}
*/ */
@Deprecated @Deprecated
public class Oracle9iDialect extends OracleDialect { public class Oracle9iDialect extends OracleLegacyDialect {
public Oracle9iDialect() { public Oracle9iDialect() {
super( DatabaseVersion.make( 9 ) ); super( DatabaseVersion.make( 9 ) );

View File

@ -4,13 +4,15 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* @deprecated use {@code PostgreSQLDialect(810)} * @deprecated use {@code PostgreSQLDialect(810)}
*/ */
@Deprecated @Deprecated
public class PostgreSQL81Dialect extends PostgreSQLDialect { public class PostgreSQL81Dialect extends PostgreSQLLegacyDialect {
public PostgreSQL81Dialect() { public PostgreSQL81Dialect() {
super( DatabaseVersion.make( 8, 1 ) ); super( DatabaseVersion.make( 8, 1 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for Postgres 8.2 and later, adds support for "if exists" when dropping tables * An SQL dialect for Postgres 8.2 and later, adds support for "if exists" when dropping tables
@ -14,7 +16,7 @@ package org.hibernate.dialect;
* @deprecated use {@code PostgreSQLDialect(820)} * @deprecated use {@code PostgreSQLDialect(820)}
*/ */
@Deprecated @Deprecated
public class PostgreSQL82Dialect extends PostgreSQLDialect { public class PostgreSQL82Dialect extends PostgreSQLLegacyDialect {
public PostgreSQL82Dialect() { public PostgreSQL82Dialect() {
super( DatabaseVersion.make( 8, 2 ) ); super( DatabaseVersion.make( 8, 2 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for Postgres 9.1 and later, * An SQL dialect for Postgres 9.1 and later,
@ -15,7 +17,7 @@ package org.hibernate.dialect;
* @deprecated use {@code PostgreSQLDialect(910)} * @deprecated use {@code PostgreSQLDialect(910)}
*/ */
@Deprecated @Deprecated
public class PostgreSQL91Dialect extends PostgreSQLDialect { public class PostgreSQL91Dialect extends PostgreSQLLegacyDialect {
public PostgreSQL91Dialect() { public PostgreSQL91Dialect() {
super( DatabaseVersion.make( 9, 1 ) ); super( DatabaseVersion.make( 9, 1 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for Postgres 9.2 and later, * An SQL dialect for Postgres 9.2 and later,
@ -16,7 +18,7 @@ package org.hibernate.dialect;
* @deprecated use {@code PostgreSQLDialect(920)} * @deprecated use {@code PostgreSQLDialect(920)}
*/ */
@Deprecated @Deprecated
public class PostgreSQL92Dialect extends PostgreSQLDialect { public class PostgreSQL92Dialect extends PostgreSQLLegacyDialect {
public PostgreSQL92Dialect() { public PostgreSQL92Dialect() {
super( DatabaseVersion.make( 9, 2 ) ); super( DatabaseVersion.make( 9, 2 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL Dialect for PostgreSQL 9.3 and later. * An SQL Dialect for PostgreSQL 9.3 and later.
@ -15,7 +17,7 @@ package org.hibernate.dialect;
* @deprecated use {@code PostgreSQLDialect(810)} * @deprecated use {@code PostgreSQLDialect(810)}
*/ */
@Deprecated @Deprecated
public class PostgreSQL93Dialect extends PostgreSQLDialect { public class PostgreSQL93Dialect extends PostgreSQLLegacyDialect {
public PostgreSQL93Dialect() { public PostgreSQL93Dialect() {
super( DatabaseVersion.make( 9, 3 ) ); super( DatabaseVersion.make( 9, 3 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for Postgres 9.4 and later. * An SQL dialect for Postgres 9.4 and later.
@ -13,7 +15,7 @@ package org.hibernate.dialect;
* @deprecated use {@code PostgreSQLDialect(940)} * @deprecated use {@code PostgreSQLDialect(940)}
*/ */
@Deprecated @Deprecated
public class PostgreSQL94Dialect extends PostgreSQLDialect { public class PostgreSQL94Dialect extends PostgreSQLLegacyDialect {
public PostgreSQL94Dialect() { public PostgreSQL94Dialect() {
super( DatabaseVersion.make( 9, 4 ) ); super( DatabaseVersion.make( 9, 4 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for Postgres 9.5 and later. * An SQL dialect for Postgres 9.5 and later.
@ -13,7 +15,7 @@ package org.hibernate.dialect;
* @deprecated use {@code PostgreSQLDialect(950)} * @deprecated use {@code PostgreSQLDialect(950)}
*/ */
@Deprecated @Deprecated
public class PostgreSQL95Dialect extends PostgreSQLDialect { public class PostgreSQL95Dialect extends PostgreSQLLegacyDialect {
public PostgreSQL95Dialect() { public PostgreSQL95Dialect() {
super( DatabaseVersion.make( 9, 5 ) ); super( DatabaseVersion.make( 9, 5 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect for Postgres 9 and later. * An SQL dialect for Postgres 9 and later.
@ -15,7 +17,7 @@ package org.hibernate.dialect;
* @deprecated use {@code PostgreSQLDialect(900)} * @deprecated use {@code PostgreSQLDialect(900)}
*/ */
@Deprecated @Deprecated
public class PostgreSQL9Dialect extends PostgreSQLDialect { public class PostgreSQL9Dialect extends PostgreSQLLegacyDialect {
public PostgreSQL9Dialect() { public PostgreSQL9Dialect() {
super( DatabaseVersion.make( 9 ) ); super( DatabaseVersion.make( 9 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* A dialect for Microsoft SQL Server 2005. * A dialect for Microsoft SQL Server 2005.
@ -15,7 +17,7 @@ package org.hibernate.dialect;
* @deprecated use {@code SQLServerDialect(9)} * @deprecated use {@code SQLServerDialect(9)}
*/ */
@Deprecated @Deprecated
public class SQLServer2005Dialect extends SQLServerDialect { public class SQLServer2005Dialect extends SQLServerLegacyDialect {
public SQLServer2005Dialect() { public SQLServer2005Dialect() {
super( DatabaseVersion.make( 9 ) ); super( DatabaseVersion.make( 9 ) );

View File

@ -4,17 +4,19 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* A SQL dialect suitable for use with Sybase 11.9.2 * A SQL dialect suitable for use with Sybase 11.9.2
* (specifically: avoids ANSI JOIN syntax) * (specifically: avoids ANSI JOIN syntax)
* *
* @author Colm O' Flaherty * @author Colm O' Flaherty
* @deprecated use {@link SybaseASEDialect} instead * @deprecated use {@code SybaseASELegacyDialect( DatabaseVersion.make( 11 ) )}
*/ */
@Deprecated @Deprecated
public class Sybase11Dialect extends SybaseASEDialect { public class Sybase11Dialect extends SybaseASELegacyDialect {
public Sybase11Dialect() { public Sybase11Dialect() {
super( DatabaseVersion.make( 11 ) ); super( DatabaseVersion.make( 11 ) );
} }

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect targeting Sybase Adaptive Server Enterprise (ASE) 15.7 and higher. * An SQL dialect targeting Sybase Adaptive Server Enterprise (ASE) 15.7 and higher.
@ -14,7 +16,7 @@ package org.hibernate.dialect;
* @deprecated use {@code SybaseASEDialect(1570)} * @deprecated use {@code SybaseASEDialect(1570)}
*/ */
@Deprecated @Deprecated
public class SybaseASE157Dialect extends SybaseASEDialect { public class SybaseASE157Dialect extends SybaseASELegacyDialect {
public SybaseASE157Dialect() { public SybaseASE157Dialect() {
super( DatabaseVersion.make( 15, 7 ) ); super( DatabaseVersion.make( 15, 7 ) );

View File

@ -4,7 +4,9 @@
* License: GNU Lesser General Public License (LGPL), version 2.1 or later. * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/ */
package org.hibernate.dialect; package org.hibernate.community.dialect;
import org.hibernate.dialect.DatabaseVersion;
/** /**
* An SQL dialect targeting Sybase Adaptive Server Enterprise (ASE) 15 and higher. * An SQL dialect targeting Sybase Adaptive Server Enterprise (ASE) 15 and higher.
@ -14,7 +16,7 @@ package org.hibernate.dialect;
* @deprecated use {@code SybaseASEDialect(1500)} * @deprecated use {@code SybaseASEDialect(1500)}
*/ */
@Deprecated @Deprecated
public class SybaseASE15Dialect extends SybaseASEDialect { public class SybaseASE15Dialect extends SybaseASELegacyDialect {
public SybaseASE15Dialect() { public SybaseASE15Dialect() {
super( DatabaseVersion.make( 15 ) ); super( DatabaseVersion.make( 15 ) );

View File

@ -17,16 +17,53 @@ public class CommunityDialectSelectorTest {
@Test @Test
public void verifyAllDialectNamingResolve() { public void verifyAllDialectNamingResolve() {
testDialectNamingResolution( DB297Dialect.class );
testDialectNamingResolution( DB2390Dialect.class );
testDialectNamingResolution( DB2390V8Dialect.class );
testDialectNamingResolution( Cache71Dialect.class ); testDialectNamingResolution( Cache71Dialect.class );
testDialectNamingResolution( CUBRIDDialect.class ); testDialectNamingResolution( CUBRIDDialect.class );
testDialectNamingResolution( DerbyTenFiveDialect.class );
testDialectNamingResolution( DerbyTenSixDialect.class );
testDialectNamingResolution( DerbyTenSevenDialect.class );
testDialectNamingResolution( FirebirdDialect.class ); testDialectNamingResolution( FirebirdDialect.class );
testDialectNamingResolution( InformixDialect.class ); testDialectNamingResolution( InformixDialect.class );
testDialectNamingResolution( IngresDialect.class ); testDialectNamingResolution( IngresDialect.class );
testDialectNamingResolution( Ingres9Dialect.class ); testDialectNamingResolution( Ingres9Dialect.class );
testDialectNamingResolution( Ingres10Dialect.class ); testDialectNamingResolution( Ingres10Dialect.class );
testDialectNamingResolution( MimerSQLDialect.class ); testDialectNamingResolution( MimerSQLDialect.class );
testDialectNamingResolution( MariaDB53Dialect.class );
testDialectNamingResolution( MariaDB10Dialect.class );
testDialectNamingResolution( MariaDB102Dialect.class );
testDialectNamingResolution( MySQL5Dialect.class );
testDialectNamingResolution( MySQL55Dialect.class );
testDialectNamingResolution( Oracle8iDialect.class );
testDialectNamingResolution( Oracle9iDialect.class );
testDialectNamingResolution( Oracle10gDialect.class );
testDialectNamingResolution( PostgreSQL81Dialect.class );
testDialectNamingResolution( PostgreSQL82Dialect.class );
testDialectNamingResolution( PostgreSQL9Dialect.class );
testDialectNamingResolution( PostgreSQL91Dialect.class );
testDialectNamingResolution( PostgreSQL92Dialect.class );
testDialectNamingResolution( PostgreSQL93Dialect.class );
testDialectNamingResolution( PostgreSQL94Dialect.class );
testDialectNamingResolution( PostgreSQL95Dialect.class );
testDialectNamingResolution( SAPDBDialect.class ); testDialectNamingResolution( SAPDBDialect.class );
testDialectNamingResolution( SQLServer2005Dialect.class );
testDialectNamingResolution( SybaseAnywhereDialect.class ); testDialectNamingResolution( SybaseAnywhereDialect.class );
testDialectNamingResolution( Sybase11Dialect.class );
testDialectNamingResolution( SybaseASE15Dialect.class );
testDialectNamingResolution( SybaseASE157Dialect.class );
testDialectNamingResolution( TeradataDialect.class ); testDialectNamingResolution( TeradataDialect.class );
testDialectNamingResolution( TimesTenDialect.class ); testDialectNamingResolution( TimesTenDialect.class );
} }

View File

@ -11,7 +11,6 @@ import java.util.Locale;
import org.hibernate.LockMode; import org.hibernate.LockMode;
import org.hibernate.LockOptions; import org.hibernate.LockOptions;
import org.hibernate.dialect.DatabaseVersion; import org.hibernate.dialect.DatabaseVersion;
import org.hibernate.dialect.SQLServer2005Dialect;
import org.hibernate.query.spi.Limit; import org.hibernate.query.spi.Limit;
import org.hibernate.testing.TestForIssue; import org.hibernate.testing.TestForIssue;

View File

@ -8,7 +8,6 @@ package org.hibernate.community.dialect.unit.lockhint;
import org.hibernate.community.dialect.SybaseASELegacyDialect; import org.hibernate.community.dialect.SybaseASELegacyDialect;
import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.SybaseASE15Dialect;
import org.hibernate.orm.test.dialect.unit.lockhint.AbstractLockHintTest; import org.hibernate.orm.test.dialect.unit.lockhint.AbstractLockHintTest;
/** /**

View File

@ -9,58 +9,35 @@ package org.hibernate.boot.registry.selector.internal;
import java.util.Objects; import java.util.Objects;
import org.hibernate.boot.registry.selector.spi.DialectSelector; import org.hibernate.boot.registry.selector.spi.DialectSelector;
import org.hibernate.boot.registry.selector.spi.StrategySelectionException;
import org.hibernate.dialect.CockroachDialect; import org.hibernate.dialect.CockroachDialect;
import org.hibernate.dialect.DB2390Dialect;
import org.hibernate.dialect.DB2390V8Dialect;
import org.hibernate.dialect.DB2400Dialect; import org.hibernate.dialect.DB2400Dialect;
import org.hibernate.dialect.DB2400V7R3Dialect; import org.hibernate.dialect.DB2400V7R3Dialect;
import org.hibernate.dialect.DB297Dialect;
import org.hibernate.dialect.DB2Dialect; import org.hibernate.dialect.DB2Dialect;
import org.hibernate.dialect.DB2iDialect; import org.hibernate.dialect.DB2iDialect;
import org.hibernate.dialect.DB2zDialect; import org.hibernate.dialect.DB2zDialect;
import org.hibernate.dialect.DerbyDialect; import org.hibernate.dialect.DerbyDialect;
import org.hibernate.dialect.DerbyTenFiveDialect;
import org.hibernate.dialect.DerbyTenSevenDialect;
import org.hibernate.dialect.DerbyTenSixDialect;
import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.H2Dialect; import org.hibernate.dialect.H2Dialect;
import org.hibernate.dialect.HANACloudColumnStoreDialect; import org.hibernate.dialect.HANACloudColumnStoreDialect;
import org.hibernate.dialect.HANAColumnStoreDialect; import org.hibernate.dialect.HANAColumnStoreDialect;
import org.hibernate.dialect.HANARowStoreDialect; import org.hibernate.dialect.HANARowStoreDialect;
import org.hibernate.dialect.HSQLDialect; import org.hibernate.dialect.HSQLDialect;
import org.hibernate.dialect.MariaDB102Dialect;
import org.hibernate.dialect.MariaDB103Dialect; import org.hibernate.dialect.MariaDB103Dialect;
import org.hibernate.dialect.MariaDB10Dialect;
import org.hibernate.dialect.MariaDB53Dialect;
import org.hibernate.dialect.MariaDBDialect; import org.hibernate.dialect.MariaDBDialect;
import org.hibernate.dialect.MySQL55Dialect;
import org.hibernate.dialect.MySQL57Dialect; import org.hibernate.dialect.MySQL57Dialect;
import org.hibernate.dialect.MySQL5Dialect;
import org.hibernate.dialect.MySQL8Dialect; import org.hibernate.dialect.MySQL8Dialect;
import org.hibernate.dialect.MySQLDialect; import org.hibernate.dialect.MySQLDialect;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.Oracle12cDialect; import org.hibernate.dialect.Oracle12cDialect;
import org.hibernate.dialect.Oracle8iDialect;
import org.hibernate.dialect.Oracle9iDialect;
import org.hibernate.dialect.OracleDialect; import org.hibernate.dialect.OracleDialect;
import org.hibernate.dialect.PostgreSQL81Dialect; import org.hibernate.dialect.PostgreSQL10Dialect;
import org.hibernate.dialect.PostgreSQL82Dialect;
import org.hibernate.dialect.PostgreSQL91Dialect;
import org.hibernate.dialect.PostgreSQL92Dialect;
import org.hibernate.dialect.PostgreSQL93Dialect;
import org.hibernate.dialect.PostgreSQL94Dialect;
import org.hibernate.dialect.PostgreSQL95Dialect;
import org.hibernate.dialect.PostgreSQL9Dialect;
import org.hibernate.dialect.PostgreSQLDialect; import org.hibernate.dialect.PostgreSQLDialect;
import org.hibernate.dialect.PostgresPlusDialect; import org.hibernate.dialect.PostgresPlusDialect;
import org.hibernate.dialect.SQLServer2005Dialect;
import org.hibernate.dialect.SQLServer2008Dialect; import org.hibernate.dialect.SQLServer2008Dialect;
import org.hibernate.dialect.SQLServer2012Dialect; import org.hibernate.dialect.SQLServer2012Dialect;
import org.hibernate.dialect.SQLServer2016Dialect;
import org.hibernate.dialect.SQLServerDialect; import org.hibernate.dialect.SQLServerDialect;
import org.hibernate.dialect.SpannerDialect; import org.hibernate.dialect.SpannerDialect;
import org.hibernate.dialect.Sybase11Dialect;
import org.hibernate.dialect.SybaseASE157Dialect;
import org.hibernate.dialect.SybaseASE15Dialect;
import org.hibernate.dialect.SybaseASEDialect; import org.hibernate.dialect.SybaseASEDialect;
import org.hibernate.dialect.SybaseDialect; import org.hibernate.dialect.SybaseDialect;
@ -82,11 +59,10 @@ public class DefaultDialectSelector implements DialectSelector {
case "DB2z": case "DB2z":
return DB2zDialect.class; return DB2zDialect.class;
case "DB297": case "DB297":
return DB297Dialect.class; return findCommunityDialect( name );
case "DB2390": case "DB2390":
return DB2390Dialect.class;
case "DB2390V8": case "DB2390V8":
return DB2390V8Dialect.class; return findCommunityDialect( name );
case "DB2400": case "DB2400":
return DB2400Dialect.class; return DB2400Dialect.class;
case "DB2400V7R3": case "DB2400V7R3":
@ -94,11 +70,9 @@ public class DefaultDialectSelector implements DialectSelector {
case "Derby": case "Derby":
return DerbyDialect.class; return DerbyDialect.class;
case "DerbyTenFive": case "DerbyTenFive":
return DerbyTenFiveDialect.class;
case "DerbyTenSix": case "DerbyTenSix":
return DerbyTenSixDialect.class;
case "DerbyTenSeven": case "DerbyTenSeven":
return DerbyTenSevenDialect.class; return findCommunityDialect( name );
case "H2": case "H2":
return H2Dialect.class; return H2Dialect.class;
case "HANACloudColumnStore": case "HANACloudColumnStore":
@ -112,19 +86,16 @@ public class DefaultDialectSelector implements DialectSelector {
case "MariaDB": case "MariaDB":
return MariaDBDialect.class; return MariaDBDialect.class;
case "MariaDB53": case "MariaDB53":
return MariaDB53Dialect.class;
case "MariaDB10": case "MariaDB10":
return MariaDB10Dialect.class;
case "MariaDB102": case "MariaDB102":
return MariaDB102Dialect.class; return findCommunityDialect( name );
case "MariaDB103": case "MariaDB103":
return MariaDB103Dialect.class; return MariaDB103Dialect.class;
case "MySQL": case "MySQL":
return MySQLDialect.class; return MySQLDialect.class;
case "MySQL5": case "MySQL5":
return MySQL5Dialect.class;
case "MySQL55": case "MySQL55":
return MySQL55Dialect.class; return findCommunityDialect( name );
case "MySQL57": case "MySQL57":
return MySQL57Dialect.class; return MySQL57Dialect.class;
case "MySQL8": case "MySQL8":
@ -132,11 +103,9 @@ public class DefaultDialectSelector implements DialectSelector {
case "Oracle": case "Oracle":
return OracleDialect.class; return OracleDialect.class;
case "Oracle8i": case "Oracle8i":
return Oracle8iDialect.class;
case "Oracle9i": case "Oracle9i":
return Oracle9iDialect.class;
case "Oracle10g": case "Oracle10g":
return Oracle10gDialect.class; return findCommunityDialect( name );
case "Oracle12c": case "Oracle12c":
return Oracle12cDialect.class; return Oracle12cDialect.class;
case "PostgresPlus": case "PostgresPlus":
@ -144,43 +113,58 @@ public class DefaultDialectSelector implements DialectSelector {
case "PostgreSQL": case "PostgreSQL":
return PostgreSQLDialect.class; return PostgreSQLDialect.class;
case "PostgreSQL81": case "PostgreSQL81":
return PostgreSQL81Dialect.class;
case "PostgreSQL82": case "PostgreSQL82":
return PostgreSQL82Dialect.class;
case "PostgreSQL9": case "PostgreSQL9":
return PostgreSQL9Dialect.class;
case "PostgreSQL91": case "PostgreSQL91":
return PostgreSQL91Dialect.class;
case "PostgreSQL92": case "PostgreSQL92":
return PostgreSQL92Dialect.class;
case "PostgreSQL93": case "PostgreSQL93":
return PostgreSQL93Dialect.class;
case "PostgreSQL94": case "PostgreSQL94":
return PostgreSQL94Dialect.class;
case "PostgreSQL95": case "PostgreSQL95":
return PostgreSQL95Dialect.class; return findCommunityDialect( name );
case "PostgreSQL10":
return PostgreSQL10Dialect.class;
case "Spanner": case "Spanner":
return SpannerDialect.class; return SpannerDialect.class;
case "SQLServer": case "SQLServer":
return SQLServerDialect.class; return SQLServerDialect.class;
case "SQLServer2005": case "SQLServer2005":
return SQLServer2005Dialect.class; return findCommunityDialect( name );
case "SQLServer2008": case "SQLServer2008":
return SQLServer2008Dialect.class; return SQLServer2008Dialect.class;
case "SQLServer2012": case "SQLServer2012":
return SQLServer2012Dialect.class; return SQLServer2012Dialect.class;
case "SQLServer2016":
return SQLServer2016Dialect.class;
case "Sybase": case "Sybase":
return SybaseDialect.class; return SybaseDialect.class;
case "Sybase11": case "Sybase11":
return Sybase11Dialect.class; return findCommunityDialect( name );
case "SybaseASE": case "SybaseASE":
return SybaseASEDialect.class; return SybaseASEDialect.class;
case "SybaseASE15": case "SybaseASE15":
return SybaseASE15Dialect.class;
case "SybaseASE157": case "SybaseASE157":
return SybaseASE157Dialect.class; return findCommunityDialect( name );
} }
return null; return null;
} }
private static Class<? extends Dialect> findCommunityDialect(String name) {
try {
//noinspection unchecked
return (Class<? extends Dialect>) DefaultDialectSelector.class.getClassLoader().loadClass(
"org.hibernate.community.dialect." + name + "Dialect"
);
}
catch (ClassNotFoundException e) {
throw new StrategySelectionException(
"Couldn't load the dialect class for the `hibernate.dialect` short name [" + name + "], " +
"because the application is missing a dependency on the hibernate-community-dialects module. " +
"Hibernate 6.2 dropped support for database versions that are unsupported by vendors " +
"and code for old versions was moved to the hibernate-community-dialects module. " +
"For further information, read https://in.relation.to/2023/02/15/hibernate-orm-62-db-version-support/",
e
);
}
}
} }

View File

@ -278,7 +278,7 @@ import static org.hibernate.type.descriptor.DateTimeUtils.appendAsTimestampWithN
* passed to the constructor, and by the {@link #getVersion()} property. * passed to the constructor, and by the {@link #getVersion()} property.
* <p> * <p>
* Programs using Hibernate should migrate away from the use of versioned * Programs using Hibernate should migrate away from the use of versioned
* dialect classes like, for example, {@link PostgreSQL95Dialect}. These * dialect classes like, for example, {@link MySQL8Dialect}. These
* classes are now deprecated and will be removed in a future release. * classes are now deprecated and will be removed in a future release.
* <p> * <p>
* A custom {@code Dialect} may be specified using the configuration * A custom {@code Dialect} may be specified using the configuration

View File

@ -861,11 +861,6 @@ public class MySQLDialect extends Dialect {
} }
} }
@Override
public boolean supportsUnionAll() {
return true;
}
@Override @Override
public SelectItemReferenceStrategy getGroupBySelectItemReferenceStrategy() { public SelectItemReferenceStrategy getGroupBySelectItemReferenceStrategy() {
return SelectItemReferenceStrategy.POSITION; return SelectItemReferenceStrategy.POSITION;

View File

@ -8,6 +8,7 @@ package org.hibernate.engine.jdbc.dialect.internal;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.util.Map; import java.util.Map;
import java.util.Set;
import org.hibernate.HibernateException; import org.hibernate.HibernateException;
import org.hibernate.boot.registry.selector.spi.StrategySelectionException; import org.hibernate.boot.registry.selector.spi.StrategySelectionException;
@ -33,6 +34,34 @@ import static org.hibernate.internal.log.DeprecationLogger.DEPRECATION_LOGGER;
*/ */
public class DialectFactoryImpl implements DialectFactory, ServiceRegistryAwareService { public class DialectFactoryImpl implements DialectFactory, ServiceRegistryAwareService {
private static final CoreMessageLogger LOG = CoreLogging.messageLogger( "SQL dialect" ); private static final CoreMessageLogger LOG = CoreLogging.messageLogger( "SQL dialect" );
private static final Set<String> LEGACY_DIALECTS = Set.of(
"org.hibernate.community.dialect.DB297Dialect",
"org.hibernate.community.dialect.DB2390Dialect",
"org.hibernate.community.dialect.DB2390V8Dialect",
"org.hibernate.community.dialect.DerbyTenFiveDialect",
"org.hibernate.community.dialect.DerbyTenSevenDialect",
"org.hibernate.community.dialect.DerbyTenSixDialect",
"org.hibernate.community.dialect.MariaDB10Dialect",
"org.hibernate.community.dialect.MariaDB53Dialect",
"org.hibernate.community.dialect.MariaDB102Dialect",
"org.hibernate.community.dialect.MySQL5Dialect",
"org.hibernate.community.dialect.MySQL55Dialect",
"org.hibernate.community.dialect.Oracle8iDialect",
"org.hibernate.community.dialect.Oracle9iDialect",
"org.hibernate.community.dialect.Oracle10gDialect",
"org.hibernate.community.dialect.PostgreSQL9Dialect",
"org.hibernate.community.dialect.PostgreSQL81Dialect",
"org.hibernate.community.dialect.PostgreSQL82Dialect",
"org.hibernate.community.dialect.PostgreSQL91Dialect",
"org.hibernate.community.dialect.PostgreSQL92Dialect",
"org.hibernate.community.dialect.PostgreSQL93Dialect",
"org.hibernate.community.dialect.PostgreSQL94Dialect",
"org.hibernate.community.dialect.PostgreSQL95Dialect",
"org.hibernate.community.dialect.SQLServer2005Dialect",
"org.hibernate.community.dialect.Sybase11Dialect",
"org.hibernate.community.dialect.SybaseASE15Dialect",
"org.hibernate.community.dialect.SybaseASE157Dialect"
);
private StrategySelector strategySelector; private StrategySelector strategySelector;
private DialectResolver dialectResolver; private DialectResolver dialectResolver;
@ -124,6 +153,20 @@ public class DialectFactoryImpl implements DialectFactory, ServiceRegistryAwareS
} }
return dialect; return dialect;
} }
catch (StrategySelectionException e) {
final String dialectFqn = dialectReference.toString();
if ( LEGACY_DIALECTS.contains( dialectFqn ) ) {
throw new StrategySelectionException(
"Couldn't load the dialect class for the `hibernate.dialect` [" + dialectFqn + "], " +
"because the application is missing a dependency on the hibernate-community-dialects module. " +
"Hibernate 6.2 dropped support for database versions that are unsupported by vendors " +
"and code for old versions was moved to the hibernate-community-dialects module. " +
"For further information, read https://in.relation.to/2023/02/15/hibernate-orm-62-db-version-support/",
e
);
}
throw e;
}
catch (HibernateException e) { catch (HibernateException e) {
throw e; throw e;
} }

View File

@ -7,6 +7,10 @@
package org.hibernate.orm.test.strategyselectors; package org.hibernate.orm.test.strategyselectors;
import org.hibernate.boot.registry.selector.internal.DefaultDialectSelector; import org.hibernate.boot.registry.selector.internal.DefaultDialectSelector;
import org.hibernate.community.dialect.DerbyTenFiveDialect;
import org.hibernate.community.dialect.DerbyTenSevenDialect;
import org.hibernate.community.dialect.DerbyTenSixDialect;
import org.hibernate.community.dialect.MySQL5Dialect;
import org.hibernate.dialect.*; import org.hibernate.dialect.*;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
@ -21,8 +25,6 @@ public class DefaultDialectSelectorTest {
@Test @Test
public void verifyAllDialectNamingResolve() { public void verifyAllDialectNamingResolve() {
testDialectNamingResolution( DB2Dialect.class ); testDialectNamingResolution( DB2Dialect.class );
testDialectNamingResolution( DB2390Dialect.class );
testDialectNamingResolution( DB2390V8Dialect.class );
testDialectNamingResolution( DB2400Dialect.class ); testDialectNamingResolution( DB2400Dialect.class );
testDialectNamingResolution( DB2400V7R3Dialect.class ); testDialectNamingResolution( DB2400V7R3Dialect.class );
@ -42,24 +44,17 @@ public class DefaultDialectSelectorTest {
testDialectNamingResolution( MySQL8Dialect.class ); testDialectNamingResolution( MySQL8Dialect.class );
testDialectNamingResolution( OracleDialect.class ); testDialectNamingResolution( OracleDialect.class );
testDialectNamingResolution( Oracle8iDialect.class ); testDialectNamingResolution( Oracle12cDialect.class );
testDialectNamingResolution( Oracle9iDialect.class );
testDialectNamingResolution( Oracle10gDialect.class );
testDialectNamingResolution( PostgreSQLDialect.class ); testDialectNamingResolution( PostgreSQLDialect.class );
testDialectNamingResolution( PostgresPlusDialect.class ); testDialectNamingResolution( PostgresPlusDialect.class );
testDialectNamingResolution( PostgreSQL81Dialect.class ); testDialectNamingResolution( PostgreSQL10Dialect.class );
testDialectNamingResolution( PostgreSQL82Dialect.class );
testDialectNamingResolution( PostgreSQL9Dialect.class );
testDialectNamingResolution( SQLServerDialect.class ); testDialectNamingResolution( SQLServerDialect.class );
testDialectNamingResolution( SQLServer2005Dialect.class );
testDialectNamingResolution( SQLServer2008Dialect.class ); testDialectNamingResolution( SQLServer2008Dialect.class );
testDialectNamingResolution( SQLServer2012Dialect.class );
testDialectNamingResolution( SybaseDialect.class ); testDialectNamingResolution( SybaseDialect.class );
testDialectNamingResolution( Sybase11Dialect.class );
testDialectNamingResolution( SybaseASE15Dialect.class );
testDialectNamingResolution( SybaseASE157Dialect.class );
} }
private void testDialectNamingResolution(final Class<?> dialectClass) { private void testDialectNamingResolution(final Class<?> dialectClass) {

View File

@ -18,10 +18,7 @@ import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.boot.spi.MetadataImplementor; import org.hibernate.boot.spi.MetadataImplementor;
import org.hibernate.cfg.AvailableSettings; import org.hibernate.cfg.AvailableSettings;
import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.Oracle10gDialect;
import org.hibernate.dialect.Oracle12cDialect; import org.hibernate.dialect.Oracle12cDialect;
import org.hibernate.dialect.Oracle8iDialect;
import org.hibernate.dialect.Oracle9iDialect;
import org.hibernate.dialect.OracleDialect; import org.hibernate.dialect.OracleDialect;
import org.hibernate.mapping.PersistentClass; import org.hibernate.mapping.PersistentClass;
import org.hibernate.type.BasicType; import org.hibernate.type.BasicType;
@ -42,26 +39,6 @@ import static org.junit.Assert.assertSame;
* @author Steve Ebersole * @author Steve Ebersole
*/ */
public class OracleLongLobTypeTest extends BaseUnitTestCase { public class OracleLongLobTypeTest extends BaseUnitTestCase {
@Test
public void testOracle8() {
check( Oracle8iDialect.class, Primitives.class, StandardBasicTypes.BINARY, StandardBasicTypes.CHAR_ARRAY );
check( Oracle8iDialect.class, LobPrimitives.class, StandardBasicTypes.MATERIALIZED_BLOB, StandardBasicTypes.MATERIALIZED_CLOB_CHAR_ARRAY );
check( Oracle8iDialect.class, LobLocators.class, StandardBasicTypes.BLOB, StandardBasicTypes.CLOB );
}
@Test
public void testOracle9() {
check( Oracle9iDialect.class, Primitives.class, StandardBasicTypes.BINARY, StandardBasicTypes.CHAR_ARRAY );
check( Oracle9iDialect.class, LobPrimitives.class, StandardBasicTypes.MATERIALIZED_BLOB, StandardBasicTypes.MATERIALIZED_CLOB_CHAR_ARRAY );
check( Oracle9iDialect.class, LobLocators.class, StandardBasicTypes.BLOB, StandardBasicTypes.CLOB );
}
@Test
public void testOracle10() {
check( Oracle10gDialect.class, Primitives.class, StandardBasicTypes.BINARY, StandardBasicTypes.CHAR_ARRAY );
check( Oracle10gDialect.class, LobPrimitives.class, StandardBasicTypes.MATERIALIZED_BLOB, StandardBasicTypes.MATERIALIZED_CLOB_CHAR_ARRAY );
check( Oracle10gDialect.class, LobLocators.class, StandardBasicTypes.BLOB, StandardBasicTypes.CLOB );
}
@Test @Test
@TestForIssue( jiraKey = "HHH-10345" ) @TestForIssue( jiraKey = "HHH-10345" )

View File

@ -11,7 +11,8 @@ package org.hibernate.spatial.dialect.mysql;
* creation-date: 10/9/13 * creation-date: 10/9/13
*/ */
import org.hibernate.dialect.MySQL55Dialect; import org.hibernate.dialect.DatabaseVersion;
import org.hibernate.dialect.MySQLDialect;
import org.hibernate.spatial.SpatialDialect; import org.hibernate.spatial.SpatialDialect;
/** /**
@ -25,6 +26,9 @@ import org.hibernate.spatial.SpatialDialect;
* @deprecated Spatial Dialects are no longer needed * @deprecated Spatial Dialects are no longer needed
*/ */
@Deprecated @Deprecated
public class MySQL56SpatialDialect extends MySQL55Dialect implements SpatialDialect { public class MySQL56SpatialDialect extends MySQLDialect implements SpatialDialect {
public MySQL56SpatialDialect() {
super( DatabaseVersion.make( 5, 5 ) );
}
} }

View File

@ -6,7 +6,8 @@
*/ */
package org.hibernate.spatial.dialect.mysql; package org.hibernate.spatial.dialect.mysql;
import org.hibernate.dialect.MySQL5Dialect; import org.hibernate.dialect.DatabaseVersion;
import org.hibernate.dialect.MySQLDialect;
import org.hibernate.spatial.SpatialDialect; import org.hibernate.spatial.SpatialDialect;
/** /**
@ -16,5 +17,9 @@ import org.hibernate.spatial.SpatialDialect;
* @deprecated Spatial Dialects are no longer needed * @deprecated Spatial Dialects are no longer needed
*/ */
@Deprecated @Deprecated
public class MySQL5SpatialDialect extends MySQL5Dialect implements SpatialDialect { public class MySQL5SpatialDialect extends MySQLDialect implements SpatialDialect {
public MySQL5SpatialDialect() {
super( DatabaseVersion.make( 5 ) );
}
} }

View File

@ -7,7 +7,8 @@
package org.hibernate.spatial.dialect.oracle; package org.hibernate.spatial.dialect.oracle;
import org.hibernate.dialect.Oracle10gDialect; import org.hibernate.dialect.DatabaseVersion;
import org.hibernate.dialect.OracleDialect;
import org.hibernate.spatial.SpatialDialect; import org.hibernate.spatial.SpatialDialect;
/** /**
@ -18,6 +19,10 @@ import org.hibernate.spatial.SpatialDialect;
* @deprecated A SpatialDialect is no longer required. Use the standard Dialect for this database. * @deprecated A SpatialDialect is no longer required. Use the standard Dialect for this database.
*/ */
@Deprecated @Deprecated
public class OracleSpatial10gDialect extends Oracle10gDialect implements SpatialDialect { public class OracleSpatial10gDialect extends OracleDialect implements SpatialDialect {
public OracleSpatial10gDialect() {
super( DatabaseVersion.make( 10 ) );
}
} }

View File

@ -6,7 +6,8 @@
*/ */
package org.hibernate.spatial.dialect.oracle; package org.hibernate.spatial.dialect.oracle;
import org.hibernate.dialect.Oracle10gDialect; import org.hibernate.dialect.DatabaseVersion;
import org.hibernate.dialect.OracleDialect;
import org.hibernate.spatial.SpatialDialect; import org.hibernate.spatial.SpatialDialect;
/** /**
@ -15,6 +16,9 @@ import org.hibernate.spatial.SpatialDialect;
* @deprecated A SpatialDialect is no longer required. Use the standard Dialect for this database. * @deprecated A SpatialDialect is no longer required. Use the standard Dialect for this database.
*/ */
@Deprecated @Deprecated
public class OracleSpatialSDO10gDialect extends Oracle10gDialect public class OracleSpatialSDO10gDialect extends OracleDialect implements SpatialDialect {
implements SpatialDialect {
public OracleSpatialSDO10gDialect() {
super( DatabaseVersion.make( 10 ) );
}
} }