Commit graph

6925 commits

Author SHA1 Message Date
unknown
fdfb10f2fb 2 minor edits, plus
fix for BUG#1113 "INSERT into non-trans table SELECT ; ROLLBACK" does not send warning"
and
fix for BUG#873 "In transaction, INSERT to non-trans table is written too early to binlog".
Now we don't always write the non-trans update immediately to the binlog;
if there is something in the binlog cache we write it to the binlog cache
(because the non-trans update could depend on a trans table which was modified
earlier in the transaction); then in case of ROLLBACK, we write the binlog
cache to the binlog, wrapped with BEGIN/ROLLBACK.
This guarantees that the slave does the same updates.
For ROLLBACK TO SAVEPOINT: when we execute a SAVEPOINT command we write it
to the binlog cache. At ROLLBACK TO SAVEPOINT, if some non-trans table was updated,
we write ROLLBACK TO SAVEPOINT to the binlog cache; when the transaction
terminates (COMMIT/ROLLBACK), the binlog cache will be flushed to the binlog
(because of the non-trans update) so we'll have SAVEPOINT and ROLLBACK TO
SAVEPOINT in the binlog.

Apart from this rare case of updates of mixed table types in transaction, the
usual way is still clear the binlog cache at ROLLBACK, or chop it at
ROLLBACK TO SAVEPOINT (meaning the SAVEPOINT command is also chopped, which
is fine).
Note that BUG#873 encompasses subbugs 1) and 2) of BUG#333 "3 binlogging bugs when doing INSERT with mixed InnoDB/MyISAM".


client/mysqldump.c:
  Minor edit: one CHANGE MASTER with 2 arguments instead of 2 CHANGE MASTER with one argument each.
mysql-test/r/rpl_loaddata.result:
  result update
mysql-test/t/rpl_loaddata.test:
  minor edit: simplifying the test.
sql/handler.cc:
  Fix for BUG#873. See comments in code, and the description of the changeset.
sql/log.cc:
  * Previously, if a query updated a non-transactional table we wrote it immediately
  to the real binlog. This causes a bug when the update is done inside a transaction
  and uses the content of an updated transactional table (because this makes
  a wrong order of queries in the binlog). So if the binlog cache is not empty,
  we write the query to the binlog cache; otherwise we can write it to the binlog.
  * Previously, when we flushed the binlog cache to the binlog, we wrapped it
  with BEGIN/COMMIT. Now it's also possible to wrap it with BEGIN/ROLLBACK, to handle
  transactions which update both transactional and non-transactional tables.
sql/log_event.cc:
  The slave thread can leave a transaction if COMMIT or if ROLLBACK.
sql/sql_class.h:
  prototype
sql/sql_insert.cc:
  Fix for BUG#1113:
  this was because the INSERT SELECT code did not set OPTION_STATUS_NO_TRANS_UPDATE.
sql/sql_parse.cc:
  Don't send ER_WARNING_NOT_COMPLETE_ROLLBACK if this is the SQL slave thread (see comments).
2003-08-22 15:39:24 +02:00
unknown
e3ceec7136 Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into narttu.mysql.fi:/my/mysql-4.0


client/mysqltest.c:
  Auto merged
sql/sql_load.cc:
  Auto merged
2003-08-22 04:08:16 +03:00
unknown
64393d7e24 Move test that uses many tables (in query_cache.test) to separate test so that we can get it 'skipped' instead of 'failed' on system where we can't open many files.
client/mysqltest.c:
  Fix that LET can be used with queries that return multiple columns
libmysql/errmsg.c:
  Extend socket name to 100 characters in error messages
libmysql/libmysql.c:
  Reset some variables to make ensure that we can call mysql_server_init()/mysql_server_end() many times
mysql-test/mysql-test-run.sh:
  Set open-files-limit to 1024
mysql-test/r/loaddata.result:
  Add test case for LOAD DATA bug report (was not a bug)
mysql-test/r/query_cache.result:
  Move test with many tables to separate test
mysql-test/r/select_safe.result:
  Make test repeatable
mysql-test/t/loaddata.test:
  Add test case for LOAD DATA bug report (was not a bug)
mysql-test/t/query_cache.test:
  Move test with many tables to separate test
mysql-test/t/select_safe.test:
  Make test repeatable
sql/field.cc:
  Portability fix for gcc 3.3
sql/mysqld.cc:
  Store in open_files_limit the true number of files we can open (if system supports it)
sql/sql_load.cc:
  Safety fix
2003-08-22 04:07:40 +03:00
unknown
ec4d0edf85 merged
extra/resolveip.c:
  Auto merged
sql/item.cc:
  Auto merged
2003-08-21 21:39:22 +02:00
unknown
b8de463ea1 Bug #1064: SHOW CREATE TABLE: avoid allocations for simple tables, old client compatibility
sql/item.h:
  fixups
sql/sql_show.cc:
  avoid allocations for simple tables
  old client compatibility
2003-08-21 21:14:02 +02:00
unknown
8b2bc4362c Merge bk-internal:/home/bk/mysql-3.23/
into serg.mylan:/usr/home/serg/Abk/mysql
2003-08-21 20:21:36 +02:00
unknown
87b1e4cec6 fix for SHOW CREATE TABLE to report corerct second field's length 2003-08-21 20:21:07 +02:00
unknown
11b6ebf193 Merge bk-internal:/home/bk/mysql-4.0/
into serg.mylan:/usr/home/serg/Abk/mysql-4.0
2003-08-21 20:15:42 +02:00
unknown
c7614597ab crash BUG#1116 fixed 2003-08-21 20:13:26 +02:00
unknown
77a688766f - added missing option "--without-embedded" to be able to compile without
the embedded server (it was missing in the previous push)
2003-08-21 12:15:22 +02:00
unknown
943233632e Merge bk-internal:/home/bk/mysql-4.0/
into serg.mylan:/usr/home/serg/Abk/mysql-4.0
2003-08-21 10:45:43 +02:00
unknown
c7f517b53f sorted 2003-08-21 10:44:17 +02:00
unknown
fd9b177564 Yesterday I removed process_io_create_file; I shouldn't have.
Let's say the lack of comments did not help me ;)
Copying it back again and adding comments; now 3.23->4.0
replication of LOAD DATA INFILE works again.


sql/slave.cc:
  Enabling again process_io_create_file
2003-08-21 10:24:37 +02:00
unknown
eb1fb90006 Result updates after Dmitri's and my changes to logging with --log-slave-updates.
Since my changes, rpl_log.test, whose result file depends on file_id, became
non-repeatable, i.e. file_id on slave in SHOW BINLOG EVENTS
changed depending on the order of tests (sometimes 1, sometimes 5).
Which is logical: as now the slave does not copy Create_file and Exec_load from
the relay log (i.e from the master's binlog) to the slave's binlog, but
instead lets mysql_load() do the logging, the file_id is now the one whic
was used on the slave. Before it was the one which was used on the master,
and by chance the master was always restarted for this test because there's
a -master.opt file, so file_id on the master is always 1. But now file_id is
from the slave so we need to restart the slave. That's why I add an (empty)
-slave.opt file. I could have used 'server_stop/start slave', but this
would have required the manager, so most of the time mysql-test-run silently
skip the test which makes it useless. And I want this test to be run !


mysql-test/r/rpl_loaddata.result:
  Orig_log_pos is like Pos since Dmitri's good change for BUG#1086
mysql-test/r/rpl_log.result:
  Orig_log_pos is like Pos now, because Exec_load events are not directly copied
  by the slave from the relay log to the slave's binary log (these events
  are written by mysql_load() now).
mysql-test/t/rpl_log.test:
  A comment
2003-08-21 00:23:39 +02:00
unknown
d52145da3d Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/mysql_src/mysql-4.0


sql/log.cc:
  Auto merged
sql/log_event.cc:
  Auto merged
sql/slave.cc:
  Auto merged
2003-08-20 23:25:58 +02:00
unknown
1542fffb34 First commit for fixing BUG#1100
"LOAD DATA INFILE is badly filtered by binlog-*-db rules".
There will probably be a second final one to merge Dmitri's changes
to rpl_log.result and mine.
2 new tests:
rpl_loaddata_rule_m : test of logging of LOAD DATA INFILE when the master has binlog-*-db rules,
rpl_loaddata_rule_s : test of logging of LOAD DATA INFILE when the slave has binlog-*-db rules and --log-slave-updates.


mysql-test/r/rpl_loaddata.result:
  Test that logging of LOAD DATA INFILE is done on the slave
mysql-test/t/rpl_loaddata.test:
  Test that logging of LOAD DATA is done on the slave
sql/log.cc:
  debug info
sql/log_event.cc:
  * Append_block, Exec_load and Delete_file now have a member 'db' like Create_file.
  This member is filled by mysql_load(). It is used for filtering by binlog-*-db rules,
  that's all. It's not written to the binlog, and so can't be read from the binlog.
  In other words, that's temporary info which is stored in the event and lost when
  it is written and deleted.
  * Better error messages in Append_block et al. events.
  * The slave now logs (log-slave-updates) the Create_file et al. events in mysql_load()
  (they are not directly copied from the events in the relay log, because this
  prevented filtering by binlog-*-db rules). Before, mysql_load() in the slave
  did no logging, now it does the logging, as in any regular thread.
sql/log_event.h:
  New member 'db' for Append_block et al. events.
sql/slave.cc:
  Removed useless code. Why was it useless:
  - CREATE_FILE_EVENT is not defined in 3.23. It appeared in 4.0.
  - in queue_old_event(), which is called only if the master is 3.23, we had a
  case CREATE_FILE_EVENT:
  so this case can be removed.
  - this case was the only caller of process_io_create_file() so this function
  can be removed.
sql/sql_load.cc:
  Pass the db to events, so that they can be well filtered.
sql/sql_repl.cc:
  Pass the db to events so that they can be well filtered.
2003-08-20 23:24:45 +02:00
unknown
c1e6d2d1bf sql_union.cc:
Merge fix


sql/sql_union.cc:
  Merge fix
2003-08-20 20:16:37 +03:00
unknown
7b9018920b Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/dlenev/src/mysql-4.0-bg-1086
2003-08-20 18:16:08 +04:00
unknown
83374580c2 Fixed problem with undefined assert symbol 2003-08-20 17:16:07 +03:00
unknown
924a9708c9 Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/dlenev/src/mysql-4.0-bg-1086
2003-08-20 17:25:45 +04:00
unknown
de5d47c35d Fixed some varnings from valgrind
Set min value of max_allowed_packet to 1024
Fixed problem with UNION's without braces and SQL_CALC_FOUND_ROWS, LIMIT #,#
and ORDER BY...LIMIT


include/m_string.h:
  Added memcpy_overlap() to avoid warnings when using valgrind on memcpy(A,A,...)
myisam/mi_create.c:
  Fixed comment
myisam/mi_search.c:
  Fix warning from valgrind
myisam/mi_write.c:
  Indentation fix
mysql-test/mysql-test-run.sh:
  Add options handled by general skip- option
mysql-test/r/packet.result:
  Update results after change to mysqld (min max_allowed_packet length is now 1024)
mysql-test/r/union.result:
  Added testing of UNION with SQL_CALC_FOUND_ROWS
mysql-test/t/packet.test:
  Update results after change to mysqld (min max_allowed_packet length is now 1024)
mysql-test/t/union.test:
  Added testing of UNION with SQL_CALC_FOUND_ROWS
sql/field.cc:
  Fix to remove waarning from valgrind
sql/ha_innodb.cc:
  Remove wrong include file
sql/item_cmpfunc.cc:
  Safety fix to handle EOM conditions in IN
sql/item_sum.cc:
  Fixed prototype for update_field() (argument was alwys 0)
sql/item_sum.h:
  Fixed prototype for update_field() (argument was alwys 0)
sql/item_uniq.h:
  Fixed prototype for update_field() (argument was alwys 0)
sql/log.cc:
  Indentation fix
sql/mysqld.cc:
  Set min value of max_allowed_packet to 1024 (to avoid it getting set to 0)
sql/net_serv.cc:
  Indentation changes + trivial optimization
sql/sql_select.cc:
  Fixed prototype for update_field() (argument was alwys 0)
sql/sql_union.cc:
  Fixed problem with UNION's without braces and
  - SQL_CALC_FOUND_ROWS
  - LIMIT #,#
  - ORDER BY ... LIMIT
2003-08-20 16:25:44 +03:00
unknown
db2b279f70 sql_union.cc:
Fix for SQL_CALC_FOUND_ROWS in UNION's


sql/sql_union.cc:
  Fix for SQL_CALC_FOUND_ROWS in UNION's
2003-08-20 16:14:01 +03:00
unknown
d140ed2d03 func_test.result, func_test.test:
Test case for the LEAST() bug in LEFT JOIN


mysql-test/t/func_test.test:
  Test case for the LEAST() bug in LEFT JOIN
mysql-test/r/func_test.result:
  Test case for the LEAST() bug in LEFT JOIN
2003-08-20 15:52:43 +03:00
unknown
22ad5163e9 item_func.h:
Fix for a bug with LEAST() in WHERE clause
ha_innodb.cc:
  Fix for a configure bug
multi_update.result, multi_update.test:
  Fix for the update with NULL's in the result set
sql_update.cc:
  Fix for the update with NULL's in the result set
   Fix for the update with NULL's in the result set
   Fix for the update with NULL's in the result set


sql/sql_update.cc:
  Fix for the update with NULL's in the result set
   Fix for the update with NULL's in the result set
   Fix for the update with NULL's in the result set
mysql-test/t/multi_update.test:
  Fix for the update with NULL's in the result set
mysql-test/r/multi_update.result:
  Fix for the update with NULL's in the result set
sql/ha_innodb.cc:
  Fix for a configure bug
sql/item_func.h:
  Fix for a bug with LEAST() in WHERE clause
2003-08-20 15:33:21 +03:00
unknown
2d2db894d4 comment added 2003-08-20 12:27:06 +02:00
unknown
e3541b8a97 Fix for BUG#1086. Now we don't preserve event's log_pos through
log-slave-updates since this causes unexpected values in 
Exec_master_log_pos in A->B->C replication setup, synchronization
 problems in master_pos_wait()... 
Still this brokes some functionality in sql/repl_failsafe.cc 
(but this file is not used now)


mysql-test/r/rpl_log.result:
  SHOW BINLOG EVENTS for binlog on slave should give the same 
  Orig_log_pos and Pos values
sql/log_event.cc:
  Do not propagate our master's log pos to our bin log
sql/repl_failsafe.cc:
  Added comment about broken SHOW NEW MASTER
sql/slave.cc:
  Do not propagate our master's log pos to our bin log
sql/sql_class.cc:
  THD::log_pos is no longer needed
sql/sql_class.h:
  THD::log_pos is no longer needed
sql/sql_parse.cc:
  Added comment about broken SHOW NEW MASTER
2003-08-20 03:38:31 +04:00
unknown
9c5c6dafa1 Merge bk-internal:/home/bk/mysql-4.0/
into serg.mylan:/usr/home/serg/Abk/mysql-4.0
2003-08-19 20:58:16 +02:00
unknown
018e7524b8 FT-NL bugfix - ignore words that appear more than in 2mio rows to avoid tree overflow.
optimization: abort search for common (>50% rows) words earlier.
2003-08-19 20:53:45 +02:00
unknown
67301c606c Merge mysql.com:/space/my/mysql-4.0
into mysql.com:/space/my/mysql-4.0-build
2003-08-19 18:35:31 +02:00
unknown
be9744817c - Added a missing directory variable definition to the Bootstrap script.
Build-tools/Bootstrap:
   - defined $opt_directory to be the present working directory. No clue how
     this worked before...
2003-08-19 18:34:44 +02:00
unknown
d43a347db1 Use my_b_append instead of my_b_write on a SEQ_READ_APPEND cache, when we write
the first 4 bytes of the relay log. Indeed comments in mysys/mf_iocache.c 
say we must always use my_b_append for such a cache.
This *could* avoid a very rare assertion failure which is: 
030524 19:32:38  Slave SQL thread initialized, starting replication in log 'FIRST' at position 0, relay log '/
users/gbichot/4.1.1/mysql-test/var/log/slave-relay-bin.000001' position: 4
030524 19:32:38  next log '/users/gbichot/4.1.1/mysql-test/var/log/slave-relay-bin.000002' is currently active
mysqld: mf_iocache.c:701: _my_b_seq_read: Assertion `pos_in_file == info->end_of_file' failed.
and which seemed to happen always when the SQL thread and/or the I/O thread
were at position 4 in a relay log.


include/my_sys.h:
  moving a function from log_event.cc so that it can be widely used
mysys/mf_iocache.c:
  moving a function from log_event.cc so that it can be widely used
sql/log.cc:
  my_b_write should not be used on a SEQ_READ_APPEND cache, one should use my_b_append
  (otherwise there could be some locking problems).
sql/log_event.cc:
  moved to mysys/mf_iocache.c for wider use.
  A typo.
2003-08-19 17:00:36 +02:00
unknown
fe0e546434 Fix for BUG#1096 which is:
"mysqlbinlog does not comment the original LOAD DATA INFILE if it has a "use xx""


client/mysqlbinlog.cc:
  a comment
sql/log_event.cc:
  in mysqlbinlog we want to have a leading '#' before LOAD DATA INFILE when we
  print a Create_file event.
  This was not done properly when the query had *2* lines: only the "use db" got
  commented.
  To fix this I had to add an argument to Load_log_event::print, it could not be
  handled in Create_file_log_event::print alone.
sql/log_event.h:
  prototype
2003-08-19 15:46:47 +02:00
unknown
4392456bea Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/mysql_src/mysql-4.0
2003-08-19 15:22:36 +02:00
unknown
245da39360 Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mashka.mysql.fi:/home/my/mysql-4.0
2003-08-19 16:17:54 +03:00
unknown
c7578701e3 Fixes for BUG#1091,1092,1093. Synopsis of these bugs:
mysqlbinlog segfaults if --position is just before Exec_load event
mysqlbinlog prints uncommented warnings if --database and compiled with debug
mysqlbinlog --database does not filter LOAD DATA INFILE


client/mysqlbinlog.cc:
  * Don't stop in Append_block when there is no Create_file. Just print a warning.
  * Test LOAD DATA (Create_file) against --database.
  * Don't print "no skip" when you don't skip an event when using --database (it
  causes syntax errors in 'mysql').
  * Print a warning in Exec_load if there is no Create_file.
2003-08-19 15:12:44 +02:00
unknown
de9a0cbe2f Fix test case 2003-08-19 16:03:18 +03:00
unknown
a8aaa3ef46 - Do-pkg can now create a separate package including a MySQL Startup Item
for Mac OS X and add it to the installation Disk Image.


Build-tools/Do-pkg:
   - added code to build the StartupItem PKG along with the MySQL PKG and
     add it to the resulting Disk Image (can be skipped with --skip-si)
   - lots of cleanups (use more builtin Perl functions instead of 
     subprocesses, enable a full dry run without errors)
support-files/MacOSX/StartupItem.Info.plist:
   - removed IFPkgFlagOverwritePermissions and IFPkgFlagUseUserMask
2003-08-19 13:57:58 +02:00
unknown
9194f5ef33 - Optimized and cleaned up the Do-rpm and Bootstrap Perl scripts
- Enhanced Do-rpm to support building RPMs with different compilers
   and options


Build-tools/Bootstrap:
   - small optimization (use builtin Perl cwd() function instead of running
     "pwd" twice)
Build-tools/Do-rpm:
   - added options to handle different compilers and compile flags (e.g. when
     compiling on IA64 using the Intel ecc compiler)
   - code cleanups (use more builtin Perl functions instead of forking
     subrocesses)
   - don't try to probe various distribution-specific RPM options - query rpm
     directly instead
   - Pass the MySQL version as an argument, not an option (as it's not
     optional anyway)
2003-08-19 13:49:53 +02:00
unknown
67f4bfd132 Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-3.23
into mysql.com:/home/mysql_src/mysql-3.23
2003-08-18 20:03:01 +02:00
unknown
2f27739e06 Fix for 64-bit CPUs (u_long is 64 bit there, but in_addr_t is always uint32).
That's to make resolveip work on our FreeBSD-5.0/Sparc64 build host.


extra/resolveip.c:
  Fix for 64-bit CPUs (u_long is 64 bit there, but in_addr_t is always uint32).
2003-08-18 20:01:38 +02:00
unknown
01441bc590 Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-4.0
into laptop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.0
2003-08-18 01:56:31 +03:00
unknown
79e3476071 fixed typo in last push 2003-08-17 14:37:26 +03:00
unknown
ff012aedab Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into narttu.mysql.fi:/my/mysql-4.0


sql/sql_parse.cc:
  Auto merged
2003-08-17 14:10:45 +03:00
unknown
0eaf4d8d7e Fix mutex handling in SHOW_VARIABLES (key_buffer_size was not properly protected)
Changed some non fatal myisamchk error messages to warnings


myisam/myisamchk.c:
  Change error -> warning
sql/handler.cc:
  Add mutex around keybuff_size usage
sql/mysql_priv.h:
  Indentation update
sql/set_var.cc:
  Add mutex around longlong variable usage
sql/sql_parse.cc:
  Fix mutex handling in SHOW_VARIABLES
sql/sql_show.cc:
  Fix mutex handling in SHOW_VARIABLES
2003-08-17 14:10:15 +03:00
unknown
5ef233aa39 Fixed a limitation bug in mysqlimport. sql_statement was designed to
contain max 1280 characters, but sometimes in rare cases when --columns
was used, more than 1280 characters was needed. This is case when a lot
of columns was specified using this option. Raised the max value to 8448,
which should be enough.
2003-08-16 17:03:48 +03:00
unknown
4363c28c24 - Added some files to support-files/MacOSX to enable building the Mac OS X
startup item: MySQL (the startup script), StartupItem.Description.plist,
   StartupItem.Info.plist (PKGMaker control files), StartupItem.postinstall
   (post-installation script for the Startup Item package)
 - modified support-files/MacOSX/Makefile.am to include the newly added files
   in the source distribution


BitKeeper/etc/ignore:
  Added scripts/make_win_src_distribution to the ignore list
support-files/MacOSX/Makefile.am:
  - added the Mac OS X StartupItem files to the source distribution
2003-08-15 14:55:05 +02:00
unknown
02d844ee8c Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mashka.mysql.fi:/home/my/mysql-4.0
2003-08-15 10:17:27 +03:00
unknown
ccd828900b Cleanups to recent patches
Fix packet error when using wrong GRANT command


include/config-win.h:
  Changed back to test for HAVE_SETFILEPOINTER instead of operating system
mysql-test/r/grant.result:
  Extra test to catch wrong packet bug
mysql-test/t/grant.test:
  Extra test to catch wrong packet bug
mysys/my_chsize.c:
  Cleanup
sql/opt_range.cc:
  Fix to recent BETWEEN patch
sql/sql_acl.cc:
  Fix packet error when using wrong GRANT command
sql/sql_select.cc:
  Cleanups
  Added not critical out-of-memory check
2003-08-15 09:54:19 +03:00
unknown
902111963e Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-4.0
into laptop.sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.0
2003-08-15 00:17:43 +03:00
unknown
9ac61d15fa make_win_src_distribution.sh:
Add --zip option for finer grain control over what package formats are created
Bootstrap:
  Create both Windows source packages


Build-tools/Bootstrap:
  Create both Windows source packages
scripts/make_win_src_distribution.sh:
  Add --zip option for finer grain control over what package formats are created
2003-08-13 19:32:34 +02:00