@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); return new TableBasedUpdateHandlerImpl( factory, walker, getIdTableInfo( targetedPersister ) ) { @Override protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session) { if ( afterUseAction == AfterUseAction.NONE ) { return; } // clean up our id-table rows cleanUpRows( getIdTableInfo( persister ).getQualifiedIdTableName(), session ); } }; }
@Override protected void prepareVersioned(AST updateNode, AST versioned) throws SemanticException { UpdateStatement updateStatement = (UpdateStatement) updateNode; FromClause fromClause = updateStatement.getFromClause(); if ( versioned != null ) { AST setClause = updateStatement.getSetClause(); AST currentFirstSetElement = setClause.getFirstChild(); setClause.setFirstChild( eq );
final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final ProcessedWhereClause processedWhereClause = processWhereClause( updateStatement.getWhereClause() ); this.idSelectParameterSpecifications = processedWhereClause.getIdSelectParameterSpecifications(); this.idInsertSelect = generateIdInsertSelect( bulkTargetAlias, idTableInfo, processedWhereClause );
@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); return new UpdateHandlerImpl( factory, walker, getIdTableInfo( targetedPersister ) ); }
@Override protected void prepareVersioned(AST updateNode, AST versioned) throws SemanticException { UpdateStatement updateStatement = ( UpdateStatement ) updateNode; FromClause fromClause = updateStatement.getFromClause(); if ( versioned != null ) { AST setClause = updateStatement.getSetClause(); AST currentFirstSetElement = setClause.getFirstChild(); setClause.setFirstChild( eq );
FromElement fromElement = updateStatement.getFromClause().getFromElement(); String bulkTargetAlias = fromElement.getTableAlias(); this.persister = fromElement.getQueryable(); this.idInsertSelect = generateIdInsertSelect( persister, bulkTargetAlias, updateStatement.getWhereClause() ); LOG.tracev( "Generated ID-INSERT-SELECT SQL (multi-table update) : {0}", idInsertSelect );
@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final Queryable targetedPersister = fromElement.getQueryable(); final IdTableInfoImpl tableInfo = getIdTableInfo( targetedPersister ); return new TableBasedUpdateHandlerImpl( factory, walker, tableInfo ) { @Override protected void prepareForUse(Queryable persister, SharedSessionContractImplementor session) { Helper.INSTANCE.createTempTable( tableInfo, ddlTransactionHandling, session ); } @Override protected void releaseFromUse(Queryable persister, SharedSessionContractImplementor session) { Helper.INSTANCE.releaseTempTable( tableInfo, afterUseAction, ddlTransactionHandling, session ); } }; }
@Override protected void prepareVersioned(AST updateNode, AST versioned) throws SemanticException { UpdateStatement updateStatement = ( UpdateStatement ) updateNode; FromClause fromClause = updateStatement.getFromClause(); if ( versioned != null ) { AST setClause = updateStatement.getSetClause(); AST currentFirstSetElement = setClause.getFirstChild(); setClause.setFirstChild( eq );
FromElement fromElement = updateStatement.getFromClause().getFromElement(); String bulkTargetAlias = fromElement.getTableAlias(); this.persister = fromElement.getQueryable(); this.idInsertSelect = generateIdInsertSelect( persister, bulkTargetAlias, updateStatement.getWhereClause() ); LOG.tracev( "Generated ID-INSERT-SELECT SQL (multi-table update) : {0}", idInsertSelect );
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
FromElement fromElement = updateStatement.getFromClause().getFromElement(); AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); String[] tableNames = targetedPersister.getConstraintOrderedTableNameClosure();
@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { UpdateHandler updateHandler = delegate.buildUpdateHandler(factory, walker); final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); // Only do this when we have secondary tables if (targetedPersister.getConstraintOrderedTableNameClosure().length > 1) { if (updateHandler instanceof TableBasedUpdateHandlerImpl) { return new CustomTableBasedUpdateHandlerImpl((TableBasedUpdateHandlerImpl) updateHandler, walker); } else { LOG.warning("Unsupported update handler that can't be adapted to support updates to secondary tables: " + updateHandler); } } return updateHandler; }
@Override public UpdateHandler buildUpdateHandler(SessionFactoryImplementor factory, HqlSqlWalker walker) { UpdateHandler updateHandler = delegate.buildUpdateHandler(factory, walker); final UpdateStatement updateStatement = (UpdateStatement) walker.getAST(); final FromElement fromElement = updateStatement.getFromClause().getFromElement(); final AbstractEntityPersister targetedPersister = (AbstractEntityPersister) fromElement.getQueryable(); // Only do this when we have secondary tables if (targetedPersister.getConstraintOrderedTableNameClosure().length > 1) { if (updateHandler instanceof TableBasedUpdateHandlerImpl) { return new CustomTableBasedUpdateHandlerImpl((TableBasedUpdateHandlerImpl) updateHandler, walker); } else { LOG.warning("Unsupported update handler that can't be adapted to support updates to secondary tables: " + updateHandler); } } return updateHandler; }