mirror of https://github.com/citusdata/citus.git
add command execution -2
parent
075940f9d2
commit
acd661b715
|
@ -128,7 +128,7 @@ CoordinatorInsertSelectExecScanInternal(CustomScanState *node)
|
|||
EState *executorState = ScanStateGetExecutorState(scanState);
|
||||
ParamListInfo paramListInfo = executorState->es_param_list_info;
|
||||
DistributedPlan *distributedPlan = scanState->distributedPlan;
|
||||
Query *insertSelectQuery = copyObject(distributedPlan->insertSelectQuery);
|
||||
Query *insertSelectQuery = (distributedPlan->insertSelectQuery);
|
||||
List *insertTargetList = insertSelectQuery->targetList;
|
||||
RangeTblEntry *selectRte = ExtractSelectRangeTableEntry(insertSelectQuery);
|
||||
RangeTblEntry *insertRte = ExtractResultRelationRTE(insertSelectQuery);
|
||||
|
@ -175,10 +175,6 @@ CoordinatorInsertSelectExecScanInternal(CustomScanState *node)
|
|||
// paramListInfo);
|
||||
//elog(ERROR, "selectQuery after: %s", pretty_format_node_dump(nodeToString(selectQuery)));
|
||||
|
||||
Form_pg_attribute att_tup0 = TupleDescAttr(node->ss.ss_ScanTupleSlot->tts_tupleDescriptor, 0);
|
||||
Form_pg_attribute att_tup1 = TupleDescAttr(node->ss.ss_ScanTupleSlot->tts_tupleDescriptor, 1);
|
||||
Form_pg_attribute att_tup2 = TupleDescAttr(node->ss.ss_ScanTupleSlot->tts_tupleDescriptor, 2);
|
||||
|
||||
//elog(INFO, "%d-%d-%d", att_tup0->atttypid,att_tup1->atttypid,att_tup2->atttypid);
|
||||
|
||||
PlannedStmt *selectPlan = GenerateValuesPlannedStmt(selectQuery);
|
||||
|
@ -442,7 +438,7 @@ GenerateValuesPlannedStmt(Query *parse)
|
|||
/* there is only a single relation rte */
|
||||
valuesScanNode->values_lists = rte2->values_lists;
|
||||
|
||||
valuesScanNode->values_lists = (List *) eval_const_expressions(NULL, (Node *) valuesScanNode->values_lists);
|
||||
//valuesScanNode->values_lists = (List *) eval_const_expressions(NULL, (Node *) valuesScanNode->values_lists);
|
||||
|
||||
plan->targetlist =
|
||||
copyObject(FetchStatementTargetList((Node *) parse));
|
||||
|
|
|
@ -407,17 +407,16 @@ GetSingleValue(Query *insertSelectQuery)
|
|||
List *valuesLists = valuesRte->values_lists;
|
||||
Node *firstValue = linitial(valuesLists);
|
||||
|
||||
valuesRte->values_lists = list_make1(firstValue);
|
||||
valuesRte->values_lists = NIL;
|
||||
|
||||
Query *copyQuery = copyObject(insertSelectQuery);
|
||||
|
||||
valuesRte->values_lists = valuesLists;
|
||||
|
||||
RangeTblEntry *copySubqueryRte = ExtractSelectRangeTableEntry(copyQuery);
|
||||
|
||||
RangeTblEntry *valuesRteInCopy = linitial(copySubqueryRte->subquery->rtable);
|
||||
valuesRteInCopy->values_lists = list_make1(firstValue);
|
||||
|
||||
valuesRte->values_lists = valuesLists;
|
||||
|
||||
return copyQuery;
|
||||
}
|
||||
|
||||
|
|
|
@ -327,14 +327,6 @@ DistributedInsertSelectSupported(Query *queryTree, RangeTblEntry *insertRte,
|
|||
|
||||
Query *subquery = subqueryRte->subquery;
|
||||
|
||||
if (!NeedsDistributedPlanning(subquery))
|
||||
{
|
||||
return DeferredError(ERRCODE_FEATURE_NOT_SUPPORTED,
|
||||
"distributed INSERT ... SELECT can only select from "
|
||||
"distributed tables",
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
/* we do not expect to see a view in modify target */
|
||||
foreach(rangeTableCell, queryTree->rtable)
|
||||
{
|
||||
|
@ -348,6 +340,16 @@ DistributedInsertSelectSupported(Query *queryTree, RangeTblEntry *insertRte,
|
|||
}
|
||||
}
|
||||
|
||||
if (false && !NeedsDistributedPlanning(subquery))
|
||||
{
|
||||
return DeferredError(ERRCODE_FEATURE_NOT_SUPPORTED,
|
||||
"distributed INSERT ... SELECT can only select from "
|
||||
"distributed tables",
|
||||
NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (FindNodeCheck((Node *) queryTree, CitusIsVolatileFunction))
|
||||
{
|
||||
return DeferredError(ERRCODE_FEATURE_NOT_SUPPORTED,
|
||||
|
@ -1118,7 +1120,7 @@ InsertPartitionColumnMatchesSelect(Query *query, RangeTblEntry *insertRte,
|
|||
static DistributedPlan *
|
||||
CreateCoordinatorInsertSelectPlan(uint64 planId, Query *parse)
|
||||
{
|
||||
Query *insertSelectQuery = copyObject(parse);
|
||||
Query *insertSelectQuery = (parse);
|
||||
|
||||
RangeTblEntry *insertRte = ExtractResultRelationRTE(insertSelectQuery);
|
||||
Oid targetRelationId = insertRte->relid;
|
||||
|
|
Loading…
Reference in New Issue