mirror of https://github.com/citusdata/citus.git
Rework ReplicateGrantStmt to use new flow
This was the impetus for the previous commit that changed from using a DDLJob * to a List * of them.pull/1278/head
parent
23f5e4282d
commit
d95b5bbad3
|
@ -382,6 +382,7 @@ multi_ProcessUtility(Node *parsetree,
|
|||
foreach(ddlJobCell, ddlJobs)
|
||||
{
|
||||
DDLJob *ddlJob = (DDLJob *) lfirst(ddlJobCell);
|
||||
|
||||
ExecuteDistributedDDLJob(ddlJob);
|
||||
}
|
||||
}
|
||||
|
@ -2362,15 +2363,14 @@ CopyGetAttnums(TupleDesc tupDesc, Relation rel, List *attnamelist)
|
|||
|
||||
|
||||
/*
|
||||
* ReplicateGrantStmt replicates GRANT/REVOKE command to worker nodes if the
|
||||
* PlanGrantStmt replicates GRANT/REVOKE command to worker nodes if the
|
||||
* the statement affects distributed tables.
|
||||
*
|
||||
* NB: So far column level privileges are not supported.
|
||||
*/
|
||||
void
|
||||
ReplicateGrantStmt(Node *parsetree)
|
||||
List *
|
||||
PlanGrantStmt(GrantStmt *grantStmt)
|
||||
{
|
||||
GrantStmt *grantStmt = (GrantStmt *) parsetree;
|
||||
StringInfoData privsString;
|
||||
StringInfoData granteesString;
|
||||
StringInfoData targetString;
|
||||
|
@ -2378,7 +2378,7 @@ ReplicateGrantStmt(Node *parsetree)
|
|||
ListCell *granteeCell = NULL;
|
||||
ListCell *objectCell = NULL;
|
||||
bool isFirst = true;
|
||||
DDLJob *ddlJob = palloc(sizeof(DDLJob));
|
||||
List *ddlJobs = NIL;
|
||||
|
||||
initStringInfo(&privsString);
|
||||
initStringInfo(&granteesString);
|
||||
|
@ -2392,7 +2392,7 @@ ReplicateGrantStmt(Node *parsetree)
|
|||
if (grantStmt->targtype != ACL_TARGET_OBJECT ||
|
||||
grantStmt->objtype != ACL_OBJECT_RELATION)
|
||||
{
|
||||
return;
|
||||
return NIL;
|
||||
}
|
||||
|
||||
/* deparse the privileges */
|
||||
|
@ -2463,6 +2463,7 @@ ReplicateGrantStmt(Node *parsetree)
|
|||
RangeVar *relvar = (RangeVar *) lfirst(objectCell);
|
||||
Oid relOid = RangeVarGetRelid(relvar, NoLock, false);
|
||||
const char *grantOption = "";
|
||||
DDLJob *ddlJob = NULL;
|
||||
|
||||
if (!IsDistributedTable(relOid))
|
||||
{
|
||||
|
@ -2495,12 +2496,15 @@ ReplicateGrantStmt(Node *parsetree)
|
|||
granteesString.data);
|
||||
}
|
||||
|
||||
ddlJob = palloc0(sizeof(DDLJob));
|
||||
ddlJob->targetRelationId = relOid;
|
||||
ddlJob->commandString = ddlString.data;
|
||||
ddlJob->commandString = pstrdup(ddlString.data);
|
||||
ddlJob->taskList = DDLTaskList(relOid, ddlString.data);
|
||||
|
||||
ExecuteDistributedDDLJob(ddlJob);
|
||||
ddlJobs = lappend(ddlJobs, ddlJob);
|
||||
|
||||
resetStringInfo(&ddlString);
|
||||
}
|
||||
|
||||
return ddlJobs;
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ typedef struct DDLJob
|
|||
extern void multi_ProcessUtility(Node *parsetree, const char *queryString,
|
||||
ProcessUtilityContext context, ParamListInfo params,
|
||||
DestReceiver *dest, char *completionTag);
|
||||
extern void ReplicateGrantStmt(Node *parsetree);
|
||||
extern List * PlanGrantStmt(GrantStmt *grantStmt);
|
||||
|
||||
|
||||
#endif /* MULTI_UTILITY_H */
|
||||
|
|
Loading…
Reference in New Issue