diff options
Diffstat (limited to 'storage/xtradb/include/dict0mem.ic')
-rw-r--r-- | storage/xtradb/include/dict0mem.ic | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/storage/xtradb/include/dict0mem.ic b/storage/xtradb/include/dict0mem.ic index c36adb07a18..1d80ffc9b94 100644 --- a/storage/xtradb/include/dict0mem.ic +++ b/storage/xtradb/include/dict0mem.ic @@ -23,4 +23,50 @@ Data dictionary memory object creation Created 1/8/1996 Heikki Tuuri ***********************************************************************/ +#include "data0type.h" +#include "dict0mem.h" +#include "fil0fil.h" +/**********************************************************************//** +This function poplulates a dict_index_t index memory structure with +supplied information. */ +UNIV_INLINE +void +dict_mem_fill_index_struct( +/*=======================*/ + dict_index_t* index, /*!< out: index to be filled */ + mem_heap_t* heap, /*!< in: memory heap */ + const char* table_name, /*!< in: table name */ + const char* index_name, /*!< in: index name */ + ulint space, /*!< in: space where the index tree is + placed, ignored if the index is of + the clustered type */ + ulint type, /*!< in: DICT_UNIQUE, + DICT_CLUSTERED, ... ORed */ + ulint n_fields) /*!< in: number of fields */ +{ + + if (heap) { + index->heap = heap; + index->name = mem_heap_strdup(heap, index_name); + index->fields = (dict_field_t*) mem_heap_alloc( + heap, 1 + n_fields * sizeof(dict_field_t)); + } else { + index->name = index_name; + index->heap = NULL; + index->fields = NULL; + } + + index->type = type; +#ifndef UNIV_HOTBACKUP + index->space = (unsigned int) space; + index->page = FIL_NULL; +#endif /* !UNIV_HOTBACKUP */ + index->table_name = table_name; + index->n_fields = (unsigned int) n_fields; + /* The '1 +' above prevents allocation + of an empty mem block */ +#ifdef UNIV_DEBUG + index->magic_n = DICT_INDEX_MAGIC_N; +#endif /* UNIV_DEBUG */ +} |