HHH-11455 - Do not use schema name when underlying database doesn't support It

Use JDBC Environment to get the qualified name of the table, instead of directly appending schema name when it is defined explicitly.
This commit is contained in:
BOOTMGR 2017-02-05 00:24:07 +05:30
parent 517fc4c242
commit a38ea758e3

View File

@ -17,12 +17,14 @@
import org.hibernate.HibernateException; import org.hibernate.HibernateException;
import org.hibernate.MappingException; import org.hibernate.MappingException;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.model.naming.Identifier; import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.relational.Exportable; import org.hibernate.boot.model.relational.Exportable;
import org.hibernate.boot.model.relational.InitCommand; import org.hibernate.boot.model.relational.InitCommand;
import org.hibernate.boot.model.relational.Namespace; import org.hibernate.boot.model.relational.Namespace;
import org.hibernate.boot.model.relational.QualifiedTableName; import org.hibernate.boot.model.relational.QualifiedTableName;
import org.hibernate.dialect.Dialect; import org.hibernate.dialect.Dialect;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
import org.hibernate.engine.jdbc.env.spi.QualifiedObjectNameFormatter; import org.hibernate.engine.jdbc.env.spi.QualifiedObjectNameFormatter;
import org.hibernate.engine.spi.Mapping; import org.hibernate.engine.spi.Mapping;
import org.hibernate.internal.util.StringHelper; import org.hibernate.internal.util.StringHelper;
@ -438,13 +440,20 @@ public void validateColumns(Dialect dialect, Mapping mapping, TableMetadata tabl
public Iterator sqlAlterStrings( public Iterator sqlAlterStrings(
Dialect dialect, Dialect dialect,
Mapping p, Metadata metadata,
TableInformation tableInfo, TableInformation tableInfo,
String defaultCatalog, String defaultCatalog,
String defaultSchema) throws HibernateException { String defaultSchema) throws HibernateException {
final JdbcEnvironment jdbcEnvironment = metadata.getDatabase().getJdbcEnvironment();
StringBuilder root = new StringBuilder( "alter table " ) StringBuilder root = new StringBuilder( "alter table " )
.append( getQualifiedName( dialect, defaultCatalog, defaultSchema ) ) .append(
jdbcEnvironment.getQualifiedObjectNameFormatter().format(
tableInfo.getName(),
dialect
)
)
.append( ' ' ) .append( ' ' )
.append( dialect.getAddColumnString() ); .append( dialect.getAddColumnString() );
@ -461,7 +470,7 @@ public Iterator sqlAlterStrings(
.append( ' ' ) .append( ' ' )
.append( column.getQuotedName( dialect ) ) .append( column.getQuotedName( dialect ) )
.append( ' ' ) .append( ' ' )
.append( column.getSqlType( dialect, p ) ); .append( column.getSqlType( dialect, metadata ) );
String defaultValue = column.getDefaultValue(); String defaultValue = column.getDefaultValue();
if ( defaultValue != null ) { if ( defaultValue != null ) {