[tarantool-patches] Re: [PATCH 3/4] schema: allow to set sequence for any index part, not just the first

Vladimir Davydov vdavydov.dev at gmail.com
Thu May 16 11:02:26 MSK 2019


On Thu, May 16, 2019 at 10:45:29AM +0300, Konstantin Osipov wrote:
> * Vladimir Davydov <vdavydov.dev at gmail.com> [19/05/15 14:16]:
> > Closes #4009
> > 
> > @TarantoolBot document
> > Title: Sequence can now be set for an index part other than the first
> > 
> > Initially one could attach a sequence (aka autoincrement) only to the
> > first index part. Now it's possible to attach a sequence to any primary
> > index part. The part still must be integer though.
> > 
> > Syntax:
> > 
> > ```
> > box.schema.space.create('test')
> > box.space.test:create_index('primary', {
> >     parts = {{1, 'string'}, {2, 'unsigned'}, {3, 'unsigned'}},
> >     sequence = true, sequence_part = 2
> > })
> > box.space.test:insert{'a', box.null, 1} -- inserts {'a', 1, 1}
> 
> 
> How about allowing column names? We already allow column names in
> the parts definition.

I don't understand. Do you suggest to match column name with a part
number? What for? The user knows index parts - they are right here in
the index definition - he can choose one for autoincrement. Actually,
this is what the solution team asked for.

> 
> Do we really need a separate sequence_part option, why not make
> a scalar (bool = true/false, numeric, string - column number or
> id).

We do need 'sequence_part', because 'sequence' is already a scalar:

  int - sequence id
  string - sequence name
  true/false - autogenerated sequence

An alternative approach would be attaching sequences to columns rather
than indexes (i.e. adding them to tuple_format), but that would require
massive rework of autoincrement with a lot of backward compatibility
hacks. It isn't quite clear to me that we need to do it now.



More information about the Tarantool-patches mailing list