[hibernate-dev] SchemaCreatorImpl always creating a poolable sequence

Steve Ebersole steve at hibernate.org
Sat Jul 30 08:11:40 EDT 2016


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