-------------------------------- -- normal case -------------------------------- -- PL/pgSQL function CREATE FUNCTION plpgsql_f(int4, int4, int4 DEFAULT 100, text DEFAULT 'default value') RETURNS record AS $$ DECLARE ret target; BEGIN IF $1 = 61 THEN RETURN NULL; END IF; IF $1 = 41 THEN RAISE EXCEPTION 'field 1 is error value'; END IF; ret.id := $2 + $3; ret.str := $4; ret.master := $1; RETURN ret; END; $$ LANGUAGE plpgsql STRICT; -- using OUT paramator function CREATE FUNCTION using_out_f(int4, int4, int4 DEFAULT 100, text DEFAULT 'default value', OUT int4, OUT text, OUT int4) RETURNS record AS $$ SELECT plpgsql_f($1, $2, $3, $4); $$ LANGUAGE SQL; TRUNCATE target; INSERT INTO target VALUES(1, 'dummy', 1); -- FILTER option parse error \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=variadic_f(int, text)' NOTICE: BULK LOAD START ERROR: query failed: ERROR: filter function does not support a valiadic function variadic_f DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=overload_f' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function overload_f() is not unique HINT: Could not choose a best candidate function. DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=using_out_f()' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function using_out_f() does not exist HINT: No function matches the given name and argument types. DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=using_out_f(int4, int4, text)' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function using_out_f(integer, integer, text) does not exist HINT: No function matches the given name and argument types. DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data7.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=outarg_f()' NOTICE: BULK LOAD START ERROR: query failed: ERROR: could not create unique index "target_pkey" DETAIL: Table contains duplicated values. DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=setof_f()' NOTICE: BULK LOAD START ERROR: query failed: ERROR: filter function must not return set DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=using_out_f(int4, int4, int4)' -o FORCE_NOT_NULL=id NOTICE: BULK LOAD START ERROR: query failed: ERROR: cannot use FILTER with FORCE_NOT_NULL DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data7.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=type_mismatch_f()' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function return row and target table row do not match DETAIL: Returned row contains 2 attribute(s), but target table expects 3. DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=no_create_f()' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function no_create_f() does not exist HINT: No function matches the given name and argument types. DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data7.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=rec_mismatch_f()' NOTICE: BULK LOAD START ERROR: query failed: ERROR: could not create unique index "target_pkey" DETAIL: Table contains duplicated values. DETAIL: query was: SELECT * FROM pg_bulkload($1) -- FILTER option error \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER="f1' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function call syntax error: "f1 DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER= (int4)' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function call syntax error: (int4) DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER="f1" int4, int4, text)' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function call syntax error: "f1" int4, int4, text) DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=f1(int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4,int4)' NOTICE: BULK LOAD START ERROR: query failed: ERROR: functions cannot have more than 100 arguments DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=f1(int4, int4, text) aaa' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function call syntax error: f1(int4, int4, text) aaa DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=f1(numeric((1,2)))' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function call syntax error: f1(numeric((1,2))) DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=f1(numeric(1, 2) (1, 2))' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function call syntax error: f1(numeric(1, 2) (1, 2)) DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=f1( , text)' NOTICE: BULK LOAD START ERROR: query failed: ERROR: function call syntax error: f1( , text) DETAIL: query was: SELECT * FROM pg_bulkload($1) \! pg_bulkload -d contrib_regression data/csv4.ctl -i data/data6.csv -l results/filter_e.log -P results/filter_e1.prs -u results/filter_e1.dup -o 'FILTER=f1(double)' NOTICE: BULK LOAD START ERROR: query failed: ERROR: type "double" does not exist DETAIL: query was: SELECT * FROM pg_bulkload($1) SET enable_seqscan = on; SET enable_indexscan = off; SET enable_bitmapscan = off; SELECT * FROM target ORDER BY id; id | str | master ----+-------+-------- 1 | dummy | 1 (1 row) SET enable_seqscan = off; SET enable_indexscan = on; SET enable_bitmapscan = off; SELECT * FROM target ORDER BY id; id | str | master ----+-------+-------- 1 | dummy | 1 (1 row) -- FILTER option test \pset null (null) \! pg_bulkload -d contrib_regression data/csv5.ctl -o "PARSE_ERRORS=50" -i data/data6.csv -l results/filter1.log -P results/filter1.prs -u results/filter1.dup -o 'FILTER=using_out_f(int4, int4, int4, text)' NOTICE: BULK LOAD START NOTICE: BULK LOAD END 0 Rows skipped. 4 Rows successfully loaded. 4 Rows not loaded due to parse errors. 0 Rows not loaded due to duplicate errors. 0 Rows replaced with new rows. WARNING: some rows were not loaded due to errors. \! awk -f data/adjust.awk results/filter1.log pg_bulkload 3.1.9 on INPUT = .../data6.csv PARSE_BADFILE = .../filter1.prs LOGFILE = .../filter1.log LIMIT = INFINITE PARSE_ERRORS = 50 CHECK_CONSTRAINTS = NO TYPE = CSV SKIP = 0 DELIMITER = , QUOTE = "\"" ESCAPE = "\"" NULL = FILTER = using_out_f(int4, int4, int4, text) OUTPUT = public.target_like MULTI_PROCESS = YES VERBOSE = NO WRITER = DIRECT DUPLICATE_BADFILE = .../filter1.dup DUPLICATE_ERRORS = 0 ON_DUPLICATE_KEEP = NEW TRUNCATE = YES Parse error Record 1: Input Record 2: Rejected - column 1. missing data for argument 2 Parse error Record 2: Input Record 3: Rejected - column 5. extra data after last expected column Parse error Record 3: Input Record 4: Rejected. field 1 is error value Parse error Record 4: Input Record 5: Rejected - column 1. invalid input syntax for integer: "51a" 0 Rows skipped. 4 Rows successfully loaded. 4 Rows not loaded due to parse errors. 0 Rows not loaded due to duplicate errors. 0 Rows replaced with new rows. Run began on Run ended on CPU