1
0
mirror of https://github.com/MariaDB/server.git synced 2025-09-02 09:41:40 +03:00
Commit Graph

25494 Commits

Author SHA1 Message Date
Alfranio Correia
7c9503b75e merge 5.1-bugteam (local) --> 5.1-bugteam 2009-11-21 13:02:18 +00:00
Davi Arnaut
3fe5cd80ae Bug#41726: upgrade from 5.0 to 5.1.30 crashes if you didn't run mysql_upgrade
The problem is that the server could crash when attempting
to access a non-conformant proc system table. One such case
was a crash when invoking stored procedure related statements
on a 5.1 server with a proc system table in the 5.0 format.

The solution is to validate the proc system table format
before attempts to access it are made. If the table is not
in the format that the server expects, a message is written
to the error log and the statement that caused the table to
be accessed fails.
2009-11-21 09:18:21 -02:00
Georgi Kodinov
f24dbcc56b Bug #45261 : Crash, stored procedure + decimal
Bug #48370  Absolutely wrong calculations with GROUP BY and
  decimal fields when using IF

Added the test cases in the above two bugs for regression
testing.
Added additional tests that demonstrate a incomplete fix.
Added a new factory method for Field_new_decimal to 
create a field from an (decimal returning) Item.
In the new method made sure that all the precision and 
length variables are capped in a proper way. 
This is required because Item's can have larger precision
than the decimal fields and thus need to be capped when
creating a field based on an Item type.
Fixed the wrong typecast to Item_decimal.
2009-11-20 12:10:47 +02:00
Georgi Kodinov
a4683e30ae Bug #48665: sql-bench's insert test fails due to wrong result
When merging ranges during calculation of the result of OR
to two range sets the current range may be obsoleted by the 
resulting merged range.
The first overlapping range can be obsoleted as well.

Fixed by moving the pointer to the first overlapping range to the
pointer of the resulting union range.
Added few comments at key places in key_or().
2009-11-19 18:26:19 +02:00
Bjorn Munch
94f138eb5b Bug #48683 mysql-stress-test fails with "Value ... invalid for option abort-on-error"
Add =1 to --abort-on-error argument
2009-11-19 13:19:11 +01:00
Bjorn Munch
db1b1160dd merge 48808 2009-11-19 10:19:18 +01:00
Bjorn Munch
964a6ebaac merge 48806 2009-11-19 10:17:56 +01:00
Bjorn Munch
57345e7c33 merge 48671 2009-11-19 10:16:03 +01:00
Bjorn Munch
1cc0f036d6 merge 35543 2009-11-19 10:14:25 +01:00
Bjorn Munch
91bb19f44e Bug #35543 mysqlbinlog.cc does not properly work with tmp files
mtr patch ported to v2
2009-11-19 10:10:21 +01:00
Bjorn Munch
9d69adc9d6 Bug #48367 MTR should react to server dying, rather than to resulting failure of mysqltest
For some reason it usually picks up mysqltest
Wait .1s and then see if a server has died
Change from first commit: label on separate line
2009-11-19 09:58:50 +01:00
Sven Sandberg
349f48e10a BUG#47995: Mark system functions as unsafe
Problem: Some system functions that could return different values on
master and slave were not marked unsafe. In particular:
 GET_LOCK
 IS_FREE_LOCK
 IS_USED_LOCK
 MASTER_POS_WAIT
 RELEASE_LOCK
 SLEEP
 SYSDATE
 VERSION
Fix: Mark these functions unsafe.
2009-11-18 15:50:31 +01:00
Jon Olav Hauglid
99a4014cf7 Postfix for Bug #47682 strange behaviour of INSERT DELAYED
Fixed a problem with the test case when executed with ps-protocol.
There the conflicing lock would be noticed during prepare, not
during execution of the insert - leading to a different (but 
equally appropriate) error message.
2009-11-18 13:49:45 +01:00
Mattias Jonsson
9e1f4b9b49 merge 2009-11-18 11:21:26 +01:00
Magne Mahre
c37250dd8c merge 2009-11-18 10:45:32 +01:00
Magne Mahre
9e6cb3772b Bug #46425 crash in Diagnostics_area::set_ok_status , empty statement,
DELETE IGNORE

The ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG error was set in the
diagnostics area when it happened, but the DELETE cleanup code
never checked for a non-fatal error condition, thus trying to
set diag.area to "ok".  This triggered an assert checking that
the diag.area was empty.

The fix was to test if there existed a non-fatal error condition
(thd->is_error() before ok'ing the operation.
2009-11-18 10:32:03 +01:00
Bjorn Munch
54bdfab91e Bug #48808 mysql-test-run.pl --debugger=devenv does not work
Wrong argument order, fixed
2009-11-18 10:27:43 +01:00
Jon Olav Hauglid
a6733b5277 Bug #47682 strange behaviour of INSERT DELAYED
The problem was a "self-deadlock" if the connection issuing INSERT DELAYED
had both the global read lock (FLUSH TABLES WITH READ LOCK) and LOCK TABLES
mode active. The table being inserted into had to be different from the 
table(s) locked by LOCK TABLES.

For INSERT DELAYED, the connection thread waits until the handler thread has
opened and locked its table before returning. But since the global read lock
was active, the handler thread would be unable to lock and would wait for the
global read lock to go away.

So the handler thread would be waiting for the connection thread to release
the global read lock while the connection thread was waiting for the handler
thread to lock the table. This gave a "self-deadlock" (same connection,
different threads).

The deadlock would only happen if we also had LOCK TABLES mode since the
INSERT otherwise will try to get protection against global read lock before
starting the handler thread. It will then notice that the global read lock
is owned by the same connection and report ER_CANT_UPDATE_WITH_READLOCK.

This patch removes the deadlock by reporting ER_CANT_UPDATE_WITH_READLOCK
also if we are inside LOCK TABLES mode.

Test case added to delayed.test.
2009-11-18 10:02:21 +01:00
Mattias Jonsson
d522acbb82 merge 2009-11-17 22:51:49 +01:00
Mattias Jonsson
774cdc3c07 merge 2009-11-17 22:48:28 +01:00
Mattias Jonsson
46b2fab4d2 backport of bug#45904 from mysql-pe to 5.1 2009-11-17 22:47:34 +01:00
Mattias Jonsson
e4f9bd3d14 merge 2009-11-17 16:24:46 +01:00
marko
06dafb4a39 branches/zip: Report duplicate table names
to the client connection, not to the error log.  This change will allow
innodb-index.test to be re-enabled.  It was previously disabled, because
mysql-test-run does not like output in the error log.

row_create_table_for_mysql(): Do not output anything to the error log
when reporting DB_DUPLICATE_KEY.  Let the caller report the error.
Add a TODO comment that the dict_table_t object is apparently not freed
when an error occurs.

create_table_def(): Convert InnoDB table names to the character set
of the client connection for reporting.  Use my_error(ER_WRONG_COLUMN_NAME)
for reporting reserved column names.  Report my_error(ER_TABLE_EXISTS_ERROR)
when row_create_table_for_mysql() returns DB_DUPLICATE_KEY.

rb://206
2009-11-17 14:44:20 +00:00
Alexey Kopytov
7f2ba28ef9 Bug #48472: Loose index scan inappropriately chosen for some
WHERE conditions 
 
check_group_min_max() checks if the loose index scan 
optimization is applicable for a given WHERE condition, that is 
if the MIN/MAX attribute participates only in range predicates 
comparing the corresponding field with constants. 
 
The problem was that it considered the whole predicate suitable 
for the loose index scan optimization as soon as it encountered 
a constant as a predicate argument. This is obviously wrong for 
cases when a constant is the first argument of a predicate 
which does not satisfy the above condition. 
 
Fixed check_group_min_max() so that all arguments of the input 
predicate are considered to decide if it passes the test, even 
though a constant has already been encountered.
2009-11-17 17:07:14 +03:00
Evgeny Potemkin
726e83907c Bug#43668: Wrong comparison and MIN/MAX for YEAR(2)
MySQL manual describes values of the YEAR(2) field type as follows:
values 00 - 69 mean 2000 - 2069 years and values 70 - 99 mean 1970 - 1999
years. MIN/MAX and comparison functions was comparing them as int values
thus producing wrong result.

Now the Arg_comparator class is extended with compare_year function which
performs correct comparison of the YEAR type.
The Item_sum_hybrid class now uses Item_cache and Arg_comparator objects to
correctly calculate its value.
To allow Arg_comparator to use func_name() function for Item_func and Item_sum
objects the func_name declaration is moved to the Item_result_field class.
A helper function is_owner_equal_func is added to the Arg_comparator class.
It checks whether the Arg_comparator object owner is the <=> function or not.
A helper function setup is added to the Item_sum_hybrid class. It sets up
cache item and comparator.
2009-11-17 17:06:46 +03:00
marko
f3efc5f306 branches/zip: innodb-index.test: Restore innodb_file_format_check. 2009-11-17 11:52:01 +00:00
marko
13e0e5f2c6 branches/zip: Prepend loose_ to plugin-only mysql-test options. 2009-11-17 11:51:16 +00:00
marko
1d94508efd branches/zip: Set svn:eol-style on mysql-test files. 2009-11-17 11:49:15 +00:00
Bjorn Munch
2b0be38266 Bug #48806 mysql-test-run.pl --help should work even in the absence of binaries
Searches for my_safe_process binary too early
Put this into a sub() and call it after examining options (incl. --help)
2009-11-17 12:13:22 +01:00
vasil
b0ed43b0a4 branches/zip:
At the end of innodb-index.test: restore the environment as it was before
the test was started to silence this warning:

  MTR's internal check of the test case 'main.innodb-index' failed.
  This means that the test case does not preserve the state that existed
  before the test case was executed.  Most likely the test case did not
  do a proper clean-up.
  This is the diff of the states of the servers before and after the
  test case was executed:
  mysqltest: Logging to '/tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.log'.
  mysqltest: Results saved in '/tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result'.
  mysqltest: Connecting to server localhost:13000 (socket /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/mysqld.1.sock) as 'root', connection 'default', attempt 0 ...
  mysqltest: ... Connected.
  mysqltest: Start processing test commands from './include/check-testcase.test' ...
  mysqltest: ... Done processing test commands.
  --- /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.result	2009-11-17 13:10:40.000000000 +0300
  +++ /tmp/autotest.sh-20091117_033000-zip.btyZwu/mysql-5.1/mysql-test/var/tmp/check-mysqld_1.reject	2009-11-17 13:10:54.000000000 +0300
  @@ -84,7 +84,7 @@
   INNODB_DOUBLEWRITE	ON
   INNODB_FAST_SHUTDOWN	1
   INNODB_FILE_FORMAT	Antelope
  -INNODB_FILE_FORMAT_CHECK	Antelope
  +INNODB_FILE_FORMAT_CHECK	Barracuda
   INNODB_FILE_PER_TABLE	OFF
   INNODB_FLUSH_LOG_AT_TRX_COMMIT	1
   INNODB_FLUSH_METHOD	
  
  mysqltest: Result content mismatch
  
  not ok
2009-11-17 10:21:41 +00:00
Bjorn Munch
f57dda3bab minor fix of a valgrind suppress pattern 2009-11-16 14:46:33 +01:00
Bjorn Munch
6edaebbf57 Bug #48795 Valgrind summary from tests where server has been restarted cause test failure
Seen in a few tests after 43418
Add code in extract_warning_lines() to skip this part
2009-11-16 11:18:16 +01:00
Jorgen Loland
2a254a13ef Bug#48052: Valgrind warning - uninitialized value in
init_read_record() - (records.cc:274)
      
Item_cond::used_tables_cache was accessed in
records.cc#init_read_record() without being initialized. It had
not been initialized because it was wrongly assumed that the
Item's variables would not be accessed, and hence
quick_fix_field() was used instead of fix_fields() to save a few
CPU cycles at creation time.

The fix is to properly initilize the Item by replacing
quick_fix_field() with fix_fields().
2009-11-13 12:22:39 +01:00
Luis Soares
fe40b1721a BUG#48738: Backport patch for Bug 34582 to 5.0 codebase.
From BUG 34582 commit message:

Issuing 'FLUSH LOGS' does not close and reopen indexfile.
Instead a SEEK_SET is performed.
            
This patch makes index file to be closed and reopened whenever a
rotation happens (FLUSH LOGS is issued or binary log exceeds 
maximum configured size).
2009-11-13 10:30:56 +00:00
Davi Arnaut
4beeb3fa60 Bug#47627 SET @@{global.session}.local_variable in stored routine causes crash
This patch borrows ideas, text and code from Kristofer
Pettersson's patch.

An assignment of a system variable sharing the same base
name as a declared stored procedure variable in the same
context could lead to a crash.

The reason was that during the parsing of the syntactic
rule 'option_value' an uninitialized set_var object was
pushed to the parameter stack of the SET statement. The
parent rule 'option_type_value' interpreted the existence
of variables on the parameter stack as an assignment and
wrapped it in a sp_instr_set object.

As the procedure later was executed an attempt was made
to run the method 'check()' on an uninitialized member
object (NULL value) belonging to the previously created
but uninitialized object.

This patch refactors the 'internal_variable_name' rule and
copies the semantic analysis part to the depending parent
rule: 'option_value'. This makes it possible to account
for any prefixes affecting the interpretation of the
internal_variable_name.
2009-11-12 23:03:26 -02:00
Andrei Elkin
41a125474f Bug #47210 first execution of "start slave until" stops too early
Until-pos guarding did not distiguish the master originated events from ones that the slave 
can introduce to the relay log e.g Rotate to the next relay log at slave restarting.
The local Rotate's coordinate are incomparable with the Until-master-pos.
That led to the unexpectable stop this bug describes.

Fixed with to avoid Until-master-pos comparison for a local slave's event.
Notice that if --replicate-same-server is true such event is treated as coming from
the master side.
2009-11-12 17:10:19 +02:00
calvin
cba4f2af61 branches/zip: add test case for bug#46676
This crash is reproducible with InnoDB plugin 1.0.4 + MySQL 5.1.37.
But no longer reproducible after MySQL 5.1.38 (with plugin 1.0.5).
Add test case to catch future regression.
2009-11-12 12:40:43 +00:00
Magne Mahre
6947ee3771 Bug #37183 insert ignore into .. select ... hangs after
deadlock was encountered

The bug is caused by an inconsistent handling of the IGNORE
clause.  A read from a const table caused a lock timeout
(ER_LOCK_TIMEOUT) in innodb.  Since the IGNORE clause was
given, the timeout was converted into a warning instead of
an error, thus not populating the diagnostics area.  When
innodb subsequently marked the transaction for rollback,
mysql asserted since the diag.area was empty.

This patch consists of only a test case, as the bug itself
was fixed by the patch for Bug #46539
2009-11-12 12:43:33 +01:00
Bjorn Munch
59940cdcd2 Bug #43418 MTR2: does not notice a memory leak occuring at shutdown of mysqld w/ --valgrind
Checking is done before server is terminated
Adds post processing of server logs if --valgrind
Also had to remove --quiet option to valgrind
2009-11-12 11:04:01 +01:00
jyang
dd881561a4 branches/zip: Fix an issue that a local variable defined
in innodb_file_format_check_validate() is being referenced
across function in innodb_file_format_check_update().
In addition, fix "set global innodb_file_format_check =
DEFAULT" call.
Bug #47167: "set global innodb_file_format_check" cannot
set value by User-Defined Variable."
rb://169 approved by Sunny Bains and Marko.
2009-11-11 12:27:09 +00:00
Bjorn Munch
ffdb6be755 Bug #48671 mysqltest fails on 'perl' in file sourced inside 'while'
Actually, fails on 'perl' in any while
Fixed essentially the same way as for append_file
2009-11-11 12:46:19 +01:00
Anurag Shekhar
862c422c4c Bug #47012 archive tables are not upgradeable, and server crashes
on any access

Archive engine for 5.1 (and latter) version uses a modified 
version of zlib (azlib). These two version are incompatible
so a proper upgrade is needed before tables created in 5.0 
can be used reliable.

This upgrade can be performed using repair. But due to lack 
of test its risky to allow upgrade for now. This patch addresses
only the crashing issue. Any attempt to repair will be blocked.

Eventually repair can be allowed to run through (which will also
cause an upgrade from older version to newer) but only after a 
thorough testing.
2009-11-11 13:33:29 +05:30
Georgi Kodinov
48c67b2ca0 Bug #48458: simple query tries to allocate enormous amount of
memory

The server was doing a bad class typecast causing setting of 
wrong value for the maximum number of items in an internal
structure used in equality propagation.
Fixed by not doing the wrong typecast and asserting the type
of the Item where it should be done.
2009-11-09 16:09:46 +02:00
Georgi Kodinov
154c348031 Bug #42760: Select doesn't return desired results when we have null
values
 
 We should re-set the access method functions when changing the access
 method when switching to another index to avoid sorting.
 
 Fixed by doing a little re-engineering : encapsulating all the function
 assignment into a special function and calling it when flipping the 
 indexes.
2009-11-10 10:21:41 +02:00
Mattias Jonsson
3ebb8be932 Bug#48276: can't add column if subpartition exists
Bug when setting up default partitioning,
used an uninitialized variabe.
2009-11-09 11:26:01 +01:00
Luis Soares
9ea972dc47 auto-merge bzr bundle from bug report into latest mysql-5.1-bugteam. 2009-11-06 17:08:06 +00:00
Alexey Kopytov
91829c0a32 Automerge. 2009-11-06 17:56:58 +03:00
Alexey Kopytov
9674ef6809 Automerge. 2009-11-06 17:54:19 +03:00
Alexey Kopytov
9fff9acf0c Bug #48475: DISTINCT is ignored with GROUP BY WITH ROLLUP and
only const tables

The problem was caused by two shortcuts in the optimizer that
are inapplicable in the ROLLUP case.

Normally in a case when only const tables are involved in a
query, DISTINCT clause can be safely optimized away since there
may be only one row produced by the join. Similarly, we don't
need to create a temporary table to resolve DISTINCT/GROUP
BY/ORDER BY. Both of these are inapplicable when the WITH
ROLLUP modifier is present.

Fixed by disabling the said optimizations for the WITH ROLLUP
case.
2009-11-06 09:44:01 +03:00
Bjorn Munch
ea91cac7eb merge 48209 2009-11-04 14:44:19 +01:00