Please describe why this is necessary.
Currently, the kernel does not support identity columns. The problem of regular identity columns is that two concurrent "inserters" race leading to a failure and retry of the losing one. Both try to modify the "highWaterMark" metadata field of the identity column.
Concurrent Identity Columns (CIC) circumvent this problem. They rely on an external sequence service to reserve disjoint ranges of values to insert into their identity columns (for more information see "Additional context").
Implementing kernel support would allow connectors to use CIC without reimplementing the protocol logic.
Describe the functionality you are proposing.
The connectors should see the following workflows:
- Create: The connector mints a sequence ID for each identity column and asks Kernel to add the required CIC metadata. After the table creation commits, the connector registers the sequences with the external service via a single synchronous method call.
- Write: The connector creates an identity-column writer from the table schema, ensures enough values are reserved, and asks Kernel to fill the identity columns. The resulting batch is written through the normal append path.
Additional context
The accompanying RFC of this feature (for delta) can be found here and the (general) design-document here.
This is the accompanying prototype implementation: #3290
Please describe why this is necessary.
Currently, the kernel does not support identity columns. The problem of regular identity columns is that two concurrent "inserters" race leading to a failure and retry of the losing one. Both try to modify the "highWaterMark" metadata field of the identity column.
Concurrent Identity Columns (CIC) circumvent this problem. They rely on an external sequence service to reserve disjoint ranges of values to insert into their identity columns (for more information see "Additional context").
Implementing kernel support would allow connectors to use CIC without reimplementing the protocol logic.
Describe the functionality you are proposing.
The connectors should see the following workflows:
Additional context
The accompanying RFC of this feature (for delta) can be found here and the (general) design-document here.
This is the accompanying prototype implementation: #3290