On Tue, 11 Mar 2025 at 18:24, jian he <jian.universal...@gmail.com> wrote: > > after my change: > ------------ > COPY TO can be used only with plain tables, not views, and does not > copy rows from child tables, > however COPY TO can be used with partitioned tables. > For example, in a table inheritance hierarchy, COPY table TO copies > the same rows as SELECT * FROM ONLY table. > The syntax COPY (SELECT * FROM table) TO ... can be used to dump all > of the rows in an inheritance hierarchy, or view. > ------------
I find an issue with the patch: -- Setup CREATE SERVER myserver FOREIGN DATA WRAPPER postgres_fdw OPTIONS (dbname 'testdb', port '5432'); CREATE TABLE t1(id int) PARTITION BY RANGE(id); CREATE TABLE part1 PARTITION OF t1 FOR VALUES FROM (0) TO (5); CREATE TABLE part2 PARTITION OF t1 FOR VALUES FROM (5) TO (15) PARTITION BY RANGE(id); CREATE FOREIGN TABLE part2_1 PARTITION OF part2 FOR VALUES FROM (10) TO (15) SERVER myserver; -- Create table in testdb create table part2_1(id int); -- Copy partitioned table data postgres=# copy t1 to stdout(header); server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request. Stack trace for the same is: #0 table_beginscan (rel=0x72b109f9aad8, snapshot=0x5daafa77e000, nkeys=0, key=0x0) at ../../../src/include/access/tableam.h:883 #1 0x00005daadf89eb9b in DoCopyTo (cstate=0x5daafa71e278) at copyto.c:1105 #2 0x00005daadf8913f4 in DoCopy (pstate=0x5daafa6c5fc0, stmt=0x5daafa6f20c8, stmt_location=0, stmt_len=25, processed=0x7ffd3799c2f0) at copy.c:316 #3 0x00005daadfc7a770 in standard_ProcessUtility (pstmt=0x5daafa6f21e8, queryString=0x5daafa6f15c0 "copy t1 to stdout(header);", readOnlyTree=false, context=PROCESS_UTILITY_TOPLEVEL, params=0x0, queryEnv=0x0, dest=0x5daafa6f25a8, qc=0x7ffd3799c660) at utility.c:738 (gdb) f 0 #0 table_beginscan (rel=0x72b109f9aad8, snapshot=0x5daafa77e000, nkeys=0, key=0x0) at ../../../src/include/access/tableam.h:883 883 return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags); The table access method is not available in this care (gdb) p *rel->rd_tableam Cannot access memory at address 0x0 This failure happens when we do table_beginscan on scan part2_1 table Regards, Vignesh