Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions docker_db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -659,8 +659,6 @@ disable_userland_proxy() {
sudo service docker stop
echo "Updating /etc/docker/daemon.json..."
sudo bash -c "export docker_daemon_json='$docker_daemon_json'; echo \"\${docker_daemon_json/\}/,}\\\"userland-proxy\\\": false}\" > /etc/docker/daemon.json"
echo "New docker daemon config:"
cat /etc/docker/daemon.json
echo "Starting docker..."
sudo service docker start
echo "Service status:"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@
import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor;
import org.hibernate.exception.spi.ViolatedConstraintNameExtractor;
import org.hibernate.internal.util.JdbcExceptionHelper;
import org.hibernate.mapping.AggregateColumn;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.Table;
import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
import org.hibernate.procedure.internal.DB2CallableStatementSupport;
Expand All @@ -87,6 +89,8 @@
import org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorDB2DatabaseImpl;
import org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorNoOpImpl;
import org.hibernate.tool.schema.extract.spi.SequenceInformationExtractor;
import org.hibernate.tool.schema.internal.StandardTableExporter;
import org.hibernate.tool.schema.spi.Exporter;
import org.hibernate.type.JavaObjectType;
import org.hibernate.type.SqlTypes;
import org.hibernate.type.StandardBasicTypes;
Expand All @@ -96,6 +100,7 @@
import org.hibernate.type.descriptor.jdbc.CharJdbcType;
import org.hibernate.type.descriptor.jdbc.ClobJdbcType;
import org.hibernate.type.descriptor.jdbc.InstantJdbcType;
import org.hibernate.type.descriptor.jdbc.JdbcType;
import org.hibernate.type.descriptor.jdbc.LocalDateJdbcType;
import org.hibernate.type.descriptor.jdbc.LocalDateTimeJdbcType;
import org.hibernate.type.descriptor.jdbc.LocalTimeJdbcType;
Expand Down Expand Up @@ -154,6 +159,17 @@ public class DB2LegacyDialect extends Dialect {
? LegacyDB2LimitHandler.INSTANCE
: DB2LimitHandler.INSTANCE;
private final UniqueDelegate uniqueDelegate = createUniqueDelegate();
private final StandardTableExporter db2TableExporter = new StandardTableExporter( this ) {
@Override
protected void applyAggregateColumnCheck(StringBuilder buf, AggregateColumn aggregateColumn) {
final JdbcType jdbcType = aggregateColumn.getType().getJdbcType();
if ( jdbcType.isLob() || jdbcType.isXml() ) {
// LOB or XML columns can't have check constraints
return;
}
super.applyAggregateColumnCheck( buf, aggregateColumn );
}
};

public DB2LegacyDialect() {
this( DatabaseVersion.make( 9, 0 ) );
Expand Down Expand Up @@ -189,6 +205,11 @@ public DatabaseVersion getDB2Version() {
return this.getVersion();
}

@Override
public Exporter<Table> getTableExporter() {
return this.db2TableExporter;
}

@Override
public int getDefaultStatementBatchSize() {
return 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@
import org.hibernate.exception.spi.ViolatedConstraintNameExtractor;
import org.hibernate.internal.util.JdbcExceptionHelper;
import org.hibernate.internal.util.StringHelper;
import org.hibernate.mapping.AggregateColumn;
import org.hibernate.mapping.CheckConstraint;
import org.hibernate.mapping.Table;
import org.hibernate.mapping.UserDefinedType;
import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
Expand Down Expand Up @@ -81,6 +83,7 @@
import org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorOracleDatabaseImpl;
import org.hibernate.tool.schema.extract.spi.ColumnTypeInformation;
import org.hibernate.tool.schema.extract.spi.SequenceInformationExtractor;
import org.hibernate.tool.schema.internal.StandardTableExporter;
import org.hibernate.tool.schema.spi.Exporter;
import org.hibernate.type.JavaObjectType;
import org.hibernate.type.NullType;
Expand Down Expand Up @@ -172,6 +175,17 @@ public class OracleLegacyDialect extends Dialect {
private final OracleUserDefinedTypeExporter userDefinedTypeExporter = new OracleUserDefinedTypeExporter( this );
private final UniqueDelegate uniqueDelegate = new CreateTableUniqueDelegate(this);
private final SequenceSupport oracleSequenceSupport = OracleSequenceSupport.getInstance(this);
private final StandardTableExporter oracleTableExporter = new StandardTableExporter( this ) {
@Override
protected void applyAggregateColumnCheck(StringBuilder buf, AggregateColumn aggregateColumn) {
final JdbcType jdbcType = aggregateColumn.getType().getJdbcType();
if ( dialect.getVersion().isBefore( 23, 6 ) && jdbcType.isXml() ) {
// ORA-00600 when selecting XML columns that have a check constraint was fixed in 23.6
return;
}
super.applyAggregateColumnCheck( buf, aggregateColumn );
}
};

public OracleLegacyDialect() {
this( DatabaseVersion.make( 8, 0 ) );
Expand Down Expand Up @@ -503,6 +517,8 @@ public String castPattern(CastType from, CastType to) {
return "to_timestamp_tz(?1,'YYYY-MM-DD HH24:MI:SS.FF9 TZR')";
}
break;
case XML:
return "xmlparse(document ?1)";
}
return super.castPattern(from, to);
}
Expand Down Expand Up @@ -1042,6 +1058,11 @@ public SequenceSupport getSequenceSupport() {
return oracleSequenceSupport;
}

@Override
public Exporter<Table> getTableExporter() {
return oracleTableExporter;
}

@Override
public String getQuerySequencesString() {
return "select * from all_sequences";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@
import org.hibernate.exception.spi.TemplatedViolatedConstraintNameExtractor;
import org.hibernate.exception.spi.ViolatedConstraintNameExtractor;
import org.hibernate.internal.util.JdbcExceptionHelper;
import org.hibernate.mapping.AggregateColumn;
import org.hibernate.mapping.Table;
import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
import org.hibernate.procedure.internal.PostgreSQLCallableStatementSupport;
Expand All @@ -76,6 +78,8 @@
import org.hibernate.sql.ast.tree.Statement;
import org.hibernate.sql.exec.spi.JdbcOperation;
import org.hibernate.tool.schema.extract.spi.ColumnTypeInformation;
import org.hibernate.tool.schema.internal.StandardTableExporter;
import org.hibernate.tool.schema.spi.Exporter;
import org.hibernate.type.JavaObjectType;
import org.hibernate.type.descriptor.java.PrimitiveByteArrayJavaType;
import org.hibernate.type.descriptor.jdbc.BlobJdbcType;
Expand Down Expand Up @@ -143,6 +147,17 @@ public class PostgreSQLLegacyDialect extends Dialect {

protected final PostgreSQLDriverKind driverKind;
private final UniqueDelegate uniqueDelegate = new CreateTableUniqueDelegate(this);
private final StandardTableExporter postgresqlTableExporter = new StandardTableExporter( this ) {
@Override
protected void applyAggregateColumnCheck(StringBuilder buf, AggregateColumn aggregateColumn) {
final JdbcType jdbcType = aggregateColumn.getType().getJdbcType();
if ( jdbcType.isXml() ) {
// Requires the use of xmltable which is not supported in check constraints
return;
}
super.applyAggregateColumnCheck( buf, aggregateColumn );
}
};

public PostgreSQLLegacyDialect() {
this( DatabaseVersion.make( 8, 0 ) );
Expand Down Expand Up @@ -1536,6 +1551,11 @@ public UniqueDelegate getUniqueDelegate() {
return uniqueDelegate;
}

@Override
public Exporter<Table> getTableExporter() {
return postgresqlTableExporter;
}

/**
* @return {@code true}, but only because we can "batch" truncate
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,10 @@
import org.hibernate.exception.spi.ViolatedConstraintNameExtractor;
import org.hibernate.internal.util.JdbcExceptionHelper;
import org.hibernate.internal.util.StringHelper;
import org.hibernate.mapping.AggregateColumn;
import org.hibernate.mapping.CheckConstraint;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.Table;
import org.hibernate.query.sqm.CastType;
import org.hibernate.query.common.FetchClauseType;
import org.hibernate.query.sqm.IntervalType;
Expand All @@ -68,6 +70,7 @@
import org.hibernate.sql.ast.tree.Statement;
import org.hibernate.sql.exec.spi.JdbcOperation;
import org.hibernate.tool.schema.internal.StandardSequenceExporter;
import org.hibernate.tool.schema.internal.StandardTableExporter;
import org.hibernate.tool.schema.spi.Exporter;
import org.hibernate.type.BasicType;
import org.hibernate.type.BasicTypeRegistry;
Expand Down Expand Up @@ -142,6 +145,17 @@ public Size resolveSize(
}
}
};
private final StandardTableExporter sqlServerTableExporter = new StandardTableExporter( this ) {
@Override
protected void applyAggregateColumnCheck(StringBuilder buf, AggregateColumn aggregateColumn) {
final JdbcType jdbcType = aggregateColumn.getType().getJdbcType();
if ( jdbcType.isXml() ) {
// XML columns can't have check constraints
return;
}
super.applyAggregateColumnCheck( buf, aggregateColumn );
}
};


public SQLServerLegacyDialect() {
Expand Down Expand Up @@ -1165,6 +1179,11 @@ public UniqueDelegate getUniqueDelegate() {
return uniqueDelegate;
}

@Override
public Exporter<Table> getTableExporter() {
return this.sqlServerTableExporter;
}

@Override
public Exporter<Sequence> getSequenceExporter() {
if ( exporter == null ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import org.hibernate.dialect.DatabaseVersion;
import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.SybaseDriverKind;
import org.hibernate.dialect.aggregate.AggregateSupport;
import org.hibernate.dialect.aggregate.SybaseASEAggregateSupport;
import org.hibernate.dialect.function.CommonFunctionFactory;
import org.hibernate.dialect.pagination.LimitHandler;
import org.hibernate.dialect.pagination.TopLimitHandler;
Expand Down Expand Up @@ -228,6 +230,11 @@ protected <T extends JdbcOperation> SqlAstTranslator<T> buildTranslator(
};
}

@Override
public AggregateSupport getAggregateSupport() {
return SybaseASEAggregateSupport.valueOf( this );
}

/**
* The Sybase ASE {@code BIT} type does not allow
* null values, so we don't use it.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@

import static org.hibernate.cfg.AvailableSettings.JPA_COMPLIANCE;
import static org.hibernate.cfg.AvailableSettings.WRAPPER_ARRAY_HANDLING;
import static org.hibernate.cfg.MappingSettings.XML_FORMAT_MAPPER_LEGACY_FORMAT;
import static org.hibernate.engine.config.spi.StandardConverters.BOOLEAN;
import static org.hibernate.internal.util.StringHelper.nullIfEmpty;

Expand Down Expand Up @@ -652,6 +653,7 @@ public static class MetadataBuildingOptionsImpl
private final String schemaCharset;
private final boolean xmlMappingEnabled;
private final boolean allowExtensionsInCdi;
private final boolean xmlFormatMapperLegacyFormat;

public MetadataBuildingOptionsImpl(StandardServiceRegistry serviceRegistry) {
this.serviceRegistry = serviceRegistry;
Expand All @@ -670,6 +672,7 @@ public MetadataBuildingOptionsImpl(StandardServiceRegistry serviceRegistry) {
BOOLEAN,
true
);
xmlFormatMapperLegacyFormat = configService.getSetting( XML_FORMAT_MAPPER_LEGACY_FORMAT, BOOLEAN, false );

implicitDiscriminatorsForJoinedInheritanceSupported = configService.getSetting(
AvailableSettings.IMPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS,
Expand Down Expand Up @@ -954,6 +957,11 @@ public boolean isAllowExtensionsInCdi() {
return allowExtensionsInCdi;
}

@Override
public boolean isXmlFormatMapperLegacyFormatEnabled() {
return xmlFormatMapperLegacyFormat;
}

/**
* Yuck. This is needed because JPA lets users define "global building options"
* in {@code orm.xml} mappings. Forget that there are generally multiple
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ public class SessionFactoryOptionsBuilder implements SessionFactoryOptions {
private Object validatorFactoryReference;
private FormatMapper jsonFormatMapper;
private FormatMapper xmlFormatMapper;
private final boolean xmlFormatMapperLegacyFormatEnabled;

// SessionFactory behavior
private final boolean jpaBootstrap;
Expand Down Expand Up @@ -326,7 +327,8 @@ public SessionFactoryOptionsBuilder(StandardServiceRegistry serviceRegistry, Boo
);
this.xmlFormatMapper = determineXmlFormatMapper(
configurationSettings.get( AvailableSettings.XML_FORMAT_MAPPER ),
strategySelector
strategySelector,
this.xmlFormatMapperLegacyFormatEnabled = context.getMetadataBuildingOptions().isXmlFormatMapperLegacyFormatEnabled()
);

this.sessionFactoryName = (String) configurationSettings.get( SESSION_FACTORY_NAME );
Expand Down Expand Up @@ -892,13 +894,13 @@ private static FormatMapper determineJsonFormatMapper(Object setting, StrategySe
);
}

private static FormatMapper determineXmlFormatMapper(Object setting, StrategySelector strategySelector) {
private static FormatMapper determineXmlFormatMapper(Object setting, StrategySelector strategySelector, boolean legacyFormat) {
return strategySelector.resolveDefaultableStrategy(
FormatMapper.class,
setting,
(Callable<FormatMapper>) () -> {
final FormatMapper jacksonFormatMapper = getXMLJacksonFormatMapperOrNull();
return jacksonFormatMapper != null ? jacksonFormatMapper : new JaxbXmlFormatMapper();
final FormatMapper jacksonFormatMapper = getXMLJacksonFormatMapperOrNull( legacyFormat );
return jacksonFormatMapper != null ? jacksonFormatMapper : new JaxbXmlFormatMapper( legacyFormat );
}
);
}
Expand Down Expand Up @@ -1358,6 +1360,11 @@ public FormatMapper getXmlFormatMapper() {
return xmlFormatMapper;
}

@Override
public boolean isXmlFormatMapperLegacyFormatEnabled() {
return xmlFormatMapperLegacyFormatEnabled;
}

@Override
public boolean isPassProcedureParameterNames() {
return passProcedureParameterNames;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,4 +182,9 @@ public boolean isXmlMappingEnabled() {
public boolean isAllowExtensionsInCdi() {
return delegate.isAllowExtensionsInCdi();
}

@Override
public boolean isXmlFormatMapperLegacyFormatEnabled() {
return delegate.isXmlFormatMapperLegacyFormatEnabled();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,11 @@ public FormatMapper getXmlFormatMapper() {
return delegate.getXmlFormatMapper();
}

@Override
public boolean isXmlFormatMapperLegacyFormatEnabled() {
return delegate.isXmlFormatMapperLegacyFormatEnabled();
}

@Override
public boolean isPassProcedureParameterNames() {
return delegate.isPassProcedureParameterNames();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import java.util.List;

import org.hibernate.Incubating;
import org.hibernate.TimeZoneStorageStrategy;
import org.hibernate.boot.model.naming.ImplicitNamingStrategy;
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
Expand Down Expand Up @@ -144,6 +145,15 @@ default CollectionSemanticsResolver getPersistentCollectionRepresentationResolve
*/
boolean isMultiTenancyEnabled();

/**
* Whether to use the legacy format for serializing/deserializing XML data.
*
* @since 7.0
* @see org.hibernate.cfg.MappingSettings#XML_FORMAT_MAPPER_LEGACY_FORMAT
*/
@Incubating
boolean isXmlFormatMapperLegacyFormatEnabled();

/**
* @return the {@link TypeConfiguration} belonging to the {@link BootstrapContext}
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,15 @@ default boolean isCollectionsInDefaultFetchGroupEnabled() {
@Incubating
FormatMapper getXmlFormatMapper();

/**
* Whether to use the legacy format for serializing/deserializing XML data.
*
* @since 7.0
* @see org.hibernate.cfg.MappingSettings#XML_FORMAT_MAPPER_LEGACY_FORMAT
*/
@Incubating
boolean isXmlFormatMapperLegacyFormatEnabled();

/**
* The default tenant identifier java type to use, in case no explicit tenant identifier property is defined.
*
Expand Down
Loading
Loading