Skip to content

Commit 999ca29

Browse files
committed
Merge cluster-7.5 -> cluster-7.6
2 parents fc5e2a3 + f7598fc commit 999ca29

File tree

3 files changed

+236
-1
lines changed

3 files changed

+236
-1
lines changed

mysql-test/suite/ndb/r/ndb_index.result

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,3 +581,168 @@ insert into indexmerge values(9, 0, REPEAT("I",512));
581581
insert into indexmerge values(0, 9, REPEAT("J",512));
582582
delete quick from indexmerge where id = 2 or similar_id = 2;
583583
drop table indexmerge;
584+
CREATE TABLE t1(
585+
col1 int unsigned not null primary key AUTO_INCREMENT, col2 int unsigned,
586+
col3 varchar(27), col4 varchar(27), col5 varchar(27), col6 varchar(27),
587+
col7 char(27), col8 int unsigned, col9 varchar(27), col10 varchar(27),
588+
col11 varchar(27), col12 varchar(27), col13 varchar(27),
589+
col14 varchar(27), col15 smallint unsigned, col16 char(27),
590+
col17 varchar(27), col18 varchar(27), col19 varchar(27),
591+
col20 varchar(27), col21 char(27), col22 varchar(27),
592+
col23 mediumint unsigned, col24 varchar(27), col25 varchar(27),
593+
col26 char(27), col27 varchar(27), col28 varchar(27), col29 varchar(27),
594+
col30 varchar(27), col31 varchar(27), col32 bigint, col33 varchar(27),
595+
col34 varchar(27), col35 smallint unsigned, col36 char(27),
596+
col37 bigint unsigned, col38 varchar(27), col39 varchar(27),
597+
col40 varchar(27), col41 varchar(27), col42 bigint, col43 varchar(27),
598+
col44 varchar(27), col45 smallint unsigned, col46 char(27),
599+
col47 varchar(27), col48 varchar(27), col49 varchar(27),
600+
col50 varchar(27), col51 varchar(27), col52 bigint unsigned,
601+
col53 varchar(27), col54 varchar(27), col55 varchar(27),
602+
col56 tinyint unsigned, col57 varchar(27), col58 varchar(27),
603+
col59 varchar(27), col60 tinyint unsigned, col61 int unsigned,
604+
col62 varchar(27), col63 bigint unsigned, col64 int unsigned,
605+
col65 varchar(27), col66 char(27), col67 varchar(27), col68 varchar(27),
606+
col69 varchar(27), col70 varchar(27), col71 varchar(27),
607+
col72 smallint unsigned, col73 varchar(27), col74 varchar(27),
608+
col75 varchar(27), col76 char(27), col77 bigint unsigned, col78 varchar(27),
609+
col79 varchar(27), col80 varchar(27), col81 varchar(27), col82 varchar(27),
610+
col83 varchar(27), col84 varchar(27), col85 varchar(27), col86 char(27),
611+
col87 varchar(27), col88 int unsigned, col89 varchar(27), col90 int unsigned,
612+
col91 varchar(27), col92 tinyint unsigned, col93 varchar(27),
613+
col94 varchar(27), col95 varchar(27), col96 varchar(27), col97 char(27),
614+
col98 varchar(27), col99 varchar(27)
615+
) engine=ndbcluster;
616+
ALTER TABLE t1 ADD UNIQUE KEY col1 (col1);
617+
ALTER TABLE t1 ADD UNIQUE KEY col2 (col2);
618+
ALTER TABLE t1 ADD UNIQUE KEY col3 (col3);
619+
ALTER TABLE t1 ADD UNIQUE KEY col4 (col4);
620+
ALTER TABLE t1 ADD UNIQUE KEY col5 (col5);
621+
ALTER TABLE t1 ADD UNIQUE KEY col6 (col6);
622+
ALTER TABLE t1 ADD UNIQUE KEY col7 (col7);
623+
ALTER TABLE t1 ADD UNIQUE KEY col8 (col8);
624+
ALTER TABLE t1 ADD UNIQUE KEY col9 (col9);
625+
ALTER TABLE t1 ADD UNIQUE KEY col10 (col10);
626+
ALTER TABLE t1 ADD UNIQUE KEY col11 (col11);
627+
ALTER TABLE t1 ADD UNIQUE KEY col12 (col12);
628+
ALTER TABLE t1 ADD UNIQUE KEY col13 (col13);
629+
ALTER TABLE t1 ADD UNIQUE KEY col14 (col14);
630+
ALTER TABLE t1 ADD UNIQUE KEY col15 (col15);
631+
ALTER TABLE t1 ADD UNIQUE KEY col16 (col16);
632+
ALTER TABLE t1 ADD UNIQUE KEY col17 (col17);
633+
ALTER TABLE t1 ADD UNIQUE KEY col18 (col18);
634+
ALTER TABLE t1 ADD UNIQUE KEY col19 (col19);
635+
ALTER TABLE t1 ADD UNIQUE KEY col20 (col20);
636+
ALTER TABLE t1 ADD UNIQUE KEY col21 (col21);
637+
ALTER TABLE t1 ADD UNIQUE KEY col22 (col22);
638+
ALTER TABLE t1 ADD UNIQUE KEY col23 (col23);
639+
ALTER TABLE t1 ADD UNIQUE KEY col24 (col24);
640+
ALTER TABLE t1 ADD UNIQUE KEY col25 (col25);
641+
ALTER TABLE t1 ADD UNIQUE KEY col26 (col26);
642+
ALTER TABLE t1 ADD UNIQUE KEY col27 (col27);
643+
ALTER TABLE t1 ADD UNIQUE KEY col28 (col28);
644+
ALTER TABLE t1 ADD UNIQUE KEY col29 (col29);
645+
ALTER TABLE t1 ADD UNIQUE KEY col30 (col30);
646+
ALTER TABLE t1 ADD UNIQUE KEY col31 (col31);
647+
ALTER TABLE t1 ADD UNIQUE KEY col32 (col32);
648+
ALTER TABLE t1 ADD UNIQUE KEY col33 (col33);
649+
ALTER TABLE t1 ADD UNIQUE KEY col34 (col34);
650+
ALTER TABLE t1 ADD UNIQUE KEY col35 (col35);
651+
ALTER TABLE t1 ADD UNIQUE KEY col36 (col36);
652+
ALTER TABLE t1 ADD UNIQUE KEY col37 (col37);
653+
ALTER TABLE t1 ADD UNIQUE KEY col38 (col38);
654+
ALTER TABLE t1 ADD UNIQUE KEY col39 (col39);
655+
ALTER TABLE t1 ADD UNIQUE KEY col40 (col40);
656+
ALTER TABLE t1 ADD UNIQUE KEY col41 (col41);
657+
ALTER TABLE t1 ADD UNIQUE KEY col42 (col42);
658+
ALTER TABLE t1 ADD UNIQUE KEY col43 (col43);
659+
ALTER TABLE t1 ADD UNIQUE KEY col44 (col44);
660+
ALTER TABLE t1 ADD UNIQUE KEY col45 (col45);
661+
ALTER TABLE t1 ADD UNIQUE KEY col46 (col46);
662+
ALTER TABLE t1 ADD UNIQUE KEY col47 (col47);
663+
ALTER TABLE t1 ADD UNIQUE KEY col48 (col48);
664+
ALTER TABLE t1 ADD UNIQUE KEY col49 (col49);
665+
ALTER TABLE t1 ADD UNIQUE KEY col50 (col50);
666+
ALTER TABLE t1 ADD UNIQUE KEY col51 (col51);
667+
ALTER TABLE t1 ADD UNIQUE KEY col52 (col52);
668+
ALTER TABLE t1 ADD UNIQUE KEY col53 (col53);
669+
ALTER TABLE t1 ADD UNIQUE KEY col54 (col54);
670+
ALTER TABLE t1 ADD UNIQUE KEY col55 (col55);
671+
ALTER TABLE t1 ADD UNIQUE KEY col56 (col56);
672+
ALTER TABLE t1 ADD UNIQUE KEY col57 (col57);
673+
ALTER TABLE t1 ADD UNIQUE KEY col58 (col58);
674+
ALTER TABLE t1 ADD UNIQUE KEY col59 (col59);
675+
ALTER TABLE t1 ADD UNIQUE KEY col60 (col60);
676+
ALTER TABLE t1 ADD UNIQUE KEY col61 (col61);
677+
ALTER TABLE t1 ADD UNIQUE KEY col62 (col62);
678+
ALTER TABLE t1 ADD UNIQUE KEY col63 (col63);
679+
ALTER TABLE t1 ADD UNIQUE KEY col64 (col64);
680+
ALTER TABLE t1 DROP INDEX col1;
681+
ALTER TABLE t1 DROP INDEX col2;
682+
ALTER TABLE t1 DROP INDEX col3;
683+
ALTER TABLE t1 DROP INDEX col4;
684+
ALTER TABLE t1 DROP INDEX col5;
685+
ALTER TABLE t1 DROP INDEX col6;
686+
ALTER TABLE t1 DROP INDEX col7;
687+
ALTER TABLE t1 DROP INDEX col8;
688+
ALTER TABLE t1 DROP INDEX col9;
689+
ALTER TABLE t1 DROP INDEX col10;
690+
ALTER TABLE t1 DROP INDEX col11;
691+
ALTER TABLE t1 DROP INDEX col12;
692+
ALTER TABLE t1 DROP INDEX col13;
693+
ALTER TABLE t1 DROP INDEX col14;
694+
ALTER TABLE t1 DROP INDEX col15;
695+
ALTER TABLE t1 DROP INDEX col16;
696+
ALTER TABLE t1 DROP INDEX col17;
697+
ALTER TABLE t1 DROP INDEX col18;
698+
ALTER TABLE t1 DROP INDEX col19;
699+
ALTER TABLE t1 DROP INDEX col20;
700+
ALTER TABLE t1 DROP INDEX col21;
701+
ALTER TABLE t1 DROP INDEX col22;
702+
ALTER TABLE t1 DROP INDEX col23;
703+
ALTER TABLE t1 DROP INDEX col24;
704+
ALTER TABLE t1 DROP INDEX col25;
705+
ALTER TABLE t1 DROP INDEX col26;
706+
ALTER TABLE t1 DROP INDEX col27;
707+
ALTER TABLE t1 DROP INDEX col28;
708+
ALTER TABLE t1 DROP INDEX col29;
709+
ALTER TABLE t1 DROP INDEX col30;
710+
ALTER TABLE t1 DROP INDEX col31;
711+
ALTER TABLE t1 DROP INDEX col32;
712+
ALTER TABLE t1 DROP INDEX col33;
713+
ALTER TABLE t1 DROP INDEX col34;
714+
ALTER TABLE t1 DROP INDEX col35;
715+
ALTER TABLE t1 DROP INDEX col36;
716+
ALTER TABLE t1 DROP INDEX col37;
717+
ALTER TABLE t1 DROP INDEX col38;
718+
ALTER TABLE t1 DROP INDEX col39;
719+
ALTER TABLE t1 DROP INDEX col40;
720+
ALTER TABLE t1 DROP INDEX col41;
721+
ALTER TABLE t1 DROP INDEX col42;
722+
ALTER TABLE t1 DROP INDEX col43;
723+
ALTER TABLE t1 DROP INDEX col44;
724+
ALTER TABLE t1 DROP INDEX col45;
725+
ALTER TABLE t1 DROP INDEX col46;
726+
ALTER TABLE t1 DROP INDEX col47;
727+
ALTER TABLE t1 DROP INDEX col48;
728+
ALTER TABLE t1 DROP INDEX col49;
729+
ALTER TABLE t1 DROP INDEX col50;
730+
ALTER TABLE t1 DROP INDEX col51;
731+
ALTER TABLE t1 DROP INDEX col52;
732+
ALTER TABLE t1 DROP INDEX col53;
733+
ALTER TABLE t1 DROP INDEX col54;
734+
ALTER TABLE t1 DROP INDEX col55;
735+
ALTER TABLE t1 DROP INDEX col56;
736+
ALTER TABLE t1 DROP INDEX col57;
737+
ALTER TABLE t1 DROP INDEX col58;
738+
ALTER TABLE t1 DROP INDEX col59;
739+
ALTER TABLE t1 DROP INDEX col60;
740+
ALTER TABLE t1 DROP INDEX col61;
741+
ALTER TABLE t1 DROP INDEX col62;
742+
ALTER TABLE t1 DROP INDEX col63;
743+
ALTER TABLE t1 DROP INDEX col64;
744+
ALTER TABLE t1 ADD UNIQUE KEY (col24);
745+
ALTER TABLE t1 ADD UNIQUE KEY (col25);
746+
ALTER TABLE t1 DROP INDEX col24;
747+
ALTER TABLE t1 DROP INDEX col25;
748+
DROP TABLE t1;

mysql-test/suite/ndb/t/ndb_index.test

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,3 +298,73 @@ insert into indexmerge values(0, 9, REPEAT("J",512));
298298

299299
delete quick from indexmerge where id = 2 or similar_id = 2;
300300
drop table indexmerge;
301+
302+
#
303+
# Bug#31408095 WRONG INDEX ENTRY RELEASED WHEN DROPPING INDEX
304+
# - the wrong index entry was released, causing crash when dropping
305+
# index on table with 64 indexes.
306+
#
307+
308+
# Create table with enough columns to create 64 indexes
309+
CREATE TABLE t1(
310+
col1 int unsigned not null primary key AUTO_INCREMENT, col2 int unsigned,
311+
col3 varchar(27), col4 varchar(27), col5 varchar(27), col6 varchar(27),
312+
col7 char(27), col8 int unsigned, col9 varchar(27), col10 varchar(27),
313+
col11 varchar(27), col12 varchar(27), col13 varchar(27),
314+
col14 varchar(27), col15 smallint unsigned, col16 char(27),
315+
col17 varchar(27), col18 varchar(27), col19 varchar(27),
316+
col20 varchar(27), col21 char(27), col22 varchar(27),
317+
col23 mediumint unsigned, col24 varchar(27), col25 varchar(27),
318+
col26 char(27), col27 varchar(27), col28 varchar(27), col29 varchar(27),
319+
col30 varchar(27), col31 varchar(27), col32 bigint, col33 varchar(27),
320+
col34 varchar(27), col35 smallint unsigned, col36 char(27),
321+
col37 bigint unsigned, col38 varchar(27), col39 varchar(27),
322+
col40 varchar(27), col41 varchar(27), col42 bigint, col43 varchar(27),
323+
col44 varchar(27), col45 smallint unsigned, col46 char(27),
324+
col47 varchar(27), col48 varchar(27), col49 varchar(27),
325+
col50 varchar(27), col51 varchar(27), col52 bigint unsigned,
326+
col53 varchar(27), col54 varchar(27), col55 varchar(27),
327+
col56 tinyint unsigned, col57 varchar(27), col58 varchar(27),
328+
col59 varchar(27), col60 tinyint unsigned, col61 int unsigned,
329+
col62 varchar(27), col63 bigint unsigned, col64 int unsigned,
330+
col65 varchar(27), col66 char(27), col67 varchar(27), col68 varchar(27),
331+
col69 varchar(27), col70 varchar(27), col71 varchar(27),
332+
col72 smallint unsigned, col73 varchar(27), col74 varchar(27),
333+
col75 varchar(27), col76 char(27), col77 bigint unsigned, col78 varchar(27),
334+
col79 varchar(27), col80 varchar(27), col81 varchar(27), col82 varchar(27),
335+
col83 varchar(27), col84 varchar(27), col85 varchar(27), col86 char(27),
336+
col87 varchar(27), col88 int unsigned, col89 varchar(27), col90 int unsigned,
337+
col91 varchar(27), col92 tinyint unsigned, col93 varchar(27),
338+
col94 varchar(27), col95 varchar(27), col96 varchar(27), col97 char(27),
339+
col98 varchar(27), col99 varchar(27)
340+
) engine=ndbcluster;
341+
342+
# Create unique indexes until the max limit of 64 indexes is reached (the
343+
# primary key also counts)
344+
let $indexes = 64;
345+
let $i = 1;
346+
while ($i <= $indexes) {
347+
let $index_name = col$i;
348+
# Allow failure to create index when max limit is reached
349+
--error 0,ER_TOO_MANY_KEYS
350+
eval ALTER TABLE t1 ADD UNIQUE KEY $index_name ($index_name);
351+
inc $i;
352+
}
353+
354+
# Drop the unique indexes again
355+
let $i = 1;
356+
while ($i <= $indexes) {
357+
let $index_name = col$i;
358+
# Allow failure to drop those who couldn't be created
359+
--error 0,ER_CANT_DROP_FIELD_OR_KEY
360+
eval ALTER TABLE t1 DROP INDEX $index_name;
361+
inc $i;
362+
}
363+
364+
# Check that adding and dropping indexes still work
365+
ALTER TABLE t1 ADD UNIQUE KEY (col24);
366+
ALTER TABLE t1 ADD UNIQUE KEY (col25);
367+
ALTER TABLE t1 DROP INDEX col24;
368+
ALTER TABLE t1 DROP INDEX col25;
369+
370+
DROP TABLE t1;

sql/ha_ndbcluster.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3012,7 +3012,7 @@ int ha_ndbcluster::drop_indexes(Ndb *ndb, TABLE *tab)
30123012
// Renumber the indexes by shifting out the dropped index
30133013
renumber_indexes(i);
30143014
// clear the dropped index at last now
3015-
ndb_clear_index(dict, m_index[tab->s->keys]);
3015+
ndb_clear_index(dict, m_index[tab->s->keys - 1]);
30163016
}
30173017
}
30183018

0 commit comments

Comments
 (0)