Commit graph

50324 commits

Author SHA1 Message Date
unknown
4c888fcb67 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.1
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb-merge


mysql-test/suite/rpl/r/rpl_row_tabledefs_2myisam.result:
  Auto merged
mysql-test/suite/rpl/r/rpl_row_tabledefs_3innodb.result:
  Auto merged
mysql-test/t/disabled.def:
  Auto merged
sql/field.cc:
  Auto merged
sql/field.h:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
sql/ha_ndbcluster_binlog.h:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/log_event.h:
  Auto merged
sql/rpl_record.cc:
  Auto merged
sql/rpl_rli.h:
  Auto merged
sql/rpl_utility.cc:
  Auto merged
sql/rpl_utility.h:
  Auto merged
2007-09-11 16:17:28 +02:00
unknown
cf9b8d332d Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-maria
into  gbichot4.local:/home/mysql_src/mysql-maria-no-flush-state
2007-09-11 11:12:04 +02:00
unknown
0b2ba820c3 WL#3072 Maria recovery
* testing of execution of UNDO_ROW_UPDATE
* when executing an UNDO_ROW_UPDATE, store "UNDO_ROW_UPDATE" as
"type of undone record" into the CLR_END record.


storage/maria/ma_blockrec.c:
  When logging a CLR_END in write_block_record(), it can be for
  a DELETE or for an UPDATE (now that Monty has coded execution of
  UNDO_UPDATE)
storage/maria/ma_loghandler.c:
  UNDO_ROW_UPDATE's execution coded, so no crash
storage/maria/ma_recovery.c:
  UNDO_ROW_UPDATE's execution now coded, so no crash
storage/maria/ma_test1.c:
  upper case letter
storage/maria/ma_test_recovery.expected:
  output of testing execution of UNDO_ROW_UPDATE. Table's checksum
  not recovered (known issue not specific to UPDATE).
storage/maria/ma_test_recovery:
  Test execution of UNDO_ROW_UPDATE: first we stop ma_test1 after
  deletes and commit, then we stop ma_test1 after updates and abort;
  we verify that updates are rolled back by comparing tables
2007-09-11 11:11:22 +02:00
unknown
48189ca420 Absence of test_file.h fixed. 2007-09-11 09:37:17 +03:00
unknown
0611f7bfc5 Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  mysql.com:/home/my/mysql-maria


storage/maria/maria_read_log.c:
  Auto merged
2007-09-11 01:59:40 +03:00
unknown
6aef814d98 Fixed some bugs when using undo of VARCHAR fields
Fixed bug in undo_delete
Fixed wrong error output from maria_check


include/my_base.h:
  Added marker if we have null fields in table
mysql-test/r/maria.result:
  checksum in maria now ignore null fields that are null
sql/sql_table.cc:
  Ignore null fields that are now
  (Before enabling this, we have to change MyISAM to also skip null fields)
storage/maria/ma_blockrec.c:
  More logging
  After merge fixes
  Fixed some bugs when using undo of VARCHAR fields
  Fixed bug in undo_delete (We can't use info->rec_buff here as this is used in write_block_record())
storage/maria/ma_blockrec.h:
  ma_recordpos_to_dir_entry changed to return uint
storage/maria/ma_check.c:
  Fixed wrong output in case of errors
storage/maria/ma_create.c:
  Set share.base.pack_reclength more correct for block record
  Delete support for RAID
storage/maria/ma_open.c:
  Don't calculate checksum fields with value NULL
storage/maria/ma_test1.c:
  Fixed output from -v for VARCHAR keys
storage/maria/ma_test_recovery.expected:
  Update results after adding new printf
  New checksums (because we now ignore nulls)
  Some file lengths are different, but think they are ok (didn't have time to investigate)
storage/myisam/ha_myisam.cc:
  Fixed comment
storage/myisam/mi_test1.c:
  Fixed bug
2007-09-11 01:58:15 +03:00
unknown
4e5c03961a Post-merge fixes 2007-09-11 02:41:42 +04:00
unknown
9d466ad479 Merge mysql.com:/home/psergey/mysql-4.1-bug30385
into  mysql.com:/home/psergey/mysql-5.0-bug30385


sql/opt_range.cc:
  Auto merged
mysql-test/r/delete.result:
  Manual merge
mysql-test/t/delete.test:
  Manual merge
2007-09-11 02:24:08 +04:00
unknown
daa83508cc fix for pushbuild failure, include trnman_public.h in source tarball (make dist)
storage/maria/Makefile.am:
  include trnman_public.h in source tarball
2007-09-10 23:20:39 +02:00
unknown
daf62687dc fix a typo in #ifdef 2007-09-10 21:14:46 +02:00
unknown
3785d845ed include maria in pushbuild's 'make dist' 2007-09-10 20:19:27 +02:00
unknown
732f05a642 BUG#30385: Server crash when deleting with ORDER BY and LIMIT
in get_index_for_order(), don't walk over the end of the index key parts
when matching index description and needed ordering.


mysql-test/r/delete.result:
  BUG#30385: Testcase
mysql-test/t/delete.test:
  BUG#30385: Testcase
2007-09-10 16:26:51 +04:00
unknown
1e3be8ca64 Merge bk@192.168.21.1:mysql-5.1-opt
into  mysql.com:/home/hf/work/28430/my51-28430


sql/ha_partition.h:
  Auto merged
sql/ha_partition.cc:
  merging
sql/log_event.cc:
  merging
2007-09-10 10:21:55 +05:00
unknown
cb2b22f0e0 Merge bk-internal.mysql.com:/home/bk/mysql-maria
into  mysql.com:/home/my/mysql-maria


storage/maria/ma_check.c:
  Auto merged
storage/maria/ma_locking.c:
  Auto merged
storage/maria/ma_loghandler.c:
  Auto merged
storage/maria/ma_open.c:
  Auto merged
storage/maria/ma_recovery.c:
  Auto merged
storage/maria/maria_def.h:
  Auto merged
storage/maria/maria_read_log.c:
  Auto merged
storage/maria/ma_blockrec.c:
  Manual merge
storage/maria/ma_test1.c:
  Manual merge (using Guilhems code)
2007-09-09 19:22:20 +03:00
unknown
155193a6e2 Added applying of undo for updates
Fixed bug in duplicate key handling for block records during repair
All read-row methods now return error number in case of error
Don't calculate checksum for null fields
Fixed bug when running maria_read_log with -o


BUILD/SETUP.sh:
  Added STACK_DIRECTION
BUILD/compile-pentium-debug-max:
  Moved STACK_DIRECTION to SETUP
include/myisam.h:
  Added extra parameter to write_key
storage/maria/ma_blockrec.c:
  Added applying of undo for updates
  Fixed indentation
  Removed some not needed casts
  Fixed wrong logging of CLR record
  Split ma_update_block_record to two functions to be able to reuse it from undo-applying
  Simplify filling of packed fields
  ma_record_block_record) now returns error number on failure
  Sligtly changed log record information for undo-update
storage/maria/ma_check.c:
  Fixed bug in duplicate key handling for block records during repair
storage/maria/ma_checksum.c:
  Don't calculate checksum for null fields
storage/maria/ma_dynrec.c:
  _ma_read_dynamic_reocrd() now returns error number on error
  Rest of the changes are code simplification and indentation fixes
storage/maria/ma_locking.c:
  Added comment
storage/maria/ma_loghandler.c:
  More debugging
  Removed printing of total_record_length as this was always same as record_length
storage/maria/ma_open.c:
  Allocate bitmap for changed fields
storage/maria/ma_packrec.c:
  read_record now returns error number on error
storage/maria/ma_recovery.c:
  Fixed wrong arguments to undo_row_update
storage/maria/ma_statrec.c:
  read_record now returns error number on error (not 1)
  Code simplification
storage/maria/ma_test1.c:
  Added exit possibility after update phase (to test undo of updates)
storage/maria/maria_def.h:
  Include bitmap header file
storage/maria/maria_read_log.c:
  Fixed bug when running with -o
2007-09-09 19:15:10 +03:00
unknown
db1f9468d4 Bug#30919
"Rows not deleted from innodb partitioned tables if --innodb_autoinc_lock_mode=0"

  Due to a previous bugfix which initializes a previously uninitialized
  variable, ha_partition::get_auto_increment() may fail to operate
  correctly when the storage engine reports that it is only reserving
  one value and one or more partitions have a different 'next-value'.
  Currently, only affects Innodb's new-style auto-increment code which
  reserves larger blocks of values and has less inter-thread contention.


mysql-test/suite/rpl/r/rpl_innodb_bug28430.result:
  Fix results - previous results shows symptoms of Bug30919
sql/ha_partition.cc:
  Bug30919
  
  ha_partition::write_row()
    Do not insert a row if a failure occurred while generating
    auto-increment value.
  
  ha_partition::get_auto_increment()
    If there is an empty 'intersection' of auto-increment values, perform
    a second pass before failing because partitions may have different
    auto-increment 'next-value' attributes.
storage/innobase/handler/ha_innodb.cc:
  Bug30919
    Only set *first_value if it is less than autoinc value. This allows
    a higher value to be hinted when operating as a partitioned table.
mysql-test/suite/rpl/r/rpl_innodb_bug30919.result:
  New BitKeeper file ``mysql-test/suite/rpl/r/rpl_innodb_bug30919.result''
mysql-test/suite/rpl/t/rpl_innodb_bug30919-master.opt:
  New BitKeeper file ``mysql-test/suite/rpl/t/rpl_innodb_bug30919-master.opt''
mysql-test/suite/rpl/t/rpl_innodb_bug30919.test:
  New BitKeeper file ``mysql-test/suite/rpl/t/rpl_innodb_bug30919.test''
2007-09-08 20:26:12 -07:00
unknown
67a8e6a0c1 perform explicit cleanup
add missing opt file


mysql-test/suite/rpl/r/rpl_innodb_bug28430.result:
  explicit post-test cleanup
mysql-test/suite/rpl/r/rpl_innodb_bug30888.result:
  explicit post-test cleanup
mysql-test/suite/rpl/t/rpl_innodb_bug28430.test:
  explicit post-test cleanup
mysql-test/suite/rpl/t/rpl_innodb_bug30888.test:
  explicit post-test cleanup
mysql-test/suite/rpl/t/rpl_innodb_bug28430-slave.opt:
  New BitKeeper file ``mysql-test/suite/rpl/t/rpl_innodb_bug28430-slave.opt''
2007-09-08 11:56:55 -07:00
unknown
bec076f494 Bug#30907
"Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases"
Bug#28430
  "Failure in replication of innodb partitioned tables on row/mixed format"
Bug#30888
  "Innodb table + stored procedure + row deletion = server crash"

  Apply Oracle patch from Sunny
  Include tests cases by Omer
  Ensure that innobase_read_and_init_auto performs table autoinc lock when lock_mode = 0
  No need for "if" guard around row_unlock_table_autoinc_for_mysql() because
  it already performs same check.
  Make autoinc_lock_mode variable read-only for duration of running mysqld process.


storage/innobase/handler/ha_innodb.cc:
  Bug30907/28430
    "Regression: "--innodb_autoinc_lock_mode=0" (off) not same as older releases"
    "Failure in replication of innodb partitioned tables on row/mixed format"
    Apply Oracle patch from Sunny
    Ensure that innobase_read_and_init_auto performs table autoinc lock when lock_mode = 0
    No need for "if" guard around row_unlock_table_autoinc_for_mysql() because
    it already performs same check.
    Make autoinc_lock_mode variable read-only for duration of running mysqld process.
storage/innobase/row/row0sel.c:
  Bug30888
    "Innodb table + stored procedure + row deletion = server crash"
  
    Remove endian-specific code.
    Fix function row_search_autoinc_read_column() to handle any integer size up to 8 bytes.
mysql-test/suite/rpl/r/rpl_innodb_bug28430.result:
  New BitKeeper file ``mysql-test/suite/rpl/r/rpl_innodb_bug28430.result''
mysql-test/suite/rpl/r/rpl_innodb_bug30888.result:
  New BitKeeper file ``mysql-test/suite/rpl/r/rpl_innodb_bug30888.result''
mysql-test/suite/rpl/t/rpl_innodb-master.opt:
  New BitKeeper file ``mysql-test/suite/rpl/t/rpl_innodb-master.opt''
mysql-test/suite/rpl/t/rpl_innodb_bug28430-master.opt:
  New BitKeeper file ``mysql-test/suite/rpl/t/rpl_innodb_bug28430-master.opt''
mysql-test/suite/rpl/t/rpl_innodb_bug28430.test:
  New BitKeeper file ``mysql-test/suite/rpl/t/rpl_innodb_bug28430.test''
mysql-test/suite/rpl/t/rpl_innodb_bug30888.test:
  New BitKeeper file ``mysql-test/suite/rpl/t/rpl_innodb_bug30888.test''
2007-09-08 11:19:35 -07:00
unknown
f2c71e6333 Merge production.mysql.com:/usersnfs/jperkin/bk/trees/50/push-5.0
into  production.mysql.com:/usersnfs/jperkin/bk/trees/51/push-5.1


libmysql/libmysql.c:
  Auto merged
2007-09-07 21:56:00 +02:00
unknown
602e13cb05 enable --with-maria-storage-engine 2007-09-07 19:45:33 +02:00
unknown
28562e9baf Merge production.mysql.com:/usersnfs/jperkin/bk/trees/build-gca/mysql-5.1
into  production.mysql.com:/usersnfs/jperkin/bk/trees/51/mysql-5.1
2007-09-07 17:46:31 +02:00
unknown
c287f9fc9e Merge production.mysql.com:/usersnfs/jperkin/bk/trees/50/mysql-5.0
into  production.mysql.com:/usersnfs/jperkin/bk/trees/51/mysql-5.1


BitKeeper/deleted/.del-CMakeLists.txt~dd682cce1d53c0b4:
  Auto merged
2007-09-07 17:30:47 +02:00
unknown
4fc66c2aa5 Merge production.mysql.com:/usersnfs/jperkin/bk/tmp/bug-27693
into  production.mysql.com:/usersnfs/jperkin/bk/trees/50/mysql-5.0
2007-09-07 17:24:17 +02:00
unknown
02fd80bacb Fix for pushbuild maria.test failure, where directory syncing failed at the
end of translog_flush() when datadir was in /dev/shm.


storage/maria/ma_loghandler.c:
  directory syncing can fail on shared memory devices (/dev/shm on Linux
  in this case); see my_sync_dir().
2007-09-07 17:03:36 +02:00
unknown
64da2c3f6a If Maria engine is not compiled in, don't use page caches (fix
for compiler errors in pushbuild). Small bugfix.


sql/handler.h:
  don't use pagecaches if no Maria
storage/maria/ma_check.c:
  correcting mistake in previous push; need to call this function
  otherwise create_rename_lsn would not be updated at end of REPAIR.
2007-09-07 16:59:12 +02:00
unknown
69d7db7758 WL#3072 - Maria Recovery
At the end of recovery, we initialize the transaction manager's
trid generator with the maximum trid seen during the REDO phase.
This ensures that trids always grow (needed for versioning),
even after a crash.
This patch is only preparation, as ma_recover() is not called
from ha_maria yet.


storage/maria/ha_maria.cc:
  trnman_init() needs argument now (soon trnman_init() will rather
  be done via ma_recover() and thus it will not be 0)
storage/maria/ma_recovery.c:
  During the REDO phase, remember the max long trid of transactions
  which we have seen (both in the checkpoint record and the
  LOGREC_LONG_TRANSACTION_ID records)
storage/maria/ma_test1.c:
  trnman_init() needs argument now
storage/maria/ma_test2.c:
  trnman_init() needs argument now
storage/maria/trnman.c:
  new argument to trnman_init() so that caller can decide which
  value the generator of trids starts from.
storage/maria/trnman_public.h:
  trnman_init() needs argument now
storage/maria/unittest/trnman-t.c:
  trnman_init() needs argument now
2007-09-07 15:52:25 +02:00
unknown
afd34c69be Bug #28430 Failure in replication of innodb partitioned tables on row/mixed format.
In the ha_partition::position() we don't calculate the number
of the partition of the record, but use m_last_part value instead,
relying on that it's previously set by some other call like ::write_row().
Delete_rows_log_event::do_exec_row() calls find_and_fetch_row(),
where we used position() + rnd_pos() call for the InnoDB-based PARTITION-ed
table as there HA_PRIMARY_KEY_REQUIRED_FOR_POSITION enabled.

fixed by introducing new handler::rnd_pos_by_record() method to be
used for random record-based positioning


sql/ha_partition.cc:
  Bug #28430 Failure in replication of innodb partitioned tables on row/mixed format.
  
  ha_partition::rnd_pos_by_record() implemented
sql/ha_partition.h:
  Bug #28430 Failure in replication of innodb partitioned tables on row/mixed format.
  
  ha_partition::rnd_pos_by_record() declared
sql/handler.h:
  Bug #28430 Failure in replication of innodb partitioned tables on row/mixed format.
  
  handler::rnd_pos_by_record() introduced
sql/log_event.cc:
  Bug #28430 Failure in replication of innodb partitioned tables on row/mixed format.
  
  handler::rnd_pos_by_record used instead of position() + rnd_pos() call
2007-09-07 18:41:49 +05:00
unknown
fa4b12f9b2 Merge production.mysql.com:/usersnfs/jperkin/bk/tmp/bug-27520
into  production.mysql.com:/usersnfs/jperkin/bk/trees/51/mysql-5.1


config/ac-macros/misc.m4:
  Auto merged
2007-09-07 15:37:04 +02:00
unknown
0e19b0582b Merge production.mysql.com:/usersnfs/jperkin/bk/tmp/bug-27520
into  production.mysql.com:/usersnfs/jperkin/bk/trees/50/mysql-5.0
2007-09-07 15:32:47 +02:00
unknown
2291f932b2 - WL#3072 Maria Recovery:
Recovery of state.records (the count of records which is stored into
the header of the index file). For that, state.is_of_lsn is introduced;
logic is explained in ma_recovery.c (look for "Recovery of the state").
The net gain is that in case of crash, we now recover state.records,
and it is idempotent (ma_test_recovery tests it).
state.checksum is not recovered yet, mail sent for discussion.
- WL#3071 Maria Checkpoint: preparation for it, by protecting
all modifications of the state in memory or on disk with intern_lock
(with the exception of the really-often-modified state.records,
which is now protected with the log's lock, see ma_recovery.c
(look for "Recovery of the state"). Also, if maria_close() sees that
Checkpoint is looking at this table it will not my_free() the share.
- don't compute row's checksum twice in case of UPDATE (correction
to a bugfix I made yesterday).


storage/maria/ha_maria.cc:
  protect state write with intern_lock (against Checkpoint)
storage/maria/ma_blockrec.c:
  * don't reset trn->rec_lsn in _ma_unpin_all_pages(), because it
  should wait until we have corrected the allocation in the bitmap
  (as the REDO can serve to correct the allocation during Recovery);
  introducing _ma_finalize_row() for that.
  * In a changeset yesterday I moved computation of the checksum
  into write_block_record(), to fix a bug in UPDATE. Now I notice
  that maria_update() already computes the checksum, it's just that
  it puts it into info->cur_row while _ma_update_block_record()
  uses info->new_row; so, removing the checksum computation from
  write_block_record(), putting it back into allocate_and_write_block_record()
  (which is called only by INSERT and UNDO_DELETE), and copying
  cur_row->checksum into new_row->checksum in _ma_update_block_record().
storage/maria/ma_check.c:
  new prototypes, they will take intern_lock when writing the state;
  also take intern_lock when changing share->kfile. In both cases
  this is to protect against Checkpoint reading/writing the state or reading
  kfile at the same time.
  Not updating create_rename_lsn directly at end of write_log_record_for_repair()
  as it wouldn't have intern_lock.
storage/maria/ma_close.c:
  Checkpoint builds a list of shares (under THR_LOCK_maria), then it
  handles each such share (under intern_lock) (doing flushing etc);
  if maria_close() freed this share between the two, Checkpoint
  would see a bad pointer. To avoid this, when building the list Checkpoint
  marks each share, so that maria_close() knows it should not free it
  and Checkpoint will free it itself.
  Extending the zone covered by intern_lock to protect against
  Checkpoint reading kfile, writing state.
storage/maria/ma_create.c:
  When we update create_rename_lsn, we also update is_of_lsn to
  the same value: it is logical, and allows us to test in maria_open()
  that the former is not bigger than the latter (the contrary is a sign
  of index header corruption, or severe logging bug which hinders
  Recovery, table needs a repair).
  _ma_update_create_rename_lsn_on_disk() also writes is_of_lsn;
  it now operates under intern_lock (protect against Checkpoint),
  a shortcut function is available for cases where acquiring
  intern_lock is not needed (table's creation or first open).
storage/maria/ma_delete.c:
  if table is transactional, "records" is already decremented
  when logging UNDO_ROW_DELETE.
storage/maria/ma_delete_all.c:
  comments
storage/maria/ma_extra.c:
  Protect modifications of the state, in memory and/or on disk,
  with intern_lock, against a concurrent Checkpoint.
  When state goes to disk, update it's is_of_lsn (by calling
  the new _ma_state_info_write()).
  In HA_EXTRA_FORCE_REOPEN, don't set share->changed to 0 (undoing
  a change I made a few days ago) and ASK_MONTY
storage/maria/ma_locking.c:
  no real code change here.
storage/maria/ma_loghandler.c:
  Log-write-hooks for updating "state.records" under log's mutex
  when writing/updating/deleting a row or deleting all rows.
storage/maria/ma_loghandler_lsn.h:
  merge (make LSN_ERROR and LSN_REPAIRED_BY_MARIA_CHK different)
storage/maria/ma_open.c:
  When opening a table verify that is_of_lsn >= create_rename_lsn; if
  false the header must be corrupted.
  _ma_state_info_write() is split in two: _ma_state_info_write_sub()
  which is the old _ma_state_info_write(), and _ma_state_info_write()
  which additionally takes intern_lock if requested (to protect
  against Checkpoint) and updates is_of_lsn.
  _ma_open_keyfile() should change kfile.file under intern_lock
  to protect Checkpoint from reading a wrong kfile.file.
storage/maria/ma_recovery.c:
  Recovery of state.records: when the REDO phase sees UNDO_ROW_INSERT
  which has a LSN > state.is_of_lsn it increments state.records.
  Same for UNDO_ROW_DELETE and UNDO_ROW_PURGE.
  When closing a table during Recovery, we know its state is at least
  as new as the current log record we are looking at, so increase
  is_of_lsn to the LSN of the current log record.
storage/maria/ma_rename.c:
  update for new behaviour of _ma_update_create_rename_lsn_on_disk().
storage/maria/ma_test1.c:
  update to new prototype
storage/maria/ma_test2.c:
  update to new prototype (actually prototype was changed days ago,
  but compiler does not complain about the extra argument??)
storage/maria/ma_test_recovery.expected:
  new result file of ma_test_recovery. Improvements: record
  count read from index's header is now always correct.
storage/maria/ma_test_recovery:
  "rm" fails if file does not exist. Redirect stderr of script.
storage/maria/ma_write.c:
  if table is transactional, "records" is already incremented when
  logging UNDO_ROW_INSERT. Comments.
storage/maria/maria_chk.c:
  update is_of_lsn too
storage/maria/maria_def.h:
  - MARIA_STATE_INFO::is_of_lsn which is used by Recovery. It is stored
  into the index file's header.
  - Checkpoint can now mark a table as "don't free this", and maria_close()
  can reply "ok then you will free it".
  - new functions
storage/maria/maria_pack.c:
  update for new name
2007-09-07 15:02:30 +02:00
unknown
aff30b40cd ha_partition.cc, listener.h, listener.cc, ha_partition.h:
Initiate static const outside class definition


server-tools/instance-manager/listener.cc:
  Initiate static const outside class definition
server-tools/instance-manager/listener.h:
  Initiate static const outside class definition
sql/ha_partition.cc:
  Initiate static const outside class definition
sql/ha_partition.h:
  Initiate static const outside class definition
2007-09-07 13:30:42 +02:00
unknown
f571ae9bf2 azio.c, azlib.h:
Don't use typedef 'voidpc' as later addition and not needed


storage/archive/azlib.h:
  Don't use typedef 'voidpc' as later addition and not needed
storage/archive/azio.c:
  Don't use typedef 'voidpc' as later addition and not needed
2007-09-07 13:27:52 +02:00
unknown
821abeee47 Bug #11313 confusing/erroneous 4006 message 2007-09-07 11:15:07 +02:00
unknown
5fb2bdd719 Modifications to funcs_1 files for 5.1.22rc release including:
- Updated row help count information
 - Added missing 'order by' clauses (altrady fixed in build tree)
 - Fixed isses with ndb_storeproc06/10 tests (added use database)
 - Corrected use of wrong engine in ndb tests (already fixed in build tree)
 - Update to ndb__datadict to replect additional fields in I_S (already corrected in build tree)


mysql-test/suite/funcs_1/include/ndb_tb2.inc:
  Correction of wrong engine used for ndb test
mysql-test/suite/funcs_1/r/innodb__datadict.result:
  Updated result file
mysql-test/suite/funcs_1/r/innodb_storedproc_06.result:
  Updated result file
mysql-test/suite/funcs_1/r/innodb_storedproc_10.result:
  Updated result file
mysql-test/suite/funcs_1/r/innodb_views.result:
  Updated result file
mysql-test/suite/funcs_1/r/memory__datadict.result:
  Updated result file
mysql-test/suite/funcs_1/r/memory_storedproc_06.result:
  Updated result file
mysql-test/suite/funcs_1/r/memory_storedproc_10.result:
  Updated result file
mysql-test/suite/funcs_1/r/memory_views.result:
  Updated result file
mysql-test/suite/funcs_1/r/myisam__datadict.result:
  Updated result file
mysql-test/suite/funcs_1/r/myisam_storedproc_06.result:
  Updated result file
mysql-test/suite/funcs_1/r/myisam_storedproc_10.result:
  Updated result file
mysql-test/suite/funcs_1/r/myisam_views.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb__datadict.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_cursors.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_func_view.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_storedproc_06.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_storedproc_07.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_storedproc_08.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_storedproc_10.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_trig_0102.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_trig_03.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_trig_03e.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_trig_0407.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_trig_08.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_trig_09.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_trig_1011ext.result:
  Updated result file
mysql-test/suite/funcs_1/r/ndb_views.result:
  Updated result file
mysql-test/suite/funcs_1/storedproc/storedproc_06.inc:
  Updated test file enforcing 'use database' after connect
mysql-test/suite/funcs_1/storedproc/storedproc_10.inc:
  Updated test file enforcing 'use database' after connect
mysql-test/suite/funcs_1/views/views_master.inc:
  Adding order by clauses in missing places
2007-09-06 22:03:07 -07:00
unknown
0e1cdf8d94 Test cleanup in rpl_binlog_grant: XID values are unpredictable 2007-09-06 12:06:22 -06:00
unknown
9d01633571 Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
2007-09-06 22:42:44 +05:00
unknown
e763095f6b Merge gleb.loc:/home/uchum/work/bk/5.1
into  gleb.loc:/home/uchum/work/bk/5.1-opt


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
sql/sql_view.cc:
  Auto merged
2007-09-06 22:31:25 +05:00
unknown
76e37a32b8 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt


mysql-test/r/sp.result:
  Auto merged
mysql-test/t/sp.test:
  Auto merged
2007-09-06 22:27:13 +05:00
unknown
d7262773e1 sql_parse.cc:
Post-merge fix.


sql/sql_parse.cc:
  Post-merge fix.
2007-09-06 21:56:46 +05:00
unknown
9179dc33b9 Merge bk-internal.mysql.com:/home/bk/mysql-5.1-runtime
into  moksha.local:/Users/davi/mysql/push/mysql-5.1-runtime
2007-09-06 13:28:00 -03:00
unknown
16c328056c The test case for bug 28587 doesn't work with the embedded version,
the first query is not running while we are doing wait queries on
a second connection.


mysql-test/r/insert_notembedded.result:
  Test case result for bug 28587 moved from insert_update.result
mysql-test/r/insert_update.result:
  Remove test case result for bug 28587, moving to insert_notembedded.result
mysql-test/t/insert_notembedded.test:
  Test case result for bug 28587, moved from insert_update.test
mysql-test/t/insert_update.test:
  Remove test case for bug 28587, moving to insert_notembedded.test
2007-09-06 13:22:34 -03:00
unknown
d9a7fd12ff sp.result:
Post-merge fix.


mysql-test/r/sp.result:
  Post-merge fix.
2007-09-06 20:42:36 +05:00
unknown
d53991853e - speed optimization:
minimize writes to transactional Maria tables: don't write
data pages, state, and open_count at the end of each statement.
Data pages will be written by a background thread periodically.
State will be written by Checkpoint periodically.
open_count serves to detect when a table is potentially damaged
due to an unclean mysqld stop, but thanks to recovery an unclean
mysqld stop will be corrected and so open_count becomes useless.
As state is written less often, it is often obsolete on disk,
we thus should avoid to read it from disk.
- by removing the data page writes above, it is necessary to put
it back at the start of some statements like check, repair and
delete_all. It was already necessary in fact (see ma_delete_all.c).
- disabling CACHE INDEX on Maria tables for now (fixes crash
of test 'key_cache' when run with --default-storage-engine=maria).
- correcting some fishy code in maria_extra.c (we possibly could lose
index pages when doing a DROP TABLE under Windows, in theory).


storage/maria/ha_maria.cc:
  disable CACHE INDEX in Maria for now (there is a single cache for now),
  it crashes and it's not a priority
storage/maria/ma_bitmap.c:
  debug message
storage/maria/ma_check.c:
  The statement before maria_repair() may not flush state,
  so it needs to be done by maria_repair() (indeed this function
  uses maria_open(HA_OPEN_COPY) so reads state from disk,
  so needs to find it up-to-date on disk).
  For safety (but normally this is not needed) we remove index blocks
  out of the cache before repairing.
  _ma_flush_blocks() becomes _ma_flush_table_files_after_repair():
  it now additionally flushes the data file and state and syncs files.
  As a side effect, the assertion "no WRITE_CACHE_USED" from
  _ma_flush_table_files() fired so we move all end_io_cache() done
  at the end of repair to before the calls to _ma_flush_table_files_after_repair().
storage/maria/ma_close.c:
  when closing a transactional table, we fsync it. But we need to
  do this only after writing its state.
  We need to write the state at close time only for transactional
  tables (the other tables do that at last unlock).
  Putting back the O_RDONLY||crashed condition which I had
  removed earlier.
  Unmap the file before syncing it (does not matter now as Maria
  does not use mmap)
storage/maria/ma_delete_all.c:
  need to flush data pages before chsize-ing it. Was needed even when
  we flushed data pages at the end of each statement, because we didn't
  anyway do it if under LOCK TABLES: the change here thus fixes this bug:
  create table t(a int) engine=maria;lock tables t write;
  insert into t values(1);delete from t;unlock tables;check table t;
  "Size of datafile is: 16384       Should be: 8192"
  (an obsolete page went to disk after the chsize(), at unlock time).
storage/maria/ma_extra.c:
  When doing share->last_version=0, we make the MARIA_SHARE-in-memory
  invisible to future openers, so need to have an up-to-date state
  on disk for them. The same way, future openers will reopen the data
  and index file, so they will not find our cached blocks, so we
  need to flush them to disk.
  In HA_EXTRA_FORCE_REOPEN, this probably happens naturally as all
  tables normally get closed, we however add a safety flush.
  In HA_EXTRA_PREPARE_FOR_RENAME, we need to do the flushing. On
  Windows we additionally need to close files.
  In HA_EXTRA_PREPARE_FOR_DROP, we don't need to flush anything but
  remove dirty cached blocks from memory. On Windows we need to close
  files.
  Closing files forces us to sync them before (requirement for transactional
  tables).
  For mutex reasons (don't lock intern_lock twice), we move
  maria_lock_database() and _ma_decrement_open_count() first in the list
  of operations.
  Flush also data file in HA_EXTRA_FLUSH.
storage/maria/ma_locking.c:
  For transactional tables:
    - don't write data pages / state at unlock time;
    as a consequence, "share->changed=0" cannot be done.
    - don't write state in _ma_writeinfo()
    - don't maintain open_count on disk (Recovery corrects the table in case of crash
    anyway, and we gain speed by not writing open_count to disk),
  For non-transactional tables, flush the state at unlock only
  if the table was changed (optimization).
  Code which read the state from disk is relevant only with
  external locking, we disable it (if want to re-enable it, it shouldn't
  for transactional tables as state on disk may be obsolete (such tables
  does not flush state at unlock anymore).
  The comment "We have to flush the write cache" is now wrong because
  maria_lock_database(F_UNLCK) now happens before thr_unlock(), and
  we are not using external locking.
storage/maria/ma_open.c:
  _ma_state_info_read() is only used in ma_open.c, making it static
storage/maria/ma_recovery.c:
  set MARIA_SHARE::changed to TRUE when we are going to apply a
  REDO/UNDO, so that the state gets flushed at close.
storage/maria/ma_test_recovery.expected:
  Changes introduced by this patch:
  - good: the "open" (table open, not properly closed) is gone,
  it was pointless for a recovered table
  - bad: stemming from different moments of writing the index's state
  probably (_ma_writeinfo() used to write the state after every row
  write in ma_test* programs, doesn't anymore as the table is
  transactional): some differences in indexes (not relevant as we don't
  yet have recovery for them); some differences in count of records
  (changed from a wrong value to another wrong value) (not relevant
  as we don't recover this count correctly yet anyway, though
  a patch will be pushed soon).
storage/maria/ma_test_recovery:
  for repeatable output, no names of varying directories.
storage/maria/maria_chk.c:
  function renamed
storage/maria/maria_def.h:
  Function became local to ma_open.c. Function renamed.
2007-09-06 16:53:26 +02:00
unknown
414d345071 Merge gleb.loc:/home/uchum/work/bk/5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.1-opt


BitKeeper/etc/ignore:
  auto-union
mysql-test/r/distinct.result:
  Auto merged
sql/sql_yacc.yy:
  Auto merged
mysql-test/include/mix1.inc:
  Merge with 5.0-opt.
mysql-test/r/group_by.result:
  Merge with 5.0-opt.
mysql-test/r/innodb_mysql.result:
  Merge with 5.0-opt.
mysql-test/r/sp.result:
  Merge with 5.0-opt.
mysql-test/t/group_by.test:
  Merge with 5.0-opt.
mysql-test/t/sp.test:
  Merge with 5.0-opt.
sql/sql_parse.cc:
  Merge with 5.0-opt.
sql/sql_select.cc:
  Merge with 5.0-opt.
sql/sql_view.cc:
  Merge with 5.0-opt.
2007-09-06 19:15:31 +05:00
unknown
ac4ad9bdba WL#3072 Maria Recovery
misc fixes of execution of UNDOs in the UNDO phase:
- into the CLR_END, store the LSN of the _previous_ UNDO (we debated
what was best, so far we're going with "previous"; later we can change
to "current" if needed), and store the type of record which is being
undone (needed to know how to update state.records when we see the
CLR_END during the REDO phase).
- declaring all UNDOs and CLR_END as "compressed"
- when executing an UNDO in the UNDO phase, state.records is updated
as a hook when writing CLR_END (needed for "recovery of the state"),
and so is trn->undo_lsn (needed for when we have checkpoints).
- bugfix (execution of UNDO_ROW_DELETE didn't store the correct checksum
into the re-inserted row, maria_chk -r thus threw the row away).
- modifications of ma_test1: where to stop is now driven by --testflag;
--test-undo just tells how to stop (flush data, flush log, nothing).
- ma_test_recovery: testing of the UNDO phase, more testing of the
REDO phase, identification of a bug.


storage/maria/ma_blockrec.c:
  - bugfix: execution of UNDO_ROW_DELETE didn't store the correct
  checksum into the row (leading to "maria_chk -r" eliminating the
  re-inserted row, net effect was that rollback appeared to have
  rolled back no deletion). Reason was that write_block_record() used
  info->cur_row.checksum, while "row" can be != &info->cur_row
  (case of UNDO_ROW_DELETE). After fixing this, problems with
  _ma_update_block_record() appeared; indeed checksum was computed
  by  allocate_and_write_block_record() while _ma_update_block_record()
  directly calls write_block_record(). Solution is to compute checksum
  in write_block_record() instead.
  - when executing an UNDO, we now pass the LSN of the _previous_ UNDO
  to block_format functions. This LSN can be 0 (if the being-executed UNDO
  was the transaction's first UNDO), so "undo_lsn==0" cannot work
  anymore to indicate "this is not UNDO work". Using undo_lsn==LSN_ERROR
  instead (this is an impossible LSN).
  - store into CLR_END the type of log record which was undone
  (INSERT/UPDATE/DELETE); needed for Recovery to know if/how it has
  to update state.records if it sees this CLR_END in the REDO phase.
  - when writing the CLR_END in _ma_apply_undo_row_insert(),
  the place to store file's id is log_data+LSN_STORE_SIZE.
  - in _ma_apply_undo_row_insert(), the records-- is moved
  to a hook when writing the CLR_END (this way it is under log's mutex
  which is needed for "recovery of the state")
storage/maria/ma_loghandler.c:
  - all UNDOs, and CLR_END, start with the LSN of another UNDO; so
  we can declare them "compressed".
  - write_hook_for_clr_end() to set trn->undo_lsn (to the previous
  UNDO's LSN) under log's lock (like UNDOs set trn->undo_lsn under log's
  lock), and also update, if appropriate, state.records.
  - reset share->id to 0 when deassigning; not useful for now but
  sounds logical.
storage/maria/ma_recovery.c:
  - if no table is found for a REDO, it's not an error; for an UNDO, it is
  - in the REDO phase, when we see a CLR_END we must update trn->undo_lsn
  and sometimes state.records.
  - in the UNDO phase, when we execute an UNDO_ROW_INSERT:
    * update trn->undo_lsn only after executing the record
    * store the _previous_ undo_lsn into the CLR_END
  - at the end of the REDO phase, when we recreate TRN objects, they
  have already their long id in the log (either via a
  LOGREC_LONG_TRANSACTION_ID, or in a checkpoint record), don't write
  a new, useless LOGREC_LONG_TRANSACTION_ID for them.
storage/maria/ma_test1.c:
  * where to stop execution is now driven by --testflag and not --test-undo
  (ma_test2 already has --testflag for the same purpose). This allows
  us to do a clean stop (with commit) at any point.
  * --test-undo=# tells how to abort (flush all pages (which implies
  flushing log) or only log or nothing); all such "ways of crashing"
  are tested in ma_test_recovery
storage/maria/ma_test_recovery:
  * Testing execution of UNDOs, with and without BLOBs.
  * Testing idempotency of REDOs.
  * See @todo for a probable bug with BLOBs.
  * maria_chk -rq instead of -r, as with -q it nicely stops on any
  problem in the data file (like the checksum bug see comment of
  ma_blockrec.c).
  * Testing if log was written by UNDO phase (often expected),
  not written by REDO phase (always expected).
  * Less output on the screen, compares with expected output in the end.
  * some shell thingies like "set --" and $# are courtesy of
  Danny and Pekka.
storage/maria/maria_read_log.c:
  when only displaying the records, don't do an UNDO phase
storage/maria/ma_test_recovery.expected:
  This is the expected output of a great part of ma_test_recovery.
  ma_test_recovery compares its output to the expected output
  and tells if different.
  If we look at this file it mentions differences in checksum
  (normal, it's not recovered yet) and in records count
  (getting a correct records' count when recovery starts on an
  already existing table, like when testing rollback,
  is coded but not yet pushed).
2007-09-06 16:04:36 +02:00
unknown
ed34d91121 Make events.test more robust against timing issues.
mysql-test/t/events.test:
  Wait until event scheduler thread reaches exactly the same state
  which later appears in the results of select from processlist.
2007-09-06 15:57:36 +04:00
unknown
c626f660de Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-new-ndb
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
2007-09-06 10:23:14 +02:00
unknown
435bad16e3 Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.1-new-ndb
into  perch.ndb.mysql.com:/home/jonas/src/51-ndb
2007-09-06 07:40:54 +02:00
unknown
91bf9887b8 Merge rburnett@bk-internal.mysql.com:/home/bk/mysql-5.0-build
into  xp64.:C:/work/mysql-5.0-build


libmysql/libmysql.c:
  Auto merged
2007-09-05 16:32:38 -05:00
unknown
464f3833d1 Adding batch files for building with nmake make files
libmysql/libmysql.c:
  remove the duplicate call to DBUG_ENTER
win/build-nmake-x64.bat:
  New BitKeeper file ``win/build-nmake-x64.bat''
win/build-nmake.bat:
  New BitKeeper file ``win/build-nmake.bat''
2007-09-05 16:30:38 -05:00