mirror of https://github.com/citusdata/citus.git
wip
parent
7df6a42a70
commit
bd4a3a42bb
|
@ -690,6 +690,13 @@ GetDistributeObjectOps(Node *node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case T_ViewStmt:
|
||||||
|
{
|
||||||
|
ViewStmt *stmt = castNode(ViewStmt, node);
|
||||||
|
|
||||||
|
return &NoDistributeOps;
|
||||||
|
}
|
||||||
|
|
||||||
case T_AlterOwnerStmt:
|
case T_AlterOwnerStmt:
|
||||||
{
|
{
|
||||||
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
|
AlterOwnerStmt *stmt = castNode(AlterOwnerStmt, node);
|
||||||
|
|
|
@ -603,37 +603,26 @@ ProcessUtilityInternal(PlannedStmt *pstmt,
|
||||||
"rename the role")));
|
"rename the role")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (IsA(parsetree, ViewStmt))
|
if (IsA(parsetree, ViewStmt))
|
||||||
{
|
{
|
||||||
CommandCounterIncrement();
|
|
||||||
elog(INFO, "create view");
|
|
||||||
ViewStmt *v = (ViewStmt *) parsetree;
|
ViewStmt *v = (ViewStmt *) parsetree;
|
||||||
|
|
||||||
Oid viewOid = RangeVarGetRelid(v->view, NoLock, false);
|
Oid viewOid = RangeVarGetRelid(v->view, AccessShareLock, false);
|
||||||
elog(INFO, "viewOid: %d", viewOid);
|
|
||||||
|
|
||||||
/* TODO: check the view depends on a distributed table that we should sync */
|
/* TODO: check the view depends on a distributed table that we should sync */
|
||||||
if (ClusterHasKnownMetadataWorkers())
|
if (ClusterHasKnownMetadataWorkers() && IsCoordinator())
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Ensure that the views are also propagated to the metadata workers
|
* Ensure that the views are also propagated to the metadata workers
|
||||||
*/
|
*/
|
||||||
PropagateDependenciesOfViewList(list_make1_oid(viewOid));
|
PropagateDependenciesOfViewList(list_make1_oid(viewOid));
|
||||||
|
|
||||||
/* prevent recursive propagation */
|
/* TODO: this command fails*/
|
||||||
SendCommandToWorkersWithMetadata(DISABLE_DDL_PROPAGATION);
|
|
||||||
|
|
||||||
/* send the commands one by one */
|
|
||||||
{
|
|
||||||
char *viewDef = GetViewCreationCommand(viewOid);
|
char *viewDef = GetViewCreationCommand(viewOid);
|
||||||
elog(INFO, "viewDef: %s", viewDef);
|
|
||||||
|
|
||||||
SendCommandToWorkersWithMetadata(viewDef);
|
SendCommandToWorkersWithMetadata(viewDef);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsA(parsetree, CreateStmt))
|
if (IsA(parsetree, CreateStmt))
|
||||||
|
|
|
@ -321,6 +321,7 @@ SyncMetadataSnapshotToNode(WorkerNode *workerNode, bool raiseOnError)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#include "distributed/metadata/dependency.h"
|
#include "distributed/metadata/dependency.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -494,9 +495,6 @@ MetadataCreateCommands(void)
|
||||||
List *viewList = GetDependingViews(cacheEntry->relationId);
|
List *viewList = GetDependingViews(cacheEntry->relationId);
|
||||||
PropagateDependenciesOfViewList(viewList);
|
PropagateDependenciesOfViewList(viewList);
|
||||||
|
|
||||||
/* prevent recursive propagation */
|
|
||||||
SendCommandToWorkersWithMetadata(DISABLE_DDL_PROPAGATION);
|
|
||||||
|
|
||||||
/* send the commands one by one */
|
/* send the commands one by one */
|
||||||
Oid viewId;
|
Oid viewId;
|
||||||
List *viewCommandList = NIL;
|
List *viewCommandList = NIL;
|
||||||
|
|
Loading…
Reference in New Issue