Issue Details (XML | Word | Printable)

Key: OPENJPA-182
Type: New Feature New Feature
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Unassigned
Reporter: David Wisneski
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
OpenJPA

db2 update lock syntax WITH <isolation> USE AND KEEP UPDATE LOCKS

Created: 26/Mar/07 05:22 PM   Updated: 18/Apr/07 08:22 PM
Return to search
Component/s: jdbc
Affects Version/s: None
Fix Version/s: 0.9.7

Time Tracking:
Not Specified

File Attachments:
  Size
Text File JIRA182-subselect.patch 2007-04-17 09:43 PM Ritika Maheshwari 3 kB
Text File Licensed for inclusion in ASF works OPENJPA-182.patch 2007-04-06 06:45 PM Patrick Linskey 4 kB
Text File Licensed for inclusion in ASF works OPENJPA-182.patch 2007-04-04 11:49 PM Patrick Linskey 14 kB
Text File openJPA182.patch 2007-03-28 09:58 PM Ritika Maheshwari 13 kB
Java Archive File openjpa182TestCase.jar 2007-04-05 09:06 PM Ritika Maheshwari 1 kB
Environment: db2 database driver for zOS, AS400, Unix, Windows, Linux
Issue Links:
Reference
 

Resolution Date: 06/Apr/07 11:54 PM


 Description  « Hide
A while back we changed the syntax of update locking from FOR UPDATE OF to WITH RS USE AND KEEP UPDATE LOCKS. Additional changes are required because
1. if isolation=serializable is configured, then the syntax should be WITH RR USE AND KEEP UDPATE LOCKS
2. when using DB2/400 on iSeries machines, the syntax is WITH RS USE AND KEEP EXCLUSIVE LOCKS or WITH RR USE AND KEEP EXCLUSIVE LOCKS because DB2/400 only supports read or exclusive locks.
3. DB2 supports both a FETCH FIRST ROWS and update LOCKS clauses.

So we change supportsLockingWithSelectRange = true in the AbstractDB2Dictionary class and change the DB2Dictionary to append the correct LOCKS syntax depending on vendor, release and isolation level.

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Repository Revision Date User Message
ASF #525252 Tue Apr 03 19:34:59 UTC 2007 wisneskid changes for JIRA OPENJPA-182
Files Changed
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/AbstractDB2Dictionary.java

Repository Revision Date User Message
ASF #525262 Tue Apr 03 20:24:39 UTC 2007 wisneskid fix to OPENJPA-182 commit
Files Changed
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java

Repository Revision Date User Message
ASF #525602 Wed Apr 04 21:02:51 UTC 2007 wisneskid removing unneeded method in OPENJPA-182 fix
Files Changed
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java

Repository Revision Date User Message
ASF #525997 Thu Apr 05 22:55:52 UTC 2007 pcl OPENJPA-182. Moved to API-based model. Query.setHint() can still be used via the query hint => fetch plan binding.

Removed the logic to override the forUpdate value, since the calling code already incorporates fetch configuration data into its decision about how to invoke toSelect(). Added a test case to assert this behavior.

Also cleaned up some minor whitespace issues, and reduced code duplication by moving a couple of concepts up into DBDictionary. Removed some seemingly-unnecessary overrides from H2Dictionary.

Added a test case for isolation level configuration. For non-DB2 dictionaries, it asserts that an exception is thrown during execution. Someone with DB2 knowledge / access should fill in the test case for the DB2 cases. As we add support for per-query isolation level configuration for other databases, we should change this test case.
Files Changed
ADD /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/DelegatingJDBCFetchConfiguration.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/H2Dictionary.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfiguration.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfigurationImpl.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/sql/localizer.properties
ADD /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/TestIsolationLevelOverride.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlan.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlanImpl.java
ADD /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/TestSelectForUpdateOverride.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HSQLDictionary.java

Repository Revision Date User Message
ASF #526212 Fri Apr 06 16:08:27 UTC 2007 pcl OPENJPA-182
Files Changed
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfigurationImpl.java

Repository Revision Date User Message
ASF #526266 Fri Apr 06 19:50:53 UTC 2007 pcl OPENJPA-182. forUpdateClause is now used even if forUpdate is false, to allow for read-only optimizations. Changed JDBCFetchPlan.setIsolationLevel and JDBCFetchConfiguration.setIsolationLevel to just JDBCFetchXXX.setIsolation.
Files Changed
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/DelegatingJDBCFetchConfiguration.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfiguration.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCFetchConfigurationImpl.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/TestIsolationLevelOverride.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlan.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlanImpl.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/HSQLDictionary.java

Repository Revision Date User Message
ASF #526316 Fri Apr 06 23:22:06 UTC 2007 pcl OPENJPA-182. Changed JDBCFetchPlan.setIsolation() to use enums; added logic to handle enum hints to QueryImpl; moved from IllegalArgumentException to InvalidArgumentException to unify exception processing for both queries and find calls.
Files Changed
ADD /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/IsolationLevel.java
MODIFY /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/TestIsolationLevelOverride.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlan.java
MODIFY /incubator/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/JDBCFetchPlanImpl.java