提交 bcc848f0 编写于 作者: D Daniel Gustafsson

Tidy up SREH error messages

The errmsg() contained the error message as well as the error detail
and in one case the hint too.  Break up and fix punctuation to match
how error messages are written.
Reviewed-by: NVenkatesh Raghavan <vraghavan@pivotal.io>
上级 b3043f5e
......@@ -10,5 +10,6 @@ FORMAT 'CUSTOM' (formatter='fixedwidth_in', s1='10',
n3='10', n4='10', n5='10', n6='10', n7='15')
SEGMENT REJECT LIMIT 3 ROWS;
SELECT * FROM tbl_ext_fixedwidth ORDER BY s1;
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "u32" (seg0 slice1 rh55-qavm55:7532 pid=27454)
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "u32" (seg0 slice1 rh55-qavm55:7532 pid=27454)
CONTEXT: External table tbl_ext_fixedwidth
......@@ -20,7 +20,8 @@ FORMAT 'CUSTOM' (formatter='fixedwidth_in', s1='10',
LOG ERRORS
SEGMENT REJECT LIMIT 10 PERCENT;
select count(*) from tbl_ext_fixedwidth;
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "s32" (seg1 slice1 rh55-qavm55:7533 pid=29678)
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "s32" (seg1 slice1 rh55-qavm55:7533 pid=29678)
CONTEXT: External table tbl_ext_fixedwidth
select count(*) > 44 from gp_read_error_log('tbl_ext_fixedwidth');
?column?
......
......@@ -375,28 +375,26 @@ ErrorIfRejectLimitReached(CdbSreh *cdbsreh)
/* the special "first X rows are bad" case */
ereport(ERROR,
(errcode(ERRCODE_T_R_GP_REJECT_LIMIT_REACHED),
errmsg("All %d first rows in this segment were rejected. "
"Aborting operation regardless of REJECT LIMIT value. "
"Last error was: %s",
gp_initial_bad_row_limit, cdbsreh->errmsg)));
errmsg("all %d first rows in this segment were rejected",
gp_initial_bad_row_limit),
errdetail("Aborting operation regardless of REJECT LIMIT value, last error was: %s",
cdbsreh->errmsg)));
break;
case REJECT_UNPARSABLE_CSV:
/* the special "csv un-parsable" case */
ereport(ERROR,
(errcode(ERRCODE_T_R_GP_REJECT_LIMIT_REACHED),
errmsg("Input includes invalid CSV data that corrupts the "
"ability to parse data rows. This usually means "
"several unescaped embedded QUOTE characters. "
"Data is not parsable. Last error was: %s",
cdbsreh->errmsg)));
errmsg("input includes invalid CSV data that corrupts the ability to parse data rows"),
errdetail("Data is not parsable, last error was: %s",
cdbsreh->errmsg),
errhint("This usually means several unescaped embedded QUOTE characters.")));
break;
case REJECT_LIMIT_REACHED:
/* the normal case */
ereport(ERROR,
(errcode(ERRCODE_T_R_GP_REJECT_LIMIT_REACHED),
errmsg("Segment reject limit reached. Aborting operation. "
"Last error was: %s",
cdbsreh->errmsg)));
errmsg("segment reject limit reached, aborting operation"),
errdetail("Last error was: %s", cdbsreh->errmsg)));
break;
default:
elog(ERROR, "unknown reject code %d", code);
......
......@@ -111,8 +111,9 @@ LOCATION ('gpfdist://@hostname@:7575/fixedwidth_small_error_rejectlimitcrossed.t
FORMAT 'CUSTOM' (formatter='fixedwidth_in', s1='10', s2='10', s3='10', dt='20',n1='5', n2='10', n3='10', n4='10', n5='10', n6='10', n7='15')
SEGMENT REJECT LIMIT 3 ROWS;
SELECT * FROM tbl_ext_fixedwidth ORDER BY s1;
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "y32" (seg1 slice1 @hostname@:40001 pid=11441)
DETAIL: External table tbl_ext_fixedwidth
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "y32" (seg1 slice1 @hostname@:40001 pid=11441)
CONTEXT: External table tbl_ext_fixedwidth
-- 7. import data into table with string and numeric fields - field type error -- reject limit not crossed
DROP EXTERNAL TABLE IF EXISTS tbl_ext_fixedwidth;
CREATE READABLE EXTERNAL TABLE tbl_ext_fixedwidth
......@@ -379,8 +379,9 @@ FORMAT 'text'
LOG ERRORS SEGMENT REJECT LIMIT 2
;
SELECT count(*) FROM ext_lineitem;
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "a68", column l_partkey (seg1 slice1 172.17.0.4:25433 pid=36416)
DETAIL: External table ext_lineitem, line 2 of gpfdist://@hostname@:7070/gpfdist2/bad_data/lineitem.tbl.bad, column l_partkey
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "a68", column l_partkey (seg1 slice1 172.17.0.4:25433 pid=36416)
CONTEXT: External table ext_lineitem, line 2 of gpfdist://@hostname@:7070/gpfdist2/bad_data/lineitem.tbl.bad, column l_partkey
DROP EXTERNAL TABLE ext_lineitem;
-- test 11
CREATE EXTERNAL TABLE ext_lineitem (
......
......@@ -6,9 +6,6 @@
--
-- start_matchsubs
--
-- m/ERROR\:\s+Segment reject limit reached\.\s+Aborting operation\.\s+Last error was\:\s+(missing data for column|invalid input syntax for integer)/
-- s/Last error was\:(.*)/Last error was: MISSING_DATA_OR_INVALID_INPUT_SYNTAX_FOR_INTEGER/
--
-- m/CONTEXT\:\s+COPY sreh_copy\,\s+line/
-- s/line \d+(.*)/line SOME_LINE/
--
......
......@@ -628,7 +628,8 @@ SELECT gp_truncate_error_log('errcopy');
(1 row)
COPY errcopy from stdin delimiter E'\t' log errors segment reject limit 3 rows;
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "1 4", column a
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "1 4", column a
CONTEXT: COPY errcopy, line 3, column a: "1 4"
SELECT * FROM errcopy;
a | b | c
......@@ -652,7 +653,8 @@ SELECT gp_truncate_error_log('errcopy');
(1 row)
COPY errcopy from stdin delimiter '/' log errors segment reject limit 3 rows;
ERROR: Segment reject limit reached. Aborting operation. Last error was: missing data for column "b" (seg0 subraa4-mac:40000 pid=87505)
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: missing data for column "b" (seg0 subraa4-mac:40000 pid=87505)
CONTEXT: COPY errcopy, line 5: "1"
SELECT relname, filename, bytenum, errmsg FROM gp_read_error_log('errcopy');
relname | filename | bytenum | errmsg
......@@ -677,7 +679,8 @@ CREATE TABLE segment_reject_limit_from (a int,b int);
NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
COPY segment_reject_limit_from from '/tmp/segment_reject_limit<SEGID>.csv' on segment log errors segment reject limit 2 rows;
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "b", column b (seg0 172.17.0.2:40000 pid=8318)
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "b", column b (seg0 172.17.0.2:40000 pid=8318)
CONTEXT: COPY segment_reject_limit_from, line 4, column 1
SELECT * FROM segment_reject_limit_from;
a | b
......@@ -765,7 +768,8 @@ NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as
HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
SET gp_initial_bad_row_limit = 2;
COPY test_first_segment_reject_limit FROM STDIN WITH DELIMITER '|' segment reject limit 20;
ERROR: All 2 first rows in this segment were rejected. Aborting operation regardless of REJECT LIMIT value. Last error was: invalid input syntax for integer: "error1", column a
ERROR: all 2 first rows in this segment were rejected
DETAIL: Aborting operation regardless of REJECT LIMIT value, last error was: invalid input syntax for integer: "error1", column a
CONTEXT: COPY test_first_segment_reject_limit, line 2, column a: "error1"
-- should go through fine
SET gp_initial_bad_row_limit = 6;
......
......@@ -5,9 +5,6 @@
--
-- start_matchsubs
--
-- m/ERROR\:\s+Segment reject limit reached\.\s+Aborting operation\.\s+Last error was\:\s+(missing data for column|invalid input syntax for integer)/
-- s/Last error was\:(.*)/Last error was: MISSING_DATA_OR_INVALID_INPUT_SYNTAX_FOR_INTEGER/
--
-- m/CONTEXT\:\s+COPY sreh_copy\,\s+line/
-- s/line \d+(.*)/line SOME_LINE/
--
......@@ -39,7 +36,8 @@ SELECT * FROM sreh_copy ORDER BY a,b,c;
-- ROW reject limit only - low value that gets reached
--
COPY sreh_copy FROM '@abs_srcdir@/data/bad_data1.data' DELIMITER '|' SEGMENT REJECT LIMIT 2;
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "bad", column a
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "", column b
CONTEXT: COPY sreh_copy, line 8, column a
SELECT * FROM sreh_copy ORDER BY a,b,c;
a | b | c
......@@ -202,14 +200,16 @@ set gp_reject_percent_threshold = 100;
COPY sreh_copy FROM '@abs_srcdir@/data/bad_data3.data' DELIMITER '|' SEGMENT REJECT LIMIT 10 PERCENT; --pass
NOTICE: Found 9 data formatting errors (9 or more input rows). Rejected related input data.
COPY sreh_copy FROM '@abs_srcdir@/data/bad_data3.data' DELIMITER '|' SEGMENT REJECT LIMIT 2 PERCENT; --fail
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "BAD", column a
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "BAD", column a
CONTEXT: COPY sreh_copy, line 107, column a
--
-- test PERCENT reject limit logic with custom threshold 10 (only practical for test purposes)
--
set gp_reject_percent_threshold = 10;
COPY sreh_copy FROM '@abs_srcdir@/data/bad_data3.data' DELIMITER '|' SEGMENT REJECT LIMIT 10 PERCENT; --fail
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "BAD", column a
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "BAD", column a
CONTEXT: COPY sreh_copy, line 15, column a
COPY sreh_copy FROM '@abs_srcdir@/data/bad_data3.data' DELIMITER '|' SEGMENT REJECT LIMIT 20 PERCENT; --pass
NOTICE: Found 9 data formatting errors (9 or more input rows). Rejected related input data.
......@@ -283,10 +283,12 @@ LOCATION ('gpfdist://@hostname@:8080/bad_data1.data' )
FORMAT 'text' (delimiter '|')
SEGMENT REJECT LIMIT 2;
SELECT * FROM sreh_ext ORDER BY a;
ERROR: Segment reject limit reached. Aborting operation. Last error was: missing data for column "c" (seg1 slice1 @hostname@:11002 pid=68457)
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "", column b (seg1 slice1 @hostname@:11002 pid=68457)
CONTEXT: External table sreh_ext, line 3 of gpfdist://@hostname@:8080/bad_data1.data: "3|"
INSERT INTO sreh_target SELECT * FROM sreh_ext;
ERROR: Segment reject limit reached. Aborting operation. Last error was: missing data for column "c" (seg1 slice1 @hostname@:11002 pid=68459)
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "", column b (seg1 slice1 @hostname@:11002 pid=68459)
CONTEXT: External table sreh_ext, line 3 of gpfdist://@hostname@:8080/bad_data1.data: "3|"
SELECT count(*) FROM sreh_target;
count
......@@ -467,14 +469,16 @@ LOCATION ('gpfdist://@hostname@:8080/bad_data3.data' )
FORMAT 'text' (delimiter '|')
SEGMENT REJECT LIMIT 2 PERCENT;
SELECT count(*) FROM sreh_ext_2percent; -- fail
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "BAD", column a (seg0 slice1 @hostname@:11001 pid=68456)
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "BAD", column a (seg0 slice1 @hostname@:11001 pid=68456)
CONTEXT: External table sreh_ext_2percent, line 107 of gpfdist://@hostname@:8080/bad_data3.data, column a
--
-- test PERCENT reject limit logic with custom threshold 10 (only practical for test purposes)
--
set gp_reject_percent_threshold = 10;
SELECT count(*) FROM sreh_ext_10percent; -- fail
ERROR: Segment reject limit reached. Aborting operation. Last error was: invalid input syntax for integer: "BAD", column a (seg0 slice1 @hostname@:11001 pid=68456)
ERROR: segment reject limit reached, aborting operation
DETAIL: Last error was: invalid input syntax for integer: "BAD", column a (seg0 slice1 @hostname@:11001 pid=68456)
CONTEXT: External table sreh_ext_10percent, line 15 of gpfdist://@hostname@:8080/bad_data3.data, column a
CREATE EXTERNAL TABLE sreh_ext_20percent(a int, b int, c int)
LOCATION ('gpfdist://@hostname@:8080/bad_data3.data' )
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册