From: Bruce Momjian Date: Wed, 26 Apr 2006 23:01:58 +0000 (+0000) Subject: Fix SELECT INTO and CREATE TABLE AS to create tables in the default X-Git-Url: http://waps.l3s.uni-hannover.de/gitweb/?a=commitdiff_plain;h=845b18ea7c8aad557f86d8c5027e1714a426b39e;p=users%2Fbernd%2Fpostgres.git Fix SELECT INTO and CREATE TABLE AS to create tables in the default tablespace, not the base directory. Kris Jurka --- diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index a63da79e9c..84c1c58ed5 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -37,6 +37,7 @@ #include "catalog/heap.h" #include "catalog/namespace.h" #include "commands/tablecmds.h" +#include "commands/tablespace.h" #include "commands/trigger.h" #include "executor/execdebug.h" #include "executor/execdefs.h" @@ -737,6 +738,7 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly) { char *intoName; Oid namespaceId; + Oid tablespaceId; AclResult aclresult; Oid intoRelationId; TupleDesc tupdesc; @@ -753,6 +755,16 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly) aclcheck_error(aclresult, ACL_KIND_NAMESPACE, get_namespace_name(namespaceId)); + tablespaceId = GetDefaultTablespace(); + if (OidIsValid(tablespaceId)) { + aclresult = pg_tablespace_aclcheck(tablespaceId, GetUserId(), + ACL_CREATE); + + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, ACL_KIND_TABLESPACE, + get_tablespace_name(tablespaceId)); + } + /* * have to copy tupType to get rid of constraints */ @@ -760,7 +772,7 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly) intoRelationId = heap_create_with_catalog(intoName, namespaceId, - InvalidOid, + tablespaceId, InvalidOid, GetUserId(), tupdesc,