Description

Hello, I'm getting the following:

java.lang.ArrayIndexOutOfBoundsException: 2
at org.apache.openjpa.meta.ClassMetaData.getExtraFieldDataIndex(ClassMetaData.java:859)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:358)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:278)
at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774)
at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:982)
at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:278)
at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2400)
at org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.loadEagerJoin(RelationFieldStrategy.java:541)
at org.apache.openjpa.jdbc.meta.FieldMapping.loadEagerJoin(FieldMapping.java:807)--

I've attached a unit test that exposes it. I've done my best to pare things down but it seems anything else I remove makes it go away (there are several things that could be removed to make it go away). The unit test passes when the exception is thrown.

The test case runs against PostgreSQL. I would really appreciate it if someone could verify the test passes under some other database or if it fails, under PostgreSQL. Of course it would be even better if an OpenJPA expert could find the problem.

I will also accept suggestions for building a better unit test package.

Daryl Stultz
added a comment - 10/Dec/09 18:39 Unit test. Probably not a well-written one. I'm open to suggestions to improve it.
I run against PostgreSQL. The file database/create_jpa.sql can be used to build the database (called from the file database/build.sh).

I'm attaching a patch (OPENJPA-1424-1.2.x.patch.txt) for 1.2.x. This patch contains:

1) A back port of ClassMedaData from the trunk version of the fix. This is the only change from trunk which I back ported.....the other change doesn't easily port and the initial test case passes with the ClassMetaData changes.
2) A stripped down version of the initial test case provided by Daryl. I think I've stripped down the test as far as I can (any further and I couldn't reproduce the issue).

Heath Thomann
added a comment - 12/Aug/10 04:08 I'm attaching a patch ( OPENJPA-1424 -1.2.x.patch.txt) for 1.2.x. This patch contains:
1) A back port of ClassMedaData from the trunk version of the fix. This is the only change from trunk which I back ported.....the other change doesn't easily port and the initial test case passes with the ClassMetaData changes.
2) A stripped down version of the initial test case provided by Daryl. I think I've stripped down the test as far as I can (any further and I couldn't reproduce the issue).
Thanks,
Heath

Michael Dick
added a comment - 16/Aug/10 14:15 Technically this was fixed in 2.0.0 - but it missed the release notes. I've targeted for 2.0.1, and 2.1.0 - so it'll be picked up in their release notes and changes.txt.