Hi Tom,
Please review the attached fix.
https://glassfish.dev.java.net/issues/show_bug.cgi?id=2744
The summary of fix:
DeleteAllQuery with temporary table should handle inheritance hierachy with
multiple tables similarly to DeleteAllQuery without temporary table.
However, unlike prepareDeleteAll() in ExpressionQueryMechanism
buildStatementsForDeleteAllForTempTables() which generates DELETE SQLs using
temporary table had not considered this. I fixed this by modifying
buildStatementsForDeleteAllForTempTables() to handle multiple table child
descriptors and many-to-many mappings like prepareDeleteAll(). The logic is
very similar to the one in prepareDeleteAll() which calls recursively itself
for child descriptors.
With this fix the following tests which had failed passes in MySQL.
Testcase: testDeleteAllProjectsWithNullTeamLeader took 0.045 sec
Testcase: testDeleteAllSmallProjectsWithNullTeamLeader took 0.046 sec
Testcase: testUpdateAllSmallProjects took 0.083 sec
Testcase: testUpdateAllLargeProjects took 0.082 sec
Testcase: testUpdateAllProjects took 0.096 sec
Testcase: testUpdateAllSmallProjectsWithName took 0.047 sec
Testcase: testUpdateAllLargeProjectsWithName took 0.031 sec
Testcase: testUpdateAllProjectsWithName took 0.034 sec
Testcase: testUpdateAllSmallProjectsWithNullTeamLeader took 0.031 sec
Testcase: testUpdateAllLargeProjectsWithNullTeamLeader took 0.033 sec
Testcase: testUpdateAllProjectsWithNullTeamLeader took 0.039 sec
Now all tests except one test are passing. The following test shows another
issue, which I will handle as a separate one.
Testcase: updateUnqualifiedAttributeInWhere took 1.822 sec
Caused an ERROR
Internal Exception:
com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException:
Duplicate entry '659' for key 1
Error Code: 1062
Call: INSERT INTO TL_CMP3_EMPLOYEE (EMP_ID, VERSION, F_NAME) SELECT
t2.EMP_ID, (t0.VERSION + ?), ? FROM CMP3_SALARY t3, CMP3_EMPLOYEE t2,
CMP3_SALARY t1, CMP3_EMPLOYEE t0 WHERE (((t2.F_NAME = ?) AND (t3.EMP_ID =
t2.EMP_ID)) AND (t1.EMP_ID = t0.EMP_ID))
bind => [1, CHANGED, Bob]
Thanks,
-Wonseok