Skip to content

Commit 8f01a17

Browse files
committed
Merge 10.2 into 10.3
2 parents 0ffea01 + f055da9 commit 8f01a17

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

storage/innobase/handler/handler0alter.cc

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3280,10 +3280,17 @@ innobase_build_col_map(
32803280
& INNOBASE_DEFAULTS));
32813281
DBUG_ASSERT(!defaults || dtuple_get_n_fields(defaults)
32823282
== dict_table_get_n_cols(new_table));
3283+
DBUG_ASSERT(table->s->stored_fields > 0);
3284+
3285+
size_t old_n_v_cols = old_n_v_cols = table->s->fields
3286+
- table->s->stored_fields;
3287+
DBUG_ASSERT(old_n_v_cols == old_table->n_v_cols
3288+
|| table->s->frm_version < FRM_VER_EXPRESSSIONS);
3289+
DBUG_ASSERT(!old_n_v_cols || table->s->virtual_fields);
32833290

32843291
ulint* col_map = static_cast<ulint*>(
32853292
mem_heap_alloc(
3286-
heap, unsigned(old_table->n_cols + old_table->n_v_cols)
3293+
heap, (size_t(old_table->n_cols) + old_n_v_cols)
32873294
* sizeof *col_map));
32883295

32893296
List_iterator_fast<Create_field> cf_it(
@@ -3297,10 +3304,12 @@ innobase_build_col_map(
32973304
col_map[old_i] = ULINT_UNDEFINED;
32983305
}
32993306

3300-
for (uint old_i = 0; old_i < old_table->n_v_cols; old_i++) {
3307+
for (uint old_i = 0; old_i < old_n_v_cols; old_i++) {
33013308
col_map[old_i + old_table->n_cols] = ULINT_UNDEFINED;
33023309
}
33033310

3311+
const bool omits_virtual = ha_innobase::omits_virtual_cols(*table->s);
3312+
33043313
while (const Create_field* new_field = cf_it++) {
33053314
boolis_v = !new_field->stored_in_db();
33063315
ulint num_old_v = 0;
@@ -3309,8 +3318,11 @@ innobase_build_col_map(
33093318
const Field* field = table->field[old_i];
33103319
if (!field->stored_in_db()) {
33113320
if (is_v && new_field->field == field) {
3312-
col_map[old_table->n_cols + num_v]
3313-
= num_old_v;
3321+
if (!omits_virtual) {
3322+
col_map[old_table->n_cols
3323+
+ num_v]
3324+
= num_old_v;
3325+
}
33143326
num_old_v++;
33153327
goto found_col;
33163328
}
@@ -3355,7 +3367,7 @@ innobase_build_col_map(
33553367

33563368
DBUG_ASSERT(i == altered_table->s->fields - num_v);
33573369

3358-
i = table->s->fields - old_table->n_v_cols;
3370+
i = table->s->fields - old_n_v_cols;
33593371

33603372
/* Add the InnoDB hidden FTS_DOC_ID column, if any. */
33613373
if (i + DATA_N_SYS_COLS < old_table->n_cols) {
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
rocksdb_stress_crash: Client scipt seems to hang on terminal input in MariaDB
2+
rocksdb_stress: Client scipt seems to hang on terminal input in MariaDB

0 commit comments

Comments
 (0)