Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.3(EOL)
-
None
Description
!!! PLEASE DO NOT CHANGE OBJECTIVE OF THIS BUG AND DON'T CLOSE IT UNTIL DESCRIBED PROBLEM IS SOLVED !!!
Apparently InnoDB doesn't copy blob data during online ALTER TABLE. In a meanwhile it calls innobase_rec_reset(), which may reallocate memory for blobs.
It wasn't a problem before column compression was introduced, since in most (if not all) cases memory reallocation was not needed. With compressed columns reallocation is always there.
To reproduce this issue grep for MDEV-13359 in source code for relevant markers. Re-enable online ALTER TABLE and run main.column_compression test.
Objective of this bug is to enable online ALTER TABLE for compressed columns.
Attachments
Issue Links
- relates to
-
MDEV-11371 Big column compressed
-
- Closed
-
-
MDEV-12586 ALTER TABLE…ALGORITHM=INPLACE fails with non-constant DEFAULT values
-
- Closed
-
-
MDEV-13625 Merge InnoDB test cases from MySQL 5.6
-
- Closed
-
-
MDEV-13795 ALTER TABLE…DROP PRIMARY KEY, ADD PRIMARY KEY fails when VIRTUAL columns exist
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Description |
!!! PLEASE DO NOT CHANGE OBJECTIVE OF THIS BUG AND DON'T CLOSE IT UNTIL DESCRIBED PROBLEM IS SOLVED !!!
Apparently InnoDB doesn't copy blob data during online ALTER TABLE. In a meanwhile it calls innobase_rec_reset(), which may reallocate memory for blobs. It wasn't a problem before column compression was introduced, since in most (if not all) cases memory reallocation was not needed. With compressed columns reallocation is always there. To reproduce this issue grep for MDEV- in source code for relevant markers. Re-enable online ALTER TABLE and run main.column_compression test. |
!!! PLEASE DO NOT CHANGE OBJECTIVE OF THIS BUG AND DON'T CLOSE IT UNTIL DESCRIBED PROBLEM IS SOLVED !!!
Apparently InnoDB doesn't copy blob data during online ALTER TABLE. In a meanwhile it calls innobase_rec_reset(), which may reallocate memory for blobs. It wasn't a problem before column compression was introduced, since in most (if not all) cases memory reallocation was not needed. With compressed columns reallocation is always there. To reproduce this issue grep for |
Description |
!!! PLEASE DO NOT CHANGE OBJECTIVE OF THIS BUG AND DON'T CLOSE IT UNTIL DESCRIBED PROBLEM IS SOLVED !!!
Apparently InnoDB doesn't copy blob data during online ALTER TABLE. In a meanwhile it calls innobase_rec_reset(), which may reallocate memory for blobs. It wasn't a problem before column compression was introduced, since in most (if not all) cases memory reallocation was not needed. With compressed columns reallocation is always there. To reproduce this issue grep for |
!!! PLEASE DO NOT CHANGE OBJECTIVE OF THIS BUG AND DON'T CLOSE IT UNTIL DESCRIBED PROBLEM IS SOLVED !!!
Apparently InnoDB doesn't copy blob data during online ALTER TABLE. In a meanwhile it calls innobase_rec_reset(), which may reallocate memory for blobs. It wasn't a problem before column compression was introduced, since in most (if not all) cases memory reallocation was not needed. With compressed columns reallocation is always there. To reproduce this issue grep for Objective of this bug is to enable online ALTER TABLE for compressed columns. |
Summary | Online ALTER TABLE will be disabled for compressed columns | Enable online ALTER TABLE for compressed columns |
Fix Version/s | 10.3 [ 22126 ] | |
Assignee | Marko Mäkelä [ marko ] |
Assignee | Marko Mäkelä [ marko ] | Sergey Vojtovich [ svoj ] |
Link |
This issue relates to |
Assignee | Sergey Vojtovich [ svoj ] | Marko Mäkelä [ marko ] |
Link |
This issue relates to |
Link |
This issue relates to |
issue.field.resolutiondate | 2017-09-01 13:47:58.0 | 2017-09-01 13:47:58.237 |
Fix Version/s | 10.3.2 [ 22533 ] | |
Fix Version/s | 10.3 [ 22126 ] | |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Link |
This issue relates to |
Workflow | MariaDB v3 [ 81724 ] | MariaDB v4 [ 152512 ] |
InnoDB does copy BLOB data ALTER TABLE…ALGORITHM=INPLACE, LOCK=NONE.
For ADD INDEX (adding secondary indexes that include column prefixes of BLOB columns), the BLOB prefixes are copied already when creating the secondary index entries in row0merge.cc.
For table-rebuilding online ALTER, entire BLOBs are copied in two places: when initially building the new clustered index in row_merge_insert_index_tuples(), or later in row_log_table_apply_convert_mrec(). The latter operation is protected by index->online_log->blobs, which keeps track of freed BLOB objects, so that if purge or rollback is freeing BLOBs during the log apply, we will avoid dereferencing dangling blob pointers.
svoj, what exactly do you mean by saying that blob data is not being copied? Please note that innobase_rec_reset() and innobase_row_to_mysql() are only used for reporting duplicate key errors.