mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-01 19:45:33 +08:00
Fix SELECT INTO and CREATE TABLE AS to create tables in the default
tablespace, not the base directory. Kris Jurka
This commit is contained in:
parent
46942e84d9
commit
382825da9d
@ -26,7 +26,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.241.4.2 2006/01/12 21:49:17 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.241.4.3 2006/04/26 23:01:13 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -36,6 +36,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"
|
||||
@ -731,6 +732,7 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly)
|
||||
{
|
||||
char *intoName;
|
||||
Oid namespaceId;
|
||||
Oid tablespaceId;
|
||||
AclResult aclresult;
|
||||
Oid intoRelationId;
|
||||
TupleDesc tupdesc;
|
||||
@ -747,6 +749,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
|
||||
*/
|
||||
@ -754,7 +766,7 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly)
|
||||
|
||||
intoRelationId = heap_create_with_catalog(intoName,
|
||||
namespaceId,
|
||||
InvalidOid,
|
||||
tablespaceId,
|
||||
tupdesc,
|
||||
RELKIND_RELATION,
|
||||
false,
|
||||
|
Loading…
Reference in New Issue
Block a user