Skip to content

Commit 648a194

Browse files
fairyfartuhaihe
authored andcommitted
Fix the issue of duplicate counting of num_executed in gp_toolkit.gp_resgroup_status
This is a defect of the original GPDB. When enabling resource group management and the transaction switches from "Assign" to "Bypass" state, the "num_executed" counter is repeatedly counted.
1 parent 857723b commit 648a194

3 files changed

Lines changed: 27 additions & 1 deletion

File tree

src/backend/utils/resgroup/resgroup.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3700,7 +3700,6 @@ check_and_unassign_from_resgroup(PlannedStmt* stmt)
37003700
} while (!groupIncBypassedRef(&groupInfo));
37013701

37023702
bypassedGroup = groupInfo.group;
3703-
bypassedGroup->totalExecuted++;
37043703
pgstat_report_resgroup(bypassedGroup->groupId);
37053704
bypassedSlot.group = groupInfo.group;
37063705
bypassedSlot.groupId = groupInfo.groupId;

src/test/isolation2/expected/resgroup/resgroup_bypass.out

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,24 @@ SELECT gp_inject_fault('func_init_plan_end', 'reset', 1);
276276
1q: ... <quitting>
277277
2q: ... <quitting>
278278

279+
-- verify the increment of num_executed in gp_toolkit.gp_resgroup_status
280+
1: SET ROLE role_bypass;
281+
SET
282+
1: SELECT num_executed INTO temporary temp_num1 FROM gp_toolkit.gp_resgroup_status WHERE groupname='rg_bypass';
283+
SELECT 1
284+
1: SELECT num_executed INTO temporary temp_num2 FROM gp_toolkit.gp_resgroup_status WHERE groupname='rg_bypass';
285+
SELECT 1
286+
1: SELECT temp_num2.num_executed - temp_num1.num_executed AS delta FROM temp_num1, temp_num2;
287+
delta
288+
-------
289+
1
290+
(1 row)
291+
1: DROP TABLE temp_num1;
292+
DROP
293+
1: DROP TABLE temp_num2;
294+
DROP
295+
1q: ... <quitting>
296+
279297
-- cleanup
280298
-- start_ignore
281299
DROP TABLE t_bypass;

src/test/isolation2/sql/resgroup/resgroup_bypass.sql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,15 @@ SELECT gp_inject_fault('func_init_plan_end', 'reset', 1);
133133
1q:
134134
2q:
135135

136+
-- verify the increment of num_executed in gp_toolkit.gp_resgroup_status
137+
1: SET ROLE role_bypass;
138+
1: SELECT num_executed INTO temporary temp_num1 FROM gp_toolkit.gp_resgroup_status WHERE groupname='rg_bypass';
139+
1: SELECT num_executed INTO temporary temp_num2 FROM gp_toolkit.gp_resgroup_status WHERE groupname='rg_bypass';
140+
1: SELECT temp_num2.num_executed - temp_num1.num_executed AS delta FROM temp_num1, temp_num2;
141+
1: DROP TABLE temp_num1;
142+
1: DROP TABLE temp_num2;
143+
1q:
144+
136145
-- cleanup
137146
-- start_ignore
138147
DROP TABLE t_bypass;

0 commit comments

Comments
 (0)