public boolean isMatch(Dialect dialect) { return dialect.supportsRowValueConstructorSyntaxInInList(); } }
public boolean isMatch(Dialect dialect) { return dialect.supportsRowValueConstructorSyntaxInInList(); } }
public boolean isMatch(Dialect dialect) { return dialect.supportsValuesList() && dialect.supportsRowValueConstructorSyntaxInInList(); } }
public InlineIdsIdsInClauseDeleteHandlerImpl( SessionFactoryImplementor factory, HqlSqlWalker walker) { super( factory, walker ); Dialect dialect = factory.getServiceRegistry().getService( JdbcServices.class ).getDialect(); if ( !dialect.supportsRowValueConstructorSyntaxInInList() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support IN clause row-value expressions (for composite identifiers)!" ); } }
public InlineIdsInClauseUpdateHandlerImpl( SessionFactoryImplementor factory, HqlSqlWalker walker) { super( factory, walker ); Dialect dialect = factory.getServiceRegistry().getService( JdbcServices.class ).getDialect(); if ( !dialect.supportsRowValueConstructorSyntaxInInList() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support IN clause row-value expressions (for composite identifiers)!" ); } }
public boolean isMatch(Dialect dialect) { return dialect.supportsValuesList() && dialect.supportsNonQueryWithCTE() && dialect.supportsRowValueConstructorSyntaxInInList(); } }
if ( dialect.supportsRowValueConstructorSyntaxInInList() ) {
public InlineIdsSubSelectValuesListDeleteHandlerImpl( SessionFactoryImplementor factory, HqlSqlWalker walker) { super( factory, walker ); Dialect dialect = factory().getServiceRegistry().getService( JdbcServices.class ).getDialect(); if ( !dialect.supportsRowValueConstructorSyntaxInInList() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support IN clause row-value expressions (for composite identifiers)!" ); } if ( !dialect.supportsValuesList() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support VALUES lists!" ); } }
public InlineIdsSubSelectValuesListUpdateHandlerImpl( SessionFactoryImplementor factory, HqlSqlWalker walker) { super( factory, walker ); Dialect dialect = factory().getServiceRegistry().getService( JdbcServices.class ).getDialect(); if ( !dialect.supportsRowValueConstructorSyntaxInInList() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support IN clause row-value expressions (for composite identifiers)!" ); } if ( !dialect.supportsValuesList() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support VALUES lists!" ); } }
public AbstractCteValuesListBulkIdHandler( SessionFactoryImplementor sessionFactory, HqlSqlWalker walker, String catalog, String schema) { super( sessionFactory, walker ); Dialect dialect = sessionFactory.getServiceRegistry().getService( JdbcServices.class ).getDialect(); if ( !dialect.supportsNonQueryWithCTE() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support CTE that can take UPDATE or DELETE statements as well!" ); } if ( !dialect.supportsValuesList() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support VALUES lists!" ); } if ( !dialect.supportsRowValueConstructorSyntaxInInList() ) { throw new UnsupportedOperationException( "The " + getClass().getSimpleName() + " can only be used with Dialects that support IN clause row-value expressions (for composite identifiers)!" ); } this.jdbcEnvironment = sessionFactory.getServiceRegistry().getService( JdbcServices.class ).getJdbcEnvironment(); this.catalog = catalog; this.schema = schema; }
@Override public String toSqlString( Criteria criteria, CriteriaQuery criteriaQuery ) { final String[] columns = criteriaQuery.findColumns( propertyName, criteria ); if ( criteriaQuery.getFactory().getDialect().supportsRowValueConstructorSyntaxInInList() || columns.length <= 1 ) { String singleValueParam = StringHelper.repeat( "?, ", columns.length - 1 ) + "?"; if ( columns.length > 1 ) { singleValueParam = '(' + singleValueParam + ')'; } final String params = values.length > 0 ? StringHelper.repeat( singleValueParam + ", ", values.length - 1 ) + singleValueParam : ""; String cols = String.join( ", ", columns ); if ( columns.length > 1 ) { cols = '(' + cols + ')'; } return cols + " in (" + params + ')'; } else { String cols = " ( " + String.join( " = ? and ", columns ) + "= ? ) "; cols = values.length > 0 ? StringHelper.repeat( cols + "or ", values.length - 1 ) + cols : ""; cols = " ( " + cols + " ) "; return cols; } }
public static String expandBatchIdPlaceholder( String sql, Serializable[] ids, String alias, String[] keyColumnNames, Dialect dialect) { if ( keyColumnNames.length == 1 ) { // non-composite return StringHelper.replace( sql, BATCH_ID_PLACEHOLDER, repeat( "?", ids.length, "," ) ); } else { // composite if ( dialect.supportsRowValueConstructorSyntaxInInList() ) { final String tuple = "(" + StringHelper.repeat( "?", keyColumnNames.length, "," ) + ")"; return StringHelper.replace( sql, BATCH_ID_PLACEHOLDER, repeat( tuple, ids.length, "," ) ); } else { final String keyCheck = "(" + joinWithQualifierAndSuffix( keyColumnNames, alias, " = ?", " and " ) + ")"; return replace( sql, BATCH_ID_PLACEHOLDER, repeat( keyCheck, ids.length, " or " ) ); } } }
if ( sessionFactory.getDialect().supportsRowValueConstructorSyntaxInInList() ) { return;
@Override public boolean supportsRowValueConstructorSyntaxInInList() { return delegate.supportsRowValueConstructorSyntaxInInList(); }
@Override public boolean supportsRowValueConstructorSyntaxInInList() { return delegate.supportsRowValueConstructorSyntaxInInList(); }
@Override public boolean supportsRowValueConstructorSyntaxInInList() { return delegate.supportsRowValueConstructorSyntaxInInList(); }
@Override public boolean supportsRowValueConstructorSyntaxInInList() { return delegate.supportsRowValueConstructorSyntaxInInList(); }
@Override public boolean supportsRowValueConstructorSyntaxInInList() { return delegate.supportsRowValueConstructorSyntaxInInList(); }
@Override public boolean supportsRowValueConstructorSyntaxInInList() { return delegate.supportsRowValueConstructorSyntaxInInList(); }
@Override public boolean supportsRowValueConstructorSyntaxInInList() { return delegate.supportsRowValueConstructorSyntaxInInList(); }