Patrick, we just discovered that there is a problem with this fix.Theproblem is that the FOR READ ONLY flag is getting generated for subselects as well.
Basically for DB2 if forUpdate was false we append FOR READ ONLY we need another check to see that it is not a subselect.To me it appears that in the toSelect method when SelectImpl is passed we check that the parent is null or not to figure out that it is a subselect and then pass another flag subselect to the getForUdateClause method where we say if(!forUpdate && !subselect) forUpdateString.append(forReadOnlyClause) to achieve this we would probably have to override the toSelect methods in DB2Dictionary again unless there is a better way. On 4/10/07, Patrick Linskey <[EMAIL PROTECTED]> wrote:
As long as any given enum instance that corresponds to a theoretically-unique enum value has internally-consistent state, we should be in good shape. IOW, if the enum constructors are called appropriately or internal state is otherwise maintained, then things should work out fine. -Patrick -- Patrick Linskey BEA Systems, Inc. _______________________________________________________________________ Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it. > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Sent: Tuesday, April 10, 2007 4:56 PM > To: open-jpa-dev@incubator.apache.org > Subject: Re: OPENJPA-182: reuse Connection constants or > create our own? > > It should be ok anyway in the same VM. Unfortunately I had > conflicting messages > on weather it's the name or the ordinal that is guaranteed to > work across the > VMs :(. > > -marina > > Patrick Linskey wrote: > > Fascinating. Happily, as it turns out, we never compare these things > > directly; instead, we extract a value from the enums and > use that. The > > value is populated in the enum constructor: > > > > public enum IsolationLevel { > > DEFAULT(-1), > > NONE(Connection.TRANSACTION_NONE), > > READ_UNCOMMITTED(Connection.TRANSACTION_READ_UNCOMMITTED), > > READ_COMMITTED(Connection.TRANSACTION_READ_COMMITTED), > > REPEATABLE_READ(Connection.TRANSACTION_REPEATABLE_READ), > > SERIALIZABLE(Connection.TRANSACTION_SERIALIZABLE); > > > > private final int _connectionConstant; > > > > private IsolationLevel(int connectionConstant) { > > _connectionConstant = connectionConstant; > > } > > > > protected int getConnectionConstant() { > > return _connectionConstant; > > } > > } > > > > Do you know if the getConnectionConstant() method would > return the same > > value for different instances of the "same" module? > > > > -Patrick > > > > Notice: This email message, together with any attachments, may contain information of BEA Systems, Inc., its subsidiaries and affiliated entities, that may be confidential, proprietary, copyrighted and/or legally privileged, and is intended solely for the use of the individual or entity named in this message. If you are not the intended recipient, and have received this message in error, please immediately return this by email and then delete it.