When creating an index containing a too long record, InnoDB would
dereference a NULL pointer when trying to determine the maximum row length.
innodb_check_for_record_too_big_error(): Replace the dict_table_t*
parameter with a Boolean flag. There is not always a dict_table_t object
when this function is called.
page_get_free_space_of_empty_noninline(): Move the definition and
declaration from row0mysql (!) to page0page. Make the signature
identical with page_get_free_space_of_empty().
create_clustered_index_when_no_primary(): Add the parameter "comp".
Remove unnecessary casts.
dtype_t: Remove unused field "prec", which was supposed to be used for
the precision of decimal columns in stand-alone InnoDB.
dtype_get_prec(): Remove.
dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
into bit-fields.
dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
Replace the default clust_pos value ULINT_UNDEFINED with
REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
the accessor function dict_col_get_clust_pos().
dict_field_t: Turn prefix_len and fixed_len into bit-fields.
dict_tree_t: Remove pad[64].
dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
cached, flags, stat_initialized, and autoinc_inited into bit-fields.
Remove does_not_fit_in_memory from non-debug builds.
dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
dict_foreign_struct: Turn n_fields and type into bit-fields.
rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
Omit level unless #defined UNIV_SYNC_DEBUG.
Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
and lexer files). From now on, the following Emacs cc-mode settings apply
when indenting C function bodies in InnoDB:
(setq c-basic-offset 8)
(setq c-label-minimum-indentation 0)
(add-to-list 'c-offsets-alist '(c . 0))
(add-to-list 'c-offsets-alist '(label . [0]))
The indentation rules for function declarations still have not been
formalized, and they must be formatted manually.
Try to limit all lines to at most 79 characters (assuming TAB stops every
8 characters) by splitting lines before opening parenthesis, or at
string constants.
Fix some grammar mistakes in diagnostic output:
match to, match with -> match
found from -> found in
trying rename -> trying to rename
Fix an error in page_check_dir(): it said "supremum not pointed to"
when the infimum was not pointed to.
Enclose commented-out code snippets in #if 0 ... #endif instead of /* ... */.
Add (void*) casts to some %p parameters in fprintf() calls. Try to
split lines before a binary operator, not after one. (These three fixes
were not made everywhere.)
which can contain the new flag DICT_TF_COMPACT. Change dict_mem_table_create
to take a flags argument. Add dict_table_is_comp(). Adapt all users.
Change some places to explicitly assume that system tables do not use the
compact page format.