Now we are getting corruption with GTT with below scenario.
postgres=# CREATE GLOBAL TEMPORARY TABLE gtt1(c1 bigint, c2 bigserial) on commit delete rows; CREATE TABLE postgres=# CREATE GLOBAL TEMPORARY TABLE gtt2(c1 bigint, c2 bigserial) on commit preserve rows; CREATE TABLE postgres=# \q
[edb@localhost bin]$ echo "1 > 2 > 3 > "> t.dat
[edb@localhost bin]$ ./psql postgres psql (13devel) Type "help" for help.
postgres=# \copy gtt1(c1) from 't.dat' with csv; ERROR: could not read block 0 in file "base/13585/t3_16384": read only 0 of 8192 bytes CONTEXT: COPY gtt1, line 1: "1"
postgres=# \copy gtt2(c1) from 't.dat' with csv; ERROR: could not read block 0 in file "base/13585/t3_16390": read only 0 of 8192 bytes CONTEXT: COPY gtt2, line 1: "1"
NOTE: We end with such corruption for "bigserial/smallserial/serial" datatype columns.