René Link created OPENJPA-2390:
----------------------------------

             Summary: HSQLDB SELECT NEXT VALUE FOR Sequence will skip 1 
sequence value if allocation size is 1
                 Key: OPENJPA-2390
                 URL: https://issues.apache.org/jira/browse/OPENJPA-2390
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc
    Affects Versions: 2.2.1
            Reporter: René Link
         Attachments: HSQLSequenceTest.java

The HSQLDictionary sets the DBDictionary.nextSequenceQuery to "SELECT NEXT 
VALUE FOR {0} FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES" when the HSQLDictionary 
is initialized.

The NativeJDBCSeq uses
 _select = MessageFormat.format(format, new Object[]{name, 
String.valueOf(_allocate * _increment)});
to build the select next value sql. The format is pased 2 arguments "name" and 
"_allocate * _increment"
but the second is not honored by the nextSequenceQuery.

So when the allocation size is set to 1 the hsqldb nextSequenceQuery statement 
will return 2 next values
anyway. That is why always one next value will be skipped... 1, 3, 5, 7, and so 
on.

The nextSequenceQuery should be set with an limit. E.g.
"SELECT NEXT VALUE FOR {0} FROM INFORMATION_SCHEMA.SYSTEM_SEQUENCES LIMIT {1}"

I will attatch an unit test that uses in memory hsqldb to show the problem soon.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to