Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

planner: large under-estimated cardinality error if the value in equal condition is not in TopN or Histogram Bucket boundary #45919

Closed
qw4990 opened this issue Aug 8, 2023 · 1 comment
Labels
affects-6.5 affects-7.1 epic/cardinality-estimation the optimizer cardinality estimation sig/planner SIG: Planner type/enhancement The issue or PR belongs to an enhancement.

Comments

@qw4990
Copy link
Contributor

qw4990 commented Aug 8, 2023

Run the SQLs below to prepare some data:

create table t (a int);
insert into t 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), (300), (301), (302), (303), (304), (305), (306), (307), (308), (309), (310), (311), (312), (313), (314), (315), (316), (317), (318), (319), (320), (321), (322), (323), (324), (325), (326), (327), (328), (329), (330), (331), (332), (333), (334), (335), (336), (337), (338), (339), (340), (341), (342), (343), (344), (345), (346), (347), (348), (349), (350), (351), (352), (353), (354), (355), (356), (357), (358), (359), (360), (361), (362), (363), (364), (365), (366), (367), (368), (369), (370), (371), (372), (373), (374), (375), (376), (377), (378), (379), (380), (381), (382), (383), (384), (385), (386), (387), (388), (389), (390), (391), (392), (393), (394), (395), (396), (397), (398), (399), (400), (401), (402), (403), (404), (405), (406), (407), (408), (409), (410), (411), (412), (413), (414), (415), (416), (417), (418), (419), (420), (421), (422), (423), (424), (425), (426), (427), (428), (429), (430), (431), (432), (433), (434), (435), (436), (437), (438), (439), (440), (441), (442), (443), (444), (445), (446), (447), (448), (449), (450), (451), (452), (453), (454), (455), (456), (457), (458), (459), (460), (461), (462), (463), (464), (465), (466), (467), (468), (469), (470), (471), (472), (473), (474), (475), (476), (477), (478), (479), (480), (481), (482), (483), (484), (485), (486), (487), (488), (489), (490), (491), (492), (493), (494), (495), (496), (497), (498), (499);
insert into t 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), (300), (301), (302), (303), (304), (305), (306), (307), (308), (309), (310), (311), (312), (313), (314), (315), (316), (317), (318), (319), (320), (321), (322), (323), (324), (325), (326), (327), (328), (329), (330), (331), (332), (333), (334), (335), (336), (337), (338), (339), (340), (341), (342), (343), (344), (345), (346), (347), (348), (349), (350), (351), (352), (353), (354), (355), (356), (357), (358), (359), (360), (361), (362), (363), (364), (365), (366), (367), (368), (369), (370), (371), (372), (373), (374), (375), (376), (377), (378), (379), (380), (381), (382), (383), (384), (385), (386), (387), (388), (389), (390), (391), (392), (393), (394), (395), (396), (397), (398), (399), (400), (401), (402), (403), (404), (405), (406), (407), (408), (409), (410), (411), (412), (413), (414), (415), (416), (417), (418), (419), (420), (421), (422), (423), (424), (425), (426), (427), (428), (429), (430), (431), (432), (433), (434), (435), (436), (437), (438), (439), (440), (441), (442), (443), (444), (445), (446), (447), (448), (449), (450), (451), (452), (453), (454), (455), (456), (457), (458), (459), (460), (461), (462), (463), (464), (465), (466), (467), (468), (469), (470), (471), (472), (473), (474), (475), (476), (477), (478), (479), (480), (481), (482), (483), (484), (485), (486), (487), (488), (489), (490), (491), (492), (493), (494), (495), (496), (497), (498), (499), (500), (501), (502), (503), (504), (505), (506), (507), (508), (509), (510), (511), (512), (513), (514), (515), (516), (517), (518), (519), (520), (521), (522), (523), (524), (525), (526), (527), (528), (529), (530), (531), (532), (533), (534), (535), (536), (537), (538), (539), (540), (541), (542), (543), (544), (545), (546), (547), (548), (549), (550), (551), (552), (553), (554), (555), (556), (557), (558), (559), (560), (561), (562), (563), (564), (565), (566), (567), (568), (569), (570), (571), (572), (573), (574), (575), (576), (577), (578), (579), (580), (581), (582), (583), (584), (585), (586), (587), (588), (589), (590), (591), (592), (593), (594), (595), (596), (597), (598), (599), (600), (601), (602), (603), (604), (605), (606), (607), (608), (609), (610), (611), (612), (613), (614), (615), (616), (617), (618), (619), (620), (621), (622), (623), (624), (625), (626), (627), (628), (629), (630), (631), (632), (633), (634), (635), (636), (637), (638), (639), (640), (641), (642), (643), (644), (645), (646), (647), (648), (649), (650), (651), (652), (653), (654), (655), (656), (657), (658), (659), (660), (661), (662), (663), (664), (665), (666), (667), (668), (669), (670), (671), (672), (673), (674), (675), (676), (677), (678), (679), (680), (681), (682), (683), (684), (685), (686), (687), (688), (689), (690), (691), (692), (693), (694), (695), (696), (697), (698), (699), (700), (701), (702), (703), (704), (705), (706), (707), (708), (709), (710), (711), (712), (713), (714), (715), (716), (717), (718), (719), (720), (721), (722), (723), (724), (725), (726), (727), (728), (729), (730), (731), (732), (733), (734), (735), (736), (737), (738), (739), (740), (741), (742), (743), (744), (745), (746), (747), (748), (749), (750), (751), (752), (753), (754), (755), (756), (757), (758), (759), (760), (761), (762), (763), (764), (765), (766), (767), (768), (769), (770), (771), (772), (773), (774), (775), (776), (777), (778), (779), (780), (781), (782), (783), (784), (785), (786), (787), (788), (789), (790), (791), (792), (793), (794), (795), (796), (797), (798), (799), (800), (801), (802), (803), (804), (805), (806), (807), (808), (809), (810), (811), (812), (813), (814), (815), (816), (817), (818), (819), (820), (821), (822), (823), (824), (825), (826), (827), (828), (829), (830), (831), (832), (833), (834), (835), (836), (837), (838), (839), (840), (841), (842), (843), (844), (845), (846), (847), (848), (849), (850), (851), (852), (853), (854), (855), (856), (857), (858), (859), (860), (861), (862), (863), (864), (865), (866), (867), (868), (869), (870), (871), (872), (873), (874), (875), (876), (877), (878), (879), (880), (881), (882), (883), (884), (885), (886), (887), (888), (889), (890), (891), (892), (893), (894), (895), (896), (897), (898), (899), (900), (901), (902), (903), (904), (905), (906), (907), (908), (909), (910), (911), (912), (913), (914), (915), (916), (917), (918), (919), (920), (921), (922), (923), (924), (925), (926), (927), (928), (929), (930), (931), (932), (933), (934), (935), (936), (937), (938), (939), (940), (941), (942), (943), (944), (945), (946), (947), (948), (949), (950), (951), (952), (953), (954), (955), (956), (957), (958), (959), (960), (961), (962), (963), (964), (965), (966), (967), (968), (969), (970), (971), (972), (973), (974), (975), (976), (977), (978), (979), (980), (981), (982), (983), (984), (985), (986), (987), (988), (989), (990), (991), (992), (993), (994), (995), (996), (997), (998), (999);
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t select * from t;
insert into t values (1000), (1001), (1002), (1003), (1004), (1005), (1006), (1007), (1008), (1009), (1010), (1011), (1012), (1013), (1014), (1015), (1016), (1017), (1018), (1019), (1020), (1021), (1022), (1023), (1024), (1025), (1026), (1027), (1028), (1029), (1030), (1031), (1032), (1033), (1034), (1035), (1036), (1037), (1038), (1039), (1040), (1041), (1042), (1043), (1044), (1045), (1046), (1047), (1048), (1049), (1050), (1051), (1052), (1053), (1054), (1055), (1056), (1057), (1058), (1059), (1060), (1061), (1062), (1063), (1064), (1065), (1066), (1067), (1068), (1069), (1070), (1071), (1072), (1073), (1074), (1075), (1076), (1077), (1078), (1079), (1080), (1081), (1082), (1083), (1084), (1085), (1086), (1087), (1088), (1089), (1090), (1091), (1092), (1093), (1094), (1095), (1096), (1097), (1098), (1099), (1100), (1101), (1102), (1103), (1104), (1105), (1106), (1107), (1108), (1109), (1110), (1111), (1112), (1113), (1114), (1115), (1116), (1117), (1118), (1119), (1120), (1121), (1122), (1123), (1124), (1125), (1126), (1127), (1128), (1129), (1130), (1131), (1132), (1133), (1134), (1135), (1136), (1137), (1138), (1139), (1140), (1141), (1142), (1143), (1144), (1145), (1146), (1147), (1148), (1149), (1150), (1151), (1152), (1153), (1154), (1155), (1156), (1157), (1158), (1159), (1160), (1161), (1162), (1163), (1164), (1165), (1166), (1167), (1168), (1169), (1170), (1171), (1172), (1173), (1174), (1175), (1176), (1177), (1178), (1179), (1180), (1181), (1182), (1183), (1184), (1185), (1186), (1187), (1188), (1189), (1190), (1191), (1192), (1193), (1194), (1195), (1196), (1197), (1198), (1199), (1200), (1201), (1202), (1203), (1204), (1205), (1206), (1207), (1208), (1209), (1210), (1211), (1212), (1213), (1214), (1215), (1216), (1217), (1218), (1219), (1220), (1221), (1222), (1223), (1224), (1225), (1226), (1227), (1228), (1229), (1230), (1231), (1232), (1233), (1234), (1235), (1236), (1237), (1238), (1239), (1240), (1241), (1242), (1243), (1244), (1245), (1246), (1247), (1248), (1249), (1250), (1251), (1252), (1253), (1254), (1255), (1256), (1257), (1258), (1259), (1260), (1261), (1262), (1263), (1264), (1265), (1266), (1267), (1268), (1269), (1270), (1271), (1272), (1273), (1274), (1275), (1276), (1277), (1278), (1279), (1280), (1281), (1282), (1283), (1284), (1285), (1286), (1287), (1288), (1289), (1290), (1291), (1292), (1293), (1294), (1295), (1296), (1297), (1298), (1299), (1300), (1301), (1302), (1303), (1304), (1305), (1306), (1307), (1308), (1309), (1310), (1311), (1312), (1313), (1314), (1315), (1316), (1317), (1318), (1319), (1320), (1321), (1322), (1323), (1324), (1325), (1326), (1327), (1328), (1329), (1330), (1331), (1332), (1333), (1334), (1335), (1336), (1337), (1338), (1339), (1340), (1341), (1342), (1343), (1344), (1345), (1346), (1347), (1348), (1349), (1350), (1351), (1352), (1353), (1354), (1355), (1356), (1357), (1358), (1359), (1360), (1361), (1362), (1363), (1364), (1365), (1366), (1367), (1368), (1369), (1370), (1371), (1372), (1373), (1374), (1375), (1376), (1377), (1378), (1379), (1380), (1381), (1382), (1383), (1384), (1385), (1386), (1387), (1388), (1389), (1390), (1391), (1392), (1393), (1394), (1395), (1396), (1397), (1398), (1399), (1400), (1401), (1402), (1403), (1404), (1405), (1406), (1407), (1408), (1409), (1410), (1411), (1412), (1413), (1414), (1415), (1416), (1417), (1418), (1419), (1420), (1421), (1422), (1423), (1424), (1425), (1426), (1427), (1428), (1429), (1430), (1431), (1432), (1433), (1434), (1435), (1436), (1437), (1438), (1439), (1440), (1441), (1442), (1443), (1444), (1445), (1446), (1447), (1448), (1449), (1450), (1451), (1452), (1453), (1454), (1455), (1456), (1457), (1458), (1459), (1460), (1461), (1462), (1463), (1464), (1465), (1466), (1467), (1468), (1469), (1470), (1471), (1472), (1473), (1474), (1475), (1476), (1477), (1478), (1479), (1480), (1481), (1482), (1483), (1484), (1485), (1486), (1487), (1488), (1489), (1490), (1491), (1492), (1493), (1494), (1495), (1496), (1497), (1498), (1499);
...
insert into t values (100500), (100501), (100502), (100503), (100504), (100505), (100506), (100507), (100508), (100509), (100510), (100511), (100512), (100513), (100514), (100515), (100516), (100517), (100518), (100519), (100520), (100521), (100522), (100523), (100524), (100525), (100526), (100527), (100528), (100529), (100530), (100531), (100532), (100533), (100534), (100535), (100536), (100537), (100538), (100539), (100540), (100541), (100542), (100543), (100544), (100545), (100546), (100547), (100548), (100549), (100550), (100551), (100552), (100553), (100554), (100555), (100556), (100557), (100558), (100559), (100560), (100561), (100562), (100563), (100564), (100565), (100566), (100567), (100568), (100569), (100570), (100571), (100572), (100573), (100574), (100575), (100576), (100577), (100578), (100579), (100580), (100581), (100582), (100583), (100584), (100585), (100586), (100587), (100588), (100589), (100590), (100591), (100592), (100593), (100594), (100595), (100596), (100597), (100598), (100599), (100600), (100601), (100602), (100603), (100604), (100605), (100606), (100607), (100608), (100609), (100610), (100611), (100612), (100613), (100614), (100615), (100616), (100617), (100618), (100619), (100620), (100621), (100622), (100623), (100624), (100625), (100626), (100627), (100628), (100629), (100630), (100631), (100632), (100633), (100634), (100635), (100636), (100637), (100638), (100639), (100640), (100641), (100642), (100643), (100644), (100645), (100646), (100647), (100648), (100649), (100650), (100651), (100652), (100653), (100654), (100655), (100656), (100657), (100658), (100659), (100660), (100661), (100662), (100663), (100664), (100665), (100666), (100667), (100668), (100669), (100670), (100671), (100672), (100673), (100674), (100675), (100676), (100677), (100678), (100679), (100680), (100681), (100682), (100683), (100684), (100685), (100686), (100687), (100688), (100689), (100690), (100691), (100692), (100693), (100694), (100695), (100696), (100697), (100698), (100699), (100700), (100701), (100702), (100703), (100704), (100705), (100706), (100707), (100708), (100709), (100710), (100711), (100712), (100713), (100714), (100715), (100716), (100717), (100718), (100719), (100720), (100721), (100722), (100723), (100724), (100725), (100726), (100727), (100728), (100729), (100730), (100731), (100732), (100733), (100734), (100735), (100736), (100737), (100738), (100739), (100740), (100741), (100742), (100743), (100744), (100745), (100746), (100747), (100748), (100749), (100750), (100751), (100752), (100753), (100754), (100755), (100756), (100757), (100758), (100759), (100760), (100761), (100762), (100763), (100764), (100765), (100766), (100767), (100768), (100769), (100770), (100771), (100772), (100773), (100774), (100775), (100776), (100777), (100778), (100779), (100780), (100781), (100782), (100783), (100784), (100785), (100786), (100787), (100788), (100789), (100790), (100791), (100792), (100793), (100794), (100795), (100796), (100797), (100798), (100799), (100800), (100801), (100802), (100803), (100804), (100805), (100806), (100807), (100808), (100809), (100810), (100811), (100812), (100813), (100814), (100815), (100816), (100817), (100818), (100819), (100820), (100821), (100822), (100823), (100824), (100825), (100826), (100827), (100828), (100829), (100830), (100831), (100832), (100833), (100834), (100835), (100836), (100837), (100838), (100839), (100840), (100841), (100842), (100843), (100844), (100845), (100846), (100847), (100848), (100849), (100850), (100851), (100852), (100853), (100854), (100855), (100856), (100857), (100858), (100859), (100860), (100861), (100862), (100863), (100864), (100865), (100866), (100867), (100868), (100869), (100870), (100871), (100872), (100873), (100874), (100875), (100876), (100877), (100878), (100879), (100880), (100881), (100882), (100883), (100884), (100885), (100886), (100887), (100888), (100889), (100890), (100891), (100892), (100893), (100894), (100895), (100896), (100897), (100898), (100899), (100900), (100901), (100902), (100903), (100904), (100905), (100906), (100907), (100908), (100909), (100910), (100911), (100912), (100913), (100914), (100915), (100916), (100917), (100918), (100919), (100920), (100921), (100922), (100923), (100924), (100925), (100926), (100927), (100928), (100929), (100930), (100931), (100932), (100933), (100934), (100935), (100936), (100937), (100938), (100939), (100940), (100941), (100942), (100943), (100944), (100945), (100946), (100947), (100948), (100949), (100950), (100951), (100952), (100953), (100954), (100955), (100956), (100957), (100958), (100959), (100960), (100961), (100962), (100963), (100964), (100965), (100966), (100967), (100968), (100969), (100970), (100971), (100972), (100973), (100974), (100975), (100976), (100977), (100978), (100979), (100980), (100981), (100982), (100983), (100984), (100985), (100986), (100987), (100988), (100989), (100990), (100991), (100992), (100993), (100994), (100995), (100996), (100997), (100998), (100999);
analyze table t;

Then choose a value that is not in TopN and Histogram Bucket boundary, and we can see its cardinality estimation will be under-estimated a lot (p-error is around 200):

mysql> explain analyze select * from t where a=800;
+-------------------------+------------+---------+-----------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+------+
| id                      | estRows    | actRows | task      | access object | execution info                                                                                                                                                                                                                                     | operator info     | memory  | disk |
+-------------------------+------------+---------+-----------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+------+
| TableReader_7           | 11.19      | 2048    | root      |               | time:425.3ms, loops:3, RU:169.782978, cop_task: {num: 6, max: 181.9ms, min: 37.1ms, avg: 84ms, p95: 181.9ms, tot_proc: 500ms, rpc_num: 6, rpc_time: 504.1ms, copr_cache_hit_ratio: 0.00, build_task_duration: 15.3µs, max_distsql_concurrency: 2}  | data:Selection_6  | 11.1 KB | N/A  |
| └─Selection_6           | 11.19      | 2048    | cop[tikv] |               | tikv_task:{proc max:181.9ms, min:37.1ms, avg: 84ms, p80:127.7ms, p95:181.9ms, iters:0, tasks:6}                                                                                                                                                    | eq(test.t.a, 800) | N/A     | N/A  |
|   └─TableFullScan_5     | 3172000.00 | 3172000 | cop[tikv] | table:t       | tikv_task:{proc max:181.9ms, min:37.1ms, avg: 84ms, p80:127.7ms, p95:181.9ms, iters:0, tasks:6}                                                                                                                                                    | keep order:false  | N/A     | N/A  |
+-------------------------+------------+---------+-----------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------+---------+------+
3 rows in set (0.44 sec)

The root cause is that if this value is not in TopN or Bucket Boundary, we'll use total / NDV as the estimated values, then for some frequent values, this estimation formula may bring a big estimation error:
image

@qw4990 qw4990 added type/enhancement The issue or PR belongs to an enhancement. epic/cardinality-estimation the optimizer cardinality estimation labels Aug 8, 2023
@qw4990 qw4990 changed the title planner: large under-estimated cardinality error if the value in equal condition is not in TopN or Bucket boundary planner: large under-estimated cardinality error if the value in equal condition is not in TopN or Histogram Bucket boundary Aug 8, 2023
@qw4990
Copy link
Contributor Author

qw4990 commented Aug 8, 2023

Our current maximum number of TopN is 1024, which seems too small. A short-term solution is to increase this 1024 limitation to allow the user to collect more TopN values.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
affects-6.5 affects-7.1 epic/cardinality-estimation the optimizer cardinality estimation sig/planner SIG: Planner type/enhancement The issue or PR belongs to an enhancement.
Projects
None yet
Development

No branches or pull requests

1 participant