1
1
/*****************************************************************************
3
Copyright (C) 1996, 2010, Innobase Oy. All Rights Reserved.
3
Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
5
5
This program is free software; you can redistribute it and/or modify it under
6
6
the terms of the GNU General Public License as published by the Free Software
67
ut_a(!(flags & (SIZE_MAX << DICT_TF2_BITS)));
67
ut_a(!(flags & (~0 << DICT_TF2_BITS)));
69
69
heap = mem_heap_create(DICT_HEAP_SIZE);
71
table = static_cast<dict_table_struct *>(mem_heap_zalloc(heap, sizeof(dict_table_t)));
71
table = mem_heap_zalloc(heap, sizeof(dict_table_t));
73
73
table->heap = heap;
75
75
table->flags = (unsigned int) flags;
76
table->name = static_cast<char *>(ut_malloc(strlen(name) + 1));
77
memcpy(table->name, name, strlen(name) + 1);
76
table->name = mem_heap_strdup(heap, name);
78
77
table->space = (unsigned int) space;
79
78
table->n_cols = (unsigned int) (n_cols + DATA_N_SYS_COLS);
81
table->cols = static_cast<dict_col_t *>(mem_heap_alloc(heap, (n_cols + DATA_N_SYS_COLS)
82
* sizeof(dict_col_t)));
80
table->cols = mem_heap_alloc(heap, (n_cols + DATA_N_SYS_COLS)
81
* sizeof(dict_col_t));
84
83
#ifndef UNIV_HOTBACKUP
85
table->autoinc_lock = static_cast<lock_t *>(mem_heap_alloc(heap, lock_get_size()));
84
table->autoinc_lock = mem_heap_alloc(heap, lock_get_size());
87
86
mutex_create(autoinc_mutex_key,
88
87
&table->autoinc_mutex, SYNC_DICT_AUTOINC_MUTEX);
154
152
new_len = strlen(name) + 1;
155
153
total_len = old_len + new_len;
157
res = static_cast<char *>(mem_heap_alloc(heap, total_len));
155
res = mem_heap_alloc(heap, total_len);
159
157
if (old_len > 0) {
160
158
memcpy(res, col_names, old_len);
194
192
if (UNIV_LIKELY(i) && UNIV_UNLIKELY(!table->col_names)) {
195
193
/* All preceding column names are empty. */
196
char* s = static_cast<char *>(mem_heap_zalloc(heap, table->n_def));
194
char* s = mem_heap_zalloc(heap, table->n_def);
197
195
table->col_names = s;
206
204
dict_mem_fill_column_struct(col, i, mtype, prtype, len);
210
/**********************************************************************//**
211
This function populates a dict_col_t memory structure with
212
supplied information. */
215
dict_mem_fill_column_struct(
216
/*========================*/
217
dict_col_t* column, /*!< out: column struct to be
219
ulint col_pos, /*!< in: column position */
220
ulint mtype, /*!< in: main data type */
221
ulint prtype, /*!< in: precise type */
222
ulint col_len) /*!< in: column length */
224
#ifndef UNIV_HOTBACKUP
227
#endif /* !UNIV_HOTBACKUP */
229
column->ind = (unsigned int) col_pos;
230
column->ord_part = 0;
231
column->mtype = (unsigned int) mtype;
232
column->prtype = (unsigned int) prtype;
233
column->len = (unsigned int) col_len;
234
#ifndef UNIV_HOTBACKUP
235
dtype_get_mblen(mtype, prtype, &mbminlen, &mbmaxlen);
236
dict_col_set_mbminmaxlen(column, mbminlen, mbmaxlen);
237
#endif /* !UNIV_HOTBACKUP */
240
207
/**********************************************************************//**
241
208
Creates an index memory object.
242
209
@return own: index object */
259
226
ut_ad(table_name && index_name);
261
228
heap = mem_heap_create(DICT_HEAP_SIZE);
262
index = static_cast<dict_index_t *>(mem_heap_zalloc(heap, sizeof(dict_index_t)));
229
index = mem_heap_zalloc(heap, sizeof(dict_index_t));
264
231
dict_mem_fill_index_struct(index, heap, table_name, index_name,
265
232
space, type, n_fields);