> v2 fixes the issue you mentioned.

Thanks for checking!

> I think It also fixes another case. If the added column is in the replica
> identity index, REPACK looks up the row with a NULL key. That fails the
> Assert in find_target_tuple(), or gives "could not find target tuple"
> without assertions. Adding this to the test covers it:
>
>     CREATE UNIQUE INDEX repack_test_i_c_idx ON repack_test (i, c);
>     ALTER TABLE repack_test REPLICA IDENTITY USING INDEX repack_test_i_c_idx;

ahh, good repro. It's worse for a pass-by-reference column, i.e. TEXT.
find_target_tuple() only sets sk_argument, never SK_ISNULL, so the
comparison function gets a NULL pointer rather than a NULL key.
So a non assert build will actually segfault.

v3 uses a TEXT column in the identity index, which covers the int case
too since both go through the same sk_argument.

--
Sami Imseih
Amazon Web Services (AWS)

Attachment: v3-0001-Fix-REPACK-CONCURRENTLY-for-columns-added-without.patch
Description: Binary data

Reply via email to