diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2001-08-08 22:32:29 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2001-08-08 22:32:29 +0000 |
commit | 6281f348df13bba6ac65a8cdae0507596bd87870 (patch) | |
tree | d6ffdd4036c02d652c7472d6ac74ecb0367052d1 | |
parent | a11c8be973a253aad75fce6f65805beabba92bdd (diff) | |
download | postgresql-6281f348df13bba6ac65a8cdae0507596bd87870.tar.gz postgresql-6281f348df13bba6ac65a8cdae0507596bd87870.zip |
Back-patch fix to disallow COPY TO/FROM a view (or anything else that's
not a plain relation).
-rw-r--r-- | src/backend/commands/copy.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 0f249fa385c..cd8ffb712c3 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.136 2001/03/22 06:16:11 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.136.2.1 2001/08/08 22:32:29 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -305,8 +305,15 @@ DoCopy(char *relname, bool binary, bool oids, bool from, bool pipe, if (from) { /* copy from file to database */ - if (rel->rd_rel->relkind == RELKIND_SEQUENCE) - elog(ERROR, "You cannot change sequence relation %s", relname); + if (rel->rd_rel->relkind != RELKIND_RELATION) + { + if (rel->rd_rel->relkind == RELKIND_VIEW) + elog(ERROR, "You cannot copy view %s", relname); + else if (rel->rd_rel->relkind == RELKIND_SEQUENCE) + elog(ERROR, "You cannot change sequence relation %s", relname); + else + elog(ERROR, "You cannot copy object %s", relname); + } if (pipe) { if (IsUnderPostmaster) @@ -330,6 +337,15 @@ DoCopy(char *relname, bool binary, bool oids, bool from, bool pipe, } else { /* copy from database to file */ + if (rel->rd_rel->relkind != RELKIND_RELATION) + { + if (rel->rd_rel->relkind == RELKIND_VIEW) + elog(ERROR, "You cannot copy view %s", relname); + else if (rel->rd_rel->relkind == RELKIND_SEQUENCE) + elog(ERROR, "You cannot copy sequence %s", relname); + else + elog(ERROR, "You cannot copy object %s", relname); + } if (pipe) { if (IsUnderPostmaster) |