1
1
/*****************************************************************************
3
Copyright (c) 1996, 2010, Innobase Oy. All Rights Reserved.
3
Copyright (c) 1996, 2009, 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
40
40
#define DICT_HEAP_SIZE 100 /*!< initial memory heap size when
41
41
creating a table or index object */
44
/* Key to register autoinc_mutex with performance schema */
45
UNIV_INTERN mysql_pfs_key_t autoinc_mutex_key;
46
#endif /* UNIV_PFS_MUTEX */
48
43
/**********************************************************************//**
49
44
Creates a table memory object.
50
45
@return own: table object */
73
68
table->heap = heap;
75
70
table->flags = (unsigned int) flags;
76
table->name = ut_malloc(strlen(name) + 1);
77
memcpy(table->name, name, strlen(name) + 1);
71
table->name = mem_heap_strdup(heap, name);
78
72
table->space = (unsigned int) space;
79
73
table->n_cols = (unsigned int) (n_cols + DATA_N_SYS_COLS);
84
78
#ifndef UNIV_HOTBACKUP
85
79
table->autoinc_lock = mem_heap_alloc(heap, lock_get_size());
87
mutex_create(autoinc_mutex_key,
88
&table->autoinc_mutex, SYNC_DICT_AUTOINC_MUTEX);
81
mutex_create(&table->autoinc_mutex, SYNC_DICT_AUTOINC_MUTEX);
90
83
table->autoinc = 0;
204
200
col = dict_table_get_nth_col(table, i);
206
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);
202
col->ind = (unsigned int) i;
205
col->mtype = (unsigned int) mtype;
206
col->prtype = (unsigned int) prtype;
207
col->len = (unsigned int) len;
209
#ifndef UNIV_HOTBACKUP
210
dtype_get_mblen(mtype, prtype, &mbminlen, &mbmaxlen);
212
col->mbminlen = (unsigned int) mbminlen;
213
col->mbmaxlen = (unsigned int) mbmaxlen;
237
214
#endif /* !UNIV_HOTBACKUP */
261
238
heap = mem_heap_create(DICT_HEAP_SIZE);
262
239
index = mem_heap_zalloc(heap, sizeof(dict_index_t));
264
dict_mem_fill_index_struct(index, heap, table_name, index_name,
265
space, type, n_fields);
244
#ifndef UNIV_HOTBACKUP
245
index->space = (unsigned int) space;
246
#endif /* !UNIV_HOTBACKUP */
247
index->name = mem_heap_strdup(heap, index_name);
248
index->table_name = table_name;
249
index->n_fields = (unsigned int) n_fields;
250
index->fields = mem_heap_alloc(heap, 1 + n_fields
251
* sizeof(dict_field_t));
252
/* The '1 +' above prevents allocation
253
of an empty mem block */
255
index->magic_n = DICT_INDEX_MAGIC_N;
256
#endif /* UNIV_DEBUG */