mirror of https://github.com/citusdata/citus.git
Fix issue with some zero-shard modifications
parent
25fab29e00
commit
42f2ad6133
|
@ -5090,6 +5090,11 @@ ReorderAndAssignTaskList(List *taskList, List * (*reorderFunction)(Task *, List
|
|||
ListCell *placementListCell = NULL;
|
||||
uint32 unAssignedTaskCount = 0;
|
||||
|
||||
if (taskList == NIL)
|
||||
{
|
||||
return NIL;
|
||||
}
|
||||
|
||||
/*
|
||||
* We first sort tasks by their anchor shard id. We then sort placements for
|
||||
* each anchor shard by the placement's insertion time. Note that we sort
|
||||
|
|
|
@ -1705,6 +1705,11 @@ RouterJob(Query *originalQuery, PlannerRestrictionContext *plannerRestrictionCon
|
|||
MODIFY_TASK,
|
||||
requiresMasterEvaluation);
|
||||
}
|
||||
else if (shardId == INVALID_SHARD_ID)
|
||||
{
|
||||
/* modification that prunes to 0 shards */
|
||||
job->taskList = NIL;
|
||||
}
|
||||
else
|
||||
{
|
||||
job->taskList = SingleShardModifyTaskList(originalQuery, job->jobId,
|
||||
|
@ -2058,7 +2063,6 @@ PlanRouterQuery(Query *originalQuery,
|
|||
}
|
||||
|
||||
Assert(UpdateOrDeleteQuery(originalQuery));
|
||||
|
||||
planningError = ModifyQuerySupported(originalQuery, originalQuery,
|
||||
isMultiShardQuery,
|
||||
plannerRestrictionContext);
|
||||
|
|
|
@ -874,6 +874,13 @@ INSERT INTO raw_table VALUES (2, 400);
|
|||
INSERT INTO raw_table VALUES (2, 500);
|
||||
INSERT INTO summary_table VALUES (1);
|
||||
INSERT INTO summary_table VALUES (2);
|
||||
-- test noop deletes and updates
|
||||
DELETE FROM summary_table WHERE false;
|
||||
DELETE FROM summary_table WHERE null;
|
||||
DELETE FROM summary_table WHERE null > jsonb_build_array();
|
||||
UPDATE summary_table SET uniques = 0 WHERE false;
|
||||
UPDATE summary_table SET uniques = 0 WHERE null;
|
||||
UPDATE summary_table SET uniques = 0 WHERE null > jsonb_build_array();
|
||||
SELECT * FROM summary_table ORDER BY id;
|
||||
id | min_value | average_value | count | uniques
|
||||
----+-----------+---------------+-------+---------
|
||||
|
|
|
@ -545,6 +545,15 @@ INSERT INTO raw_table VALUES (2, 500);
|
|||
INSERT INTO summary_table VALUES (1);
|
||||
INSERT INTO summary_table VALUES (2);
|
||||
|
||||
-- test noop deletes and updates
|
||||
DELETE FROM summary_table WHERE false;
|
||||
DELETE FROM summary_table WHERE null;
|
||||
DELETE FROM summary_table WHERE null > jsonb_build_array();
|
||||
|
||||
UPDATE summary_table SET uniques = 0 WHERE false;
|
||||
UPDATE summary_table SET uniques = 0 WHERE null;
|
||||
UPDATE summary_table SET uniques = 0 WHERE null > jsonb_build_array();
|
||||
|
||||
SELECT * FROM summary_table ORDER BY id;
|
||||
|
||||
UPDATE summary_table SET average_value = average_query.average FROM (
|
||||
|
|
Loading…
Reference in New Issue