Commit graph

1435 commits

Author SHA1 Message Date
unknown
8feedada9d Merge sinisa@bk-internal.mysql.com:/home/bk/mysql-4.0
into sinisa.nasamreza.org:/mnt/work/mysql-4.0
2004-12-23 21:11:31 +02:00
unknown
8ccfad7636 Fix for a bug #7495
mysql-test/r/func_str.result:
  result for test case for a bug in QUOTE() (Bug #7495)
mysql-test/t/func_str.test:
  test case for a bug in QUOTE() (Bug #7495)
sql/item_strfunc.cc:
  a better fix for a QUOTE() bug (Bug #7495)
2004-12-23 21:08:54 +02:00
unknown
4a5ca0bc63 Make GRANTs, which change SSL attributes and/or user limits,
to behave well on 5.0 tables (well now you can't use tables from 4.1
and 5.0 with 4.0 because former use utf8, but still it is nice to have
similar code in acl_init() and replace_user_table()).
This also will make such GRANTs working in 5.0 (they are broken now).


mysql-test/r/grant.result:
  Added test for GRANT which manipulates user limits.
mysql-test/t/grant.test:
  Added test for GRANT which manipulates user limits.
2004-12-23 21:59:36 +03:00
unknown
74cc635a7c A fix for the bug #7495
mysql-test/r/func_str.result:
  A result for test case for the bug #7495 involving either LTRIM() 
  or TRIM() within QUOTE() function.
mysql-test/t/func_str.test:
  A test case for the bug #7495 involving either LTRIM() or TRIM() 
  within QUOTE() function.
sql/item_strfunc.cc:
  Changes for LTRIM() and TRIM() functions that aleviate the bug  
  entirely.
2004-12-22 21:31:17 +02:00
unknown
63e4725503 Fix test 2004-12-18 11:57:17 +00:00
unknown
4f9a0a06a8 Bug#7391 - Multi-table UPDATE security regression
Add in missing privilege checks. 
  Tests for the privileges.


mysql-test/r/grant.result:
  Bug#7391 - Multi-table UPDATE security regression
    Tests column, table and db level access
mysql-test/t/grant.test:
  Bug#7391 - Multi-table UPDATE security regression
    Tests column, table and db level access
sql/sql_update.cc:
  Bug#7391 - Multi-table UPDATE security regression
    Add in missing privilege checks.
2004-12-18 02:07:32 +00:00
unknown
8722bb9a09 Moved drop table statement to the end.
mysql-test/r/update.result:
  moved drop statement
mysql-test/t/update.test:
  moved drop statement
2004-12-16 18:44:39 +02:00
unknown
da2c55b3ab Test for BUG#6054. The bug itsel is fixed by the fix for #5837.
mysql-test/r/update.result:
  test results
mysql-test/t/update.test:
  bug test
2004-12-16 18:04:51 +02:00
unknown
b18e8c92bc Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/dbdata/psergey/mysql-4.0-bug6976
2004-12-11 20:02:45 +03:00
unknown
b5c119e7c0 Fix for BUG#6976:
In Item_ref::Item_ref set maybe_null (and other fields fix_fields sets) to be the 
same as in (*ref), because Item_ref::fix_fields() will not be called.  Previously 
maybe_null was 0 always and this produced a bogus state where 
maybe_null==0 && is_null() == true 
which broke evaluation for some upper-level Items, like AND and OR.


mysql-test/r/group_by.result:
  Test for BUG#6976
mysql-test/t/group_by.test:
  Test for BUG#6976
sql/item.cc:
  Comment added
sql/item.h:
  Fix for BUG#6976:
    in Item_ref::Item_ref(Item**...) fix all fields because fix_fields() will not be called.
2004-12-11 19:59:09 +03:00
unknown
8e4251dd85 Fix for BUG#5837 - attempt 3.
Call mark_as_null_row in join_read_const and join_read_system.


mysql-test/r/multi_update.result:
  Testcase for BUG#5837
mysql-test/t/multi_update.test:
  Testcase for BUG#5837
sql/table.h:
  Added comments
2004-12-11 15:51:52 +03:00
unknown
9286d1c145 Prevent adding 'CREATE TABLE .. SELECT' query to the binary log when the
insertion of new records partially failed. It would get logged because of the
logic to log a partially-failed 'INSERT ... SELECT' (which can't be rolled back
in non-transactional tables), but 'CREATE TABLE ... SELECT' is always rolled
back on failure, even for non-transactional tables. (Bug #6682)
(Original fix reimplemented after review by Serg and Guilhem.)


mysql-test/t/insert_select.test:
  Add test case for Bug #6682
mysql-test/r/insert_select.result:
  Add results for test case for Bug #6682
sql/sql_table.cc:
  moved tmp_disable_binlog() and reenable_binlog macros to sql/sql_class.h
sql/sql_insert.cc:
  disable binlog during call to super's ::send_error in select_create class
sql/sql_class.h:
  add select_create::send_error()
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2004-12-03 00:05:11 +01:00
unknown
a845e882fd A fix (bug #6878: Crash with engine=memory).
heap/hp_open.c:
  A fix (bug #6878: Crash with engine=memory).
  Record length should be >= sizeof(byte*).
2004-12-02 14:34:53 +04:00
unknown
352ad8156c two-line fix for BUG#6732 "FLUSH TABLES WITH READ LOCK + COMMIT makes next FLUSH...LOCK hang forever"
(originally reported as "second run of innobackup hangs forever and can even hang server").
Plus testcase for the bugfix and comments about global read locks.


mysql-test/r/flush_block_commit.result:
  result update
mysql-test/t/flush_block_commit.test:
  testing bugfix (originally: second run of innobackup hangs)
sql/lock.cc:
  When we are in start_waiting_global_read_lock(), if we ourselves have
  the global read lock, there is nothing to start. This makes a pair with how 
  wait_if_global_read_lock() behaves when we ourselves have the global read lock.
  Previously, start_waiting_global_read_lock() decremented protect... whereas wait_if_global_read_lock()
  hadn't incremented it => very wrong => hangs.
  Descriptive comments on how global read lock works.
2004-11-30 22:20:52 +01:00
unknown
60af920628 Fixes while reviewing code
(Cleanups and better bug fixes)


mysql-test/r/select.result:
  Fixed test after wrong merge
mysql-test/t/select.test:
  Fixed test after wrong merge
scripts/mysql_fix_privilege_tables.sh:
  Don't read defaults files
sql/item_cmpfunc.cc:
  Fix wrong value for not_null_tables_cache
sql/item_cmpfunc.h:
  Remove wrong patch (flags are set in fix_length_and_dec())
sql/item_func.h:
  Fix wrong value for not_null_tables_cache
sql/slave.cc:
  Fixed indentation
2004-11-26 02:31:22 +02:00
unknown
fecd27a106 Merge mysql.com:/home/timka/mysql/src/4.0-virgin
into mysql.com:/home/timka/mysql/src/4.0-master


BitKeeper/etc/logging_ok:
  auto-union
2004-11-25 13:25:35 +02:00
unknown
0dcb55f470 Merge for BUG#3759 which was missing from the main tree for some reason.
BitKeeper/etc/logging_ok:
  auto-union
sql/item_cmpfunc.h:
  Auto merged
mysql-test/r/select.result:
  Merge for BUG#3759
mysql-test/t/select.test:
  Merge for BUG#3759
2004-11-25 11:37:28 +02:00
unknown
467c481479 Merge mysql.com:/space/bkroot/mysql-4.0
into mysql.com:/space/bk/b6148-mysql-4.0


BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2004-11-25 09:38:52 +01:00
unknown
6f2cf12aa6 Fix for Bug#6148. Only rewind read position in binary log when the
slave SQL thread is started.


sql/slave.cc:
  Adding threads to init as parameter to init_master_info.
  Only rewind read position when starting SQL thread.
sql/slave.h:
  Adding threads to init as parameter to init_master_info.
  Only rewind read position when starting SQL thread.
sql/sql_repl.cc:
  Adding threads to init as parameter to init_master_info.
  Only rewind read position when starting SQL thread.
sql/repl_failsafe.cc:
  Adding threads to init as parameter to init_master_info.
  Only rewind read position when starting SQL thread.
2004-11-25 09:26:45 +01:00
unknown
e65956d067 Merge bk-internal:/home/bk/mysql-4.0/
into serg.mylan:/usr/home/serg/Abk/mysql-4.0
2004-11-22 18:47:23 +01:00
unknown
2934e7ebe6 ft_boolean_search.c:
bug#6705 - (+trunc1* +trunc2*)
fulltext.test, fulltext.result:
  bug#6705


mysql-test/r/fulltext.result:
  bug#6705
mysql-test/t/fulltext.test:
  bug#6705
myisam/ft_boolean_search.c:
  bug#6705 - (+trunc1* +trunc2*)
2004-11-22 18:37:30 +01:00
unknown
801a2fa308 Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/dlenev/src/mysql-4.0-bg6439
2004-11-19 17:54:14 +03:00
unknown
835e0159b6 test for bug#5528 2004-11-17 13:38:35 +01:00
unknown
e1509cf781 Proposed fix for bug #6439 "from_unixtime() function returns wrong datetime
values for too big argument".

Added range checking for from_unixtime() argument, cleaned up code 
a bit.


mysql-test/r/func_time.result:
  Test for bug #6439 "from_unixtime() function returns wrong datetime 
  values for too big argument".
mysql-test/t/func_time.test:
  Test for bug #6439 "from_unixtime() function returns wrong datetime 
  values for too big argument".
sql/item_timefunc.cc:
  Item_func_from_unixtime: 
    Added error range checking for function argument + small code clean up.
2004-11-15 16:11:13 +03:00
unknown
5cc756f6b9 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.0
into gw.mysql.r18.ru:/usr/home/ram/work/4.0.b6564
2004-11-12 12:38:07 +04:00
unknown
b19eb67f08 Bug#6123 - GRANT USAGE creates useless mysql.db row
Prevent creation of a row which grants no rights
  Test included


mysql-test/r/grant.result:
  Test for Bug#6123
mysql-test/t/grant.test:
  Test for Bug#6123
sql/sql_acl.cc:
  Bug#6123
    Prevent creation of useless row
2004-11-11 20:59:03 +00:00
unknown
baf1c89e3d A fix (bug #6564: QUOTE(NULL) returns NULL, not the string 'NULL') 2004-11-11 18:20:40 +04:00
unknown
4a56b28461 Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/mysql_src/mysql-4.0
2004-11-04 19:19:51 +01:00
unknown
e30bd1e48d Fix for BUG##5714 "Insert into MyISAM table and select ... for update]":
the fact that the transaction log is empty does not mean we're not in a transaction
(it could be BEGIN; SELECT * FOR UPDATE FROM ibtable: then we don't want to commit now, even if
the statement is a MyISAM update).
With a testcase.


mysql-test/r/mix_innodb_myisam_binlog.result:
  result update
mysql-test/t/mix_innodb_myisam_binlog.test:
  test update for a new bug
sql/log.cc:
  The fact that the transaction log is empty does not mean we're not in a transaction
  (it could be BEGIN; SELECT * FOR UPDATE: then we don't want to commit now).
2004-11-04 19:19:23 +01:00
unknown
d259ba4006 Fix for bug #6387 "Queried timestamp values do not match the inserted
value if server runs in time zone with leap seconds".

Now in my_gmt_sec() function we take into account difference between
our target and estimation in seconds part.


mysql-test/Makefile.am:
  Added mysql-test/std_data/Moscow_leap reuired by new timezone3.test
  to source distribution.
sql/time.cc:
  my_gmt_sec():
   When comparing our target broken-down datetime t value and proper 
   representation of our estimation *l_time we should take into account
   that they could differ in second part if we have time zone leap seconds.
   
   Also added comments about some assumptions used in this function.
2004-11-03 17:59:03 +00:00
unknown
3bdd7e77fd Fix when compiling without InnoDB
BitKeeper/deleted/.del-innodb-lock-master.opt~f76a4a1999728f87:
  Delete: mysql-test/t/innodb-lock-master.opt
2004-10-27 18:57:49 +03:00
unknown
e6e1600ec9 Check of temporary tables hiding for query fetched from QC (BUG#6084)
mysql-test/r/query_cache.result:
  hiding real table stored in query cache by temporary table
mysql-test/t/query_cache.test:
  hiding real table stored in query cache by temporary table
sql/sql_cache.cc:
  Check of temporary tables hiding for query fetched from QC
sql/sql_cache.h:
  Key length now stored in table record of query cache
2004-10-21 23:56:12 +03:00
unknown
ec8779e95a Fix test case for innodb-lock
mysql-test/r/innodb-lock.result:
  Fix test case (old one didn't test things correctly)
mysql-test/t/innodb-lock.test:
  Fix test case (old one didn't test things correctly)
mysys/thr_lock.c:
  More debugging information
sql/mysqld.cc:
  Enable innodb_table_locks as default, as otherwise there is a possibility for deadlocks
sql/sql_base.cc:
  More debug information
2004-10-20 16:04:28 +03:00
unknown
ed8ec2cf16 Code cleanups (done during review of new code)
Rename innodb_table_locks_old_behavior -> innodb_table_locks
Set innodb_table_locks to off by default to get same behaviour as in MySQL 4.0.20
(This means that Innodb ignore table locks by default, which makes it easier to combine MyISAM and InnoDB to simulate a transaction)


libmysql/libmysql.c:
  Use ulong instead of unsigned long
  Reuse _dig_vec()
myisam/myisampack.c:
  Simplify code
mysql-test/r/innodb-lock.result:
  new test case
mysql-test/t/innodb-lock.test:
  new test case
sql/ha_innodb.cc:
  Rename innodb_table_locks_old_behavior -> innodb_table_locks
sql/mysqld.cc:
  Rename innodb_table_locks_old_behavior -> innodb_table_locks
  Set this off by default to get same behaviour as in MySQL 4.0.20
sql/set_var.cc:
  Rename innodb_table_locks_old_behavior -> innodb_table_locks
sql/sql_class.h:
  Rename innodb_table_locks_old_behavior -> innodb_table_locks
2004-10-20 11:24:08 +03:00
unknown
a66a4dfb59 Merge gbichot@bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/mysql_src/mysql-4.0
2004-10-11 11:02:24 +02:00
unknown
c5f9a412ce Fix for BUG#5949 "error code 1223 in binlog when using innobackup":
when one connection had done FLUSH TABLES WITH READ LOCK, some updates, and then COMMIT,
it was accepted but my_error() was called and so, while client got no error, error was logged in binlog.
We now don't call my_error() in this case; we assume the connection know what it does.
This problem was specific to 4.0.21. The change is needed to make replication work with existing versions of innobackup.


sql/lock.cc:
  If a connection has done FLUSH TABLES WITH READ LOCK and now is doing COMMIT, don't give error
  (applies only if it's the same connection; others' COMMITs are still blocked).
2004-10-11 11:01:38 +02:00
unknown
95e1c07483 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.0
into gw.mysql.r18.ru:/usr/home/ram/work/4.0.b5733


sql/records.cc:
  Auto merged
2004-10-06 12:49:56 +05:00
unknown
7ce31065c6 Merge mysql.com:/home/mydev/mysql-4.0
into mysql.com:/home/mydev/mysql-4.0-bug4286


sql/sql_base.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_table.cc:
  Auto merged
2004-10-05 11:33:13 +02:00
unknown
52ee9687a2 Merge ltantony.rdg.cyberkinetica.homeunix.net:/usr/home/staff/repositories/mysql-4.0
into ltantony.rdg.cyberkinetica.homeunix.net:/usr/home/antony/work/bug4118


sql/sql_parse.cc:
  Auto merged
2004-10-03 00:25:09 +01:00
unknown
a49f5cae9a Bug#4118: multi-table UPDATE takes WRITE lock on read table
Ensures that WRITE lock is not obtained on all tables referenced.


mysql-test/r/lock_multi.result:
  Bug#4118
    New test for multi-update locking
mysql-test/r/multi_update.result:
  Bug#4118
    Fix test
mysql-test/t/lock_multi.test:
  Bug#4118
    New test for multi-update locking
mysql-test/t/multi_update.test:
  Bug#4118
    Fix test
sql/sql_parse.cc:
  Bug#4118
    Split multi-update to its own case statement in sql_parse.cc
sql/sql_update.cc:
  Bug#4118
    Overview of locking checking:    
      1. Open and acquire READ lock
      2. Check to see which tables need WRITE lock
      3. Unlock tables and relock
sql/sql_yacc.yy:
  Bug#4118
    Split multi-update to its own case statement in sql_parse.cc
2004-10-03 00:20:47 +01:00
unknown
dc3f3ce694 delete.result, delete.test:
A fix (bug #5733: Table handler error with self-join multi-table DELETE).
records.cc:
  A fix (bug #5733: Table handler error with self-join multi-table DELETE).


sql/records.cc:
  ]A fix (bug #5733: Table handler error with self-join multi-table DELETE).
mysql-test/t/delete.test:
  A fix (bug #5733: Table handler error with self-join multi-table DELETE).
mysql-test/r/delete.result:
  A fix (bug #5733: Table handler error with self-join multi-table DELETE).
2004-10-01 16:23:54 +05:00
unknown
fb1407d563 Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/dlenev/src/mysql-4.0-bg4131-3


sql/sql_parse.cc:
  Auto merged
2004-09-27 00:50:29 +04:00
unknown
e6f924efe5 Fix for bug #4131 "TIMESTAMP columns missing minutes and seconds when
using GROUP BY"
Now we are setting Field_timestamp::field_length to 19 in open_table()
if we are in new mode (and we are restoring it back when we are coming
back to normal mode). This also should solve potential problems with
some of LOAD DATA INFILE and SELECT * INTO in this mode.


mysql-test/r/type_timestamp.result:
  Added test for bug #4131 'TIMESTAMP columns missing minutes and seconds
  when using GROUP BY' and other --new mode related behavior.
mysql-test/t/type_timestamp.test:
  Added test for bug #4131 'TIMESTAMP columns missing minutes and seconds
  when using GROUP BY' and other --new mode related behavior.
sql/field.cc:
  Added Field_timestamp::orig_field_length member for saving original
  field_length value, because this member can be modified if new_mode is
  in effect.
  Lot of Field_timestamp code simplified and Field_timestamp::make_field()
  is no longer needed because we are setting field_length to 19 if we are
  in --new mode now.
sql/field.h:
  Added Field_timestamp::orig_field_length member for saving original
  field_length value, because this member can be modified if new_mode
  is in effect. 
  Field_timestamp::make_field() is no longer needed because we are setting
  field_length to 19 if we are in --new mode now.
sql/sql_base.cc:
  If --new mode is in effect all TIMESTAMP fields should pretend that they
  have length of 19. We are achieving this by setting 
  Field_timestamp::field_length to 19 (or original value) in open_table().
  We are using TABLE::timestamp_mode variable for avoiding of unnecessary
  looping over all fields of the table and setting field_length if table
  was used with same new_mode value before.
  
  Note: We do not introduce general framework for setting up Field objects
  for usage with current THD here because this fix is only needed in 4.0
  and Monty said that we will also remove looping over all fields when
  updating table_name member at some point. This more general framework
  will also complicate nice optimization with avoiding of unneeded looping.
sql/sql_parse.cc:
  Now when we are creating TIMESTAMP(19) fields by default in --new mode,
  otherwise we will have unaligned behavior between ALTER and CREATE.
sql/table.h:
  Added TABLE::timestamp_mode field for saving information whenever we set 
  field_length members of table's TIMESTAMP fields to 19 (to honor 
  new_mode) or they have original values.
2004-09-27 00:50:00 +04:00
unknown
697cb7b106 BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
BUG#4335 - one name can be handler open'ed many times.
Reworked the HANDLER functions and interface.
Using a HASH to store information on open tables that
survives FLUSH TABLE.
HANDLER tables alias names must now be unique, though it
is allowed in 4.0 to qualify them with the database name
of the base table.


mysql-test/r/flush_table.result:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Moved pure handler test results to handler.result.
  Added the new test results.
mysql-test/r/handler.result:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Moved pure handler test results from flush_table.result to here.
mysql-test/t/flush_table.test:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Moved pure handler tests to handler.test.
  Added new tests.
mysql-test/t/handler.test:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Moved pure handler tests from flush_table.test to here.
sql/mysql_priv.h:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Reworked the handler interface.
sql/sql_base.cc:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Replaced mysql_ha_close_list() by the better named
  function mysql_ha_flush() with readable options.
sql/sql_class.cc:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Added initialization for the handler tables hash.
  Changed the handler tables clean-up code.
  Unreleted to bug: Changed the order of THD initialization
  to avoid warning messages on Linux with gcc.
sql/sql_class.h:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Added the handler tables HASH to THD.
sql/sql_handler.cc:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  Completely reworked the handler functions.
  Added an introducing comment, describing the new functionality.
sql/sql_table.cc:
  BUG#4286 - HANDLER tables are closed by FLUSH TABLE(S).
  BUG#4335 - one name can be handler open'ed many times.
  replaced mysql_ha_close() by the better named
  function mysql_ha_flush() with readable options.
2004-09-24 18:39:25 +02:00
unknown
d7281b331a Fix for bug #5595: NULLIF() IS NULL returns false if NULLIF() returns NULL 2004-09-18 13:06:44 +04:00
unknown
e84eb55a07 Bug#5553 - Multi table UPDATE IGNORE fails on dup key
We don't want the update to abort when IGNORE is specified


mysql-test/r/update.result:
  Bug#5553 - UPDATE IGNORE fails on dup key
    New test
mysql-test/t/update.test:
  Bug#5553 - UPDATE IGNORE fails on dup key
    New test
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
2004-09-17 12:07:59 +01:00
unknown
cc98eea53b A fix (bug #5498 TRIM fails with LEADING or TRAILING if remstr = str). 2004-09-13 14:25:43 +05:00
unknown
c36356b6a4 Bug #5447 Select does not find records
Note, there is no need to propagate this change into 4.1.


mysql-test/r/ctype_latin1_de.result:
  Bug #5447 Select does not find records
mysql-test/t/ctype_latin1_de.test:
  Bug #5447 Select does not find records
strings/ctype-latin1_de.c:
  Bug #5447 Select does not find records
2004-09-09 12:23:10 +05:00
unknown
419ca7152f Merge rurik.mysql.com:/home/igor/mysql-4.0
into rurik.mysql.com:/home/igor/dev/mysql-4.0-0
2004-09-07 10:08:17 -07:00
unknown
3a476a6e91 clean up at end of test (thanks serg)
mysql-test/r/rpl_set_charset.result:
  result update
mysql-test/t/rpl_set_charset.test:
  clean up on slave too.
2004-09-07 14:20:48 +02:00