mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
#92 add key_is_clustering accessor
This commit is contained in:
parent
1086547e44
commit
9b754d8bd9
5 changed files with 24 additions and 20 deletions
|
@ -408,7 +408,7 @@ ulong ha_tokudb::index_flags(uint idx, uint part, bool all_parts) const {
|
|||
#if defined(MARIADB_BASE_VERSION) || (50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699)
|
||||
flags |= HA_DO_INDEX_COND_PUSHDOWN;
|
||||
#endif
|
||||
if (table_share->key_info[idx].flags & HA_CLUSTERING) {
|
||||
if (key_is_clustering(&table_share->key_info[idx])) {
|
||||
flags |= HA_CLUSTERED_INDEX;
|
||||
}
|
||||
DBUG_RETURN(flags);
|
||||
|
@ -1658,7 +1658,7 @@ static int initialize_key_and_col_info(TABLE_SHARE* table_share, TABLE* table, K
|
|||
}
|
||||
}
|
||||
}
|
||||
if (i == primary_key || table_share->key_info[i].flags & HA_CLUSTERING) {
|
||||
if (i == primary_key || key_is_clustering(&table_share->key_info[i])) {
|
||||
error = initialize_col_pack_info(kc_info,table_share,i);
|
||||
if (error) {
|
||||
goto exit;
|
||||
|
@ -3817,7 +3817,7 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) {
|
|||
//
|
||||
// test key packing of clustering keys
|
||||
//
|
||||
if (table->key_info[keynr].flags & HA_CLUSTERING) {
|
||||
if (key_is_clustering(&table->key_info[keynr])) {
|
||||
error = pack_row(&row, (const uchar *) record, keynr);
|
||||
assert(error == 0);
|
||||
uchar* tmp_buff = NULL;
|
||||
|
@ -4444,7 +4444,7 @@ void ha_tokudb::set_query_columns(uint keynr) {
|
|||
key_index = primary_key;
|
||||
}
|
||||
else {
|
||||
key_index = (table->key_info[keynr].flags & HA_CLUSTERING ? keynr : primary_key);
|
||||
key_index = (key_is_clustering(&table->key_info[keynr]) ? keynr : primary_key);
|
||||
}
|
||||
for (uint i = 0; i < table_share->fields; i++) {
|
||||
if (bitmap_is_set(table->read_set,i) ||
|
||||
|
@ -4779,7 +4779,7 @@ int ha_tokudb::read_primary_key(uchar * buf, uint keynr, DBT const *row, DBT con
|
|||
//
|
||||
// case where we read from secondary table that is not clustered
|
||||
//
|
||||
if (keynr != primary_key && !(table->key_info[keynr].flags & HA_CLUSTERING)) {
|
||||
if (keynr != primary_key && !key_is_clustering(&table->key_info[keynr])) {
|
||||
bool has_null;
|
||||
//
|
||||
// create a DBT that has the same data as row, this is inefficient
|
||||
|
@ -4993,7 +4993,7 @@ int ha_tokudb::index_read(uchar * buf, const uchar * key, uint key_len, enum ha_
|
|||
break;
|
||||
}
|
||||
error = handle_cursor_error(error,HA_ERR_KEY_NOT_FOUND,tokudb_active_index);
|
||||
if (!error && !key_read && tokudb_active_index != primary_key && !(table->key_info[tokudb_active_index].flags & HA_CLUSTERING)) {
|
||||
if (!error && !key_read && tokudb_active_index != primary_key && !key_is_clustering(&table->key_info[tokudb_active_index])) {
|
||||
error = read_full_row(buf);
|
||||
}
|
||||
|
||||
|
@ -5398,7 +5398,7 @@ int ha_tokudb::get_next(uchar* buf, int direction, DBT* key_to_compare) {
|
|||
// key
|
||||
need_val = (this->key_read == 0) &&
|
||||
(tokudb_active_index == primary_key ||
|
||||
table->key_info[tokudb_active_index].flags & HA_CLUSTERING
|
||||
key_is_clustering(&table->key_info[tokudb_active_index])
|
||||
);
|
||||
|
||||
if ((bytes_used_in_range_query_buff - curr_range_query_buff_offset) > 0) {
|
||||
|
@ -5478,7 +5478,7 @@ int ha_tokudb::get_next(uchar* buf, int direction, DBT* key_to_compare) {
|
|||
// main table.
|
||||
//
|
||||
|
||||
if (!error && !key_read && (tokudb_active_index != primary_key) && !(table->key_info[tokudb_active_index].flags & HA_CLUSTERING) ) {
|
||||
if (!error && !key_read && (tokudb_active_index != primary_key) && !key_is_clustering(&table->key_info[tokudb_active_index])) {
|
||||
error = read_full_row(buf);
|
||||
}
|
||||
trx->stmt_progress.queried++;
|
||||
|
@ -5559,7 +5559,7 @@ int ha_tokudb::index_first(uchar * buf) {
|
|||
// still need to get entire contents of the row if operation done on
|
||||
// secondary DB and it was NOT a covering index
|
||||
//
|
||||
if (!error && !key_read && (tokudb_active_index != primary_key) && !(table->key_info[tokudb_active_index].flags & HA_CLUSTERING) ) {
|
||||
if (!error && !key_read && (tokudb_active_index != primary_key) && !key_is_clustering(&table->key_info[tokudb_active_index])) {
|
||||
error = read_full_row(buf);
|
||||
}
|
||||
trx->stmt_progress.queried++;
|
||||
|
@ -5601,7 +5601,7 @@ int ha_tokudb::index_last(uchar * buf) {
|
|||
// still need to get entire contents of the row if operation done on
|
||||
// secondary DB and it was NOT a covering index
|
||||
//
|
||||
if (!error && !key_read && (tokudb_active_index != primary_key) && !(table->key_info[tokudb_active_index].flags & HA_CLUSTERING) ) {
|
||||
if (!error && !key_read && (tokudb_active_index != primary_key) && !key_is_clustering(&table->key_info[tokudb_active_index])) {
|
||||
error = read_full_row(buf);
|
||||
}
|
||||
|
||||
|
@ -6754,7 +6754,7 @@ static uint32_t create_secondary_key_descriptor(
|
|||
form->s,
|
||||
kc_info,
|
||||
keynr,
|
||||
key_info->flags & HA_CLUSTERING
|
||||
key_is_clustering(key_info)
|
||||
);
|
||||
return ptr - buf;
|
||||
}
|
||||
|
@ -7342,7 +7342,7 @@ double ha_tokudb::keyread_time(uint index, uint ranges, ha_rows rows)
|
|||
{
|
||||
TOKUDB_DBUG_ENTER("ha_tokudb::keyread_time");
|
||||
double ret_val;
|
||||
if ((table->key_info[index].flags & HA_CLUSTERING) || (index == primary_key)) {
|
||||
if (index == primary_key || key_is_clustering(&table->key_info[index])) {
|
||||
ret_val = read_time(index, ranges, rows);
|
||||
DBUG_RETURN(ret_val);
|
||||
}
|
||||
|
@ -7392,7 +7392,7 @@ double ha_tokudb::read_time(
|
|||
goto cleanup;
|
||||
}
|
||||
|
||||
is_clustering = (table->key_info[index].flags & HA_CLUSTERING);
|
||||
is_clustering = key_is_clustering(&table->key_info[index]);
|
||||
|
||||
|
||||
//
|
||||
|
@ -7757,7 +7757,7 @@ int ha_tokudb::tokudb_add_index(
|
|||
curr_index = curr_num_DBs;
|
||||
*modified_DBs = true;
|
||||
for (uint i = 0; i < num_of_keys; i++, curr_index++) {
|
||||
if (key_info[i].flags & HA_CLUSTERING) {
|
||||
if (key_is_clustering(&key_info[i])) {
|
||||
set_key_filter(
|
||||
&share->kc_info.key_filters[curr_index],
|
||||
&key_info[i],
|
||||
|
|
|
@ -787,5 +787,9 @@ private:
|
|||
#endif
|
||||
};
|
||||
|
||||
static inline bool key_is_clustering(const KEY *key) {
|
||||
return key->flags & HA_CLUSTERING;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -632,7 +632,7 @@ int ha_tokudb::alter_table_add_or_drop_column(TABLE *altered_table, Alter_inplac
|
|||
if (error)
|
||||
goto cleanup;
|
||||
|
||||
if (i == primary_key || table_share->key_info[i].flags & HA_CLUSTERING) {
|
||||
if (i == primary_key || key_is_clustering(&table_share->key_info[i])) {
|
||||
num_column_extra = fill_row_mutator(
|
||||
column_extra,
|
||||
columns,
|
||||
|
@ -757,7 +757,7 @@ int ha_tokudb::alter_table_expand_varchar_offsets(TABLE *altered_table, Alter_in
|
|||
break;
|
||||
|
||||
// for all trees that have values, make an update variable offsets message and broadcast it into the tree
|
||||
if (i == primary_key || (table_share->key_info[i].flags & HA_CLUSTERING)) {
|
||||
if (i == primary_key || key_is_clustering(&table_share->key_info[i])) {
|
||||
uint32_t offset_start = table_share->null_bytes + share->kc_info.mcp_info[i].fixed_field_size;
|
||||
uint32_t offset_end = offset_start + share->kc_info.mcp_info[i].len_of_offsets;
|
||||
uint32_t number_of_offsets = offset_end - offset_start;
|
||||
|
@ -939,7 +939,7 @@ int ha_tokudb::alter_table_expand_one_column(TABLE *altered_table, Alter_inplace
|
|||
break;
|
||||
|
||||
// for all trees that have values, make an expand update message and broadcast it into the tree
|
||||
if (i == primary_key || (table_share->key_info[i].flags & HA_CLUSTERING)) {
|
||||
if (i == primary_key || key_is_clustering(&table_share->key_info[i])) {
|
||||
uint32_t old_offset = alter_table_field_offset(table_share->null_bytes, ctx->table_kc_info, i, expand_field_num);
|
||||
uint32_t new_offset = alter_table_field_offset(table_share->null_bytes, ctx->altered_table_kc_info, i, expand_field_num);
|
||||
assert(old_offset <= new_offset);
|
||||
|
@ -1018,7 +1018,7 @@ int ha_tokudb::alter_table_expand_blobs(TABLE *altered_table, Alter_inplace_info
|
|||
break;
|
||||
|
||||
// for all trees that have values, make an update blobs message and broadcast it into the tree
|
||||
if (i == primary_key || (table_share->key_info[i].flags & HA_CLUSTERING)) {
|
||||
if (i == primary_key || key_is_clustering(&table_share->key_info[i])) {
|
||||
tokudb::buffer b;
|
||||
uint8_t op = UPDATE_OP_EXPAND_BLOB;
|
||||
b.append(&op, sizeof op);
|
||||
|
|
|
@ -126,7 +126,7 @@ static bool tables_have_same_keys(TABLE* table, TABLE* altered_table, bool print
|
|||
retval = false;
|
||||
goto cleanup;
|
||||
}
|
||||
if (((curr_orig_key->flags & HA_CLUSTERING) == 0) != ((curr_altered_key->flags & HA_CLUSTERING) == 0)) {
|
||||
if (key_is_clustering(curr_orig_key) != key_is_clustering(curr_altered_key)) {
|
||||
if (print_error) {
|
||||
sql_print_error(
|
||||
"keys disagree on if they are clustering, %d, %d",
|
||||
|
|
|
@ -538,7 +538,7 @@ static bool check_point_update(Item *conds, TABLE *table) {
|
|||
// Precompute this when the table is opened.
|
||||
static bool clustering_keys_exist(TABLE *table) {
|
||||
for (uint keynr = 0; keynr < table->s->keys; keynr++) {
|
||||
if (keynr != table->s->primary_key && (table->s->key_info[keynr].flags & HA_CLUSTERING))
|
||||
if (keynr != table->s->primary_key && key_is_clustering(&table->s->key_info[keynr]))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
Loading…
Reference in a new issue