[hibernate-dev] SchemaCreatorImpl always creating a poolable sequence

Steve Ebersole steve at hibernate.org
Sat Jul 30 08:51:59 EDT 2016


FYI... https://hibernate.atlassian.net/browse/HHH-11010

ATM I have this scheduled for 6.0.  In an ideal world we would have
performed these deprecations in 5.2 also and removed the deprecated methods
in 6.0.  I can certainly be convinced to do this deprecation in 5.2 however
:)


On Sat, Jul 30, 2016 at 7:11 AM Steve Ebersole <steve at hibernate.org> wrote:

> Moving this functionality into the Exporter is the correct answer.
> Eventually those DIalect methods will go away.
>
>
> On Sat, Jul 30, 2016 at 3:32 AM Mark Rotteveel <mark at lawinegevaar.nl>
> wrote:
>
>> On 28-7-2016 18:07, Steve Ebersole wrote:
>> > I do think this is an error.  I think the proper fix is to first
>> > make use of Exporter<Sequence>#getSqlCreateStrings via
>> > Dialect#getSequenceExporter.
>> >
>> > From there, either:
>> >
>> >  1. Change the standard Exporter<Sequence> to look at
>> >     Dialect#supportsPooledSequences and deciding which
>> >     Dialect#getCreateSequenceStrings form to call
>> >  2. Change Firebird's Exporter<Sequence> impl
>>
>> I have fixed the immediate problem by implementing the
>> getCreateSequenceStrings(String, int, int) and
>> getCreateSequenceString(String, int, int) as:
>>
>> @Override
>> public String[] getCreateSequenceStrings(String sequenceName, int
>> initialValue, int incrementSize) throws MappingException {
>>      return new String[] {
>>          getCreateSequenceString( sequenceName, initialValue,
>> incrementSize ),
>>          "alter sequence " + sequenceName + " restart with " +
>> (initialValue - 1)
>>      };
>> }
>>
>> @Override
>> protected String getCreateSequenceString(String sequenceName, int
>> initialValue, int incrementSize)
>>          throws MappingException {
>>      if (incrementSize > 1) {
>>          throw new MappingException( getClass().getName() + " does not
>> support pooled sequences" );
>>      }
>>      // Ignore initialValue and incrementSize
>>      return getCreateSequenceString( sequenceName );
>> }
>>
>> So as long as a non-pooled sequence (incrementSize = 1) is requested the
>> Firebird25Dialect will happily oblige. I will add a similar solution to
>> the InterbaseDialect and FirebirdDialect.
>>
>> > I'd also suggest we properly deprecate Dialect#supportsPooledSequences,
>> > Dialect#getCreateSequenceStrings directing to
>> Dialect#getSequenceExporter.
>>
>> The problem with that is that the StandardSequenceExporter uses
>> getCreateSequenceStrings to do its work, so deprecating that would
>> require more rework.
>>
>> Mark
>> --
>> Mark Rotteveel
>>
>


More information about the hibernate-dev mailing list