diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/commands/copyfrom.c | 6 | ||||
-rw-r--r-- | src/test/regress/expected/copy.out | 8 | ||||
-rw-r--r-- | src/test/regress/sql/copy.sql | 10 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/backend/commands/copyfrom.c b/src/backend/commands/copyfrom.c index 0cbd05f5602..b70f4691b72 100644 --- a/src/backend/commands/copyfrom.c +++ b/src/backend/commands/copyfrom.c @@ -740,6 +740,12 @@ CopyFrom(CopyFromState cstate) errmsg("cannot perform COPY FREEZE on a partitioned table"))); } + /* There's currently no support for COPY FREEZE on foreign tables. */ + if (cstate->rel->rd_rel->relkind == RELKIND_FOREIGN_TABLE) + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot perform COPY FREEZE on a foreign table"))); + /* * Tolerate one registration for the benefit of FirstXactSnapshot. * Scan-bearing queries generally create at least two registrations, diff --git a/src/test/regress/expected/copy.out b/src/test/regress/expected/copy.out index f554d42c84c..e69e34c69b8 100644 --- a/src/test/regress/expected/copy.out +++ b/src/test/regress/expected/copy.out @@ -325,3 +325,11 @@ SELECT tableoid::regclass, id % 2 = 0 is_even, count(*) from parted_si GROUP BY (2 rows) DROP TABLE parted_si; +-- ensure COPY FREEZE errors for foreign tables +begin; +create foreign data wrapper copytest_wrapper; +create server copytest_server foreign data wrapper copytest_wrapper; +create foreign table copytest_foreign_table (a int) server copytest_server; +copy copytest_foreign_table from stdin (freeze); +ERROR: cannot perform COPY FREEZE on a foreign table +rollback; diff --git a/src/test/regress/sql/copy.sql b/src/test/regress/sql/copy.sql index f1699b66b04..895479d2d0f 100644 --- a/src/test/regress/sql/copy.sql +++ b/src/test/regress/sql/copy.sql @@ -348,3 +348,13 @@ COPY parted_si(id, data) FROM :'filename'; SELECT tableoid::regclass, id % 2 = 0 is_even, count(*) from parted_si GROUP BY 1, 2 ORDER BY 1; DROP TABLE parted_si; + +-- ensure COPY FREEZE errors for foreign tables +begin; +create foreign data wrapper copytest_wrapper; +create server copytest_server foreign data wrapper copytest_wrapper; +create foreign table copytest_foreign_table (a int) server copytest_server; +copy copytest_foreign_table from stdin (freeze); +1 +\. +rollback; |