Commit graph

39 commits

Author SHA1 Message Date
marko
60bbfd6d0b branches/innodb+: Clean up the buffering of purges. Instead of
traversing the index B-tree twice (first in BTR_WATCH_LEAF mode and
then in BTR_DELETE mode), let BTR_DELETE take care of checking that
the record can be purged, and either buffering or performing the
purge.

row_purge_poss_sec(): New function, to check if it is possible to
purge a secondary index record.  Refactored from
row_purge_remove_sec_if_poss_low().

row_purge_remove_sec_if_poss_nonbuffered(): Rename to
row_purge_remove_sec_if_poss_tree().  Remove the parameter mode
(always use BTR_MODIFY_TREE).  Use row_purge_poss_sec().

row_purge_remove_sec_if_poss_low(): Rename to
row_purge_remove_sec_if_poss_leaf().  Remove the parameter mode
(always use BTR_MODIFY_LEAF). Let row_search_index_entry() do all the
hard work.

btr_cur_t: Add purge_node, which will be needed by
btr_cur_search_to_nth_level() for BTR_DELETE.  Replace the flag value
BTR_CUR_ABORTED with BTR_CUR_DELETE_REF and BTR_CUR_DELETE_FAILED.

enum row_search_result, row_search_index_entry(): Replace
ROW_NOT_IN_POOL with ROW_NOT_DELETED_REF and ROW_NOT_DELETED.

btr_cur_search_to_nth_level(): Remove BTR_WATCH_LEAF.  As a side
effect, the adaptive hash index can be used in purge as well.  If
BTR_DELETE cannot be buffered, attempt btr_cur_optimistic_delete().
Either way, check row_purge_poss_sec().  Move the code to set
cursor->ibuf_count to get rid of another if (height == 0)
check. Eliminate the label loop_end.  Do not call ibuf_should_try()
twice.

ibuf_should_try(): Now that the successful calls to this function will
be halved, halve the magic constant that ibuf_flush_count will be
compared to, accordingly.

The changes regarding ibuf_should_try() were merged from branches/zip
r3515.

rb://60 approved by Heikki over IM
2008-12-12 12:59:48 +00:00
marko
838b690902 branches/innodb+: ibuf_delete(),
row_purge_remove_sec_if_poss_low_nonbuffered(): Add debug assertions
that records to be purged must have been marked for deletion.
2008-12-10 15:12:04 +00:00
marko
4c7f7c4248 branches/innodb+: Merge revisions 3312:3459 from branches/zip:
------------------------------------------------------------------------
  r3328 | marko | 2008-12-02 10:16:05 +0200 (Tue, 02 Dec 2008) | 7 lines

  branches/zip: page_cur_insert_rec_zip(): When allocating insert_buf
  from the free list, zero out the DB_TRX_ID and DB_ROLL_PTR of the
  deleted record if the new record would not overwrite these
  fields. This fixes a harmless content mismatch reported by
  page_zip_validate() that was reported as Issue #111.
  rb://55 approved by Sunny Bains.
  ------------------------------------------------------------------------
  r3329 | vasil | 2008-12-02 12:03:17 +0200 (Tue, 02 Dec 2008) | 4 lines

  branches/zip:

  Add entry in the ChangeLog for the release of 1.0.2.
  ------------------------------------------------------------------------
  r3331 | vasil | 2008-12-02 12:09:20 +0200 (Tue, 02 Dec 2008) | 5 lines

  branches/zip:

  Remove an entry from the ChnageLog for a change that was made before
  the release of 1.0.2 but was not included in that release.
  ------------------------------------------------------------------------
  r3333 | vasil | 2008-12-02 12:11:54 +0200 (Tue, 02 Dec 2008) | 4 lines

  branches/zip:

  Now that 1.0.2 is out, the current tree is version 1.0.3.
  ------------------------------------------------------------------------
  r3336 | vasil | 2008-12-02 13:34:36 +0200 (Tue, 02 Dec 2008) | 5 lines

  branches/zip:

  Resurrect a ChangeLog entry that I removed in c3331 with a fake date
  so it does not appear that it has been included in 1.0.2.
  ------------------------------------------------------------------------
  r3361 | vasil | 2008-12-04 18:10:08 +0200 (Thu, 04 Dec 2008) | 9 lines

  branches/zip:

  Fix Mantis issue#103 mysql_addons.c depends on THD internals - please remove it

  Use MySQL's thd_get_thread_id() instead of our own ib_thd_get_thread_id()
  since MySQL implemented the former, see http://bugs.mysql.com/30930.

  Approved by:    Marko (https://svn.innodb.com/rb/r/40, rb://40)
  ------------------------------------------------------------------------
  r3362 | vasil | 2008-12-04 18:49:24 +0200 (Thu, 04 Dec 2008) | 15 lines

  branches/zip:

  Revert our temporary fix for Bug#40360 Binlog related errors with binlog off

  This bug was fixed in MySQL code.

  Our fix went into r2944 and r2947, but this patch does not entirely revert
  those revisions because we want to leave the test case that was introduced
  and also r2944 itself reverted r2935 and r2936. So if we completely revert
  r2944 and r2947 then we would loose the test and will restore r2935 and
  r2936.

  This resolves Issue#108 We should remove ib_bin_log_is_engaged() once mysql
  add an equivallent, see Bug#40360
  ------------------------------------------------------------------------
  r3404 | marko | 2008-12-05 10:02:54 +0200 (Fri, 05 Dec 2008) | 5 lines

  branches/zip: row_undo_mod_del_mark_or_remove_sec_low(): Do not
  complain if the record is not found.  Explain that this is possible
  when a deadlock occurs during an update.  Heikki investigated this
  in Issue #134.
  ------------------------------------------------------------------------
  r3432 | marko | 2008-12-08 14:14:01 +0200 (Mon, 08 Dec 2008) | 4 lines

  branches/zip: ibuf_merge_or_delete_for_page(): Remove the redundant
  checks for ibuf_fixed_addr_page() || fsp_descr_page().  The one at
  the beginning of the function is enough.
  ------------------------------------------------------------------------
  r3456 | marko | 2008-12-09 10:31:26 +0200 (Tue, 09 Dec 2008) | 3 lines

  branches/zip: row_purge_remove_sec_if_poss_low(): Allocate mtr_vers
  from the stack, not with mem_alloc().
  ------------------------------------------------------------------------
  r3459 | vasil | 2008-12-09 11:49:03 +0200 (Tue, 09 Dec 2008) | 152 lines

  branches/zip:

  Merge 2929:3458 from branches/5.1 (resolving conflict in c3257,
  note also that r3363 reverted r2933 so there are not changes in
  mysql-test/innodb-autoinc.result with the current merge):

    ------------------------------------------------------------------------
    r2933 | calvin | 2008-10-30 02:57:31 +0200 (Thu, 30 Oct 2008) | 10 lines
    Changed paths:
       M /branches/5.1/mysql-test/innodb-autoinc.result

    branches/5.1: correct the result file innodb-autoinc.result

    Change the followings:
      auto_increment_increment
      auto_increment_offset

    to
      auto-increment-increment
      auto-increment-offset

    ------------------------------------------------------------------------
    r2981 | marko | 2008-11-07 14:54:10 +0200 (Fri, 07 Nov 2008) | 5 lines
    Changed paths:
       M /branches/5.1/row/row0mysql.c

    branches/5.0: row_mysql_store_col_in_innobase_format(): Correct a misleading
    comment. In the UTF-8 encoding, ASCII takes 1 byte per character, while
    the "latin1" character set (normally ISO-8859-1, but in MySQL it actually
    refers to the Windows Code Page 1252 a.k.a. CP1252, WinLatin1)
    takes 1 to 3 bytes (1 to 2 bytes for the ISO-8859-1 subset).
    ------------------------------------------------------------------------
    r3114 | calvin | 2008-11-14 20:31:48 +0200 (Fri, 14 Nov 2008) | 8 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc

    branches/5.1: fix bug#40386: Not flushing query cache after truncate

    ha_statistics.records can not be 0 unless the table is empty, set to
    1 instead. The original problem of bug#29507 is fixed in the server.

    Additional test was done with the fix of bug#29507 in the server.

    Approved by: Heikki (on IM)
    ------------------------------------------------------------------------
    r3257 | inaam | 2008-11-24 22:06:50 +0200 (Mon, 24 Nov 2008) | 13 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc
       M /branches/5.1/srv/srv0srv.c
       M /branches/5.1/trx/trx0trx.c

    branches/5.1 bug#40760

    The config param innodb_thread_concurrency is dynamically set and is
    read when a thread enters/exits innodb. If the value is changed between
    the enter and exit time the behaviour becomes erratic.
    The fix is not to use srv_thread_concurrency when exiting, instead use
    the flag trx->declared_to_be_inside_innodb.

    rb://57

    Approved by: Marko


    ------------------------------------------------------------------------
    r3363 | calvin | 2008-12-04 19:00:20 +0200 (Thu, 04 Dec 2008) | 13 lines
    Changed paths:
       M /branches/5.1/mysql-test/innodb-autoinc.result

    branches/5.1: revert the changes in r2933

    The changes in r2933 causes test failure on Linux.
    More investigation is needed for Windows.

    Change the followings in innodb-autoinc.result:
      auto-increment-increment
      auto-increment-offset

    back to:
      auto_increment_increment
      auto_increment_offset

    ------------------------------------------------------------------------
    r3412 | vasil | 2008-12-05 10:46:18 +0200 (Fri, 05 Dec 2008) | 7 lines
    Changed paths:
       M /branches/5.1/trx/trx0undo.c

    branches/5.1:

    Add the traditional 2 spaces after the timestamp so the message does
    not look like:

    070223 13:26:01InnoDB: Warning: canno....

    ------------------------------------------------------------------------
    r3458 | vasil | 2008-12-09 11:21:08 +0200 (Tue, 09 Dec 2008) | 51 lines
    Changed paths:
       M /branches/5.1/mysql-test/innodb_bug34300.test

    branches/5.1:

    Merge a change from MySQL to fix the failing innodb_bug34300 mysql-test:

      main.innodb_bug34300           [ fail ]

      mysqltest: At line 11: query 'SET @@max_allowed_packet=16777216' failed: 1621: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value

      Aborting: main.innodb_bug34300 failed in default mode.

    The changeset is this:

      ------------------------------------------------------------
      revno: 2709.1.10
      committer: Staale Smedseng <staale.smedseng@sun.com>
      branch nick: b22891-51-bugteam
      timestamp: Thu 2008-11-20 08:51:48 +0100
      message:
        A fix for Bug#22891 "session level max_allowed_packet can be
        set but is ignored".

        This patch makes @@session.max_allowed_packed and
        @@session.net_buffer_length read-only as suggested in the bug
        report. The user will have to use SET GLOBAL (and reconnect)
        to alter the session values of these variables.

        The error string ER_VARIABLE_IS_READONLY is introduced.

        Tests are modified accordingly.
      modified:
        mysql-test/r/func_compress.result
        mysql-test/r/max_allowed_packet_basic.result
        mysql-test/r/max_allowed_packet_func.result
        mysql-test/r/net_buffer_length_basic.result
        mysql-test/r/packet.result
        mysql-test/r/union.result
        mysql-test/r/variables.result
        mysql-test/t/func_compress.test
        mysql-test/t/innodb_bug34300.test
        mysql-test/t/max_allowed_packet_basic.test
        mysql-test/t/max_allowed_packet_func.test
        mysql-test/t/net_buffer_length_basic.test
        mysql-test/t/packet.test
        mysql-test/t/union.test
        mysql-test/t/variables.test
        sql/set_var.cc
        sql/set_var.h
        sql/share/errmsg.txt
      ------------------------------------------------------------
    ------------------------------------------------------------------------
  ------------------------------------------------------------------------
2008-12-09 11:09:06 +00:00
marko
6c3a99a738 branches/innodb+: btr_cur_t: Remove leaf_in_buf_pool. The flag can be
determined from flag == BTR_CUR_ABORTED.  This flag value was previously
never tested for.  It was only assigned to, in the only place where
leaf_in_buf_pool would be set FALSE.

btr_cur_search_to_nth_level(): Do not initialize cursor->leaf_in_buf_pool.

btr_pcur_was_buffered(): Remove.  The only caller, row_search_index_entry(),
will switch (cursor->flag) and handle BTR_CUR_ABORTED as well.

row_purge_remove_sec_if_poss_low(): Remove the assertions on leaf_in_buf_pool.
2008-12-04 21:56:21 +00:00
marko
100b7265da branches/innodb+: row_purge_remove_sec_if_poss_low(): If the index entry
does not exist, return TRUE without retrying unbuffered operation (which
should notice the same).
2008-12-01 16:52:16 +00:00
marko
b6679b1d14 branches/innodb+: Merge revisions 3180:3312 from branches/zip:
------------------------------------------------------------------------
  r3254 | marko | 2008-11-24 18:01:42 +0200 (Mon, 24 Nov 2008) | 4 lines

  branches/zip: Note that it is legitimate for a secondary index record not
  to be found during purge.  This tries to address Issue #129.  The comments
  were supplied by Heikki.
  ------------------------------------------------------------------------
  r3286 | marko | 2008-11-26 10:00:28 +0200 (Wed, 26 Nov 2008) | 18 lines

  branches/zip: row_merge_drop_temp_indexes(): Replace the WHILE 1 with
  WHILE 1=1 in the SQL procedure, so that the loop will actually be
  entered and temporary indexes be dropped during crash recovery.
  Thanks to Sunny Bains for pointing this out.

  Tested as follows:

  Set a breakpoint in row_merge_rename_indexes.

  CREATE TABLE t(a INT)ENGINE=InnoDB;
  CREATE INDEX a ON t(a);

  -- The breakpoint will be reached.  Kill and restart mysqld.
  SHOW CREATE TABLE t;
  -- This shows the MySQL .frm file, without and index.
  CREATE TABLE innodb_table_monitor(a INT)ENGINE=InnoDB;
  -- This will dump the InnoDB dictionary to the error log, without the index.
  ------------------------------------------------------------------------
  r3302 | vasil | 2008-11-27 23:26:39 +0200 (Thu, 27 Nov 2008) | 12 lines

  branches/zip:

  Fix Mantis issue#130 wdl: does not handle 64-bit address

  - Change the call from strtoul() to strtoull()
  - Change "%16X" to "%16llx" when scanning preferred load address

  rb://58

  Submitted by:   Calvin
  Approved by:    Marko
  ------------------------------------------------------------------------
  r3303 | vasil | 2008-11-27 23:31:18 +0200 (Thu, 27 Nov 2008) | 10 lines

  branches/zip:

  * Remove a change from win-plugin/win-plugin.diff about time_t because
    MySQL has used VS2005 for building 5.1.30.

  * Adjust the line numbers so the patch applies cleanly without fuzz and
    offset messages.

  Submitted by:   Calvin
  ------------------------------------------------------------------------
  r3304 | vasil | 2008-11-27 23:33:48 +0200 (Thu, 27 Nov 2008) | 6 lines

  branches/zip:

  Non-functional change in win-plugin/win-plugin.diff: fix the file name
  before the diff, this is irrelevant but it is nice to be the same as
  the file name on the following line.
  ------------------------------------------------------------------------
  r3312 | marko | 2008-11-28 16:18:43 +0200 (Fri, 28 Nov 2008) | 5 lines

  branches/zip: row_undo_mod_del_mark_or_remove_sec_low(): Complain if
  the secondary index entry cannot be found, and this is not an incomplete
  transaction that is being rolled back in crash recovery.  The source code
  comments were suggested by Heikki.
  ------------------------------------------------------------------------
2008-11-28 14:58:51 +00:00
marko
769969cc23 branches/innodb+: row_search_index_entry(): Clean up the call interface
and add assertions to callers.  Remove the added ibool* parameter and
return enum row_search_result instead of ibool, to reflect the four
different outcomes: record found, not found, buffered, and status unknown
(record not in the buffer pool).

rb://6
2008-09-30 18:06:38 +00:00
marko
211417e27e branches/innodb+: Merge revisions 2660:2676 from branches/zip. 2008-09-24 09:45:19 +00:00
marko
e574d604e9 branches/innodb+: row_purge_remove_sec_if_poss_low(): Restore the
suspicious assignment that was removed in r2670 and note why it is needed.
2008-09-24 09:23:32 +00:00
marko
d878dfaf47 branches/innodb+: row_purge_remove_sec_if_poss_low(): Remove a suspicious
assignment that was added in r990 to branches/fts and merged in r2324.
2008-09-23 08:03:49 +00:00
marko
1838b00352 branches/innodb+: Non-functional change: Rename all functions related to the
buf_pool->watch_ fields to start with the common prefix buf_pool_watch,
so that they can be searched easily:

buf_pool_watch_set(): Renamed from buf_pool_add_watch().  The "add" was
misleading, because only one watch can be active at a time.

buf_pool_watch_clear(): Renamed from buf_pool_remove_watch().

buf_pool_watch_occurred(): Renamed from buf_pool_watch_happened().
2008-09-22 09:18:14 +00:00
marko
56d28f1c57 branches/innodb+: Merge 2637:2660 from branches/zip. 2008-09-22 07:57:34 +00:00
marko
59e74a139f branches/innodb+: row_purge_remove_sec_if_poss_low(): Apply De Morgan's rule
to eliminate double negation from an assertion.
2008-09-15 06:25:21 +00:00
sunny
d0e8003b2f branches/innodb+: Merge revisions 2460:2579 from branches/zip
The followin mysql-tests failed (and they are known to fail):
main.information_schema        	[ fail ]
main.innodb_file_per_table_basic[ fail ]
main.type_bit_innodb           	[ fail ]

Tested against : MYSQL_SERVER_VERSION  "5.1.28"
2008-08-09 00:15:46 +00:00
sunny
fceb78e698 branches/innodb+: Delete buffer port from branches/fts:r2283 2008-02-27 07:03:34 +00:00
marko
1d1dc31a06 branches/zip: Introduce UNIV_INTERN, a linkage specifier for InnoDB-global
symbols.  Use it for all definitions of non-static variables and functions.

lexyy.c, make_flex.sh: Declare yylex as UNIV_INTERN, not static.  It is
referenced from pars0grm.c.

Actually, according to
	nm .libs/ha_innodb.so|grep -w '[ABCE-TVXYZ]'
the following symbols are still global:

* The vtable for class ha_innodb
* pars0grm.c: The function yyparse() and the variables yychar, yylval, yynerrs

The required changes to the Bison-generated file pars0grm.c will be addressed
in a separate commit, which will add a script similar to make_flex.sh.

The class ha_innodb is renamed from class ha_innobase by a #define.  Thus,
there will be no clash with the builtin InnoDB.  However, there will be some
overhead for invoking virtual methods of class ha_innodb.  Ideas for making
the vtable hidden are welcome.  -fvisibility=hidden is not available in GCC 3.
2008-02-06 14:17:36 +00:00
marko
a65020d27f branches/zip: When logging updates or deletes in the undo log, store long
enough prefixes of externally stored columns, so that purge will not have
to dereference any BLOB pointers, which may be invalid.  This will not be
necessary for logging inserts, because inserts are no-ops in purge, and
the record will remain locked during transaction rollback.

TODO: in dict_build_table_def_step() or dict_build_index_def_step(),
prevent the creation of tables with too many columns for which a
prefix index is defined.  This is because there is a size limit of undo
log records, and for each prefix-indexed column, the log must store
REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE bytes.

trx_undo_page_report_insert(): Assert that the index is clustered.

trx_undo_page_fetch_ext(): New function, for fetching the BLOB prefix
in trx_undo_page_report_modify().

trx_undo_page_report_modify(): Write long enough prefixes of the externally
stored columns to the undo log.

trx_undo_rec_get_partial_row(): Remove the parameter "ext".  Assert that
the undo log contains long enough prefixes of the externally stored columns.

purge_node_t: Remove the field "ext".
2007-12-05 14:10:15 +00:00
marko
06299dddd4 branches/zip: In purge, avoid dereferencing unset BLOB pointers of freshly
inserted, uncommitted clustered index records when determining if a
secondary index record that contains a column prefix of an externally
stored column is referencing the clustered index record.

field_ref_zero[]: A BLOB pointer full of zero, for use in comparisons.

btr_copy_externally_stored_field_prefix(): Assert that the BLOB pointer is set.

row_ext_lookup_ith(), row_ext_lookup(), row_ext_lookup_low(): Document
that field_ref_zero is returned when the BLOB cannot be fetched.

row_ext_lookup_low(): Return field_ref_zero and *len = 0 when the
BLOB pointer is unset.

row_build_index_entry(): Return NULL when a needed BLOB pointer cannot
be dereferenced (row_ext_lookup returns field_ref_zero).  Check the
return value for NULL in callers.

row_vers_impl_x_locked_off_kernel(): Avoid comparisons when
row_build_index_entry() returns NULL.

row_vers_old_has_index_entry(): Ignore records for which
row_build_index_entry() returns NULL.  The entry should never be NULL
in rollback, but it may be NULL in purge.

row_merge_buf_add(): Assert that row_ext_lookup() does not return
field_ref_zero.  The table will be locked during index creation.
2007-11-27 09:11:45 +00:00
marko
996edd8a91 branches/zip: Do not access the fields of dfield_t directly.
dfield_dup(): New function for duplicating the data pointed to by dfield_t.

dfield_set_len(), dfield_set_data(): Add Valgrind instrumentation.
2007-10-23 06:46:12 +00:00
marko
3877f6910f branches/zip: Define the macro rec_offs_init() and use it for initializing
offsets_[] arrays, as suggested by Vasil.

rec_offs_set_n_alloc(): Declare as a public function.  Assert that
n_alloc > REC_OFFS_HEADER_SIZE.

rec_offs_get_n_alloc(): Assert that n_alloc > REC_OFFS_HEADER_SIZE.
2007-09-28 07:05:57 +00:00
marko
9129593724 branches/zip: Simplify the locking of the data dictionary.
row_upd_index_is_referenced(), row_upd_check_references_constraints(),
row_purge_parse_undo_rec(): Remove duplicated code that calls
row_mysql_unfreeze_data_dictionary().

row_undo_ins_remove_clust_rec():
Assert that the data dictionary is X-latched.  Do not attempt to re-latch
the data dictionary, because doing so introduces race conditions.  This
re-latching was probably made unnecessary already in r1676, which keeps
the data dictionary X-latched in ha_innobase::add_index() for the complete
duration of the data dictionary operations.

row_undo_ins_parse_undo_rec(): Do not attempt to acquire the data dictionary
latch.  The data dictionary should be already X-latched when a transaction
that modifies system tables is rolled back.  This also holds in the rollback
during crash recovery: trx_rollback_active() will X-latch the data dictionary
when needed.
2007-08-29 06:36:10 +00:00
marko
632ec54002 branches/zip: Make merge sort handle externally stored columns.
Some things still fail in innodb-index.test, and there seems to be
a race condition (data dictionary lock wait) when running with --valgrind.

dfield_t: Add an "external storage" flag, dfield->ext.

dfield_is_null(), dfield_is_ext(), dfield_set_ext(), dfield_set_null():
New functions.

dfield_copy(), dfield_copy_data(): Add const qualifiers, fix in/out comments.

data_write_sql_null(): Use memset().

big_rec_field_t: Replace byte* data with const void* data.

ut_ulint_sort(): Remove.

upd_field_t: Remove extern_storage.

upd_node_t: Replace ext_vec, n_ext_vec with n_ext.

row_merge_copy_blobs(): New function.

row_ins_index_entry(): Add the parameter "ibool foreign" for suppressing
foreign key checks during fast index creation or when inserting into
secondary indexes.

btr_page_insert_fits(): Add const qualifiers.

btr_cur_add_ext(), upd_ext_vec_contains(): Remove.

dfield_print_also_hex(), dfield_print(): Replace if...else if with switch.
Observe dfield_is_ext().
2007-06-21 09:43:15 +00:00
marko
fc65b08f53 branches/zip: Merge branches/fast-index-creation -r1413.
Fix some bugs.  The tests innodb and innodb-index fail, but that might
be due to an old MySQL source tree being used.
2007-04-04 11:05:33 +00:00
marko
f116afa724 branches/zip: Remove the fil_space_get_zip_size() call from
buf_page_get_gen().  This saves one mutex operation per block request.

buf_page_get_gen(), various macros and functions: Add parameter zip_size.

btr_node_ptr_get_child(): Add parameter index.

fil_space_get_latch(): Add optional output parameter zip_size.

fil_space_get_zip_size(): Return 0 for space id==0, because the
system tablespace is never compressed.

fsp_header_init(): Remove the parameter zip_size.

ibuf_free_excess_pages(): Remove the parameter zip_size.

trx_rseg_t, trx_undo_t: Add field zip_size.

xdes_lst_get_next(): Remove, unused.
2007-01-18 09:59:00 +00:00
marko
5669dc3d2a branches/zip: Reduce the number of buf_block_align() calls.
btr_block_get(): New function to return buf_block_t.

btr_page_alloc(), buf_page_get_release_on_io(), buf_page_get_gen(),
buf_page_create(), fseg_create(), fseg_create_general(): Return buf_block_t.

buf_page_get_known_nowait(): Expect buf_block_t instead of buf_frame_t.

buf_frame_get_newest_modification(): Replace with
buf_block_get_newest_modification().

buf_page_dbg_add_level(): Replace with buf_block_dbg_add_level().

buf_block_get_zip_size(): New function.

buf_block_get_page_zip(): Reintroduce.

recv_recover_page(): Replace page, space, page_no with block.

ibuf_bitmap_page_init(): Replace page, zip_size with block.

ibuf_parse_bitmap_init(): Remove the parameter zip_size.

btr_search_drop_page_hash_index(): Replace page with block.
2006-10-12 11:05:22 +00:00
marko
469a27ac2a branches/zip: Replace buf_frame_align() with page_align(), page_offset(),
ut_align_down(), or ut_align_offset().
2006-10-09 16:22:47 +00:00
marko
1f510066f4 branches/zip: Allow the locally stored part of externally stored columns
in the clustered index to be smaller than the indexed prefix in secondary
indexes.

row_ext_lookup(): Return NULL if the column is not stored externally.

trx_undo_rec_get_partial_row(): row_build(): Add parameter row_ext_t** ext.

row_build_index_entry(): Add the parameter row_ext_t* ext.
Invoke row_ext_lookup() to fetch prefixes of externally stored columns.

upd_node_t, undo_node_t, purge_node_t: Add the field row_ext_t* ext.
2006-09-26 11:50:54 +00:00
marko
68a65c142c branches/zip: Merge revisions 804:838 from trunk. 2006-09-19 10:14:07 +00:00
marko
38e09b2fea branches/zip: Merge revisions 720:765 from trunk and reindent the code
as per revisions r763:765.
2006-08-29 09:30:31 +00:00
marko
1d406a014d branches/zip: Fix a bug that was triggered during purge.
btr_compress(): Defer any tree modifications until the records
have successfully been copied.

row_purge_remove_sec_if_poss_low(): Simplify the setting of
the return status.
2006-05-12 11:36:17 +00:00
marko
d30e44bc32 branches/zip: Merge revisions 465:532 from trunk. 2006-05-08 06:18:59 +00:00
marko
7b57df2298 branches/zip: Minor cleanup.
Replace btr_page_get_level() with page_is_leaf() where possible.

row_purge_upd_exist_or_extern(): Remove obsolete TODO comment.

dtuple_convert_big_rec(): Replace a flag variable with goto.
2006-04-04 10:42:05 +00:00
marko
c7edc2198f branches/zip: Add TODO comment to
row_purge_upd_exist_or_extern().
2006-04-03 12:40:09 +00:00
marko
747c8fad44 branches/zip: Merge revisions 200:236 from trunk. 2006-02-23 19:25:29 +00:00
marko
9d4fa728f4 branches/zip:
Fix the way how btr_free_externally_stored_field() is called in purge.

btr_free_externally_stored_field(): Add parameter field_ref that points
directly to the BLOB reference.  Use rec, offsets, page_zip, and i
only for the page_zip_write_blob_ptr() call.

row_purge_upd_exist_or_extern(): Do not assume that the undo log contains
the entire record.  Only pass the BLOB reference to
btr_free_externally_stored_field().
2006-02-21 14:15:11 +00:00
marko
44d80eaee6 branches/zip: row_purge_upd_exist_or_extern(): use the offsets correctly 2006-02-16 13:47:20 +00:00
marko
12050c5c1c branches/zip: Prepare for in-place updates of B-tree node pointers,
BLOB pointers, trx_id, and roll_ptr.

btr_empty(), btr_create(), page_create(): Add parameter "index", as some
index information will be encoded on the compressed page.

Define REC_NODE_PTR_SIZE as 4.

Allow btr_page_reorganize() and btr_page_reorganize_low() to fail.

Define the error code DB_ZIP_OVERFLOW.

Make row_ins_index_entry_low() static.

page0zip: Encode the index, log reorganized records, and store uncompressed
fields separately from the compressed data stream.
2006-02-10 15:06:17 +00:00
marko
10fffd0dc5 branches/zip: Remember to update page_zip when updating "extern" flags.
Add function parameters and TODO comments regarding that.
2005-11-18 07:40:34 +00:00
osku
2903c72469 Import 5.0 code. 2005-10-27 07:29:40 +00:00