diff options
| author | Bruce Momjian <bruce@momjian.us> | 1999-09-23 17:03:39 +0000 |
|---|---|---|
| committer | Bruce Momjian <bruce@momjian.us> | 1999-09-23 17:03:39 +0000 |
| commit | e7cad7b0cbf88e2c0c5bf89957e60657561ffd70 (patch) | |
| tree | 2d88ae4f0faeadd7796481f626364e81f116e956 /src/backend/tcop | |
| parent | abd4bf13416e0dab832be4944d51de2f9e25f784 (diff) | |
| download | postgresql-e7cad7b0cbf88e2c0c5bf89957e60657561ffd70.tar.gz | |
Add TRUNCATE command, with psql help and sgml additions.
Diffstat (limited to 'src/backend/tcop')
| -rw-r--r-- | src/backend/tcop/utility.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index 29b4fb527c..26735a5d80 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.65 1999/09/18 19:07:44 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/tcop/utility.c,v 1.66 1999/09/23 17:02:52 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -206,6 +206,38 @@ ProcessUtility(Node *parsetree, } break; + case T_TruncateStmt: + { + + Relation rel; + + PS_SET_STATUS(commandTag = "TRUNCATE"); + CHECK_IF_ABORTED(); + + relname = ((TruncateStmt *) parsetree)->relName; + if (!allowSystemTableMods && IsSystemRelationName(relname)) { + elog(ERROR, "TRUNCATE cannot be used on system tables. '%s' is a system table", + relname); + } + + rel = heap_openr(relname); + if (RelationIsValid(rel)) { + if (rel->rd_rel->relkind == RELKIND_SEQUENCE) { + elog(ERROR, "TRUNCATE cannot be used on sequences. '%s' is a sequence", + relname); + } + heap_close(rel); + } +#ifndef NO_SECURITY + if (!pg_ownercheck(userName, relname, RELNAME)) { + elog(ERROR, "you do not own class \"%s\"", relname); + } +#endif + TruncateRelation(((TruncateStmt *) parsetree)->relName); + + } + break; + case T_CopyStmt: { CopyStmt *stmt = (CopyStmt *) parsetree; |
