mirror of https://github.com/citusdata/citus.git
Fix issue with some zero-shard modifications
parent
2c040d2c8f
commit
e7a8db5493
|
@ -5122,6 +5122,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
|
||||||
|
|
|
@ -1715,6 +1715,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,
|
||||||
|
@ -2068,7 +2073,6 @@ PlanRouterQuery(Query *originalQuery,
|
||||||
}
|
}
|
||||||
|
|
||||||
Assert(UpdateOrDeleteQuery(originalQuery));
|
Assert(UpdateOrDeleteQuery(originalQuery));
|
||||||
|
|
||||||
planningError = ModifyQuerySupported(originalQuery, originalQuery,
|
planningError = ModifyQuerySupported(originalQuery, originalQuery,
|
||||||
isMultiShardQuery,
|
isMultiShardQuery,
|
||||||
plannerRestrictionContext);
|
plannerRestrictionContext);
|
||||||
|
|
|
@ -875,6 +875,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
|
||||||
----+-----------+---------------+-------+---------
|
----+-----------+---------------+-------+---------
|
||||||
|
|
|
@ -547,6 +547,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