/***************************************************************************** Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *****************************************************************************/ /******************************************************************//** @file include/dict0mem.ic 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 */ }