Update of /cvsroot/hibernate/Hibernate3/src/org/hibernate/hql/ast/exec In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2993/src/org/hibernate/hql/ast/exec Modified Files: Tag: Branch_3_1 AbstractStatementExecutor.java MultiTableDeleteExecutor.java MultiTableUpdateExecutor.java Log Message: HHH-1419 : bulk deletes/updates, subqueries and column qualifications Index: AbstractStatementExecutor.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/src/org/hibernate/hql/ast/exec/AbstractStatementExecutor.java,v retrieving revision 1.6 retrieving revision 1.6.2.1 diff -u -d -r1.6 -r1.6.2.1 --- AbstractStatementExecutor.java 20 Jan 2006 12:57:29 -0000 1.6 +++ AbstractStatementExecutor.java 10 Feb 2006 17:28:40 -0000 1.6.2.1 @@ -50,9 +50,8 @@ protected abstract Queryable[] getAffectedQueryables(); - protected String generateIdInsertSelect(Queryable persister, AST whereClause) { + protected String generateIdInsertSelect(Queryable persister, String tableAlias, AST whereClause) { Select select = new Select( getFactory().getDialect() ); - String tableAlias = "bulk_target"; SelectFragment selectFragment = new SelectFragment() .addColumns( tableAlias, persister.getIdentifierColumnNames(), persister.getIdentifierColumnNames() ); select.setSelectClause( selectFragment.toFragmentString().substring( 2 ) ); Index: MultiTableDeleteExecutor.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/src/org/hibernate/hql/ast/exec/MultiTableDeleteExecutor.java,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -d -r1.3 -r1.3.2.1 --- MultiTableDeleteExecutor.java 21 Nov 2005 17:02:24 -0000 1.3 +++ MultiTableDeleteExecutor.java 10 Feb 2006 17:28:41 -0000 1.3.2.1 @@ -41,9 +41,10 @@ DeleteStatement deleteStatement = ( DeleteStatement ) walker.getAST(); FromElement fromElement = deleteStatement.getFromClause().getFromElement(); + String bulkTargetAlias = fromElement.getTableAlias(); this.persister = fromElement.getQueryable(); - this.idInsertSelect = generateIdInsertSelect( persister, ( ( DeleteStatement ) walker.getAST() ).getWhereClause() ); + this.idInsertSelect = generateIdInsertSelect( persister, bulkTargetAlias, deleteStatement.getWhereClause() ); log.trace( "Generated ID-INSERT-SELECT SQL (multi-table delete) : " + idInsertSelect ); String[] tableNames = persister.getConstraintOrderedTableNameClosure(); Index: MultiTableUpdateExecutor.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate3/src/org/hibernate/hql/ast/exec/MultiTableUpdateExecutor.java,v retrieving revision 1.4 retrieving revision 1.4.2.1 diff -u -d -r1.4 -r1.4.2.1 --- MultiTableUpdateExecutor.java 21 Nov 2005 17:02:24 -0000 1.4 +++ MultiTableUpdateExecutor.java 10 Feb 2006 17:28:41 -0000 1.4.2.1 @@ -45,9 +45,10 @@ UpdateStatement updateStatement = ( UpdateStatement ) walker.getAST(); FromElement fromElement = updateStatement.getFromClause().getFromElement(); + String bulkTargetAlias = fromElement.getTableAlias(); this.persister = fromElement.getQueryable(); - this.idInsertSelect = generateIdInsertSelect( persister, updateStatement.getWhereClause() ); + this.idInsertSelect = generateIdInsertSelect( persister, bulkTargetAlias, updateStatement.getWhereClause() ); log.trace( "Generated ID-INSERT-SELECT SQL (multi-table update) : " + idInsertSelect ); String[] tableNames = persister.getConstraintOrderedTableNameClosure(); |