diff options
Diffstat (limited to 'storage/innobase/include/dict0dict.h')
-rw-r--r-- | storage/innobase/include/dict0dict.h | 185 |
1 files changed, 47 insertions, 138 deletions
diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h index 4acdae31ee8..fad232e0cfc 100644 --- a/storage/innobase/include/dict0dict.h +++ b/storage/innobase/include/dict0dict.h @@ -178,7 +178,7 @@ dict_col_copy_type( /**********************************************************************//** Determine bytes of column prefix to be stored in the undo log. Please -note if the table format is UNIV_FORMAT_A (< UNIV_FORMAT_B), no prefix +note that if !dict_table_has_atomic_blobs(table), no prefix needs to be stored in the undo log. @return bytes of column prefix to be stored in the undo log */ UNIV_INLINE @@ -361,15 +361,6 @@ dict_table_add_system_columns( mem_heap_t* heap) /*!< in: temporary heap */ MY_ATTRIBUTE((nonnull)); /**********************************************************************//** -Adds a table object to the dictionary cache. */ -void -dict_table_add_to_cache( -/*====================*/ - dict_table_t* table, /*!< in: table */ - bool can_be_evicted, /*!< in: whether can be evicted*/ - mem_heap_t* heap) /*!< in: temporary heap */ - MY_ATTRIBUTE((nonnull)); -/**********************************************************************//** Removes a table object from the dictionary cache. */ void dict_table_remove_from_cache( @@ -567,16 +558,6 @@ dict_foreign_find_index( happened */ MY_ATTRIBUTE((nonnull(1,3), warn_unused_result)); -/**********************************************************************//** -Returns a column's name. -@return column name. NOTE: not guaranteed to stay valid if table is -modified in any way (columns added, etc.). */ -const char* -dict_table_get_col_name( -/*====================*/ - const dict_table_t* table, /*!< in: table */ - ulint col_nr) /*!< in: column number */ - MY_ATTRIBUTE((nonnull, warn_unused_result)); /** Returns a virtual column's name. @param[in] table table object @@ -885,6 +866,18 @@ dict_table_get_sys_col( /* Get nth virtual columns */ #define dict_table_get_nth_v_col(table, pos) (&(table)->v_cols[pos]) #endif /* UNIV_DEBUG */ +/** Wrapper function. +@see dict_col_t::name() +@param[in] table table +@param[in] col_nr column number in table +@return column name */ +inline +const char* +dict_table_get_col_name(const dict_table_t* table, ulint col_nr) +{ + return(dict_table_get_nth_col(table, col_nr)->name(*table)); +} + /********************************************************************//** Gets the given system column number of a table. @return column number */ @@ -909,30 +902,21 @@ dict_index_get_min_size( Check whether the table uses the compact page format. @return TRUE if table uses the compact page format */ UNIV_INLINE -ibool +bool dict_table_is_comp( /*===============*/ const dict_table_t* table) /*!< in: table */ MY_ATTRIBUTE((nonnull, warn_unused_result)); -/********************************************************************//** -Determine the file format of a table. -@return file format version */ -UNIV_INLINE -ulint -dict_table_get_format( -/*==================*/ - const dict_table_t* table) /*!< in: table */ - MY_ATTRIBUTE((nonnull, warn_unused_result)); -/********************************************************************//** -Determine the file format from a dict_table_t::flags. -@return file format version */ -UNIV_INLINE -ulint -dict_tf_get_format( -/*===============*/ - ulint flags) /*!< in: dict_table_t::flags */ - MY_ATTRIBUTE((warn_unused_result)); +/** Determine if a table uses atomic BLOBs (no locally stored prefix). +@param[in] table InnoDB table +@return whether BLOBs are atomic */ +inline +bool +dict_table_has_atomic_blobs(const dict_table_t* table) +{ + return(DICT_TF_HAS_ATOMIC_BLOBS(table->flags)); +} /** Set the various values in a dict_table_t::flags pointer. @param[in,out] flags, Pointer to a 4 byte Table Flags @@ -940,8 +924,7 @@ dict_tf_get_format( @param[in] zip_ssize Zip Shift Size @param[in] use_data_dir Table uses DATA DIRECTORY @param[in] page_compressed Table uses page compression -@param[in] page_compression_level Page compression level -@param[in] not_used For future */ +@param[in] page_compression_level Page compression level */ UNIV_INLINE void dict_tf_set( @@ -950,8 +933,7 @@ dict_tf_set( ulint zip_ssize, bool use_data_dir, bool page_compressed, - ulint page_compression_level, - ulint not_used); + ulint page_compression_level); /** Convert a 32 bit integer table flags to the 32 bit FSP Flags. Fsp Flags are written into the tablespace header at the offset @@ -987,14 +969,8 @@ ulint dict_table_extent_size( const dict_table_t* table); -/** Get the table page size. -@param[in] table table -@return compressed page size, or 0 if not compressed */ -UNIV_INLINE -const page_size_t -dict_table_page_size( - const dict_table_t* table) - MY_ATTRIBUTE((warn_unused_result)); +/** Get the table page size. */ +#define dict_table_page_size(table) page_size_t(table->space->flags) /*********************************************************************//** Obtain exclusive locks on all index trees of the table. This is to prevent @@ -1086,51 +1062,32 @@ dict_make_room_in_cache( ulint max_tables, /*!< in: max tables allowed in cache */ ulint pct_check); /*!< in: max percent to check */ -#define BIG_ROW_SIZE 1024 - -/** Adds an index to the dictionary cache. -@param[in] table table on which the index is -@param[in] index index; NOTE! The index memory - object is freed in this function! -@param[in] page_no root page number of the index -@param[in] strict TRUE=refuse to create the index - if records could be too big to fit in - an B-tree page -@return DB_SUCCESS, DB_TOO_BIG_RECORD, or DB_CORRUPTION */ -dberr_t -dict_index_add_to_cache( - dict_table_t* table, - dict_index_t* index, - ulint page_no, - ibool strict) - MY_ATTRIBUTE((warn_unused_result)); - /** Clears the virtual column's index list before index is being freed. @param[in] index Index being freed */ -void -dict_index_remove_from_v_col_list( - dict_index_t* index); +void dict_index_remove_from_v_col_list(dict_index_t* index); /** Adds an index to the dictionary cache, with possible indexing newly added column. -@param[in] table table on which the index is @param[in] index index; NOTE! The index memory object is freed in this function! -@param[in] add_v new virtual column that being added along with - an add index call @param[in] page_no root page number of the index -@param[in] strict TRUE=refuse to create the index +@param[in] strict true=refuse to create the index if records could be too big to fit in an B-tree page -@return DB_SUCCESS, DB_TOO_BIG_RECORD, or DB_CORRUPTION */ -dberr_t -dict_index_add_to_cache_w_vcol( - dict_table_t* table, +@param[out] err DB_SUCCESS, DB_TOO_BIG_RECORD, or DB_CORRUPTION +@param[in] add_v new virtual column that being added along with + an add index call +@return the added index +@retval NULL on error */ +dict_index_t* +dict_index_add_to_cache( dict_index_t* index, - const dict_add_v_col_t* add_v, ulint page_no, - ibool strict) - MY_ATTRIBUTE((warn_unused_result)); + bool strict = false, + dberr_t* err = NULL, + const dict_add_v_col_t* add_v = NULL) + MY_ATTRIBUTE((nonnull(1))); + /********************************************************************//** Gets the number of fields in the internal representation of an index, including fields added by the dictionary system. @@ -1143,6 +1100,7 @@ dict_index_get_n_fields( representation of index (in the dictionary cache) */ MY_ATTRIBUTE((nonnull, warn_unused_result)); + /********************************************************************//** Gets the number of fields in the internal representation of an index that uniquely determine the position of an index entry in the index, if @@ -1269,7 +1227,7 @@ Returns TRUE if the index contains a column or a prefix of that column. @param[in] n column number @param[in] is_virtual whether it is a virtual col @return TRUE if contains the column or its prefix */ -ibool +bool dict_index_contains_col_or_prefix( /*==============================*/ const dict_index_t* index, /*!< in: index */ @@ -1431,42 +1389,15 @@ dict_index_copy_rec_order_prefix( @param[in,out] heap memory heap for allocation @return own: data tuple */ dtuple_t* -dict_index_build_data_tuple_func( +dict_index_build_data_tuple( const rec_t* rec, const dict_index_t* index, -#ifdef UNIV_DEBUG bool leaf, -#endif /* UNIV_DEBUG */ ulint n_fields, mem_heap_t* heap) MY_ATTRIBUTE((nonnull, warn_unused_result)); -#ifdef UNIV_DEBUG -# define dict_index_build_data_tuple(rec, index, leaf, n_fields, heap) \ - dict_index_build_data_tuple_func(rec, index, leaf, n_fields, heap) -#else /* UNIV_DEBUG */ -# define dict_index_build_data_tuple(rec, index, leaf, n_fields, heap) \ - dict_index_build_data_tuple_func(rec, index, n_fields, heap) -#endif /* UNIV_DEBUG */ /*********************************************************************//** -Gets the space id of the root of the index tree. -@return space id */ -UNIV_INLINE -ulint -dict_index_get_space( -/*=================*/ - const dict_index_t* index) /*!< in: index */ - MY_ATTRIBUTE((nonnull, warn_unused_result)); -/*********************************************************************//** -Sets the space id of the root of the index tree. */ -UNIV_INLINE -void -dict_index_set_space( -/*=================*/ - dict_index_t* index, /*!< in/out: index */ - ulint space) /*!< in: space id */ - MY_ATTRIBUTE((nonnull)); -/*********************************************************************//** Gets the page number of the root of the index tree. @return page number */ UNIV_INLINE @@ -1838,18 +1769,10 @@ dict_set_corrupted_index_cache_only( Flags a table with specified space_id corrupted in the table dictionary cache. @return TRUE if successful */ -ibool -dict_set_corrupted_by_space( -/*========================*/ - ulint space_id); /*!< in: space ID */ +bool dict_set_corrupted_by_space(const fil_space_t* space); -/** Flag a table with specified space_id encrypted in the data dictionary -cache -@param[in] space_id Tablespace id */ -UNIV_INTERN -void -dict_set_encrypted_by_space( - ulint space_id); +/** Flag a table encrypted in the data dictionary cache. */ +void dict_set_encrypted_by_space(const fil_space_t* space); /** Sets merge_threshold in the SYS_INDEXES @param[in,out] index index @@ -1886,18 +1809,6 @@ dict_tf2_is_valid( ulint flags, ulint flags2); -/********************************************************************//** -Check if the tablespace for the table has been discarded. -@return true if the tablespace has been discarded. */ -UNIV_INLINE -bool -dict_table_is_discarded( -/*====================*/ - const dict_table_t* table) /*!< in: table to check */ - MY_ATTRIBUTE((warn_unused_result)); - -#define dict_table_is_temporary(table) (table)->is_temporary() - /*********************************************************************//** This function should be called whenever a page is successfully compressed. Updates the compression padding information. */ @@ -1931,8 +1842,6 @@ dict_tf_to_row_format_string( /*=========================*/ ulint table_flag); /*!< in: row format setting */ -#define dict_col_is_virtual(col) (col)->is_virtual() - /** encode number of columns and number of virtual columns in one 4 bytes value. We could do this because the number of columns in InnoDB is limited to 1017 |