diff options
Diffstat (limited to 'sql/table.cc')
-rw-r--r-- | sql/table.cc | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/sql/table.cc b/sql/table.cc index 7b0629154df..d5baada386f 100644 --- a/sql/table.cc +++ b/sql/table.cc @@ -3197,25 +3197,25 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share, if (share->versioned) { - Field **fptr = NULL; - if (!(fptr = (Field **) alloc_root(&outparam->mem_root, - (uint) ((share->fields+1)* - sizeof(Field*))))) + Field **dst= (Field **) alloc_root(&outparam->mem_root, + (share->fields - VERSIONING_FIELDS + 1) * + sizeof(Field*)); + if (!dst) goto err; - outparam->non_generated_field = fptr; - for (i=0 ; i < share->fields; i++) + outparam->vers_user_field= dst; + for (Field **src= outparam->field; *src; src++) { - if (outparam->field[i]->vers_sys_field()) + if ((*src)->vers_sys_field()) continue; - *fptr++ = outparam->field[i]; + *dst++= *src; } - (*fptr)= 0; // End marker + (*dst)= NULL; outparam->vers_write= true; } else { - outparam->non_generated_field= NULL; + outparam->vers_user_field= NULL; outparam->vers_write= false; } @@ -7698,6 +7698,7 @@ int TABLE::update_default_fields(bool update_command, bool ignore_errors) DBUG_RETURN(res); } + void TABLE::vers_update_fields() { DBUG_ENTER("vers_update_fields"); |