Hi Mark,
I've just run the PooledHiLoSequenceIdentifierTest test after modifying the
TABLE to SEQUENCE to see how it works and this is what I found:
1. SchemaCreatorImpl calls String[] getCreateSequenceStrings(String
sequenceName, int initialValue, int incrementSize)
2. The String getCreateSequenceString(String sequenceName, int initialValue,
int incrementSize) is then called which does this:
if ( supportsPooledSequences() ) {
return getCreateSequenceString( sequenceName ) + " start with " +
initialValue + " increment by " + incrementSize;
}
throw new MappingException( getClass().getName() + " does not support
pooled sequences" );
Now, this method is overridden in PostgreSQL and HSQLDB dialects.
I think we should create the sequence generator as indicated in this
Firebird documentation:
http://firebirdsql.org/manual/generatorguide-sqlsyntax.html
Shouldn't we use GEN_ID for the pooled optimizers?
Vlad
On Thu, Jul 28, 2016 at 12:54 PM, Mark Rotteveel <mark(a)lawinegevaar.nl>
wrote:
I'm working on improving support for Firebird in Hibernate, and I
have
run into a problem where
org.hibernate.tool.schema.internal.SchemaCreatorImpl is always trying to
create a pooled sequence.
Specifically:
applySqlStrings(
dialect.getCreateSequenceStrings(
jdbcEnvironment.getQualifiedObjectNameFormatter().format(
sequence.getName(), dialect ),
sequence.getInitialValue(),
sequence.getIncrementSize()
),
formatter,
options,
targets
);
With the default implementation this results in a
org.hibernate.MappingException: org.hibernate.dialect.FirebirdDialect
does not support pooled sequences (or at least: not by specifying it in
the DDL).
I'd like to know if I should just override
protected String getCreateSequenceString(String sequenceName, int
initialValue, int incrementSize)
and ignore the initialValue and incrementSize and just return the result
of getCreateSequenceString(sequenceName)
or if I should change the above code to call the deprecated(!) method
getCreateSequenceStrings(String sequenceName) is
supportsPooledSequences() is false:
dialect.supportsPooledSequences()
? dialect.getCreateSequenceStrings(
jdbcEnvironment.getQualifiedObjectNameFormatter().format(
sequence.getName(), dialect ),
sequence.getInitialValue(),
sequence.getIncrementSize()
) : dialect.getCreateSequenceStrings(
jdbcEnvironment.getQualifiedObjectNameFormatter().format(
sequence.getName(), dialect )
),
Kind regards,
Mark Rotteveel
--
Mark Rotteveel
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev