@@ -1119,44 +1119,41 @@ void row_upd_index_replace_new_col_vals_index_pos(dtuple_t *entry,
1119
1119
bool order_only,
1120
1120
mem_heap_t *heap) {
1121
1121
DBUG_TRACE;
1122
-
1123
- ulint i;
1124
- ulint n_fields;
1125
- const page_size_t &page_size = dict_table_page_size (index->table );
1126
-
1127
1122
ut_ad (index);
1128
1123
ut_ad (!index->table ->skip_alter_undo );
1129
1124
1130
1125
dtuple_set_info_bits (entry, update->info_bits );
1131
1126
1132
- if ( order_only) {
1133
- n_fields = dict_index_get_n_unique (index);
1134
- } else {
1135
- n_fields = dict_index_get_n_fields (index) ;
1136
- }
1127
+ const ulint n_fields = order_only ? dict_index_get_n_unique (index)
1128
+ : dict_index_get_n_fields (index);
1129
+ for (ulint field_index = 0 ; field_index < n_fields; field_index++) {
1130
+ ulint field_no ;
1131
+ bool is_virtual{ false };
1137
1132
1138
- for (i = 0 ; i < n_fields; i++) {
1139
- const dict_field_t *field;
1140
- const dict_col_t *col;
1141
- const upd_field_t *uf;
1133
+ const dict_field_t *field = index->get_field (field_index);
1134
+ const dict_col_t *col = field->col ;
1142
1135
1143
- field = index->get_field (i);
1144
- col = field->col ;
1145
- if (col->is_virtual ()) {
1146
- const dict_v_col_t *vcol = reinterpret_cast <const dict_v_col_t *>(col);
1136
+ if (col->is_instant_dropped ()) {
1137
+ dfield_t *field = dtuple_get_nth_field (entry, field_index);
1138
+ field->reset ();
1139
+ continue ;
1140
+ }
1147
1141
1148
- uf = upd_get_field_by_field_no (update, vcol->v_pos , true );
1142
+ if (col->is_virtual ()) {
1143
+ is_virtual = true ;
1144
+ field_no = reinterpret_cast <const dict_v_col_t *>(col)->v_pos ;
1149
1145
} else {
1150
- uf = upd_get_field_by_field_no (update, i, false ) ;
1146
+ field_no = field_index ;
1151
1147
}
1152
1148
1153
- if (uf) {
1149
+ if (auto uf = upd_get_field_by_field_no (update, field_no, is_virtual); uf) {
1154
1150
upd_field_t *tmp = const_cast <upd_field_t *>(uf);
1155
- dfield_t *dfield = dtuple_get_nth_field (entry, i );
1151
+ dfield_t *dfield = dtuple_get_nth_field (entry, field_index );
1156
1152
tmp->ext_in_old = dfield_is_ext (dfield);
1157
1153
1158
1154
dfield_copy (&tmp->old_val , dfield);
1159
1155
1156
+ const auto &page_size = dict_table_page_size (index->table );
1160
1157
row_upd_index_replace_new_col_val (index, dfield, field, col, uf, heap,
1161
1158
dict_index_is_sdi (index), page_size);
1162
1159
}
0 commit comments