From d91fbe3a80c1858e9cbc126e4ade44945cea9ae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20=C5=A0im=C3=A1nek?= Date: Tue, 9 Feb 2021 09:27:21 +0100 Subject: [PATCH] Add initial regress test for COPY progress reporting. --- src/test/regress/expected/progress.out | 43 ++++++++++++++++++++++++++ src/test/regress/parallel_schedule | 2 +- src/test/regress/sql/progress.sql | 39 +++++++++++++++++++++++ 3 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 src/test/regress/expected/progress.out create mode 100644 src/test/regress/sql/progress.sql diff --git a/src/test/regress/expected/progress.out b/src/test/regress/expected/progress.out new file mode 100644 index 000000000000..2c745b946366 --- /dev/null +++ b/src/test/regress/expected/progress.out @@ -0,0 +1,43 @@ +-- setup for COPY progress testing +CREATE TEMP TABLE test_progress_with_trigger ( + a int, + b text +) ; +CREATE OR REPLACE function notice_after_progress_reporting() RETURNS trigger AS +$$ +DECLARE report record; +BEGIN + SELECT INTO report * FROM pg_stat_progress_copy report WHERE pid = pg_backend_pid(); + raise info 'progress datname: %', report.datname; + raise info 'progress command: %', report.command; + raise info 'progress io_target: %', report.io_target; + raise info 'progress bytes_processed: %', report.bytes_processed; + raise info 'progress bytes_total: %', report.bytes_total; + raise info 'progress tuples_processed: %', report.tuples_processed; + raise info 'progress tuples_excluded: %', report.tuples_excluded; + + RETURN NEW; +END; +$$ LANGUAGE plpgsql; +CREATE OR REPLACE TRIGGER check_after_progress_reporting + AFTER INSERT ON test_progress_with_trigger + FOR EACH ROW + EXECUTE FUNCTION notice_after_progress_reporting(); +-- simple COPY from STDIN +COPY test_progress_with_trigger (a, b) FROM STDIN; +INFO: progress datname: regression +INFO: progress command: COPY FROM +INFO: progress io_target: FILE +INFO: progress bytes_processed: 9 +INFO: progress bytes_total: 0 +INFO: progress tuples_processed: 1 +INFO: progress tuples_excluded: 0 +-- COPY from STDIN with WHERE skipping lines +COPY test_progress_with_trigger (a, b) FROM STDIN WHERE a > 1; +INFO: progress datname: regression +INFO: progress command: COPY FROM +INFO: progress io_target: FILE +INFO: progress bytes_processed: 18 +INFO: progress bytes_total: 0 +INFO: progress tuples_processed: 1 +INFO: progress tuples_excluded: 1 diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index 12bb67e49118..e445ad24f9ed 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -97,7 +97,7 @@ test: publication subscription # ---------- # Another group of parallel tests # ---------- -test: select_views portals_p2 foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window xmlmap functional_deps advisory_lock indirect_toast equivclass +test: select_views portals_p2 foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window xmlmap functional_deps advisory_lock indirect_toast equivclass progress # ---------- # Another group of parallel tests (JSON related) diff --git a/src/test/regress/sql/progress.sql b/src/test/regress/sql/progress.sql new file mode 100644 index 000000000000..ef5d95056197 --- /dev/null +++ b/src/test/regress/sql/progress.sql @@ -0,0 +1,39 @@ +-- setup for COPY progress testing +CREATE TEMP TABLE test_progress_with_trigger ( + a int, + b text +) ; + +CREATE OR REPLACE function notice_after_progress_reporting() RETURNS trigger AS +$$ +DECLARE report record; +BEGIN + SELECT INTO report * FROM pg_stat_progress_copy report WHERE pid = pg_backend_pid(); + raise info 'progress datname: %', report.datname; + raise info 'progress command: %', report.command; + raise info 'progress io_target: %', report.io_target; + raise info 'progress bytes_processed: %', report.bytes_processed; + raise info 'progress bytes_total: %', report.bytes_total; + raise info 'progress tuples_processed: %', report.tuples_processed; + raise info 'progress tuples_excluded: %', report.tuples_excluded; + + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE TRIGGER check_after_progress_reporting + AFTER INSERT ON test_progress_with_trigger + FOR EACH ROW + EXECUTE FUNCTION notice_after_progress_reporting(); + +-- simple COPY from STDIN +COPY test_progress_with_trigger (a, b) FROM STDIN; +1 test_1 +\. + +-- COPY from STDIN with WHERE skipping lines +COPY test_progress_with_trigger (a, b) FROM STDIN WHERE a > 1; +1 test_1 +2 test_2 +\. +