Commit b8d7ee97 authored by Rich Prohaska's avatar Rich Prohaska

basic tokudb running in mysql 5.7

parent eef01795
...@@ -183,9 +183,9 @@ static int allocate_key_and_col_info ( TABLE_SHARE* table_share, KEY_AND_COL_INF ...@@ -183,9 +183,9 @@ static int allocate_key_and_col_info ( TABLE_SHARE* table_share, KEY_AND_COL_INF
// //
// create the field lengths // create the field lengths
// //
kc_info->field_lengths = (uint16_t *)my_malloc(table_share->fields*sizeof(uint16_t), MYF(MY_WME | MY_ZEROFILL)); kc_info->field_lengths = (uint16_t *)tokudb_my_malloc(table_share->fields*sizeof(uint16_t), MYF(MY_WME | MY_ZEROFILL));
kc_info->length_bytes= (uchar *)my_malloc(table_share->fields, MYF(MY_WME | MY_ZEROFILL)); kc_info->length_bytes= (uchar *)tokudb_my_malloc(table_share->fields, MYF(MY_WME | MY_ZEROFILL));
kc_info->blob_fields= (uint32_t *)my_malloc(table_share->fields*sizeof(uint32_t), MYF(MY_WME | MY_ZEROFILL)); kc_info->blob_fields= (uint32_t *)tokudb_my_malloc(table_share->fields*sizeof(uint32_t), MYF(MY_WME | MY_ZEROFILL));
if (kc_info->field_lengths == NULL || if (kc_info->field_lengths == NULL ||
kc_info->length_bytes == NULL || kc_info->length_bytes == NULL ||
...@@ -198,9 +198,9 @@ exit: ...@@ -198,9 +198,9 @@ exit:
for (uint i = 0; MAX_KEY + 1; i++) { for (uint i = 0; MAX_KEY + 1; i++) {
bitmap_free(&kc_info->key_filters[i]); bitmap_free(&kc_info->key_filters[i]);
} }
my_free(kc_info->field_lengths); tokudb_my_free(kc_info->field_lengths);
my_free(kc_info->length_bytes); tokudb_my_free(kc_info->length_bytes);
my_free(kc_info->blob_fields); tokudb_my_free(kc_info->blob_fields);
} }
return error; return error;
} }
...@@ -227,7 +227,7 @@ static TOKUDB_SHARE *get_share(const char *table_name, TABLE_SHARE* table_share) ...@@ -227,7 +227,7 @@ static TOKUDB_SHARE *get_share(const char *table_name, TABLE_SHARE* table_share)
// create share and fill it with all zeroes // create share and fill it with all zeroes
// hence, all pointers are initialized to NULL // hence, all pointers are initialized to NULL
// //
share = (TOKUDB_SHARE *) my_multi_malloc(MYF(MY_WME | MY_ZEROFILL), share = (TOKUDB_SHARE *) tokudb_my_multi_malloc(MYF(MY_WME | MY_ZEROFILL),
&share, sizeof(*share), &share, sizeof(*share),
&tmp_name, length + 1, &tmp_name, length + 1,
NullS NullS
...@@ -258,7 +258,7 @@ static TOKUDB_SHARE *get_share(const char *table_name, TABLE_SHARE* table_share) ...@@ -258,7 +258,7 @@ static TOKUDB_SHARE *get_share(const char *table_name, TABLE_SHARE* table_share)
exit: exit:
if (error) { if (error) {
pthread_mutex_destroy(&share->mutex); pthread_mutex_destroy(&share->mutex);
my_free((uchar *) share); tokudb_my_free((uchar *) share);
share = NULL; share = NULL;
} }
return share; return share;
...@@ -271,13 +271,13 @@ static void free_key_and_col_info (KEY_AND_COL_INFO* kc_info) { ...@@ -271,13 +271,13 @@ static void free_key_and_col_info (KEY_AND_COL_INFO* kc_info) {
} }
for (uint i = 0; i < MAX_KEY+1; i++) { for (uint i = 0; i < MAX_KEY+1; i++) {
my_free(kc_info->cp_info[i]); tokudb_my_free(kc_info->cp_info[i]);
kc_info->cp_info[i] = NULL; // 3144 kc_info->cp_info[i] = NULL; // 3144
} }
my_free(kc_info->field_lengths); tokudb_my_free(kc_info->field_lengths);
my_free(kc_info->length_bytes); tokudb_my_free(kc_info->length_bytes);
my_free(kc_info->blob_fields); tokudb_my_free(kc_info->blob_fields);
} }
// //
...@@ -322,7 +322,7 @@ static int free_share(TOKUDB_SHARE * share, bool mutex_is_locked) { ...@@ -322,7 +322,7 @@ static int free_share(TOKUDB_SHARE * share, bool mutex_is_locked) {
pthread_mutex_destroy(&share->mutex); pthread_mutex_destroy(&share->mutex);
rwlock_destroy(&share->num_DBs_lock); rwlock_destroy(&share->num_DBs_lock);
my_free((uchar *) share); tokudb_my_free((uchar *) share);
} }
return result; return result;
...@@ -373,7 +373,8 @@ static inline bool do_ignore_flag_optimization(THD* thd, TABLE* table, bool opt_ ...@@ -373,7 +373,8 @@ static inline bool do_ignore_flag_optimization(THD* thd, TABLE* table, bool opt_
} }
static inline uint get_key_parts(const KEY *key) { static inline uint get_key_parts(const KEY *key) {
#if 50609 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #if (50609 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699) || \
(50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799)
return key->user_defined_key_parts; return key->user_defined_key_parts;
#else #else
return key->key_parts; return key->key_parts;
...@@ -382,7 +383,8 @@ static inline uint get_key_parts(const KEY *key) { ...@@ -382,7 +383,8 @@ static inline uint get_key_parts(const KEY *key) {
#if TOKU_INCLUDE_EXTENDED_KEYS #if TOKU_INCLUDE_EXTENDED_KEYS
static inline uint get_ext_key_parts(const KEY *key) { static inline uint get_ext_key_parts(const KEY *key) {
#if 50609 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #if (50609 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699) || \
(50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799)
return key->actual_key_parts; return key->actual_key_parts;
#elif defined(MARIADB_BASE_VERSION) #elif defined(MARIADB_BASE_VERSION)
return key->ext_key_parts; return key->ext_key_parts;
...@@ -500,7 +502,7 @@ static int smart_dbt_do_nothing (DBT const *key, DBT const *row, void *context) ...@@ -500,7 +502,7 @@ static int smart_dbt_do_nothing (DBT const *key, DBT const *row, void *context)
static int smart_dbt_metacallback (DBT const *key, DBT const *row, void *context) { static int smart_dbt_metacallback (DBT const *key, DBT const *row, void *context) {
DBT* val = (DBT *)context; DBT* val = (DBT *)context;
val->data = my_malloc(row->size, MYF(MY_WME|MY_ZEROFILL)); val->data = tokudb_my_malloc(row->size, MYF(MY_WME|MY_ZEROFILL));
if (val->data == NULL) return ENOMEM; if (val->data == NULL) return ENOMEM;
memcpy(val->data, row->data, row->size); memcpy(val->data, row->data, row->size);
val->size = row->size; val->size = row->size;
...@@ -1083,7 +1085,7 @@ static int rename_table_in_metadata(const char *from, const char *to, DB_TXN* tx ...@@ -1083,7 +1085,7 @@ static int rename_table_in_metadata(const char *from, const char *to, DB_TXN* tx
error = 0; error = 0;
cleanup: cleanup:
my_free(val.data); tokudb_my_free(val.data);
return error; return error;
} }
...@@ -1121,7 +1123,7 @@ static int check_table_in_metadata(const char *name, bool* table_found, DB_TXN* ...@@ -1121,7 +1123,7 @@ static int check_table_in_metadata(const char *name, bool* table_found, DB_TXN*
static int create_tokudb_trx_data_instance(tokudb_trx_data** out_trx) { static int create_tokudb_trx_data_instance(tokudb_trx_data** out_trx) {
int error; int error;
tokudb_trx_data* trx = NULL; tokudb_trx_data* trx = NULL;
trx = (tokudb_trx_data *) my_malloc(sizeof(*trx), MYF(MY_ZEROFILL)); trx = (tokudb_trx_data *) tokudb_my_malloc(sizeof(*trx), MYF(MY_ZEROFILL));
if (!trx) { if (!trx) {
error = ENOMEM; error = ENOMEM;
goto cleanup; goto cleanup;
...@@ -1395,7 +1397,7 @@ bool ha_tokudb::has_auto_increment_flag(uint* index) { ...@@ -1395,7 +1397,7 @@ bool ha_tokudb::has_auto_increment_flag(uint* index) {
static int open_status_dictionary(DB** ptr, const char* name, DB_TXN* txn) { static int open_status_dictionary(DB** ptr, const char* name, DB_TXN* txn) {
int error; int error;
char* newname = NULL; char* newname = NULL;
newname = (char *)my_malloc( newname = (char *)tokudb_my_malloc(
get_max_dict_name_path_length(name), get_max_dict_name_path_length(name),
MYF(MY_WME)); MYF(MY_WME));
if (newname == NULL) { if (newname == NULL) {
...@@ -1409,7 +1411,7 @@ static int open_status_dictionary(DB** ptr, const char* name, DB_TXN* txn) { ...@@ -1409,7 +1411,7 @@ static int open_status_dictionary(DB** ptr, const char* name, DB_TXN* txn) {
error = tokudb::open_status(db_env, ptr, newname, txn); error = tokudb::open_status(db_env, ptr, newname, txn);
cleanup: cleanup:
my_free(newname); tokudb_my_free(newname);
return error; return error;
} }
...@@ -1421,7 +1423,7 @@ int ha_tokudb::open_main_dictionary(const char* name, bool is_read_only, DB_TXN* ...@@ -1421,7 +1423,7 @@ int ha_tokudb::open_main_dictionary(const char* name, bool is_read_only, DB_TXN*
assert(share->file == NULL); assert(share->file == NULL);
assert(share->key_file[primary_key] == NULL); assert(share->key_file[primary_key] == NULL);
newname = (char *)my_malloc( newname = (char *)tokudb_my_malloc(
get_max_dict_name_path_length(name), get_max_dict_name_path_length(name),
MYF(MY_WME|MY_ZEROFILL) MYF(MY_WME|MY_ZEROFILL)
); );
...@@ -1459,7 +1461,7 @@ exit: ...@@ -1459,7 +1461,7 @@ exit:
share->key_file[primary_key] = NULL; share->key_file[primary_key] = NULL;
} }
} }
my_free(newname); tokudb_my_free(newname);
return error; return error;
} }
...@@ -1476,7 +1478,7 @@ int ha_tokudb::open_secondary_dictionary(DB** ptr, KEY* key_info, const char* na ...@@ -1476,7 +1478,7 @@ int ha_tokudb::open_secondary_dictionary(DB** ptr, KEY* key_info, const char* na
sprintf(dict_name, "key-%s", key_info->name); sprintf(dict_name, "key-%s", key_info->name);
newname_len = get_max_dict_name_path_length(name); newname_len = get_max_dict_name_path_length(name);
newname = (char *)my_malloc(newname_len, MYF(MY_WME|MY_ZEROFILL)); newname = (char *)tokudb_my_malloc(newname_len, MYF(MY_WME|MY_ZEROFILL));
if (newname == NULL) { if (newname == NULL) {
error = ENOMEM; error = ENOMEM;
goto cleanup; goto cleanup;
...@@ -1505,7 +1507,7 @@ cleanup: ...@@ -1505,7 +1507,7 @@ cleanup:
*ptr = NULL; *ptr = NULL;
} }
} }
my_free(newname); tokudb_my_free(newname);
return error; return error;
} }
...@@ -1515,7 +1517,7 @@ static int initialize_col_pack_info(KEY_AND_COL_INFO* kc_info, TABLE_SHARE* tabl ...@@ -1515,7 +1517,7 @@ static int initialize_col_pack_info(KEY_AND_COL_INFO* kc_info, TABLE_SHARE* tabl
// set up the cp_info // set up the cp_info
// //
assert(kc_info->cp_info[keynr] == NULL); assert(kc_info->cp_info[keynr] == NULL);
kc_info->cp_info[keynr] = (COL_PACK_INFO *)my_malloc( kc_info->cp_info[keynr] = (COL_PACK_INFO *)tokudb_my_malloc(
table_share->fields*sizeof(COL_PACK_INFO), table_share->fields*sizeof(COL_PACK_INFO),
MYF(MY_WME | MY_ZEROFILL) MYF(MY_WME | MY_ZEROFILL)
); );
...@@ -1567,7 +1569,7 @@ exit: ...@@ -1567,7 +1569,7 @@ exit:
// reset the kc_info state at keynr // reset the kc_info state at keynr
static void reset_key_and_col_info(KEY_AND_COL_INFO *kc_info, uint keynr) { static void reset_key_and_col_info(KEY_AND_COL_INFO *kc_info, uint keynr) {
bitmap_clear_all(&kc_info->key_filters[keynr]); bitmap_clear_all(&kc_info->key_filters[keynr]);
my_free(kc_info->cp_info[keynr]); tokudb_my_free(kc_info->cp_info[keynr]);
kc_info->cp_info[keynr] = NULL; kc_info->cp_info[keynr] = NULL;
kc_info->mcp_info[keynr] = (MULTI_COL_PACK_INFO) { 0, 0 }; kc_info->mcp_info[keynr] = (MULTI_COL_PACK_INFO) { 0, 0 };
} }
...@@ -1901,7 +1903,7 @@ int ha_tokudb::open(const char *name, int mode, uint test_if_locked) { ...@@ -1901,7 +1903,7 @@ int ha_tokudb::open(const char *name, int mode, uint test_if_locked) {
// the "+ 1" is for the first byte that states +/- infinity // the "+ 1" is for the first byte that states +/- infinity
// multiply everything by 2 to account for clustered keys having a key and primary key together // multiply everything by 2 to account for clustered keys having a key and primary key together
max_key_length = 2*(table_share->max_key_length + MAX_REF_PARTS * 3 + sizeof(uchar)); max_key_length = 2*(table_share->max_key_length + MAX_REF_PARTS * 3 + sizeof(uchar));
alloc_ptr = my_multi_malloc(MYF(MY_WME), alloc_ptr = tokudb_my_multi_malloc(MYF(MY_WME),
&key_buff, max_key_length, &key_buff, max_key_length,
&key_buff2, max_key_length, &key_buff2, max_key_length,
&key_buff3, max_key_length, &key_buff3, max_key_length,
...@@ -1918,21 +1920,21 @@ int ha_tokudb::open(const char *name, int mode, uint test_if_locked) { ...@@ -1918,21 +1920,21 @@ int ha_tokudb::open(const char *name, int mode, uint test_if_locked) {
} }
size_range_query_buff = get_tokudb_read_buf_size(thd); size_range_query_buff = get_tokudb_read_buf_size(thd);
range_query_buff = (uchar *)my_malloc(size_range_query_buff, MYF(MY_WME)); range_query_buff = (uchar *)tokudb_my_malloc(size_range_query_buff, MYF(MY_WME));
if (range_query_buff == NULL) { if (range_query_buff == NULL) {
ret_val = 1; ret_val = 1;
goto exit; goto exit;
} }
alloced_rec_buff_length = table_share->rec_buff_length + table_share->fields; alloced_rec_buff_length = table_share->rec_buff_length + table_share->fields;
rec_buff = (uchar *) my_malloc(alloced_rec_buff_length, MYF(MY_WME)); rec_buff = (uchar *) tokudb_my_malloc(alloced_rec_buff_length, MYF(MY_WME));
if (rec_buff == NULL) { if (rec_buff == NULL) {
ret_val = 1; ret_val = 1;
goto exit; goto exit;
} }
alloced_update_rec_buff_length = alloced_rec_buff_length; alloced_update_rec_buff_length = alloced_rec_buff_length;
rec_update_buff = (uchar *) my_malloc(alloced_update_rec_buff_length, MYF(MY_WME)); rec_update_buff = (uchar *) tokudb_my_malloc(alloced_update_rec_buff_length, MYF(MY_WME));
if (rec_update_buff == NULL) { if (rec_update_buff == NULL) {
ret_val = 1; ret_val = 1;
goto exit; goto exit;
...@@ -1979,13 +1981,13 @@ int ha_tokudb::open(const char *name, int mode, uint test_if_locked) { ...@@ -1979,13 +1981,13 @@ int ha_tokudb::open(const char *name, int mode, uint test_if_locked) {
exit: exit:
if (ret_val) { if (ret_val) {
my_free(range_query_buff); tokudb_my_free(range_query_buff);
range_query_buff = NULL; range_query_buff = NULL;
my_free(alloc_ptr); tokudb_my_free(alloc_ptr);
alloc_ptr = NULL; alloc_ptr = NULL;
my_free(rec_buff); tokudb_my_free(rec_buff);
rec_buff = NULL; rec_buff = NULL;
my_free(rec_update_buff); tokudb_my_free(rec_update_buff);
rec_update_buff = NULL; rec_update_buff = NULL;
if (error) { if (error) {
...@@ -2153,7 +2155,7 @@ int ha_tokudb::write_frm_data(DB* db, DB_TXN* txn, const char* frm_name) { ...@@ -2153,7 +2155,7 @@ int ha_tokudb::write_frm_data(DB* db, DB_TXN* txn, const char* frm_name) {
error = 0; error = 0;
cleanup: cleanup:
my_free(frm_data); tokudb_my_free(frm_data);
TOKUDB_DBUG_RETURN(error); TOKUDB_DBUG_RETURN(error);
} }
...@@ -2165,7 +2167,7 @@ static int ...@@ -2165,7 +2167,7 @@ static int
smart_dbt_callback_verify_frm (DBT const *key, DBT const *row, void *context) { smart_dbt_callback_verify_frm (DBT const *key, DBT const *row, void *context) {
DBT* stored_frm = (DBT *)context; DBT* stored_frm = (DBT *)context;
stored_frm->size = row->size; stored_frm->size = row->size;
stored_frm->data = (uchar *)my_malloc(row->size, MYF(MY_WME)); stored_frm->data = (uchar *)tokudb_my_malloc(row->size, MYF(MY_WME));
assert(stored_frm->data); assert(stored_frm->data);
memcpy(stored_frm->data, row->data, row->size); memcpy(stored_frm->data, row->data, row->size);
return 0; return 0;
...@@ -2217,8 +2219,8 @@ int ha_tokudb::verify_frm_data(const char* frm_name, DB_TXN* txn) { ...@@ -2217,8 +2219,8 @@ int ha_tokudb::verify_frm_data(const char* frm_name, DB_TXN* txn) {
error = 0; error = 0;
cleanup: cleanup:
my_free(mysql_frm_data); tokudb_my_free(mysql_frm_data);
my_free(stored_frm.data); tokudb_my_free(stored_frm.data);
TOKUDB_DBUG_RETURN(error); TOKUDB_DBUG_RETURN(error);
} }
...@@ -2263,11 +2265,11 @@ int ha_tokudb::__close() { ...@@ -2263,11 +2265,11 @@ int ha_tokudb::__close() {
TOKUDB_DBUG_ENTER("ha_tokudb::__close %p", this); TOKUDB_DBUG_ENTER("ha_tokudb::__close %p", this);
if (tokudb_debug & TOKUDB_DEBUG_OPEN) if (tokudb_debug & TOKUDB_DEBUG_OPEN)
TOKUDB_TRACE("close:%p\n", this); TOKUDB_TRACE("close:%p\n", this);
my_free(rec_buff); tokudb_my_free(rec_buff);
my_free(rec_update_buff); tokudb_my_free(rec_update_buff);
my_free(blob_buff); tokudb_my_free(blob_buff);
my_free(alloc_ptr); tokudb_my_free(alloc_ptr);
my_free(range_query_buff); tokudb_my_free(range_query_buff);
for (uint32_t i = 0; i < sizeof(mult_key_dbt_array)/sizeof(mult_key_dbt_array[0]); i++) { for (uint32_t i = 0; i < sizeof(mult_key_dbt_array)/sizeof(mult_key_dbt_array[0]); i++) {
toku_dbt_array_destroy(&mult_key_dbt_array[i]); toku_dbt_array_destroy(&mult_key_dbt_array[i]);
} }
...@@ -2293,7 +2295,7 @@ int ha_tokudb::__close() { ...@@ -2293,7 +2295,7 @@ int ha_tokudb::__close() {
bool ha_tokudb::fix_rec_buff_for_blob(ulong length) { bool ha_tokudb::fix_rec_buff_for_blob(ulong length) {
if (!rec_buff || (length > alloced_rec_buff_length)) { if (!rec_buff || (length > alloced_rec_buff_length)) {
uchar *newptr; uchar *newptr;
if (!(newptr = (uchar *) my_realloc((void *) rec_buff, length, MYF(MY_ALLOW_ZERO_PTR)))) if (!(newptr = (uchar *) tokudb_my_realloc((void *) rec_buff, length, MYF(MY_ALLOW_ZERO_PTR))))
return 1; return 1;
rec_buff = newptr; rec_buff = newptr;
alloced_rec_buff_length = length; alloced_rec_buff_length = length;
...@@ -2310,7 +2312,7 @@ bool ha_tokudb::fix_rec_buff_for_blob(ulong length) { ...@@ -2310,7 +2312,7 @@ bool ha_tokudb::fix_rec_buff_for_blob(ulong length) {
bool ha_tokudb::fix_rec_update_buff_for_blob(ulong length) { bool ha_tokudb::fix_rec_update_buff_for_blob(ulong length) {
if (!rec_update_buff || (length > alloced_update_rec_buff_length)) { if (!rec_update_buff || (length > alloced_update_rec_buff_length)) {
uchar *newptr; uchar *newptr;
if (!(newptr = (uchar *) my_realloc((void *) rec_update_buff, length, MYF(MY_ALLOW_ZERO_PTR)))) if (!(newptr = (uchar *) tokudb_my_realloc((void *) rec_update_buff, length, MYF(MY_ALLOW_ZERO_PTR))))
return 1; return 1;
rec_update_buff= newptr; rec_update_buff= newptr;
alloced_update_rec_buff_length = length; alloced_update_rec_buff_length = length;
...@@ -2447,7 +2449,7 @@ int ha_tokudb::unpack_blobs( ...@@ -2447,7 +2449,7 @@ int ha_tokudb::unpack_blobs(
// //
assert( !((share->kc_info.num_blobs == 0) && (num_bytes > 0)) ); assert( !((share->kc_info.num_blobs == 0) && (num_bytes > 0)) );
if (num_bytes > num_blob_bytes) { if (num_bytes > num_blob_bytes) {
ptr = (uchar *)my_realloc((void *)blob_buff, num_bytes, MYF(MY_ALLOW_ZERO_PTR)); ptr = (uchar *)tokudb_my_realloc((void *)blob_buff, num_bytes, MYF(MY_ALLOW_ZERO_PTR));
if (ptr == NULL) { if (ptr == NULL) {
error = ENOMEM; error = ENOMEM;
goto exit; goto exit;
...@@ -3775,9 +3777,9 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) { ...@@ -3775,9 +3777,9 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) {
// //
//use for testing the packing of keys //use for testing the packing of keys
// //
tmp_pk_key_data = (uchar *)my_malloc(pk_key->size, MYF(MY_WME)); tmp_pk_key_data = (uchar *)tokudb_my_malloc(pk_key->size, MYF(MY_WME));
assert(tmp_pk_key_data); assert(tmp_pk_key_data);
tmp_pk_val_data = (uchar *)my_malloc(pk_val->size, MYF(MY_WME)); tmp_pk_val_data = (uchar *)tokudb_my_malloc(pk_val->size, MYF(MY_WME));
assert(tmp_pk_val_data); assert(tmp_pk_val_data);
memcpy(tmp_pk_key_data, pk_key->data, pk_key->size); memcpy(tmp_pk_key_data, pk_key->data, pk_key->size);
memcpy(tmp_pk_val_data, pk_val->data, pk_val->size); memcpy(tmp_pk_val_data, pk_val->data, pk_val->size);
...@@ -3822,7 +3824,7 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) { ...@@ -3822,7 +3824,7 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) {
error = pack_row(&row, (const uchar *) record, keynr); error = pack_row(&row, (const uchar *) record, keynr);
assert(error == 0); assert(error == 0);
uchar* tmp_buff = NULL; uchar* tmp_buff = NULL;
tmp_buff = (uchar *)my_malloc(alloced_rec_buff_length,MYF(MY_WME)); tmp_buff = (uchar *)tokudb_my_malloc(alloced_rec_buff_length,MYF(MY_WME));
assert(tmp_buff); assert(tmp_buff);
row_desc = (uchar *)share->key_file[keynr]->descriptor->dbt.data; row_desc = (uchar *)share->key_file[keynr]->descriptor->dbt.data;
row_desc += (*(uint32_t *)row_desc); row_desc += (*(uint32_t *)row_desc);
...@@ -3838,7 +3840,7 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) { ...@@ -3838,7 +3840,7 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) {
assert(tmp_num_bytes == row.size); assert(tmp_num_bytes == row.size);
cmp = memcmp(tmp_buff,rec_buff,tmp_num_bytes); cmp = memcmp(tmp_buff,rec_buff,tmp_num_bytes);
assert(cmp == 0); assert(cmp == 0);
my_free(tmp_buff); tokudb_my_free(tmp_buff);
} }
} }
...@@ -3850,8 +3852,8 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) { ...@@ -3850,8 +3852,8 @@ void ha_tokudb::test_row_packing(uchar* record, DBT* pk_key, DBT* pk_val) {
cmp = memcmp(pk_val->data, tmp_pk_val_data, pk_val->size); cmp = memcmp(pk_val->data, tmp_pk_val_data, pk_val->size);
assert( cmp == 0); assert( cmp == 0);
my_free(tmp_pk_key_data); tokudb_my_free(tmp_pk_key_data);
my_free(tmp_pk_val_data); tokudb_my_free(tmp_pk_val_data);
} }
// //
...@@ -5218,7 +5220,7 @@ int ha_tokudb::fill_range_query_buf( ...@@ -5218,7 +5220,7 @@ int ha_tokudb::fill_range_query_buf(
size_needed = sizeof(uint32_t) + key->size; size_needed = sizeof(uint32_t) + key->size;
} }
if (size_remaining < size_needed) { if (size_remaining < size_needed) {
range_query_buff = (uchar *)my_realloc( range_query_buff = (uchar *)tokudb_my_realloc(
(void *)range_query_buff, (void *)range_query_buff,
bytes_used_in_range_query_buff+size_needed, bytes_used_in_range_query_buff+size_needed,
MYF(MY_WME) MYF(MY_WME)
...@@ -6496,6 +6498,8 @@ static inline enum row_type compression_method_to_row_type(enum toku_compression ...@@ -6496,6 +6498,8 @@ static inline enum row_type compression_method_to_row_type(enum toku_compression
return ROW_TYPE_TOKU_FAST; return ROW_TYPE_TOKU_FAST;
case TOKU_SMALL_COMPRESSION_METHOD: case TOKU_SMALL_COMPRESSION_METHOD:
return ROW_TYPE_TOKU_SMALL; return ROW_TYPE_TOKU_SMALL;
#else
case TOKU_ZLIB_WITHOUT_CHECKSUM_METHOD:
#endif #endif
case TOKU_DEFAULT_COMPRESSION_METHOD: case TOKU_DEFAULT_COMPRESSION_METHOD:
return ROW_TYPE_DEFAULT; return ROW_TYPE_DEFAULT;
...@@ -6793,10 +6797,10 @@ int ha_tokudb::create_secondary_dictionary( ...@@ -6793,10 +6797,10 @@ int ha_tokudb::create_secondary_dictionary(
max_row_desc_buff_size = get_max_desc_size(kc_info,form); max_row_desc_buff_size = get_max_desc_size(kc_info,form);
row_desc_buff = (uchar *)my_malloc(max_row_desc_buff_size, MYF(MY_WME)); row_desc_buff = (uchar *)tokudb_my_malloc(max_row_desc_buff_size, MYF(MY_WME));
if (row_desc_buff == NULL){ error = ENOMEM; goto cleanup;} if (row_desc_buff == NULL){ error = ENOMEM; goto cleanup;}
newname = (char *)my_malloc(get_max_dict_name_path_length(name),MYF(MY_WME)); newname = (char *)tokudb_my_malloc(get_max_dict_name_path_length(name),MYF(MY_WME));
if (newname == NULL){ error = ENOMEM; goto cleanup;} if (newname == NULL){ error = ENOMEM; goto cleanup;}
sprintf(dict_name, "key-%s", key_info->name); sprintf(dict_name, "key-%s", key_info->name);
...@@ -6828,8 +6832,8 @@ int ha_tokudb::create_secondary_dictionary( ...@@ -6828,8 +6832,8 @@ int ha_tokudb::create_secondary_dictionary(
error = create_sub_table(newname, &row_descriptor, txn, block_size, read_block_size, row_type_to_compression_method(row_type), is_hot_index); error = create_sub_table(newname, &row_descriptor, txn, block_size, read_block_size, row_type_to_compression_method(row_type), is_hot_index);
cleanup: cleanup:
my_free(newname); tokudb_my_free(newname);
my_free(row_desc_buff); tokudb_my_free(row_desc_buff);
return error; return error;
} }
...@@ -6886,10 +6890,10 @@ int ha_tokudb::create_main_dictionary(const char* name, TABLE* form, DB_TXN* txn ...@@ -6886,10 +6890,10 @@ int ha_tokudb::create_main_dictionary(const char* name, TABLE* form, DB_TXN* txn
memset(&row_descriptor, 0, sizeof(row_descriptor)); memset(&row_descriptor, 0, sizeof(row_descriptor));
max_row_desc_buff_size = get_max_desc_size(kc_info, form); max_row_desc_buff_size = get_max_desc_size(kc_info, form);
row_desc_buff = (uchar *)my_malloc(max_row_desc_buff_size, MYF(MY_WME)); row_desc_buff = (uchar *)tokudb_my_malloc(max_row_desc_buff_size, MYF(MY_WME));
if (row_desc_buff == NULL){ error = ENOMEM; goto cleanup;} if (row_desc_buff == NULL){ error = ENOMEM; goto cleanup;}
newname = (char *)my_malloc(get_max_dict_name_path_length(name),MYF(MY_WME)); newname = (char *)tokudb_my_malloc(get_max_dict_name_path_length(name),MYF(MY_WME));
if (newname == NULL){ error = ENOMEM; goto cleanup;} if (newname == NULL){ error = ENOMEM; goto cleanup;}
make_name(newname, name, "main"); make_name(newname, name, "main");
...@@ -6919,8 +6923,8 @@ int ha_tokudb::create_main_dictionary(const char* name, TABLE* form, DB_TXN* txn ...@@ -6919,8 +6923,8 @@ int ha_tokudb::create_main_dictionary(const char* name, TABLE* form, DB_TXN* txn
/* Create the main table that will hold the real rows */ /* Create the main table that will hold the real rows */
error = create_sub_table(newname, &row_descriptor, txn, block_size, read_block_size, row_type_to_compression_method(row_type), false); error = create_sub_table(newname, &row_descriptor, txn, block_size, read_block_size, row_type_to_compression_method(row_type), false);
cleanup: cleanup:
my_free(newname); tokudb_my_free(newname);
my_free(row_desc_buff); tokudb_my_free(row_desc_buff);
return error; return error;
} }
...@@ -7004,7 +7008,7 @@ int ha_tokudb::create(const char *name, TABLE * form, HA_CREATE_INFO * create_in ...@@ -7004,7 +7008,7 @@ int ha_tokudb::create(const char *name, TABLE * form, HA_CREATE_INFO * create_in
} }
} }
newname = (char *)my_malloc(get_max_dict_name_path_length(name),MYF(MY_WME)); newname = (char *)tokudb_my_malloc(get_max_dict_name_path_length(name),MYF(MY_WME));
if (newname == NULL){ error = ENOMEM; goto cleanup;} if (newname == NULL){ error = ENOMEM; goto cleanup;}
if (trx && trx->sub_sp_level && thd_sql_command(thd) == SQLCOM_CREATE_TABLE) { if (trx && trx->sub_sp_level && thd_sql_command(thd) == SQLCOM_CREATE_TABLE) {
...@@ -7100,7 +7104,7 @@ cleanup: ...@@ -7100,7 +7104,7 @@ cleanup:
commit_txn(txn,0); commit_txn(txn,0);
} }
} }
my_free(newname); tokudb_my_free(newname);
pthread_mutex_unlock(&tokudb_meta_mutex); pthread_mutex_unlock(&tokudb_meta_mutex);
TOKUDB_DBUG_RETURN(error); TOKUDB_DBUG_RETURN(error);
} }
...@@ -7131,7 +7135,7 @@ int ha_tokudb::delete_or_rename_dictionary( const char* from_name, const char* t ...@@ -7131,7 +7135,7 @@ int ha_tokudb::delete_or_rename_dictionary( const char* from_name, const char* t
char* new_to_name = NULL; char* new_to_name = NULL;
assert(txn); assert(txn);
new_from_name = (char *)my_malloc( new_from_name = (char *)tokudb_my_malloc(
get_max_dict_name_path_length(from_name), get_max_dict_name_path_length(from_name),
MYF(MY_WME) MYF(MY_WME)
); );
...@@ -7141,7 +7145,7 @@ int ha_tokudb::delete_or_rename_dictionary( const char* from_name, const char* t ...@@ -7141,7 +7145,7 @@ int ha_tokudb::delete_or_rename_dictionary( const char* from_name, const char* t
} }
if (!is_delete) { if (!is_delete) {
assert(to_name); assert(to_name);
new_to_name = (char *)my_malloc( new_to_name = (char *)tokudb_my_malloc(
get_max_dict_name_path_length(to_name), get_max_dict_name_path_length(to_name),
MYF(MY_WME) MYF(MY_WME)
); );
...@@ -7177,8 +7181,8 @@ int ha_tokudb::delete_or_rename_dictionary( const char* from_name, const char* t ...@@ -7177,8 +7181,8 @@ int ha_tokudb::delete_or_rename_dictionary( const char* from_name, const char* t
if (error) { goto cleanup; } if (error) { goto cleanup; }
cleanup: cleanup:
my_free(new_from_name); tokudb_my_free(new_from_name);
my_free(new_to_name); tokudb_my_free(new_to_name);
return error; return error;
} }
......
...@@ -92,6 +92,8 @@ PATENT RIGHTS GRANT: ...@@ -92,6 +92,8 @@ PATENT RIGHTS GRANT:
#if 100000 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 100099 #if 100000 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 100099
#define TOKU_ALTER_RENAME ALTER_RENAME_56 #define TOKU_ALTER_RENAME ALTER_RENAME_56
#elif 50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799
#define TOKU_ALTER_RENAME ALTER_RENAME
#elif 50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #elif 50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699
#define TOKU_ALTER_RENAME ALTER_RENAME #define TOKU_ALTER_RENAME ALTER_RENAME
#elif 50500 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50599 #elif 50500 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50599
...@@ -492,7 +494,8 @@ bool ha_tokudb::inplace_alter_table(TABLE *altered_table, Alter_inplace_info *ha ...@@ -492,7 +494,8 @@ bool ha_tokudb::inplace_alter_table(TABLE *altered_table, Alter_inplace_info *ha
if (error == 0 && ctx->reset_card) if (error == 0 && ctx->reset_card)
tokudb::set_card_from_status(share->status_block, ctx->alter_txn, table->s, altered_table->s); tokudb::set_card_from_status(share->status_block, ctx->alter_txn, table->s, altered_table->s);
#if 50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #if (50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699) || \
(50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799)
if (error == 0 && (TOKU_PARTITION_WRITE_FRM_DATA || altered_table->part_info == NULL)) { if (error == 0 && (TOKU_PARTITION_WRITE_FRM_DATA || altered_table->part_info == NULL)) {
error = write_frm_data(share->status_block, ctx->alter_txn, altered_table->s->path.str); error = write_frm_data(share->status_block, ctx->alter_txn, altered_table->s->path.str);
} }
...@@ -510,7 +513,7 @@ bool ha_tokudb::inplace_alter_table(TABLE *altered_table, Alter_inplace_info *ha ...@@ -510,7 +513,7 @@ bool ha_tokudb::inplace_alter_table(TABLE *altered_table, Alter_inplace_info *ha
int ha_tokudb::alter_table_add_index(TABLE *altered_table, Alter_inplace_info *ha_alter_info) { int ha_tokudb::alter_table_add_index(TABLE *altered_table, Alter_inplace_info *ha_alter_info) {
// sort keys in add index order // sort keys in add index order
KEY *key_info = (KEY*) my_malloc(sizeof (KEY) * ha_alter_info->index_add_count, MYF(MY_WME)); KEY *key_info = (KEY*) tokudb_my_malloc(sizeof (KEY) * ha_alter_info->index_add_count, MYF(MY_WME));
for (uint i = 0; i < ha_alter_info->index_add_count; i++) { for (uint i = 0; i < ha_alter_info->index_add_count; i++) {
KEY *key = &key_info[i]; KEY *key = &key_info[i];
*key = ha_alter_info->key_info_buffer[ha_alter_info->index_add_buffer[i]]; *key = ha_alter_info->key_info_buffer[ha_alter_info->index_add_buffer[i]];
...@@ -529,7 +532,7 @@ int ha_tokudb::alter_table_add_index(TABLE *altered_table, Alter_inplace_info *h ...@@ -529,7 +532,7 @@ int ha_tokudb::alter_table_add_index(TABLE *altered_table, Alter_inplace_info *h
last_dup_key = MAX_KEY; last_dup_key = MAX_KEY;
} }
my_free(key_info); tokudb_my_free(key_info);
if (error == 0) if (error == 0)
ctx->reset_card = true; ctx->reset_card = true;
...@@ -619,7 +622,7 @@ int ha_tokudb::alter_table_add_or_drop_column(TABLE *altered_table, Alter_inplac ...@@ -619,7 +622,7 @@ int ha_tokudb::alter_table_add_or_drop_column(TABLE *altered_table, Alter_inplac
4 + num_columns*(1+1+4+1+1+4) + altered_table->s->reclength + // max dynamic row_mutator 4 + num_columns*(1+1+4+1+1+4) + altered_table->s->reclength + // max dynamic row_mutator
(4 + share->kc_info.num_blobs) + // max static blob size (4 + share->kc_info.num_blobs) + // max static blob size
(num_columns*(1+4+1+4)); // max dynamic blob size (num_columns*(1+4+1+4)); // max dynamic blob size
column_extra = (uchar *)my_malloc(max_column_extra_size, MYF(MY_WME)); column_extra = (uchar *)tokudb_my_malloc(max_column_extra_size, MYF(MY_WME));
if (column_extra == NULL) { error = ENOMEM; goto cleanup; } if (column_extra == NULL) { error = ENOMEM; goto cleanup; }
for (uint32_t i = 0; i < curr_num_DBs; i++) { for (uint32_t i = 0; i < curr_num_DBs; i++) {
...@@ -629,7 +632,7 @@ int ha_tokudb::alter_table_add_or_drop_column(TABLE *altered_table, Alter_inplac ...@@ -629,7 +632,7 @@ int ha_tokudb::alter_table_add_or_drop_column(TABLE *altered_table, Alter_inplac
if (error) if (error)
goto cleanup; goto cleanup;
error = share->key_file[i]->change_descriptor(share->key_file[i], ctx->alter_txn, &row_descriptor, 0); error = share->key_file[i]->change_descriptor(share->key_file[i], ctx->alter_txn, &row_descriptor, 0);
my_free(row_descriptor.data); tokudb_my_free(row_descriptor.data);
if (error) if (error)
goto cleanup; goto cleanup;
...@@ -660,7 +663,7 @@ int ha_tokudb::alter_table_add_or_drop_column(TABLE *altered_table, Alter_inplac ...@@ -660,7 +663,7 @@ int ha_tokudb::alter_table_add_or_drop_column(TABLE *altered_table, Alter_inplac
error = 0; error = 0;
cleanup: cleanup:
my_free(column_extra); tokudb_my_free(column_extra);
return error; return error;
} }
...@@ -674,12 +677,13 @@ bool ha_tokudb::commit_inplace_alter_table(TABLE *altered_table, Alter_inplace_i ...@@ -674,12 +677,13 @@ bool ha_tokudb::commit_inplace_alter_table(TABLE *altered_table, Alter_inplace_i
bool result = false; // success bool result = false; // success
if (commit) { if (commit) {
#if 50613 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #if (50613 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699) || \
(50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799)
if (ha_alter_info->group_commit_ctx) { if (ha_alter_info->group_commit_ctx) {
ha_alter_info->group_commit_ctx = NULL; ha_alter_info->group_commit_ctx = NULL;
} }
#endif #endif
#if 50500 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50599 #if (50500 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50599)
if (TOKU_PARTITION_WRITE_FRM_DATA || altered_table->part_info == NULL) { if (TOKU_PARTITION_WRITE_FRM_DATA || altered_table->part_info == NULL) {
int error = write_frm_data(share->status_block, ctx->alter_txn, altered_table->s->path.str); int error = write_frm_data(share->status_block, ctx->alter_txn, altered_table->s->path.str);
if (error) { if (error) {
...@@ -753,7 +757,7 @@ int ha_tokudb::alter_table_expand_varchar_offsets(TABLE *altered_table, Alter_in ...@@ -753,7 +757,7 @@ int ha_tokudb::alter_table_expand_varchar_offsets(TABLE *altered_table, Alter_in
if (error) if (error)
break; break;
error = share->key_file[i]->change_descriptor(share->key_file[i], ctx->alter_txn, &row_descriptor, 0); error = share->key_file[i]->change_descriptor(share->key_file[i], ctx->alter_txn, &row_descriptor, 0);
my_free(row_descriptor.data); tokudb_my_free(row_descriptor.data);
if (error) if (error)
break; break;
...@@ -766,7 +770,7 @@ int ha_tokudb::alter_table_expand_varchar_offsets(TABLE *altered_table, Alter_in ...@@ -766,7 +770,7 @@ int ha_tokudb::alter_table_expand_varchar_offsets(TABLE *altered_table, Alter_in
// make the expand variable offsets message // make the expand variable offsets message
DBT expand; memset(&expand, 0, sizeof expand); DBT expand; memset(&expand, 0, sizeof expand);
expand.size = sizeof (uchar) + sizeof offset_start + sizeof offset_end; expand.size = sizeof (uchar) + sizeof offset_start + sizeof offset_end;
expand.data = my_malloc(expand.size, MYF(MY_WME)); expand.data = tokudb_my_malloc(expand.size, MYF(MY_WME));
if (!expand.data) { if (!expand.data) {
error = ENOMEM; error = ENOMEM;
break; break;
...@@ -783,7 +787,7 @@ int ha_tokudb::alter_table_expand_varchar_offsets(TABLE *altered_table, Alter_in ...@@ -783,7 +787,7 @@ int ha_tokudb::alter_table_expand_varchar_offsets(TABLE *altered_table, Alter_in
// and broadcast it into the tree // and broadcast it into the tree
error = share->key_file[i]->update_broadcast(share->key_file[i], ctx->alter_txn, &expand, DB_IS_RESETTING_OP); error = share->key_file[i]->update_broadcast(share->key_file[i], ctx->alter_txn, &expand, DB_IS_RESETTING_OP);
my_free(expand.data); tokudb_my_free(expand.data);
if (error) if (error)
break; break;
} }
...@@ -935,7 +939,7 @@ int ha_tokudb::alter_table_expand_one_column(TABLE *altered_table, Alter_inplace ...@@ -935,7 +939,7 @@ int ha_tokudb::alter_table_expand_one_column(TABLE *altered_table, Alter_inplace
if (error) if (error)
break; break;
error = share->key_file[i]->change_descriptor(share->key_file[i], ctx->alter_txn, &row_descriptor, 0); error = share->key_file[i]->change_descriptor(share->key_file[i], ctx->alter_txn, &row_descriptor, 0);
my_free(row_descriptor.data); tokudb_my_free(row_descriptor.data);
if (error) if (error)
break; break;
...@@ -955,7 +959,7 @@ int ha_tokudb::alter_table_expand_one_column(TABLE *altered_table, Alter_inplace ...@@ -955,7 +959,7 @@ int ha_tokudb::alter_table_expand_one_column(TABLE *altered_table, Alter_inplace
expand.size = sizeof operation + sizeof new_offset + sizeof old_length + sizeof new_length; expand.size = sizeof operation + sizeof new_offset + sizeof old_length + sizeof new_length;
if (operation == UPDATE_OP_EXPAND_CHAR || operation == UPDATE_OP_EXPAND_BINARY) if (operation == UPDATE_OP_EXPAND_CHAR || operation == UPDATE_OP_EXPAND_BINARY)
expand.size += sizeof pad_char; expand.size += sizeof pad_char;
expand.data = my_malloc(expand.size, MYF(MY_WME)); expand.data = tokudb_my_malloc(expand.size, MYF(MY_WME));
if (!expand.data) { if (!expand.data) {
error = ENOMEM; error = ENOMEM;
break; break;
...@@ -984,7 +988,7 @@ int ha_tokudb::alter_table_expand_one_column(TABLE *altered_table, Alter_inplace ...@@ -984,7 +988,7 @@ int ha_tokudb::alter_table_expand_one_column(TABLE *altered_table, Alter_inplace
// and broadcast it into the tree // and broadcast it into the tree
error = share->key_file[i]->update_broadcast(share->key_file[i], ctx->alter_txn, &expand, DB_IS_RESETTING_OP); error = share->key_file[i]->update_broadcast(share->key_file[i], ctx->alter_txn, &expand, DB_IS_RESETTING_OP);
my_free(expand.data); tokudb_my_free(expand.data);
if (error) if (error)
break; break;
} }
...@@ -1014,7 +1018,7 @@ int ha_tokudb::alter_table_expand_blobs(TABLE *altered_table, Alter_inplace_info ...@@ -1014,7 +1018,7 @@ int ha_tokudb::alter_table_expand_blobs(TABLE *altered_table, Alter_inplace_info
if (error) if (error)
break; break;
error = share->key_file[i]->change_descriptor(share->key_file[i], ctx->alter_txn, &row_descriptor, 0); error = share->key_file[i]->change_descriptor(share->key_file[i], ctx->alter_txn, &row_descriptor, 0);
my_free(row_descriptor.data); tokudb_my_free(row_descriptor.data);
if (error) if (error)
break; break;
...@@ -1144,7 +1148,7 @@ int ha_tokudb::new_row_descriptor(TABLE *table, TABLE *altered_table, Alter_inpl ...@@ -1144,7 +1148,7 @@ int ha_tokudb::new_row_descriptor(TABLE *table, TABLE *altered_table, Alter_inpl
int error = 0; int error = 0;
tokudb_alter_ctx *ctx = static_cast<tokudb_alter_ctx *>(ha_alter_info->handler_ctx); tokudb_alter_ctx *ctx = static_cast<tokudb_alter_ctx *>(ha_alter_info->handler_ctx);
row_descriptor->size = get_max_desc_size(ctx->altered_table_kc_info, altered_table); row_descriptor->size = get_max_desc_size(ctx->altered_table_kc_info, altered_table);
row_descriptor->data = (uchar *) my_malloc(row_descriptor->size, MYF(MY_WME)); row_descriptor->data = (uchar *) tokudb_my_malloc(row_descriptor->size, MYF(MY_WME));
if (row_descriptor->data == NULL) { if (row_descriptor->data == NULL) {
error = ENOMEM; error = ENOMEM;
} else { } else {
......
...@@ -117,7 +117,8 @@ bool field_valid_for_tokudb_table(Field* field) { ...@@ -117,7 +117,8 @@ bool field_valid_for_tokudb_table(Field* field) {
case MYSQL_TYPE_TIMESTAMP: case MYSQL_TYPE_TIMESTAMP:
case MYSQL_TYPE_DOUBLE: case MYSQL_TYPE_DOUBLE:
case MYSQL_TYPE_FLOAT: case MYSQL_TYPE_FLOAT:
#if 50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #if (50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699) || \
(50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799)
case MYSQL_TYPE_DATETIME2: case MYSQL_TYPE_DATETIME2:
case MYSQL_TYPE_TIMESTAMP2: case MYSQL_TYPE_TIMESTAMP2:
case MYSQL_TYPE_TIME2: case MYSQL_TYPE_TIME2:
...@@ -264,7 +265,8 @@ TOKU_TYPE mysql_to_toku_type (Field* field) { ...@@ -264,7 +265,8 @@ TOKU_TYPE mysql_to_toku_type (Field* field) {
case MYSQL_TYPE_FLOAT: case MYSQL_TYPE_FLOAT:
ret_val = toku_type_float; ret_val = toku_type_float;
goto exit; goto exit;
#if 50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #if (50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699) || \
(50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799)
case MYSQL_TYPE_DATETIME2: case MYSQL_TYPE_DATETIME2:
case MYSQL_TYPE_TIMESTAMP2: case MYSQL_TYPE_TIMESTAMP2:
case MYSQL_TYPE_TIME2: case MYSQL_TYPE_TIME2:
...@@ -3224,7 +3226,8 @@ bool fields_are_same_type( ...@@ -3224,7 +3226,8 @@ bool fields_are_same_type(
case MYSQL_TYPE_NEWDATE: case MYSQL_TYPE_NEWDATE:
case MYSQL_TYPE_TIME: case MYSQL_TYPE_TIME:
case MYSQL_TYPE_TIMESTAMP: case MYSQL_TYPE_TIMESTAMP:
#if 50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #if (50600 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699) || \
(50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799)
case MYSQL_TYPE_DATETIME2: case MYSQL_TYPE_DATETIME2:
case MYSQL_TYPE_TIMESTAMP2: case MYSQL_TYPE_TIMESTAMP2:
case MYSQL_TYPE_TIME2: case MYSQL_TYPE_TIME2:
......
...@@ -263,7 +263,8 @@ static inline const uchar* unpack_toku_field_blob( ...@@ -263,7 +263,8 @@ static inline const uchar* unpack_toku_field_blob(
} }
static inline uint get_null_offset(TABLE* table, Field* field) { static inline uint get_null_offset(TABLE* table, Field* field) {
#if 50606 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #if (50606 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699) || \
(50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799)
return field->null_offset(table->record[0]); return field->null_offset(table->record[0]);
#else #else
return (uint) ((uchar*) field->null_ptr - (uchar*) table->record[0]); return (uint) ((uchar*) field->null_ptr - (uchar*) table->record[0]);
......
...@@ -121,7 +121,13 @@ PATENT RIGHTS GRANT: ...@@ -121,7 +121,13 @@ PATENT RIGHTS GRANT:
#if defined(TOKUDB_PATCHES) && TOKUDB_PATCHES == 0 #if defined(TOKUDB_PATCHES) && TOKUDB_PATCHES == 0
#elif 50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799
#define TOKU_USE_DB_TYPE_UNKNOWN 1
#define TOKU_INCLUDE_ALTER_56 1
#define TOKU_PARTITION_WRITE_FRM_DATA 0
#elif 50613 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699 #elif 50613 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50699
#define TOKU_USE_DB_TYPE_TOKUDB 1
#define TOKU_INCLUDE_ALTER_56 1 #define TOKU_INCLUDE_ALTER_56 1
#define TOKU_INCLUDE_ROW_TYPE_COMPRESSION 1 #define TOKU_INCLUDE_ROW_TYPE_COMPRESSION 1
#define TOKU_INCLUDE_XA 1 #define TOKU_INCLUDE_XA 1
...@@ -133,6 +139,7 @@ PATENT RIGHTS GRANT: ...@@ -133,6 +139,7 @@ PATENT RIGHTS GRANT:
#endif #endif
#elif 50500 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50599 #elif 50500 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50599
#define TOKU_USE_OTHER_DB_TYPE 1
#define TOKU_INCLUDE_ALTER_56 1 #define TOKU_INCLUDE_ALTER_56 1
#define TOKU_INCLUDE_ALTER_55 1 #define TOKU_INCLUDE_ALTER_55 1
#define TOKU_INCLUDE_ROW_TYPE_COMPRESSION 1 #define TOKU_INCLUDE_ROW_TYPE_COMPRESSION 1
...@@ -143,7 +150,6 @@ PATENT RIGHTS GRANT: ...@@ -143,7 +150,6 @@ PATENT RIGHTS GRANT:
#if defined(MARIADB_BASE_VERSION) #if defined(MARIADB_BASE_VERSION)
#define TOKU_INCLUDE_EXTENDED_KEYS 1 #define TOKU_INCLUDE_EXTENDED_KEYS 1
#endif #endif
#define TOKU_INCLUDE_OTHER_DB_TYPE 1
#define TOKU_INCLUDE_HANDLERTON_HANDLE_FATAL_SIGNAL 1 #define TOKU_INCLUDE_HANDLERTON_HANDLE_FATAL_SIGNAL 1
#else #else
...@@ -354,4 +360,60 @@ void toku_hton_assert_fail(const char*/*expr_as_string*/,const char */*fun*/,con ...@@ -354,4 +360,60 @@ void toku_hton_assert_fail(const char*/*expr_as_string*/,const char */*fun*/,con
#undef assert #undef assert
#define assert(expr) ((expr) ? (void)0 : toku_hton_assert_fail(#expr, __FUNCTION__, __FILE__, __LINE__, errno)) #define assert(expr) ((expr) ? (void)0 : toku_hton_assert_fail(#expr, __FUNCTION__, __FILE__, __LINE__, errno))
static inline void *tokudb_my_malloc(size_t s, myf flags) {
#if 50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799
return my_malloc(0, s, flags);
#else
return my_malloc(s, flags);
#endif
}
static inline void *tokudb_my_realloc(void *p, size_t s, myf flags) {
#if 50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799
return my_realloc(0, p, s, flags);
#else
return my_realloc(p, s, flags);
#endif
}
static inline void tokudb_my_free(void *ptr) {
my_free(ptr);
}
static inline char *tokudb_my_strdup(const char *p, myf flags) {
#if 50700 <= MYSQL_VERSION_ID && MYSQL_VERSION_ID <= 50799
return my_strdup(0, p, flags);
#else
return my_strdup(p, flags);
#endif
}
static inline void* tokudb_my_multi_malloc(myf myFlags, ...) {
va_list args;
char **ptr,*start,*res;
size_t tot_length,length;
va_start(args,myFlags);
tot_length=0;
while ((ptr=va_arg(args, char **))) {
length=va_arg(args,uint);
tot_length+=ALIGN_SIZE(length);
}
va_end(args);
if (!(start=(char *) tokudb_my_malloc(tot_length,myFlags))) {
return 0;
}
va_start(args,myFlags);
res=start;
while ((ptr=va_arg(args, char **))) {
*ptr=res;
length=va_arg(args,uint);
res+=ALIGN_SIZE(length);
}
va_end(args);
return start;
}
#endif #endif
...@@ -315,7 +315,7 @@ static int tokudb_init_func(void *p) { ...@@ -315,7 +315,7 @@ static int tokudb_init_func(void *p) {
// tokudb_hton->flags= HTON_CAN_RECREATE; // QQQ this came from skeleton // tokudb_hton->flags= HTON_CAN_RECREATE; // QQQ this came from skeleton
tokudb_hton->flags = HTON_CLOSE_CURSORS_AT_COMMIT; tokudb_hton->flags = HTON_CLOSE_CURSORS_AT_COMMIT;
#if TOKU_INCLUDE_EXTENDED_KEYS #if defined(TOKU_INCLUDE_EXTENDED_KEYS) && TOKU_INCLUDE_EXTENDED_KEYS
#if defined(HTON_SUPPORTS_EXTENDED_KEYS) #if defined(HTON_SUPPORTS_EXTENDED_KEYS)
tokudb_hton->flags |= HTON_SUPPORTS_EXTENDED_KEYS; tokudb_hton->flags |= HTON_SUPPORTS_EXTENDED_KEYS;
#endif #endif
...@@ -324,13 +324,16 @@ static int tokudb_init_func(void *p) { ...@@ -324,13 +324,16 @@ static int tokudb_init_func(void *p) {
#endif #endif
#endif #endif
#if TOKU_INCLUDE_OTHER_DB_TYPE #if defined(TOKU_USE_DB_TYPE_TOKUDB) && TOKU_USE_DB_TYPE_TOKUDB
// we have historically been a dynamic storage engine, so we set db_type according. tokudb_hton->db_type = DB_TYPE_TOKUDB;
// however, extended keys is triggered off of the db_type, so tokudb adds another type so that extended keys works #elif defined(TOKU_USE_DB_TYPE_UNKNOWN) && TOKU_USE_DB_TYPE_UNKNOWN
tokudb_hton->db_type = DB_TYPE_UNKNOWN;
#elif defined(TOKU_USE_OTHER_DB_TYPE) && TOKU_USE_OTHER_DB_TYPE
// extended keys is triggered off of the db_type, so tokudb adds another type so that extended keys works
tokudb_hton->db_type = DB_TYPE_UNKNOWN; tokudb_hton->db_type = DB_TYPE_UNKNOWN;
tokudb_hton->other_db_type = DB_TYPE_TOKUDB; tokudb_hton->other_db_type = DB_TYPE_TOKUDB;
#else #else
tokudb_hton->db_type = DB_TYPE_TOKUDB; #error
#endif #endif
tokudb_hton->create = tokudb_create_handler; tokudb_hton->create = tokudb_create_handler;
...@@ -491,8 +494,8 @@ static int tokudb_init_func(void *p) { ...@@ -491,8 +494,8 @@ static int tokudb_init_func(void *p) {
{ {
const myf mem_flags = MY_FAE|MY_WME|MY_ZEROFILL|MY_ALLOW_ZERO_PTR|MY_FREE_ON_ERROR; const myf mem_flags = MY_FAE|MY_WME|MY_ZEROFILL|MY_ALLOW_ZERO_PTR|MY_FREE_ON_ERROR;
toku_global_status_variables = (SHOW_VAR*)my_malloc(sizeof(*toku_global_status_variables)*toku_global_status_max_rows, mem_flags); toku_global_status_variables = (SHOW_VAR*)tokudb_my_malloc(sizeof(*toku_global_status_variables)*toku_global_status_max_rows, mem_flags);
toku_global_status_rows = (TOKU_ENGINE_STATUS_ROW_S*)my_malloc(sizeof(*toku_global_status_rows)*toku_global_status_max_rows, mem_flags); toku_global_status_rows = (TOKU_ENGINE_STATUS_ROW_S*)tokudb_my_malloc(sizeof(*toku_global_status_rows)*toku_global_status_max_rows, mem_flags);
} }
r = db_create(&metadata_db, db_env, 0); r = db_create(&metadata_db, db_env, 0);
...@@ -550,9 +553,9 @@ error: ...@@ -550,9 +553,9 @@ error:
static int tokudb_done_func(void *p) { static int tokudb_done_func(void *p) {
TOKUDB_DBUG_ENTER("tokudb_done_func"); TOKUDB_DBUG_ENTER("tokudb_done_func");
my_free(toku_global_status_variables); tokudb_my_free(toku_global_status_variables);
toku_global_status_variables = NULL; toku_global_status_variables = NULL;
my_free(toku_global_status_rows); tokudb_my_free(toku_global_status_rows);
toku_global_status_rows = NULL; toku_global_status_rows = NULL;
my_hash_free(&tokudb_open_tables); my_hash_free(&tokudb_open_tables);
pthread_mutex_destroy(&tokudb_mutex); pthread_mutex_destroy(&tokudb_mutex);
...@@ -604,7 +607,7 @@ static int tokudb_close_connection(handlerton * hton, THD * thd) { ...@@ -604,7 +607,7 @@ static int tokudb_close_connection(handlerton * hton, THD * thd) {
if (trx && trx->checkpoint_lock_taken) { if (trx && trx->checkpoint_lock_taken) {
error = db_env->checkpointing_resume(db_env); error = db_env->checkpointing_resume(db_env);
} }
my_free(trx); tokudb_my_free(trx);
return error; return error;
} }
...@@ -1595,10 +1598,10 @@ static int tokudb_report_fractal_tree_block_map_iterator(uint64_t checkpoint_cou ...@@ -1595,10 +1598,10 @@ static int tokudb_report_fractal_tree_block_map_iterator(uint64_t checkpoint_cou
assert(num_rows > 0); assert(num_rows > 0);
if (e->num_rows == 0) { if (e->num_rows == 0) {
e->checkpoint_counts = (uint64_t *) my_malloc(num_rows * (sizeof *e->checkpoint_counts), MYF(MY_WME|MY_ZEROFILL|MY_FAE)); e->checkpoint_counts = (uint64_t *) tokudb_my_malloc(num_rows * (sizeof *e->checkpoint_counts), MYF(MY_WME|MY_ZEROFILL|MY_FAE));
e->blocknums = (int64_t *) my_malloc(num_rows * (sizeof *e->blocknums), MYF(MY_WME|MY_ZEROFILL|MY_FAE)); e->blocknums = (int64_t *) tokudb_my_malloc(num_rows * (sizeof *e->blocknums), MYF(MY_WME|MY_ZEROFILL|MY_FAE));
e->diskoffs = (int64_t *) my_malloc(num_rows * (sizeof *e->diskoffs), MYF(MY_WME|MY_ZEROFILL|MY_FAE)); e->diskoffs = (int64_t *) tokudb_my_malloc(num_rows * (sizeof *e->diskoffs), MYF(MY_WME|MY_ZEROFILL|MY_FAE));
e->sizes = (int64_t *) my_malloc(num_rows * (sizeof *e->sizes), MYF(MY_WME|MY_ZEROFILL|MY_FAE)); e->sizes = (int64_t *) tokudb_my_malloc(num_rows * (sizeof *e->sizes), MYF(MY_WME|MY_ZEROFILL|MY_FAE));
e->num_rows = num_rows; e->num_rows = num_rows;
} }
...@@ -1678,19 +1681,19 @@ static int tokudb_report_fractal_tree_block_map_for_db(const DBT *dname, const D ...@@ -1678,19 +1681,19 @@ static int tokudb_report_fractal_tree_block_map_for_db(const DBT *dname, const D
exit: exit:
if (e.checkpoint_counts != NULL) { if (e.checkpoint_counts != NULL) {
my_free(e.checkpoint_counts); tokudb_my_free(e.checkpoint_counts);
e.checkpoint_counts = NULL; e.checkpoint_counts = NULL;
} }
if (e.blocknums != NULL) { if (e.blocknums != NULL) {
my_free(e.blocknums); tokudb_my_free(e.blocknums);
e.blocknums = NULL; e.blocknums = NULL;
} }
if (e.diskoffs != NULL) { if (e.diskoffs != NULL) {
my_free(e.diskoffs); tokudb_my_free(e.diskoffs);
e.diskoffs = NULL; e.diskoffs = NULL;
} }
if (e.sizes != NULL) { if (e.sizes != NULL) {
my_free(e.sizes); tokudb_my_free(e.sizes);
e.sizes = NULL; e.sizes = NULL;
} }
return error; return error;
...@@ -1848,9 +1851,9 @@ static void tokudb_lock_timeout_callback(DB *db, uint64_t requesting_txnid, cons ...@@ -1848,9 +1851,9 @@ static void tokudb_lock_timeout_callback(DB *db, uint64_t requesting_txnid, cons
// set last_lock_timeout // set last_lock_timeout
if (lock_timeout_debug & 1) { if (lock_timeout_debug & 1) {
char *old_lock_timeout = THDVAR(thd, last_lock_timeout); char *old_lock_timeout = THDVAR(thd, last_lock_timeout);
char *new_lock_timeout = my_strdup(log_str.c_ptr(), MY_FAE); char *new_lock_timeout = tokudb_my_strdup(log_str.c_ptr(), MY_FAE);
THDVAR(thd, last_lock_timeout) = new_lock_timeout; THDVAR(thd, last_lock_timeout) = new_lock_timeout;
my_free(old_lock_timeout); tokudb_my_free(old_lock_timeout);
} }
// dump to stderr // dump to stderr
if (lock_timeout_debug & 2) { if (lock_timeout_debug & 2) {
......
...@@ -485,7 +485,7 @@ static int tokudb_hcad_update_fun( ...@@ -485,7 +485,7 @@ static int tokudb_hcad_update_fun(
extra_pos += sizeof(uint32_t); extra_pos += sizeof(uint32_t);
max_num_bytes = old_val->size + extra->size + new_len_of_offsets + new_fixed_field_size; max_num_bytes = old_val->size + extra->size + new_len_of_offsets + new_fixed_field_size;
new_val_data = (uchar *)my_malloc( new_val_data = (uchar *)tokudb_my_malloc(
max_num_bytes, max_num_bytes,
MYF(MY_FAE) MYF(MY_FAE)
); );
...@@ -815,7 +815,7 @@ static int tokudb_hcad_update_fun( ...@@ -815,7 +815,7 @@ static int tokudb_hcad_update_fun(
error = 0; error = 0;
cleanup: cleanup:
my_free(new_val_data); tokudb_my_free(new_val_data);
return error; return error;
} }
...@@ -856,7 +856,7 @@ static int tokudb_expand_variable_offsets( ...@@ -856,7 +856,7 @@ static int tokudb_expand_variable_offsets(
uchar *old_val_ptr = (uchar *)old_val->data; uchar *old_val_ptr = (uchar *)old_val->data;
// allocate space for the new val's data // allocate space for the new val's data
uchar *new_val_ptr = (uchar *)my_malloc(number_of_offsets + old_val->size, MYF(MY_FAE)); uchar *new_val_ptr = (uchar *)tokudb_my_malloc(number_of_offsets + old_val->size, MYF(MY_FAE));
if (!new_val_ptr) { if (!new_val_ptr) {
error = ENOMEM; error = ENOMEM;
goto cleanup; goto cleanup;
...@@ -893,7 +893,7 @@ static int tokudb_expand_variable_offsets( ...@@ -893,7 +893,7 @@ static int tokudb_expand_variable_offsets(
error = 0; error = 0;
cleanup: cleanup:
my_free(new_val.data); tokudb_my_free(new_val.data);
return error; return error;
} }
...@@ -932,7 +932,7 @@ static int tokudb_expand_int_field( ...@@ -932,7 +932,7 @@ static int tokudb_expand_int_field(
uchar *old_val_ptr = (uchar *)old_val->data; uchar *old_val_ptr = (uchar *)old_val->data;
// allocate space for the new val's data // allocate space for the new val's data
uchar *new_val_ptr = (uchar *)my_malloc(old_val->size + (new_length - old_length), MYF(MY_FAE)); uchar *new_val_ptr = (uchar *)tokudb_my_malloc(old_val->size + (new_length - old_length), MYF(MY_FAE));
if (!new_val_ptr) { if (!new_val_ptr) {
error = ENOMEM; error = ENOMEM;
goto cleanup; goto cleanup;
...@@ -980,7 +980,7 @@ static int tokudb_expand_int_field( ...@@ -980,7 +980,7 @@ static int tokudb_expand_int_field(
error = 0; error = 0;
cleanup: cleanup:
my_free(new_val.data); tokudb_my_free(new_val.data);
return error; return error;
} }
...@@ -1021,7 +1021,7 @@ static int tokudb_expand_char_field( ...@@ -1021,7 +1021,7 @@ static int tokudb_expand_char_field(
uchar *old_val_ptr = (uchar *)old_val->data; uchar *old_val_ptr = (uchar *)old_val->data;
// allocate space for the new val's data // allocate space for the new val's data
uchar *new_val_ptr = (uchar *)my_malloc(old_val->size + (new_length - old_length), MYF(MY_FAE)); uchar *new_val_ptr = (uchar *)tokudb_my_malloc(old_val->size + (new_length - old_length), MYF(MY_FAE));
if (!new_val_ptr) { if (!new_val_ptr) {
error = ENOMEM; error = ENOMEM;
goto cleanup; goto cleanup;
...@@ -1062,7 +1062,7 @@ static int tokudb_expand_char_field( ...@@ -1062,7 +1062,7 @@ static int tokudb_expand_char_field(
error = 0; error = 0;
cleanup: cleanup:
my_free(new_val.data); tokudb_my_free(new_val.data);
return error; return error;
} }
......
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