diff options
author | Rich Prohaska <prohaska@tokutek.com> | 2014-01-24 13:54:16 -0500 |
---|---|---|
committer | Rich Prohaska <prohaska@tokutek.com> | 2014-01-24 13:54:16 -0500 |
commit | 459aa71b9c580b9bd272d220a9cbdd277069e579 (patch) | |
tree | ed95900ebecc872eda4b74acac5a9a6ae3c56fac /storage | |
parent | 59f633837cc567dac2de9063c46ba42d2733aa9a (diff) | |
download | mariadb-git-459aa71b9c580b9bd272d220a9cbdd277069e579.tar.gz |
#171 clean up tokudb comparison APIs a bit
Diffstat (limited to 'storage')
-rw-r--r-- | storage/tokudb/hatoku_cmp.cc | 68 | ||||
-rw-r--r-- | storage/tokudb/hatoku_cmp.h | 53 |
2 files changed, 60 insertions, 61 deletions
diff --git a/storage/tokudb/hatoku_cmp.cc b/storage/tokudb/hatoku_cmp.cc index ef3ecd296fd..08729d86ad8 100644 --- a/storage/tokudb/hatoku_cmp.cc +++ b/storage/tokudb/hatoku_cmp.cc @@ -98,7 +98,7 @@ PATENT RIGHTS GRANT: // in a TokuDB table. The non-valid fields are those // that have been deprecated since before 5.1, and can // only exist through upgrades of old versions of MySQL -bool field_valid_for_tokudb_table(Field* field) { +static bool field_valid_for_tokudb_table(Field* field) { bool ret_val = false; enum_field_types mysql_type = field->real_type(); switch (mysql_type) { @@ -151,7 +151,7 @@ exit: return ret_val; } -void get_var_field_info( +static void get_var_field_info( uint32_t* field_len, // output: length of field uint32_t* start_offset, // output, length of offset where data starts uint32_t var_field_index, //input, index of var field we want info on @@ -195,7 +195,7 @@ void get_var_field_info( *field_len = data_end_offset - data_start_offset; } -void get_blob_field_info( +static void get_blob_field_info( uint32_t* start_offset, uint32_t len_of_offsets, const uchar* var_field_data_ptr, @@ -231,7 +231,7 @@ void get_blob_field_info( // this function is pattern matched from // InnoDB's get_innobase_type_from_mysql_type -TOKU_TYPE mysql_to_toku_type (Field* field) { +static TOKU_TYPE mysql_to_toku_type (Field* field) { TOKU_TYPE ret_val = toku_type_unknown; enum_field_types mysql_type = field->real_type(); switch (mysql_type) { @@ -618,7 +618,7 @@ exit: // // partially copied from below // -uchar* pack_toku_varbinary_from_desc( +static uchar* pack_toku_varbinary_from_desc( uchar* to_tokudb, const uchar* from_desc, uint32_t key_part_length, //number of bytes to use to encode the length in to_tokudb @@ -858,7 +858,7 @@ static inline uchar* unpack_toku_blob( // // partially copied from below // -uchar* pack_toku_varstring_from_desc( +static uchar* pack_toku_varstring_from_desc( uchar* to_tokudb, const uchar* from_desc, uint32_t key_part_length, //number of bytes to use to encode the length in to_tokudb @@ -1038,7 +1038,7 @@ static inline int tokudb_compare_two_hidden_keys( // created in create_toku_key_descriptor_for_key. The first // byte points to the TOKU_TYPE. // -uint32_t skip_field_in_descriptor(uchar* row_desc) { +static uint32_t skip_field_in_descriptor(uchar* row_desc) { uchar* row_desc_pos = row_desc; TOKU_TYPE toku_type = (TOKU_TYPE)row_desc_pos[0]; row_desc_pos++; @@ -1073,7 +1073,7 @@ uint32_t skip_field_in_descriptor(uchar* row_desc) { // to store the descriptor. Number of bytes used MUST match number of bytes // we would skip in skip_field_in_descriptor // -int create_toku_key_descriptor_for_key(KEY* key, uchar* buf) { +static int create_toku_key_descriptor_for_key(KEY* key, uchar* buf) { uchar* pos = buf; uint32_t num_bytes_in_field = 0; uint32_t charset_num = 0; @@ -1178,7 +1178,7 @@ int create_toku_key_descriptor_for_key(KEY* key, uchar* buf) { // to the descriptor, we can. // // -int create_toku_key_descriptor( +static int create_toku_key_descriptor( uchar* buf, bool is_first_hpk, KEY* first_key, @@ -1354,7 +1354,7 @@ static inline int compare_toku_field( // packs a field from a MySQL buffer into a tokudb buffer. // Used for inserts/updates // -uchar* pack_toku_key_field( +static uchar* pack_toku_key_field( uchar* to_tokudb, uchar* from_mysql, Field* field, @@ -1447,7 +1447,7 @@ exit: // use 2 bytes to encode the length, regardless of the field // So varchar(4) will still use 2 bytes to encode the field // -uchar* pack_key_toku_key_field( +static uchar* pack_key_toku_key_field( uchar* to_tokudb, uchar* from_mysql, Field* field, @@ -1570,7 +1570,7 @@ exit: } -int tokudb_compare_two_keys( +static int tokudb_compare_two_keys( const void* new_key_data, const uint32_t new_key_size, const void* saved_key_data, @@ -1704,7 +1704,7 @@ static int simple_memcmp(const DBT *keya, const DBT *keyb) { } // comparison function to be used by the fractal trees. -int tokudb_cmp_dbt_key(DB* file, const DBT *keya, const DBT *keyb) { +static int tokudb_cmp_dbt_key(DB* file, const DBT *keya, const DBT *keyb) { int cmp; if (file->cmp_descriptor->dbt.size == 0) { cmp = simple_memcmp(keya, keyb); @@ -1732,7 +1732,7 @@ int tokudb_cmp_dbt_key(DB* file, const DBT *keya, const DBT *keyb) { } //TODO: QQQ Only do one direction for prefix. -int tokudb_prefix_cmp_dbt_key(DB *file, const DBT *keya, const DBT *keyb) { +static int tokudb_prefix_cmp_dbt_key(DB *file, const DBT *keya, const DBT *keyb) { // calls to this function are done by the handlerton, and are // comparing just the keys as MySQL would compare them. bool read_string = false; @@ -1852,7 +1852,7 @@ static int tokudb_cmp_dbt_key_parts(DB *file, const DBT *keya, const DBT *keyb, max_parts); } -uint32_t create_toku_main_key_pack_descriptor ( +static uint32_t create_toku_main_key_pack_descriptor ( uchar* buf ) { @@ -1880,10 +1880,6 @@ exit: return pos - buf; } -#define COL_FIX_FIELD 0x11 -#define COL_VAR_FIELD 0x22 -#define COL_BLOB_FIELD 0x33 - #define COL_HAS_NO_CHARSET 0x44 #define COL_HAS_CHARSET 0x55 @@ -1901,7 +1897,7 @@ exit: pos += sizeof(uint32_t); -uint32_t pack_desc_pk_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* table_share, KEY_PART_INFO* key_part) { +static uint32_t pack_desc_pk_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* table_share, KEY_PART_INFO* key_part) { uchar* pos = buf; uint16 field_index = key_part->field->field_index; Field* field = table_share->field[field_index]; @@ -1946,7 +1942,7 @@ uint32_t pack_desc_pk_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* t return pos - buf; } -uint32_t pack_desc_pk_offset_info( +static uint32_t pack_desc_pk_offset_info( uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* table_share, @@ -1995,7 +1991,7 @@ uint32_t pack_desc_pk_offset_info( return pos - buf; } -uint32_t pack_desc_offset_info(uchar* buf, KEY_AND_COL_INFO* kc_info, uint pk_index, TABLE_SHARE* table_share, KEY_PART_INFO* key_part) { +static uint32_t pack_desc_offset_info(uchar* buf, KEY_AND_COL_INFO* kc_info, uint pk_index, TABLE_SHARE* table_share, KEY_PART_INFO* key_part) { uchar* pos = buf; uint16 field_index = key_part->field->field_index; Field* field = table_share->field[field_index]; @@ -2044,7 +2040,7 @@ uint32_t pack_desc_offset_info(uchar* buf, KEY_AND_COL_INFO* kc_info, uint pk_in return pos - buf; } -uint32_t pack_desc_key_length_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* table_share, KEY_PART_INFO* key_part) { +static uint32_t pack_desc_key_length_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* table_share, KEY_PART_INFO* key_part) { uchar* pos = buf; uint16 field_index = key_part->field->field_index; Field* field = table_share->field[field_index]; @@ -2079,7 +2075,7 @@ uint32_t pack_desc_key_length_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_ return pos - buf; } -uint32_t pack_desc_char_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* table_share, KEY_PART_INFO* key_part) { +static uint32_t pack_desc_char_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* table_share, KEY_PART_INFO* key_part) { uchar* pos = buf; uint16 field_index = key_part->field->field_index; Field* field = table_share->field[field_index]; @@ -2116,7 +2112,7 @@ uint32_t pack_desc_char_info(uchar* buf, KEY_AND_COL_INFO* kc_info, TABLE_SHARE* return pos - buf; } -uint32_t pack_some_row_info ( +static uint32_t pack_some_row_info ( uchar* buf, uint pk_index, TABLE_SHARE* table_share, @@ -2145,7 +2141,7 @@ uint32_t pack_some_row_info ( return pos - buf; } -uint32_t get_max_clustering_val_pack_desc_size( +static uint32_t get_max_clustering_val_pack_desc_size( TABLE_SHARE* table_share ) { @@ -2172,7 +2168,7 @@ uint32_t get_max_clustering_val_pack_desc_size( return ret_val; } -uint32_t create_toku_clustering_val_pack_descriptor ( +static uint32_t create_toku_clustering_val_pack_descriptor ( uchar* buf, uint pk_index, TABLE_SHARE* table_share, @@ -2326,7 +2322,7 @@ exit: return pos - buf; } -uint32_t pack_clustering_val_from_desc( +static uint32_t pack_clustering_val_from_desc( uchar* buf, void* row_desc, uint32_t row_desc_size, @@ -2480,7 +2476,7 @@ uint32_t pack_clustering_val_from_desc( } -uint32_t get_max_secondary_key_pack_desc_size( +static uint32_t get_max_secondary_key_pack_desc_size( KEY_AND_COL_INFO* kc_info ) { @@ -2519,7 +2515,7 @@ uint32_t get_max_secondary_key_pack_desc_size( return ret_val; } -uint32_t create_toku_secondary_key_pack_descriptor ( +static uint32_t create_toku_secondary_key_pack_descriptor ( uchar* buf, bool has_hpk, uint pk_index, @@ -2685,7 +2681,7 @@ uint32_t create_toku_secondary_key_pack_descriptor ( return pos - buf; } -uint32_t skip_key_in_desc( +static uint32_t skip_key_in_desc( uchar* row_desc ) { @@ -2721,7 +2717,7 @@ exit: } -uint32_t max_key_size_from_desc( +static uint32_t max_key_size_from_desc( void* row_desc, uint32_t row_desc_size ) @@ -2806,7 +2802,7 @@ uint32_t max_key_size_from_desc( return max_size; } -uint32_t pack_key_from_desc( +static uint32_t pack_key_from_desc( uchar* buf, void* row_desc, uint32_t row_desc_size, @@ -3144,7 +3140,7 @@ uint32_t pack_key_from_desc( return (uint32_t)(packed_key_pos - buf); // } -bool fields_have_same_name( +static bool fields_have_same_name( Field* a, Field* b ) @@ -3152,7 +3148,7 @@ bool fields_have_same_name( return strcmp(a->field_name, b->field_name) == 0; } -bool fields_are_same_type( +static bool fields_are_same_type( Field* a, Field* b ) @@ -3320,7 +3316,7 @@ cleanup: } -bool are_two_fields_same( +static bool are_two_fields_same( Field* a, Field* b ) diff --git a/storage/tokudb/hatoku_cmp.h b/storage/tokudb/hatoku_cmp.h index a015b9f976e..0f85b9508b0 100644 --- a/storage/tokudb/hatoku_cmp.h +++ b/storage/tokudb/hatoku_cmp.h @@ -156,7 +156,6 @@ typedef struct st_multi_col_pack_info { uint32_t len_of_offsets; //length of the offset bytes in a packed row } MULTI_COL_PACK_INFO; - typedef struct st_key_and_col_info { // // bitmaps for each key. key_filters[i] is associated with the i'th dictionary @@ -198,9 +197,9 @@ typedef struct st_key_and_col_info { uint32_t num_offset_bytes; //number of bytes needed to encode the offset } KEY_AND_COL_INFO; -bool field_valid_for_tokudb_table(Field* field); +static bool field_valid_for_tokudb_table(Field* field); -void get_var_field_info( +static void get_var_field_info( uint32_t* field_len, uint32_t* start_offset, uint32_t var_field_index, @@ -208,7 +207,7 @@ void get_var_field_info( uint32_t num_offset_bytes ); -void get_blob_field_info( +static void get_blob_field_info( uint32_t* start_offset, uint32_t len_of_offsets, const uchar* var_field_data_ptr, @@ -285,16 +284,16 @@ typedef enum { } TOKU_TYPE; -TOKU_TYPE mysql_to_toku_type (Field* field); +static TOKU_TYPE mysql_to_toku_type (Field* field); -uchar* pack_toku_varbinary_from_desc( +static uchar* pack_toku_varbinary_from_desc( uchar* to_tokudb, const uchar* from_desc, uint32_t key_part_length, //number of bytes to use to encode the length in to_tokudb uint32_t field_length //length of field ); -uchar* pack_toku_varstring_from_desc( +static uchar* pack_toku_varstring_from_desc( uchar* to_tokudb, const uchar* from_desc, uint32_t key_part_length, //number of bytes to use to encode the length in to_tokudb @@ -303,21 +302,21 @@ uchar* pack_toku_varstring_from_desc( ); -uchar* pack_toku_key_field( +static uchar* pack_toku_key_field( uchar* to_tokudb, uchar* from_mysql, Field* field, uint32_t key_part_length //I really hope this is temporary as I phase out the pack_cmp stuff ); -uchar* pack_key_toku_key_field( +static uchar* pack_key_toku_key_field( uchar* to_tokudb, uchar* from_mysql, Field* field, uint32_t key_part_length //I really hope this is temporary as I phase out the pack_cmp stuff ); -uchar* unpack_toku_key_field( +static uchar* unpack_toku_key_field( uchar* to_mysql, uchar* from_tokudb, Field* field, @@ -338,6 +337,10 @@ uchar* unpack_toku_key_field( #define COL_ZERO 0 #define COL_POS_INF 1 +#define COL_FIX_FIELD 0x11 +#define COL_VAR_FIELD 0x22 +#define COL_BLOB_FIELD 0x33 + // // information for hidden primary keys // @@ -357,7 +360,7 @@ static inline ulonglong hpk_char_to_num(uchar* val) { return uint8korr(val); } -int tokudb_compare_two_keys( +static int tokudb_compare_two_keys( const void* new_key_data, const uint32_t new_key_size, const void* saved_key_data, @@ -368,10 +371,10 @@ int tokudb_compare_two_keys( bool* read_string ); -int tokudb_cmp_dbt_key(DB* db, const DBT *keya, const DBT *keyb); +static int tokudb_cmp_dbt_key(DB* db, const DBT *keya, const DBT *keyb); //TODO: QQQ Only do one direction for prefix. -int tokudb_prefix_cmp_dbt_key(DB *file, const DBT *keya, const DBT *keyb); +static int tokudb_prefix_cmp_dbt_key(DB *file, const DBT *keya, const DBT *keyb); static int tokudb_compare_two_key_parts( const void* new_key_data, @@ -385,7 +388,7 @@ static int tokudb_compare_two_key_parts( static int tokudb_cmp_dbt_key_parts(DB *file, const DBT *keya, const DBT *keyb, uint max_parts); -int create_toku_key_descriptor( +static int create_toku_key_descriptor( uchar* buf, bool is_first_hpk, KEY* first_key, @@ -394,15 +397,15 @@ int create_toku_key_descriptor( ); -uint32_t create_toku_main_key_pack_descriptor ( +static uint32_t create_toku_main_key_pack_descriptor ( uchar* buf ); -uint32_t get_max_clustering_val_pack_desc_size( +static uint32_t get_max_clustering_val_pack_desc_size( TABLE_SHARE* table_share ); -uint32_t create_toku_clustering_val_pack_descriptor ( +static uint32_t create_toku_clustering_val_pack_descriptor ( uchar* buf, uint pk_index, TABLE_SHARE* table_share, @@ -419,18 +422,18 @@ static inline bool is_key_clustering( return (row_desc_size > 0); } -uint32_t pack_clustering_val_from_desc( +static uint32_t pack_clustering_val_from_desc( uchar* buf, void* row_desc, uint32_t row_desc_size, const DBT* pk_val ); -uint32_t get_max_secondary_key_pack_desc_size( +static uint32_t get_max_secondary_key_pack_desc_size( KEY_AND_COL_INFO* kc_info ); -uint32_t create_toku_secondary_key_pack_descriptor ( +static uint32_t create_toku_secondary_key_pack_descriptor ( uchar* buf, bool has_hpk, uint pk_index, @@ -450,13 +453,13 @@ static inline bool is_key_pk( return buf[0]; } -uint32_t max_key_size_from_desc( +static uint32_t max_key_size_from_desc( void* row_desc, uint32_t row_desc_size ); -uint32_t pack_key_from_desc( +static uint32_t pack_key_from_desc( uchar* buf, void* row_desc, uint32_t row_desc_size, @@ -464,17 +467,17 @@ uint32_t pack_key_from_desc( const DBT* pk_val ); -bool fields_have_same_name( +static bool fields_have_same_name( Field* a, Field* b ); -bool fields_are_same_type( +static bool fields_are_same_type( Field* a, Field* b ); -bool are_two_fields_same( +static bool are_two_fields_same( Field* a, Field* b ); |