Hi,

I tested the v9 patch series on current PostgreSQL HEAD.

The patches did not apply cleanly on the latest tree because of a small
conflict in nodeModifyTable.c, but after resolving it manually, the build
and installation completed successfully.

I initialized a fresh cluster and verified that the built-in composite type
copy_error_saving is created correctly during initdb.

I tested the feature using the following setup:

CREATE TABLE err_tbl OF copy_error_saving;

CREATE TABLE t(a int, b int, c int);

COPY t

FROM STDIN

WITH (

    FORMAT csv,

    ON_ERROR table,

    ERROR_TABLE err_tbl

);

Input used:

1,2,3

4,5,x

7,8,9

>From my testing:

   -

   valid rows were inserted into the target table correctly
   -

   malformed rows were stored in ERROR_TABLE as expected
   -

   COPY continued processing the remaining rows successfully

The latest executor-based approach using ExecInsert() looks cleaner and
easier to follow compared to the earlier direct insertion approach.

I also feel the built-in composite type approach makes the ERROR_TABLE
validation simpler and more maintainable compared to manually checking all
columns and types.

Regards,
Solaimurugan

Reply via email to