v1-0001-Add-detailed-info-when-COPY-skips-soft-errors.patch
application/octet-stream
Filename: v1-0001-Add-detailed-info-when-COPY-skips-soft-errors.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch v1-0001
Subject: Add detailed info when COPY skips soft errors
| File | + | − |
|---|---|---|
| src/backend/commands/copyfromparse.c | 11 | 1 |
| src/test/regress/expected/copy2.out | 4 | 0 |
From 6431db6405214d3aa02dc780946568d41eca2188 Mon Sep 17 00:00:00 2001
From: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Date: Fri, 16 Feb 2024 08:01:15 +0000
Subject: [PATCH v1] Add detailed info when COPY skips soft errors
---
src/backend/commands/copyfromparse.c | 12 +++++++++++-
src/test/regress/expected/copy2.out | 4 ++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/src/backend/commands/copyfromparse.c b/src/backend/commands/copyfromparse.c
index 7cacd0b752..747e173d9c 100644
--- a/src/backend/commands/copyfromparse.c
+++ b/src/backend/commands/copyfromparse.c
@@ -969,7 +969,17 @@ NextCopyFrom(CopyFromState cstate, ExprContext *econtext,
&values[m]))
{
cstate->num_errors++;
- return true;
+
+ if (cstate->opts.on_error != COPY_ON_ERROR_STOP)
+ {
+ ereport(NOTICE,
+ errmsg("detected data type incompatibility at line number %llu for column %s; COPY %s",
+ (unsigned long long) cstate->cur_lineno,
+ cstate->cur_attname,
+ cstate->cur_relname));
+
+ return true;
+ }
}
cstate->cur_attname = NULL;
diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out
index 25c401ce34..1bf37236f0 100644
--- a/src/test/regress/expected/copy2.out
+++ b/src/test/regress/expected/copy2.out
@@ -730,6 +730,10 @@ COPY check_ign_err FROM STDIN WITH (on_error stop);
ERROR: invalid input syntax for type integer: "a"
CONTEXT: COPY check_ign_err, line 2, column n: "a"
COPY check_ign_err FROM STDIN WITH (on_error ignore);
+NOTICE: detected data type incompatibility at line number 2 for column n; COPY check_ign_err
+NOTICE: detected data type incompatibility at line number 3 for column k; COPY check_ign_err
+NOTICE: detected data type incompatibility at line number 4 for column m; COPY check_ign_err
+NOTICE: detected data type incompatibility at line number 5 for column n; COPY check_ign_err
NOTICE: 4 rows were skipped due to data type incompatibility
SELECT * FROM check_ign_err;
n | m | k
--
2.34.1