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();
|