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;
|
ListCell *placementListCell = NULL;
|
||||||
uint32 unAssignedTaskCount = 0;
|
uint32 unAssignedTaskCount = 0;
|
||||||
|
|
||||||
|
if (taskList == NIL)
|
||||||
|
{
|
||||||
|
return NIL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We first sort tasks by their anchor shard id. We then sort placements for
|
* 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
|
* each anchor shard by the placement's insertion time. Note that we sort
|
||||||
|
|
|
@ -1705,6 +1705,11 @@ RouterJob(Query *originalQuery, PlannerRestrictionContext *plannerRestrictionCon
|
||||||
MODIFY_TASK,
|
MODIFY_TASK,
|
||||||
requiresMasterEvaluation);
|
requiresMasterEvaluation);
|
||||||
}
|
}
|
||||||
|
else if (shardId == INVALID_SHARD_ID)
|
||||||
|
{
|
||||||
|
/* modification that prunes to 0 shards */
|
||||||
|
job->taskList = NIL;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
job->taskList = SingleShardModifyTaskList(originalQuery, job->jobId,
|
job->taskList = SingleShardModifyTaskList(originalQuery, job->jobId,
|
||||||
|
@ -2058,7 +2063,6 @@ PlanRouterQuery(Query *originalQuery,
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert(UpdateOrDeleteQuery(originalQuery));
|
Assert(UpdateOrDeleteQuery(originalQuery));
|
||||||
|
|
||||||
planningError = ModifyQuerySupported(originalQuery, originalQuery,
|
planningError = ModifyQuerySupported(originalQuery, originalQuery,
|
||||||
isMultiShardQuery,
|
isMultiShardQuery,
|
||||||
plannerRestrictionContext);
|
plannerRestrictionContext);
|
||||||
|
|
|
@ -874,6 +874,13 @@ INSERT INTO raw_table VALUES (2, 400);
|
||||||
INSERT INTO raw_table VALUES (2, 500);
|
INSERT INTO raw_table VALUES (2, 500);
|
||||||
INSERT INTO summary_table VALUES (1);
|
INSERT INTO summary_table VALUES (1);
|
||||||
INSERT INTO summary_table VALUES (2);
|
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;
|
SELECT * FROM summary_table ORDER BY id;
|
||||||
id | min_value | average_value | count | uniques
|
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 (1);
|
||||||
INSERT INTO summary_table VALUES (2);
|
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;
|
SELECT * FROM summary_table ORDER BY id;
|
||||||
|
|
||||||
UPDATE summary_table SET average_value = average_query.average FROM (
|
UPDATE summary_table SET average_value = average_query.average FROM (
|
||||||
|
|
Loading…
Reference in New Issue