diff -U3 /tmp/cirrus-ci-build/contrib/file_fdw/expected/file_fdw.out /tmp/cirrus-ci-build/build/testrun/file_fdw/regress/results/file_fdw.out --- /tmp/cirrus-ci-build/contrib/file_fdw/expected/file_fdw.out 2025-12-05 14:34:12.591080000 +0000 +++ /tmp/cirrus-ci-build/build/testrun/file_fdw/regress/results/file_fdw.out 2025-12-05 14:37:30.757106000 +0000 @@ -375,182 +375,7 @@ -- declarative partitioning tests SET ROLE regress_file_fdw_superuser; CREATE TABLE pt (a int, b text) partition by list (a); -\set filename :abs_srcdir '/data/list1.csv' -CREATE FOREIGN TABLE p1 partition of pt for values in (1) SERVER file_server -OPTIONS (format 'csv', filename :'filename', delimiter ','); -CREATE TABLE p2 partition of pt for values in (2); -SELECT tableoid::regclass, * FROM pt; - tableoid | a | b -----------+---+----- - p1 | 1 | foo - p1 | 1 | bar -(2 rows) - -SELECT tableoid::regclass, * FROM p1; - tableoid | a | b -----------+---+----- - p1 | 1 | foo - p1 | 1 | bar -(2 rows) - -SELECT tableoid::regclass, * FROM p2; - tableoid | a | b -----------+---+--- -(0 rows) - -\set filename :abs_srcdir '/data/list2.bad' -COPY pt FROM :'filename' with (format 'csv', delimiter ','); -- ERROR -ERROR: cannot insert into foreign table "p1" -CONTEXT: COPY pt, line 2: "1,qux" -\set filename :abs_srcdir '/data/list2.csv' -COPY pt FROM :'filename' with (format 'csv', delimiter ','); -SELECT tableoid::regclass, * FROM pt; - tableoid | a | b -----------+---+----- - p1 | 1 | foo - p1 | 1 | bar - p2 | 2 | baz - p2 | 2 | qux -(4 rows) - -SELECT tableoid::regclass, * FROM p1; - tableoid | a | b -----------+---+----- - p1 | 1 | foo - p1 | 1 | bar -(2 rows) - -SELECT tableoid::regclass, * FROM p2; - tableoid | a | b -----------+---+----- - p2 | 2 | baz - p2 | 2 | qux -(2 rows) - -INSERT INTO pt VALUES (1, 'xyzzy'); -- ERROR -ERROR: cannot insert into foreign table "p1" -INSERT INTO pt VALUES (2, 'xyzzy'); -UPDATE pt set a = 1 where a = 2; -- ERROR -ERROR: cannot insert into foreign table "p1" -SELECT tableoid::regclass, * FROM pt; - tableoid | a | b -----------+---+------- - p1 | 1 | foo - p1 | 1 | bar - p2 | 2 | baz - p2 | 2 | qux - p2 | 2 | xyzzy -(5 rows) - -SELECT tableoid::regclass, * FROM p1; - tableoid | a | b -----------+---+----- - p1 | 1 | foo - p1 | 1 | bar -(2 rows) - -SELECT tableoid::regclass, * FROM p2; - tableoid | a | b -----------+---+------- - p2 | 2 | baz - p2 | 2 | qux - p2 | 2 | xyzzy -(3 rows) - -DROP TABLE pt; --- generated column tests -\set filename :abs_srcdir '/data/list1.csv' -CREATE FOREIGN TABLE gft1 (a int, b text, c text GENERATED ALWAYS AS ('foo') STORED) SERVER file_server -OPTIONS (format 'csv', filename :'filename', delimiter ','); -SELECT a, c FROM gft1; - a | c ----+-------- - 1 | _null_ - 1 | _null_ -(2 rows) - -DROP FOREIGN TABLE gft1; --- copy default tests -\set filename :abs_srcdir '/data/copy_default.csv' -CREATE FOREIGN TABLE copy_default ( - id integer, - text_value text not null default 'test', - ts_value timestamp without time zone not null default '2022-07-05' -) SERVER file_server -OPTIONS (format 'csv', filename :'filename', default '\D'); -SELECT id, text_value, ts_value FROM copy_default; - id | text_value | ts_value -----+------------+-------------------------- - 1 | value | Mon Jul 04 00:00:00 2022 - 2 | test | Sun Jul 03 00:00:00 2022 - 3 | test | Tue Jul 05 00:00:00 2022 -(3 rows) - -DROP FOREIGN TABLE copy_default; --- privilege tests -SET ROLE regress_file_fdw_superuser; -SELECT * FROM agg_text ORDER BY a; - a | b ------+--------- - 0 | 0.09561 - 42 | 324.78 - 56 | 7.8 - 100 | 99.097 -(4 rows) - -SET ROLE regress_file_fdw_user; -SELECT * FROM agg_text ORDER BY a; - a | b ------+--------- - 0 | 0.09561 - 42 | 324.78 - 56 | 7.8 - 100 | 99.097 -(4 rows) - -SET ROLE regress_no_priv_user; -SELECT * FROM agg_text ORDER BY a; -- ERROR -ERROR: permission denied for foreign table agg_text -SET ROLE regress_file_fdw_user; -\t on -SELECT explain_filter('EXPLAIN (VERBOSE, COSTS FALSE) SELECT * FROM agg_text WHERE a > 0'); - Foreign Scan on public.agg_text - Output: a, b - Filter: (agg_text.a > 0) - Foreign File: .../agg.data - -\t off --- file FDW allows foreign tables to be accessed without user mapping -DROP USER MAPPING FOR regress_file_fdw_user SERVER file_server; -SELECT * FROM agg_text ORDER BY a; - a | b ------+--------- - 0 | 0.09561 - 42 | 324.78 - 56 | 7.8 - 100 | 99.097 -(4 rows) - --- privilege tests for object -SET ROLE regress_file_fdw_superuser; -ALTER FOREIGN TABLE agg_text OWNER TO regress_file_fdw_user; -ALTER FOREIGN TABLE agg_text OPTIONS (SET format 'text'); -SET ROLE regress_file_fdw_user; -ALTER FOREIGN TABLE agg_text OPTIONS (SET format 'text'); -ERROR: permission denied to set the "filename" option of a file_fdw foreign table -DETAIL: Only roles with privileges of the "pg_read_server_files" role may set this option. -SET ROLE regress_file_fdw_superuser; --- cleanup -RESET ROLE; -DROP EXTENSION file_fdw CASCADE; -NOTICE: drop cascades to 9 other objects -DETAIL: drop cascades to server file_server -drop cascades to user mapping for regress_file_fdw_superuser on server file_server -drop cascades to user mapping for regress_no_priv_user on server file_server -drop cascades to foreign table agg_text -drop cascades to foreign table agg_csv -drop cascades to foreign table agg_bad -drop cascades to foreign table header_match -drop cascades to foreign table header_doesnt_match -drop cascades to foreign table text_csv -DROP ROLE regress_file_fdw_superuser, regress_file_fdw_user, regress_no_priv_user; +server closed the connection unexpectedly + This probably means the server terminated abnormally + before or while processing the request. +connection to server was lost