mariadb/plugin
Nikita Malyavin e25623e78a MDEV-17556 Assertion `bitmap_is_set_all(&table->s->all_set)' failed
The assertion failed in handler::ha_reset upon SELECT under
READ UNCOMMITTED from table with index on virtual column.

This was the debug-only failure, though the problem is mush wider:
* MY_BITMAP is a structure containing my_bitmap_map, the latter is a raw
 bitmap.
* read_set, write_set and vcol_set of TABLE are the pointers to MY_BITMAP
* The rest of MY_BITMAPs are stored in TABLE and TABLE_SHARE
* The pointers to the stored MY_BITMAPs, like orig_read_set etc, and
 sometimes all_set and tmp_set, are assigned to the pointers.
* Sometimes tmp_use_all_columns is used to substitute the raw bitmap
 directly with all_set.bitmap
* Sometimes even bitmaps are directly modified, like in
TABLE::update_virtual_field(): bitmap_clear_all(&tmp_set) is called.

The last three bullets in the list, when used together (which is mostly
always) make the program flow cumbersome and impossible to follow,
notwithstanding the errors they cause, like this MDEV-17556, where tmp_set
pointer was assigned to read_set, write_set and vcol_set, then its bitmap
was substituted with all_set.bitmap by dbug_tmp_use_all_columns() call,
and then bitmap_clear_all(&tmp_set) was applied to all this.

To untangle this knot, the rule should be applied:
* Never substitute bitmaps! This patch is about this.
 orig_*, all_set bitmaps are never substituted already.

This patch changes the following function prototypes:
* tmp_use_all_columns, dbug_tmp_use_all_columns
 to accept MY_BITMAP** and to return MY_BITMAP * instead of my_bitmap_map*
* tmp_restore_column_map, dbug_tmp_restore_column_maps to accept
 MY_BITMAP* instead of my_bitmap_map*

These functions now will substitute read_set/write_set/vcol_set directly,
and won't touch underlying bitmaps.
2021-01-08 16:04:29 +10:00
..
audit_null Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
auth_dialog Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
auth_ed25519 switch to CC 3.1 2019-07-20 09:09:28 +02:00
auth_examples Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
auth_gssapi MDEV-23564: CMAKE failing due to deprecated Apple GSS method 2020-10-23 18:42:26 +07:00
auth_pam MDEV-23926: Follow-up patch 2020-10-23 20:01:50 +07:00
auth_pipe Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
auth_socket Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
aws_key_management Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
cracklib_password_check Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
daemon_example Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
debug_key_management Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
disks Merge branch '10.1' into 10.2 2020-06-11 22:35:30 +03:00
example_key_management Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
feedback MDEV-17556 Assertion `bitmap_is_set_all(&table->s->all_set)' failed 2021-01-08 16:04:29 +10:00
file_key_management Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
fulltext Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
handler_socket Merge 10.1 into 10.2 2020-07-01 12:03:55 +03:00
locale_info MDEV-11660 Make encryption plugins "pure" 2017-04-27 19:12:38 +02:00
metadata_lock_info Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
qc_info Merge 10.1 into 10.2 2017-05-06 14:36:46 +03:00
query_response_time Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
semisync Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
server_audit MDEV-19442 add-on 2021-01-07 00:12:07 +02:00
simple_password_check Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
sql_errlog Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
user_variables Fixing tests according to MDEV-20655 maturity stable for user_variables 2019-09-24 19:24:32 +04:00
userstat MDEV-13384 - misc Windows warnings fixed 2017-09-28 17:20:46 +00:00
win_auth_client Merge branch '5.5' into 10.1 2019-07-25 13:27:11 +02:00
wsrep_info MDEV-13569: wsrep_info.plugin failed in buildbot with "no nodes coming from prim view 2020-01-02 08:06:23 +02:00