ossc-db/pg_bulkload

installcheck not passed with pg12 pg13 pg14

jerome-peng opened this issue · 10 comments

i use pg_bulkload-VERSION3_1_19.tar.gz execute "make installcheck" ,get " 1 of 10 tests failed. " for test load_function

[postgres@pg pg_bulkload-VERSION3_1_19]$ make installcheck
Makefile:33: warning: overriding recipe for target check' /opt/pg13/lib/postgresql/pgxs/src/makefiles/pgxs.mk:433: warning: ignoring old recipe for target check'
make[1]: Entering directory `/opt/pg_extension/pg_bulkload-VERSION3_1_19/bin'
cp sql/init-extension-v2.sql sql/init-13.sql
cp sql/init-13.sql sql/init.sql
cp sql/load_bin-v2.sql sql/load_bin-13.sql
cp sql/load_bin-13.sql sql/load_bin.sql
cp sql/load_csv-v2.sql sql/load_csv-13.sql
cp sql/load_csv-13.sql sql/load_csv.sql
cp sql/load_function-v3.sql sql/load_function-13.sql
cp sql/load_function-13.sql sql/load_function.sql
cp sql/load_filter-v3.sql sql/load_filter-13.sql
cp sql/load_filter-13.sql sql/load_filter.sql
cp sql/write_bin-v2.sql sql/write_bin-13.sql
cp sql/write_bin-13.sql sql/write_bin.sql
/opt/pg13/lib/postgresql/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/opt/pg13/bin' --dbname=contrib_regression --encoding=UTF8 init load_bin load_csv load_remote load_function load_encoding load_check load_filter load_parallel write_bin
(using postmaster on Unix socket, port 1306)
============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries ==============
test init ... ok 3706 ms
test load_bin ... ok 1031 ms
test load_csv ... ok 638 ms
test load_remote ... ok 199 ms
test load_function ... FAILED 2560 ms
test load_encoding ... ok 447 ms
test load_check ... ok 307 ms
test load_filter ... ok 1018 ms
test load_parallel ... ok 4831 ms
test write_bin ... ok 698 ms

=======================
1 of 10 tests failed.

The differences that caused some tests to fail can be viewed in the
file "/opt/pg_extension/pg_bulkload-VERSION3_1_19/bin/regression.diffs". A copy of the test summary that you see
above is saved in the file "/opt/pg_extension/pg_bulkload-VERSION3_1_19/bin/regression.out".

make[1]: *** [installcheck] Error 1
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/bin' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib'
make[1]: Nothing to be done for installcheck'. make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib'
make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/util' make[1]: Nothing to be done for installcheck'.
make[1]: Leaving directory `/opt/pg_extension/pg_bulkload-VERSION3_1_19/util'
make: *** [installcheck] Error 2

i test pg12 pg13 pg14,almost the same error message: "tests failed for test load_function"

Hi, thanks for reporting.

I tested in my environments and I found that all tests passed

The test procedure is following.

# start the PostgreSQL server
$ initdb -D data
$ pg_ctl -D data start 

# build and test pg_bulkload
$ wget https://github.com/ossc-db/pg_bulkload/releases/download/VERSION3_1_19/pg_bulkload-3.1.19.tar.gz
$ tar xzvf pg_bulkload-3.1.19.tar.gz
$ cd pg_bulkload-3.1.19
$ make clean
$ make install
$ make installcheck
============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries        ==============
test init                         ... ok         2696 ms
test load_bin                     ... ok         3073 ms
test load_csv                     ... ok         1926 ms
test load_remote                  ... ok          664 ms
test load_function                ... ok         4285 ms
test load_encoding                ... ok         1385 ms
test load_check                   ... ok         1697 ms
test load_filter                  ... ok         4300 ms
test load_parallel                ... ok         6702 ms
test write_bin                    ... ok         1269 ms

======================
 All 10 tests passed.
======================

Please let me know your environment and your reproducible procedure.

Regards,

centos7.6 x86_64 pg12.10 pg13.6 pg14.2

eg: pg13.6

postgres@pg pg_bulkload-VERSION3_1_19]$ cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)

[postgres@pg pg_bulkload-VERSION3_1_19]$ psql
psql (13.6)
Type "help" for help.

postgres=# \q

[postgres@pg pg_bulkload-VERSION3_1_19]$ make uninstall
[postgres@pg pg_bulkload-VERSION3_1_19]$ make clean
[postgres@pg pg_bulkload-VERSION3_1_19]$ make

[postgres@pg pg_bulkload-VERSION3_1_19]$ make install
Makefile:33: warning: overriding recipe for target check' /opt/pg13/lib/postgresql/pgxs/src/makefiles/pgxs.mk:433: warning: ignoring old recipe for target check'
make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/bin' make[1]: Nothing to be done for all'.
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/bin' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib'
make[1]: Nothing to be done for all'. make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib'
make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/util' make[1]: Nothing to be done for all'.
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/util' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/bin'
/usr/bin/mkdir -p '/opt/pg13/bin'
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/bin' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib'
/usr/bin/mkdir -p '/opt/pg13/lib/postgresql'
/usr/bin/mkdir -p '/opt/pg13/share/postgresql/extension'
/usr/bin/mkdir -p '/opt/pg13/share/postgresql/extension'
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/util'
/usr/bin/mkdir -p '/opt/pg13/lib/postgresql'
/usr/bin/mkdir -p '/opt/pg13/share/postgresql/contrib'
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/util' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/bin'
/usr/bin/mkdir -p '/opt/pg13/bin'
/usr/bin/install -c pg_bulkload '/opt/pg13/bin'
/usr/bin/install -c -m 755 .//postgresql '/opt/pg13/bin/'
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/bin' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib'
/usr/bin/mkdir -p '/opt/pg13/lib/postgresql'
/usr/bin/mkdir -p '/opt/pg13/share/postgresql/extension'
/usr/bin/mkdir -p '/opt/pg13/share/postgresql/extension'
/usr/bin/install -c -m 755 pg_bulkload.so '/opt/pg13/lib/postgresql/pg_bulkload.so'
/usr/bin/install -c -m 644 .//pg_bulkload.control '/opt/pg13/share/postgresql/extension/'
/usr/bin/install -c -m 644 .//pg_bulkload--1.0.sql .//pg_bulkload--unpackaged--1.0.sql .//uninstall_pg_bulkload.sql pg_bulkload.sql '/opt/pg13/share/postgresql/extension/'
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/util'
/usr/bin/mkdir -p '/opt/pg13/lib/postgresql'
/usr/bin/mkdir -p '/opt/pg13/share/postgresql/contrib'
/usr/bin/install -c -m 755 pg_timestamp.so '/opt/pg13/lib/postgresql/pg_timestamp.so'
/usr/bin/install -c -m 644 .//uninstall_pg_timestamp.sql pg_timestamp.sql '/opt/pg13/share/postgresql/contrib/'
make[1]: Leaving directory `/opt/pg_extension/pg_bulkload-VERSION3_1_19/util'

[postgres@pg pg_bulkload-VERSION3_1_19]$ make installcheck
Makefile:33: warning: overriding recipe for target check' /opt/pg13/lib/postgresql/pgxs/src/makefiles/pgxs.mk:433: warning: ignoring old recipe for target check'
make[1]: Entering directory `/opt/pg_extension/pg_bulkload-VERSION3_1_19/bin'
cp sql/init-extension-v2.sql sql/init-13.sql
cp sql/init-13.sql sql/init.sql
cp sql/load_bin-v2.sql sql/load_bin-13.sql
cp sql/load_bin-13.sql sql/load_bin.sql
cp sql/load_csv-v2.sql sql/load_csv-13.sql
cp sql/load_csv-13.sql sql/load_csv.sql
cp sql/load_function-v3.sql sql/load_function-13.sql
cp sql/load_function-13.sql sql/load_function.sql
cp sql/load_filter-v3.sql sql/load_filter-13.sql
cp sql/load_filter-13.sql sql/load_filter.sql
cp sql/write_bin-v2.sql sql/write_bin-13.sql
cp sql/write_bin-13.sql sql/write_bin.sql
/opt/pg13/lib/postgresql/pgxs/src/makefiles/../../src/test/regress/pg_regress --inputdir=./ --bindir='/opt/pg13/bin' --dbname=contrib_regression --encoding=UTF8 init load_bin load_csv load_remote load_function load_encoding load_check load_filter load_parallel write_bin
(using postmaster on Unix socket, port 1306)
============== dropping database "contrib_regression" ==============
DROP DATABASE
============== creating database "contrib_regression" ==============
CREATE DATABASE
ALTER DATABASE
============== running regression test queries ==============
test init ... ok 3457 ms
test load_bin ... ok 1102 ms
test load_csv ... ok 631 ms
test load_remote ... ok 205 ms
test load_function ... FAILED 1683 ms
test load_encoding ... ok 430 ms
test load_check ... ok 297 ms
test load_filter ... ok 1121 ms
test load_parallel ... ok 4356 ms
test write_bin ... ok 827 ms

=======================
1 of 10 tests failed.

The differences that caused some tests to fail can be viewed in the
file "/opt/pg_extension/pg_bulkload-VERSION3_1_19/bin/regression.diffs". A copy of the test summary that you see
above is saved in the file "/opt/pg_extension/pg_bulkload-VERSION3_1_19/bin/regression.out".

make[1]: *** [installcheck] Error 1
make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/bin' make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib'
make[1]: Nothing to be done for installcheck'. make[1]: Leaving directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/lib'
make[1]: Entering directory /opt/pg_extension/pg_bulkload-VERSION3_1_19/util' make[1]: Nothing to be done for installcheck'.
make[1]: Leaving directory `/opt/pg_extension/pg_bulkload-VERSION3_1_19/util'
make: *** [installcheck] Error 2

Thanks,

I also tested with CentOS 7.9 and it works.
How do you create the data directory?

Please to make new data cluster and test the pg_bulkload.

# start the PostgreSQL server
$ initdb -D data
$ pg_ctl -D data start 

The regression.diff you shared said the following.

+ERROR: query failed: ERROR:  cache lookup failed for type 1024
+CONTEXT:  SQL function "load_function2" statement 1
+DETAIL: query was: SELECT * FROM pgbulkload.pg_bulkload($1)

So, I would like to examine whether the root cause is pg_bulkload or not.
Please check that you can execute the following query.


CREATE TABLE customer (
    c_id            int4 NOT NULL,
    c_d_id          int2 NOT NULL,
    c_w_id          int4 NOT NULL,
    c_first         varchar(16) NOT NULL,
    c_middle        char(2) NOT NULL,
    c_last          varchar(16) NOT NULL,
    c_street_1      varchar(20) NOT NULL,
    c_street_2      varchar(20) NOT NULL,
    c_city          varchar(20) NOT NULL,
    c_state         char(2) NOT NULL,
    c_zip           char(9) NOT NULL,
    c_phone         char(16) NOT NULL,
    c_since         timestamp NOT NULL,
    c_credit        char(2) NOT NULL,
    c_credit_lim    numeric(16,4) NOT NULL,
    c_discount      numeric(16,4) NOT NULL,
    c_balance       numeric(16,4) NOT NULL,
    c_ytd_payment   numeric(16,4) NOT NULL,
    c_payment_cnt   float4 NOT NULL,
    c_delivery_cnt  float8 NOT NULL,
    c_data          varchar(500) NOT NULL
) WITH (fillfactor=20);

ALTER TABLE customer ADD PRIMARY KEY (c_id, c_w_id, c_d_id);
CREATE INDEX idx_btree ON customer USING btree (c_d_id, c_last);
CREATE INDEX idx_btree_fn ON customer USING btree ((abs(c_w_id) + c_d_id));
CREATE INDEX idx_hash ON customer USING hash (c_d_id);
CREATE INDEX idx_hash_fn ON customer USING hash ((abs(c_w_id) + c_d_id));

CREATE FUNCTION public.load_function2(int2, int4, varchar(500), VARIADIC int4[]) RETURNS SETOF customer AS
$$
	SELECT $4[i], $1, $2, i::varchar(16), 'AA'::char(2), 'AAAAAAAAAAAAAAAA'::varchar(16), 'c_street_1          '::varchar(20), 'c_street_2          '::varchar(20), 'AAAAAAAAAAAAAAAAAAAA'::varchar(20), 'AA'::char(2), 'AAAAAAAAA'::char(9), 'AAAAAAAAAAAAAAAA'::char(16), '2006-01-01 12:34:56'::timestamp, 'AA'::char(2), '12345.6789'::numeric(16,4), '12345.6789'::numeric(16,4), '12345.6789'::numeric(16,4), '12345.6789'::numeric(16,4), '12345.6789'::float4, '12345.6789'::float8, $3 FROM generate_subscripts($4, 1) g(i);
$$ LANGUAGE SQL;

SELECT public.load_function2('216', 0, 'function2', -2, 2, 4, 6, 8, 10, 12);

i use a cleaning PGDATA it's ok.

so i check the postgresql.conf, found the difference: when i add shared_preload_libraries ='pgaudit', it occured.

i test pg12(with pgaudit-1.4.3) 、pg13 (with pgaudit-1.5.2) 、pg14 (with pgaudit-1.6.2),when drop the "pgaudit" in shared_preload_libraries, all the 10 tests passed.

Thanks, I could reproduce the issue.

VERSION3_1_20 fixed this issue. So I close this issue.