Skip to content

Commit

Permalink
session: reset CTEStorageMap before txn conflict and retry() (pingcap…
Browse files Browse the repository at this point in the history
  • Loading branch information
tiancaiamao authored Dec 13, 2023
1 parent 421aee1 commit 1cfb3b9
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 0 deletions.
1 change: 1 addition & 0 deletions pkg/session/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -1146,6 +1146,7 @@ func (s *session) retry(ctx context.Context, maxCnt uint) (err error) {
for i, sr := range nh.history {
st := sr.st
s.sessionVars.StmtCtx = sr.stmtCtx
s.sessionVars.StmtCtx.CTEStorageMap = map[int]*executor.CTEStorages{}
s.sessionVars.StmtCtx.ResetForRetry()
s.sessionVars.PlanCacheParams.Reset()
schemaVersion, err = st.RebuildPlan(ctx)
Expand Down
9 changes: 9 additions & 0 deletions tests/integrationtest/r/executor/cte.result
Original file line number Diff line number Diff line change
Expand Up @@ -413,3 +413,12 @@ with recursive cte1(c1) as (select c1 from t1 union select c1 + 1 c1 from cte1 l
c1
100
set tidb_max_chunk_size=default;
create table issue46522 (id int primary key);
insert into issue46522 values (1);
set @@tidb_disable_txn_auto_retry = off;
begin optimistic;
insert into issue46522 with t1 as (select id+1 from issue46522 where id = 1) select * from t1;
begin optimistic;
update issue46522 set id = id + 1;
commit;
commit;
16 changes: 16 additions & 0 deletions tests/integrationtest/t/executor/cte.test
Original file line number Diff line number Diff line change
Expand Up @@ -153,3 +153,19 @@ create table t1(c1 int);
insert into t1 values(0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14), (15), (16), (17), (18), (19), (20), (21), (22), (23), (24), (25), (26), (27), (28), (29), (30), (31), (32), (33), (34), (35), (36), (37), (38), (39), (40), (41), (42), (43), (44), (45), (46), (47), (48), (49), (50), (51), (52), (53), (54), (55), (56), (57), (58), (59), (60), (61), (62), (63), (64), (65), (66), (67), (68), (69), (70), (71), (72), (73), (74), (75), (76), (77), (78), (79), (80), (81), (82), (83), (84), (85), (86), (87), (88), (89), (90), (91), (92), (93), (94), (95), (96), (97), (98), (99), (100), (101), (102), (103), (104), (105), (106), (107), (108), (109), (110), (111), (112), (113), (114), (115), (116), (117), (118), (119), (120), (121), (122), (123), (124), (125), (126), (127), (128), (129), (130), (131), (132), (133), (134), (135), (136), (137), (138), (139), (140), (141), (142), (143), (144), (145), (146), (147), (148), (149), (150), (151), (152), (153), (154), (155), (156), (157), (158), (159), (160), (161), (162), (163), (164), (165), (166), (167), (168), (169), (170), (171), (172), (173), (174), (175), (176), (177), (178), (179), (180), (181), (182), (183), (184), (185), (186), (187), (188), (189), (190), (191), (192), (193), (194), (195), (196), (197), (198), (199), (200), (201), (202), (203), (204), (205), (206), (207), (208), (209), (210), (211), (212), (213), (214), (215), (216), (217), (218), (219), (220), (221), (222), (223), (224), (225), (226), (227), (228), (229), (230), (231), (232), (233), (234), (235), (236), (237), (238), (239), (240), (241), (242), (243), (244), (245), (246), (247), (248), (249), (250), (251), (252), (253), (254), (255), (256), (257), (258), (259), (260), (261), (262), (263), (264), (265), (266), (267), (268), (269), (270), (271), (272), (273), (274), (275), (276), (277), (278), (279), (280), (281), (282), (283), (284), (285), (286), (287), (288), (289), (290), (291), (292), (293), (294), (295), (296), (297), (298), (299);
with recursive cte1(c1) as (select c1 from t1 union select c1 + 1 c1 from cte1 limit 1 offset 100) select * from cte1;
set tidb_max_chunk_size=default;

# TestIssue46522
create table issue46522 (id int primary key);
insert into issue46522 values (1);
set @@tidb_disable_txn_auto_retry = off;
begin optimistic;
insert into issue46522 with t1 as (select id+1 from issue46522 where id = 1) select * from t1;

connect (conn1, localhost, root,, executor__cte);
begin optimistic;
update issue46522 set id = id + 1;
commit;
disconnect conn1;
connection default;

commit;

0 comments on commit 1cfb3b9

Please sign in to comment.