Re: partitioning and identity column

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-01-22T12:02:30Z
Lists: pgsql-hackers
On 17.01.24 06:36, Ashutosh Bapat wrote:
> On Wed, Jan 17, 2024 at 12:30 AM Peter Eisentraut <peter@eisentraut.org> wrote:
>>
>> On 09.01.24 15:10, Ashutosh Bapat wrote:
>>> Here's complete patch-set.
>>
>> Looks good!  Committed.
>>
> 
> Thanks a lot Peter.

I found another piece of code that might need updating, or at least the 
comment.

In MergeAttributes(), in the part that merges the specified column 
definitions into the inherited ones, it says

     /*
      * Identity is never inherited.  The new column can have an
      * identity definition, so we always just take that one.
      */
     def->identity = newdef->identity;

This is still correct for regular inheritance, but not for partitioning. 
  I think for partitioning, this is not reachable because you can't 
specify identity information when you create a partition(?).  So maybe 
something like

     if (newdef->identity)
     {
         Assert(!is_partioning);
         /*
          * Identity is never inherited.  The new column can have an
          * identity definition, so we always just take that one.
          */
         def->identity = newdef->identity;
     }

Thoughts?



Commits

  1. Fix assorted bugs related to identity column in partitioned tables

  2. Remove extra check_stack_depth() from dropconstraint_internal()

  3. Support identity columns in partitioned tables

  4. doc: Add Identity Column section under Data Definition chapter

  5. Assert that partition inherits from only one parent in MergeAttributes()

  6. doc: Decorate PostgreSQL with productname tag

  7. Fix prologue of get_partition_ancestors()