Commit graph

60020 commits

Author SHA1 Message Date
Gleb Shchepa
3461cdc1a1 Bug #49480: WHERE using YEAR columns returns unexpected results
A few problems were found in the fix for bug 43668:
1) Comparison of the YEAR column with NULL always returned TRUE;
2) Comparison of the YEAR column with constants always returned
   unpredictable result;
3) Unnecessary conversion warnings when comparing a non-integer
   constant with a NULL value in the YEAR column;

The problems described above have been resolved with an
exception: zero (i.e. invalid) YEAR column value comparison
with 00 or 2000 still fail (it is not a regression and it was
not a regression), so MIN/MAX on YEAR column containing zero
value still fail.
2009-12-10 10:05:44 +04:00
Ramil Kalimullin
89ea92505f Auto-merge. 2009-12-10 09:51:08 +04:00
He Zhenxing
644015d239 Auto merge 2009-12-10 12:56:10 +08:00
He Zhenxing
6878d7e74b Merge from 5.0-bugteam 2009-12-10 11:51:42 +08:00
He Zhenxing
cc92cd72a4 Post fix for bug#45520 2009-12-10 11:44:19 +08:00
Marc Alff
e33a8b2a1a WL#2360 Performance schema
Part III: mysys instrumentation
2009-12-09 20:19:51 -07:00
Evgeny Potemkin
69fa790fbd Bug#49489: Uninitialized cache led to a wrong result.
Arg_comparator uses Item_cache objects to store constants being compared when
they're need a type conversion. Because this cache wasn't initialized properly
Arg_comparator might produce wrong comparison result.

The Arg_comparator::cache_converted_constant function now initializes cache
prior to usage.
2009-12-09 18:43:45 +03:00
Sergey Vojtovich
a806fd134d Merge mysql-next-mr to mysql-next-mr-svoj. 2009-12-09 15:03:34 +04:00
Alfranio Correia
ebed1914ec merge mysql-5.1-bugteam (local) --> mysql-5.1-bugteam 2009-12-09 11:03:01 +00:00
Olav Sandstaa
2b0642a639 Fix for Bug#49506 Valgrind error in make_cond_for_table_from_pred
This fix has been proposed by Sergey Petrunya and has been contributed
under SCA by sca@askmonty.org.
      
The cause for this valgrind error is that in the function
add_cond_and_fix() in sql_select.cc an Item_cond_and object is
created. This is marked as fixed but does not have a correct
table_map() attribute. Later, in make_join_select(), if
engine_condition_pushdown is in use, this table map is used and
results in the valgrind error.
      
The fix is to add a call to update_used_tables() in add_cond_and_fix()
so that the table map is updated correctly.
      
This patch is tested by multiple existing tests (e.g. the tests
innodb_mysql, innodb, fulltext, compress all produces this valgrind
warning/error without this fix).
2009-12-09 10:16:11 +01:00
Sergey Vojtovich
1e2abc8f29 An addition to backport of
WL#3951 - MyISAM: Additional Error Logs for Data Corruption
Fixed partition_repair_myisam.test.
2009-12-09 11:33:28 +04:00
He Zhenxing
a8a01f2062 Merge from 5.0-bugteam 2009-12-09 14:39:07 +08:00
He Zhenxing
714348a8d3 removed rpl_killed_ddl from disabled list 2009-12-09 14:27:46 +08:00
He Zhenxing
bda9422a3a Merge Bug#45520 fix from 5.0-bugteam 2009-12-09 14:24:54 +08:00
He Zhenxing
9058e48121 BUG#45520 rpl_killed_ddl fails sporadically in pb2
There are three issues that caused rpl_killed_ddl fails sporadically
in pb2:

 1) thd->clear_error() was not called before create Query event
if operation is executed successfully.
 2) DATABASE d2 might do exist because the statement to CREATE or
ALTER it was killed
 3) because of bug 43353, kill the query that do DROP FUNCTION or
    DROP PROCEDURE can result in SP not found

This patch fixed all above issues by:
 1) Called thd->clear_error() if the operation succeeded.
 2) Add IF EXISTS to the DROP DATABASE d2 statement
 3) Temporarily disabled testing DROP FUNCTION/PROCEDURE IF EXISTS.
2009-12-09 14:13:56 +08:00
Alfranio Correia
259b028d8e Post-push fix for BUG#45292.
Disabled execution in valgrind to avoid false positive memory
leaks due to fault-injection tests (i.e. call to abort()).
2009-12-08 16:03:19 +00:00
Magne Mahre
c24ef7e929 Bug#35589 SET PASSWORD caused a crash
Bug#35591 FLUSH PRIVILEGES caused a crash

A race condition on the privilege hash tables (proc_priv_hash
and func_priv_hash) caused one thread to try to delete elements
that had already been deleted by another thread.

The bug was caused by reading and saving the pointers to 
the hash tables outside mutex protection.  This led to an
inconsistency where a thread copied a pointer to a hash,
another thread did the same, the first thread then deleted
the hash, and the second then crashed when it in turn tried to
delete the deleted hash.

The fix is to ensure that operations on the shared hash structures
happens under mutex protection (moving the locking up a little)
2009-12-08 13:19:38 +01:00
V Narayanan
1e224eb257 merging with mysql-next-mr-svoj 2009-12-08 17:22:59 +05:30
Mikael Ronstrom
b2439d5cbc Fixed --fast flag on Linux to use -O3 2009-12-08 11:14:51 +01:00
sunanda.menon@sun.com
d6e7402d42 Null-merge from mysql-5.1.40sp1-release 2009-12-08 10:26:11 +01:00
V Narayanan
44a3c5cb93 merging with mysql-next-mr-svoj 2009-12-08 12:38:50 +05:30
Alexander Nozdrin
fd433cfb96 Auto-merge from mysql-next-mr. 2009-12-08 09:55:52 +03:00
MySQL Build Team
54df0057e1 The version is renamed:
This is no tree that will progress through "beta" and "rc" to "GA",
rather it is a series of "milestones",
so the version is
                  5.5.0-m2
2009-12-07 19:00:02 +01:00
Georgi Kodinov
3c434c93d0 Bug #42760: Select doesn't return desired results when we have null values
Part 2 : 
There was a special optimization on the ref access method for 
ORDER BY ... DESC that was set without actually looking on the type of the 
selected index for ORDER BY.
Fixed the SELECT ... ORDER BY .. DESC (it uses a different code path compared
to the ASC that has been fixed with the previous fix).
2009-12-07 16:38:56 +02:00
He Zhenxing
a92c6c1bfd Auto merge 2009-12-07 21:30:24 +08:00
Sergey Vojtovich
fb1cfa1265 WL#2511 - Add a new table to the Information Schema for TABLESPACE's
Implemented a new INFORMATION_SCHEMA table, which is intended to
provide information about tablespaces.
2009-12-07 16:22:51 +04:00
Alexander Barkov
487e176b20 Bug#47756 Setting 2byte collation ID with 'set names' crashes the server
The problem is not actually related to 2byte collation IDs.
The same crash happens if you change the collation ID in
mysql-test/str_data/Index.xml to a value smaller than 256.

Crash happened in SQL parser, because the "ident_map" and "state_map"
arrays were not initialized in loadable utf8 collations.

Fix: adding proper initialization of the "ident_map" and "state_map"
members for loadable utf8 collations.
2009-12-07 16:11:53 +04:00
Alexander Nozdrin
17fa6edf12 Auto-merge from mysql-next-mr. 2009-12-07 09:08:40 +03:00
Luis Soares
514f4814d5 Automerge bzr bundle in bug report into local mysql-5.1-bugteam latest. 2009-12-07 00:28:14 +00:00
Luis Soares
1ee79014e3 Automerge bzr bundle from bug report.
Removed rpl_cross_version from experimental list.
2009-12-06 23:36:07 +00:00
Luis Soares
2abecf2a21 automerge: mysql-5.1-bugteam bug branch --> mysql-5.1-bugteam latest 2009-12-06 23:14:45 +00:00
Luis Soares
289c14931b BUG#49119: Master crashes when executing 'REVOKE ... ON
{PROCEDURE|FUNCTION} FROM ...'

The master would hit an assertion when binary log was
active. This was due to the fact that the thread's diagnostics
area was being cleared before writing to the binlog,
independently of mysql_routine_grant returning an error or
not. When mysql_routine_grant was to return an error, the return
value and the diagnostics area contents would
mismatch. Consequently, neither my_ok would be called nor an
error would be signaled in the diagnostics area, eventually
triggering the assertion in net_end_statement.

We fix this by not clearing the diagnostics area at binlogging
time.
2009-12-06 23:12:11 +00:00
Staale Smedseng
d5391ed61d Merge from 5.0 2009-12-06 19:01:11 +01:00
Staale Smedseng
846c81c763 Bug #47391 no stack trace printed to error log on
solaris after a crash
      
This patch adds a Solaris-specific version of
print_stacktrace() which uses printstack(2), available on all
Solaris versions since Solaris 9. (While Solaris 11 adds
support for the glibc functions backtrace_*() as of
PSARC/2007/162, printstack() is used for consistency over all
Solaris versions.)

The symbol names are mangled, so use of c++filt may be
required as described in the MySQL documentation.
2009-12-06 18:11:37 +01:00
Alfranio Correia
42fead104a Post-push fix for BUG#45292. 2009-12-05 22:09:41 +00:00
He Zhenxing
e8b261508e Merge from trunk-bugfixing 2009-12-05 10:46:29 +08:00
He Zhenxing
cbafed1cae Auto merge from 5.1-rep-semisync 2009-12-05 10:28:53 +08:00
Marc Alff
57fd11788e WL#2360 Performance schema
Part II, engines instrumentation
2009-12-04 18:26:15 -07:00
Ramil Kalimullin
7888c98327 Fix for bug#49199: Optimizer handles incorrectly:
field='const1' AND field='const2' in some cases

Building multiple equality predicates containing
a constant which is compared as a datetime (with a field)
we should take this fact into account and compare the 
constant with another possible constatns as datetimes 
as well.

E.g. for the
SELECT ... WHERE a='2001-01-01' AND a='2001-01-01 00:00:00'
we should compare '2001-01-01' with '2001-01-01 00:00:00' as
datetimes but not as strings.
2009-12-04 21:58:40 +04:00
Davi Arnaut
96a3a92c71 Bug#49141: Encode function is significantly slower in 5.1 compared to 5.0
The problem was that the multiple evaluations of a ENCODE or
DECODE function within a single statement caused the random
generator to be reinitialized at each evaluation, even though
the parameters were constants.

The solution is to initialize the random generator only once
if the password (seed) parameter is constant.

This patch borrows code and ideas from Georgi Kodinov's patch.
2009-12-04 13:36:58 -02:00
Davi Arnaut
a2d630d055 Bug#41569: mysql_upgrade (ver 5.1) add 3 fields to mysql.proc table but does not set values
Post-merge fix: Redirect stderr to a file as to avoid buffering
problems due to redirecting stderr to stdout.
2009-12-04 14:00:20 -02:00
Alfranio Correia
e362e9a71b BUG#45292 orphan binary log created when starting server twice
This patch fixes three bugs as follows. First, aborting the server while purging
binary logs might generate orphan files due to how the purge operation was
implemented:

          (purge routine - sql/log.cc - MYSQL_BIN_LOG::purge_logs)

      1 - register the files to be removed in a temporary buffer.
      2 - update the log-bin.index.
      3 - flush the log-bin.index.
      4 - erase the files whose names where register in the temporary buffer
      in step 1.

Thus a failure while  executing step 4 would generate an orphan file. Second,
a similar issue might happen while creating a new binary as follows:

          (create routine - sql/log.cc - MYSQL_BIN_LOG::open)

      1 - open the new log-bin.
      2 - update the log-bin.index.

Thus a failure while executing step 1 would generate an orphan file.

To fix these issues, we record the files to be purged or created before really
removing or adding them. So if a failure happens such records can be used to
automatically remove dangling files. The new steps might be outlined as follows:

          (purge routine - sql/log.cc - MYSQL_BIN_LOG::purge_logs)

      1 - register the files to be removed in the log-bin.~rec~ placed in
      the data directory.
      2 - update the log-bin.index.
      3 - flush the log-bin.index.
      4 - delete the log-bin.~rec~.

          (create routine - sql/log.cc - MYSQL_BIN_LOG::open)

      1 - register the file to be created in the log-bin.~rec~
      placed in the data directory.
      2 - open the new log-bin.
      3 - update the log-bin.index.
      4 - delete the log-bin.~rec~.

          (recovery routine - sql/log.cc - MYSQL_BIN_LOG::open_index_file)

      1 - open the log-bin.index.
      2 - open the log-bin.~rec~.
      3 - for each file in log-bin.~rec~.
        3.1 Check if the file is in the log-bin.index and if so ignore it.
        3.2 Otherwise, delete it.

The third issue can be described as follows. The purge operation was allowing
to remove a file in use thus leading to the loss of data and possible
inconsistencies between the master and slave. Roughly, the routine was only
taking into account the dump threads and so if a slave was not connect the
file might be delete even though it was in use.
2009-12-04 14:40:42 +00:00
Alexander Nozdrin
3df1cf6cb1 Manual merge from mysql-5.1. 2009-12-04 16:26:03 +03:00
Alexander Nozdrin
ba38e6014f Auto-merge from mysql-next-mr. 2009-12-04 15:39:09 +03:00
Alexey Kopytov
616a09ed09 Disable the test case innodb-autonic.test until BUG#49267 is fixed
Add the test to disabled list and remove from the experimental list.
2009-12-04 13:54:43 +03:00
Gleb Shchepa
fff48e52c1 manual merge mysql-5.1-bugteam --> mysql-trunk-merge 2009-12-04 14:20:18 +04:00
He Zhenxing
6a213f3a60 Postfix after merge patch for Bug#49020 2009-12-04 17:54:11 +08:00
He Zhenxing
a4bd241536 Auto merge fixes for Bug#49020 2009-12-04 16:05:35 +08:00
He Zhenxing
b17c1a7961 Auto merge postfix of Bug#49020 2009-12-04 13:46:06 +08:00
He Zhenxing
eaf517bc7d Post fix for previous patch of Bug#49020
Added back n_frees, use 'clear' instead of 'free' since memory is
not freed here.
2009-12-04 13:43:38 +08:00