Commit graph

26 commits

Author SHA1 Message Date
osku
c345922067 Revamp the line splits done in r763 and r764 that can now be done better,
thanks to r826.
2006-09-19 07:22:21 +00:00
marko
f39237e200 dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
so that all integer fields can be packed into 64 bits.  (Bug #20877)

dtype_t: Change the type of all bit-fields to unsigned.

dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
dict_table_get_sys_col(), dict_field_get_col(): Return const
dict_col_t*, so that changes to dict_col_t can be detected more
easily.  Add const to many dict_col_t* declarations.

dict_index_get_nth_type(): Replace with dict_index_get_nth_col().

dict_col_get_type(): Replace with dict_col_copy_type().

dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
dict_col_get_sql_null_size(): New functions.

dtype_get_at_most_n_mbchars(): Replace the parameter dtype
with the parameters prtype, mbminlen, mbmaxlen.

dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
cmp_whole_field(): Replace the dtype_t* parameter with the ulint
parameters mtype, prtype.

dtype_copy(): Add a const qualifier to type2 (the one being copied from).

dtype_set_mblen(): Replaced with dtype_get_mblen().

dtype_get_fixed_size_low(), dtype_get_min_size_low(),
dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
dtype_get_min_size(), and dtype_get_max_size().  These are used by the
dict_col_get_{fixed,min,max}_size() functions.

cmp_types_are_equal(): Replace with cmp_cols_are_equal().

dict_table_get_col_name(): Add a const qualifier parameter to the
parameter "table".

dtype_binary, dtype_binary_val: Remove.

dtype_is_fixed_size(): Remove.
2006-09-18 11:51:38 +00:00
osku
53f8a9ff47 Add dict_table_get_col_name() in preparation for getting rid of
dict_col_t::name, and use it instead of col->name everywhere.
2006-09-18 09:46:05 +00:00
marko
7696b8dd87 Remove dict_tree_t, which should have been removed in r453.
There always was a one-to-one mapping between dict_tree_t and dict_index_t.

This saves 6 machine words per B-tree index in the data dictionary
cache plus the memory allocation overhead.  We save one mem_heap_t
object per index (15 machine words).  Considering the internal
fragmentation of the buddy allocator in mem_area_alloc(), this should
save 32 machine words per index (128 bytes on 32-bit systems and 256
bytes on 64-bit systems).  (Bug #20877)

struct dict_tree_struct, dict_tree_t: Remove.

struct dict_index_struct: Add page and lock.

dict_tree_create(): Remove.  Replace the invocation with
assignment to index->page and a call to rw_lock_create(&index->lock).

dict_tree_free(): Remove.  Replace the invocation wtih
a call to rw_lock_free(&index->lock).

dict_index_get_tree(): Remove.

dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
and remove the parameter, which was unused.

btr_level_list_remove(): Remove the unused parameter "tree".

Replace the occurrences of "tree" with "index" in names of variables,
functions and data types, e.g. "dict_tree_t tree" becomes
"dict_index_t index".  Remove local variables "tree" or "index" of
functions that needed both "tree" and "index".
2006-09-15 11:04:01 +00:00
marko
0245fe4a31 Reduce the size of the data dictionary cache. (Bug #20877)
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.
2006-09-12 14:06:46 +00:00
marko
63b8ede669 ibuf_entry_build(): Write prefix_len to the insert buffer instead of type->len
when prefix_len is specified.  Otherwise, btr_page_reorganize() during
insert buffer merge would fail on ROW_FORMAT=COMPACT tables.  (Bug #21638)
2006-09-05 11:43:42 +00:00
marko
cb19ec225e Split lines before binary operators, not after them. 2006-08-29 08:27:56 +00:00
marko
bf2ed0613e Split lines before an opening parenthesis, not after one.
Replace some printf(...) in debug builds with fprintf(stderr, ...).
2006-08-29 07:33:51 +00:00
marko
e8435b3e45 Reindent the code base (except for ha_innodb.{cc,h} and generated parser
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.)
2006-08-28 17:42:45 +00:00
osku
34453e088c Remove all traces of the obsolete concept of replicate spaces. 2006-08-16 08:01:37 +00:00
marko
b5b3cb3184 Remove non-varying variable ibuf->meter and related constant IBUF_THRESHOLD. 2006-08-02 08:01:41 +00:00
osku
fdef1fe939 ibuf_print(): Don't print redundant information. Fixes bug #21113. 2006-07-21 05:14:14 +00:00
marko
b47a268f2d Merge r614 from branches/5.0: Merge r32 from innodb-4.1:
ibuf_fixed_addr_page(): Add parameter space.  As the insert buffer B-tree
is only located in the system tablespace (space 0), IBUF_TREE_ROOT_PAGE_NO
is only special in space 0.
2006-06-05 11:38:05 +00:00
marko
2d04dfb153 Define UNIV_BTR_DEBUG for enabling consistency checks of
FIL_PAGE_NEXT and FIL_PAGE_PREV when accessing sibling pages
of B-tree indexes.

btr_validate_level(): Check the validity of the doubly linked list
formed by FIL_PAGE_NEXT and FIL_PAGE_PREV.
2006-05-11 16:59:18 +00:00
marko
1fd289fd6d ibuf_count_get(), ibuf_counts[], ibuf_counts_inited: Define these only
#ifdef UNIV_IBUF_DEBUG.  Previously, when compiled without UNIV_IBUF_DEBUG,
invoking ibuf_count_get() would crash InnoDB.  The function is only being
called #ifdef UNIV_IBUF_DEBUG.
2006-05-05 11:39:44 +00:00
osku
3762ef7d66 Add 'level' parameter to mutex_create(), remove mutex_set_level().
Rename SYNC_LEVEL_NONE to SYNC_LEVEL_VARYING, add comment clarifying what it
is used for.
2006-04-28 05:43:08 +00:00
osku
6e6c0a4257 Fix bug #18934, "InnoDB crashes when table uses column names like
DB_ROW_ID", by refusing tables that use reserved column names.

Add dict_mem_table_free(), use it instead of duplicating the code everywhere.

Use already existing dict_mem_index_free().

Fix memory leaks in row_create_table_for_mysql() in rare corner cases.
2006-04-11 14:01:17 +00:00
osku
78971825b2 Remove "ibool comp" from dict_table_t and replace it with "ulint flags"
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.
2006-02-27 09:11:57 +00:00
osku
f6796c0129 Remove tabs from within printed strings and two instances of trailing
whitespace.
2006-02-24 09:41:20 +00:00
osku
4c4d3cbc32 Fix wrong placement of static keyword in a few places. 2006-02-23 11:35:28 +00:00
osku
6be49d6766 Style cleanups: Convert spaces to tabs, remove trailing whitespace, other
misc cleanups.
2006-02-21 12:37:54 +00:00
marko
d4e8116b57 Set FIL_PAGE_TYPE for every page, so that the field can be relied on in
new tablespaces created from now on.

btr_store_big_rec_extern_fields(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_BLOB.

buf_page_print(): Decode FIL_PAGE_TYPE.  Replace if-else with switch().

buf_page_create(): Set FIL_PAGE_PREV, FIL_PAGE_NEXT and FIL_PAGE_TYPE.

trx_sysf_create(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_TRX_SYS.
Initialize TRX_SYS_RSEG_SPACE.

FIL_PAGE_TYPE: Document that the field cannot be relied on in older
versions of MySQL/InnoDB.  Add new type codes.

ibuf_bitmap_page_init(): Document that the rest of the page is uninitialized.

ibuf_add_free_page(): Log the setting of FIL_PAGE_TYPE.

fsp_header_init(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_FSP_HDR.
Initialize FSP_NOT_USED.

fsp_fill_free_list(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_XDES.

fsp_alloc_seg_inode_page(): Set FIL_PAGE_TYPE to FIL_PAGE_INODE.

fseg_create_general(): Set FIL_PAGE_TYPE to FIL_PAGE_TYPE_SYS.
2006-02-20 15:42:49 +00:00
osku
73d3dd79dd Remove the concept of "field order", as we will not support descending order
indexes.
2006-02-20 12:38:10 +00:00
osku
bbdb0f41b2 Fix all function declarations to have the correct number of '=' characters. 2006-02-20 12:12:22 +00:00
marko
e426d93290 Replace assertions on constant conditions with preprocessor conditions. 2006-02-15 09:00:03 +00:00
osku
c307820962 Import 5.0 code. 2005-10-27 07:29:40 +00:00