aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/commands/copy.c3
-rw-r--r--src/test/regress/expected/copy2.out12
-rw-r--r--src/test/regress/sql/copy2.sql8
3 files changed, 19 insertions, 4 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c
index c4104e4d9d5..8200d981399 100644
--- a/src/backend/commands/copy.c
+++ b/src/backend/commands/copy.c
@@ -2002,7 +2002,8 @@ CopyFrom(CopyState cstate)
if (cstate->freeze &&
ThereAreNoPriorRegisteredSnapshots() &&
ThereAreNoReadyPortals() &&
- cstate->rel->rd_newRelfilenodeSubid == GetCurrentSubTransactionId())
+ (cstate->rel->rd_newRelfilenodeSubid == GetCurrentSubTransactionId() ||
+ cstate->rel->rd_createSubid == GetCurrentSubTransactionId()))
hi_options |= HEAP_INSERT_FROZEN;
}
diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out
index 7a9e546aad6..604c27a2f2f 100644
--- a/src/test/regress/expected/copy2.out
+++ b/src/test/regress/expected/copy2.out
@@ -254,7 +254,17 @@ SELECT * FROM testnull;
|
(4 rows)
+BEGIN;
CREATE TABLE vistest (LIKE testeoc);
+COPY vistest FROM stdin CSV;
+COMMIT;
+SELECT xmax, * FROM vistest;
+ xmax | a
+------+----
+ 0 | a0
+ 0 | b
+(2 rows)
+
BEGIN;
TRUNCATE vistest;
COPY vistest FROM stdin CSV;
@@ -324,14 +334,12 @@ SELECT * FROM vistest;
COMMIT;
TRUNCATE vistest;
COPY vistest FROM stdin CSV FREEZE;
-NOTICE: FREEZE option specified but pre-conditions not met
BEGIN;
INSERT INTO vistest VALUES ('z');
SAVEPOINT s1;
TRUNCATE vistest;
ROLLBACK TO SAVEPOINT s1;
COPY vistest FROM stdin CSV FREEZE;
-NOTICE: FREEZE option specified but pre-conditions not met
SELECT * FROM vistest;
a
----
diff --git a/src/test/regress/sql/copy2.sql b/src/test/regress/sql/copy2.sql
index fbaa433be4e..55568e68e40 100644
--- a/src/test/regress/sql/copy2.sql
+++ b/src/test/regress/sql/copy2.sql
@@ -178,8 +178,14 @@ COPY testnull FROM stdin WITH NULL AS E'\\0';
SELECT * FROM testnull;
-
+BEGIN;
CREATE TABLE vistest (LIKE testeoc);
+COPY vistest FROM stdin CSV;
+a0
+b
+\.
+COMMIT;
+SELECT * FROM vistest;
BEGIN;
TRUNCATE vistest;
COPY vistest FROM stdin CSV;