Commit e89af552 authored by Zardosht Kasheff's avatar Zardosht Kasheff Committed by Yoni Fogel

addresses #1709

make rnd_pos always unpack entire row, implement column_bitmaps_signal()

git-svn-id: file:///svn/mysql/tokudb-engine/src@11491 c7de825b-a66e-492c-adef-691d508d4ae1
parent 168f9591
...@@ -2791,7 +2791,7 @@ void ha_tokudb::set_query_columns(uint keynr) { ...@@ -2791,7 +2791,7 @@ void ha_tokudb::set_query_columns(uint keynr) {
// //
uint key_index = 0; uint key_index = 0;
if (keynr == primary_key) { if (keynr == primary_key || keynr == MAX_KEY) {
key_index = primary_key; key_index = primary_key;
} }
else { else {
...@@ -2836,6 +2836,11 @@ void ha_tokudb::set_query_columns(uint keynr) { ...@@ -2836,6 +2836,11 @@ void ha_tokudb::set_query_columns(uint keynr) {
num_var_cols_for_query = curr_var_col_index; num_var_cols_for_query = curr_var_col_index;
} }
void ha_tokudb::column_bitmaps_signal() {
if (active_index != MAX_KEY) {
set_query_columns(active_index);
}
}
// //
// Notification that a scan of entire secondary table is about // Notification that a scan of entire secondary table is about
...@@ -3662,7 +3667,10 @@ int ha_tokudb::rnd_pos(uchar * buf, uchar * pos) { ...@@ -3662,7 +3667,10 @@ int ha_tokudb::rnd_pos(uchar * buf, uchar * pos) {
} }
if (!error) { if (!error) {
bool old_unpack_entire_row = unpack_entire_row;
unpack_entire_row = true;
error = read_row(buf, primary_key, &current_row, key); error = read_row(buf, primary_key, &current_row, key);
unpack_entire_row = old_unpack_entire_row;
} }
cleanup: cleanup:
TOKUDB_DBUG_RETURN(error); TOKUDB_DBUG_RETURN(error);
......
...@@ -335,6 +335,7 @@ class ha_tokudb : public handler { ...@@ -335,6 +335,7 @@ class ha_tokudb : public handler {
int delete_row(const uchar * buf); int delete_row(const uchar * buf);
int prepare_index_scan(); int prepare_index_scan();
void column_bitmaps_signal();
int index_init(uint index, bool sorted); int index_init(uint index, bool sorted);
int index_end(); int index_end();
int index_next_same(uchar * buf, const uchar * key, uint keylen); int index_next_same(uchar * buf, const uchar * key, uint keylen);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment