Commit graph

75934 commits

Author SHA1 Message Date
Sergey Petrunya
678b4f5dea Fix the tests: show_explain_ps cannot work on embedded server. 2012-07-18 20:51:41 +04:00
Sergey Petrunya
7e6bec87c1 MDEV-398: Sergv related to spacial queries
- index_merge/intersection is unable to work on GIS indexes, because:
  1. index scans have no Rowid-Ordered-Retrieval property
  2. When one does an index-only read over a GIS index, they do not 
     get the index tuple, because index only contains bounding box of the geometry.
     This is why key_copy() call crashed.
This patch fixes , which makes the problem go away. Theoretically, it would 
be nice to check , too, but SE API semantics is not sufficiently precise to do it.
2012-07-18 15:03:05 +04:00
Sergey Petrunya
879069cada MWL#182: Explain running statements
Address feedback from the second code review:
- Make SHOW EXPLAIN code convert the query string before pushing it as a warning text.
2012-07-17 23:27:03 +04:00
Sergey Petrunya
2368f8895d MWL#182: Explain running statements
- Address feedback from the second code review.
2012-07-17 21:52:08 +04:00
unknown
82f821ee8f fix to satisfy compiler. 2012-07-16 10:48:03 +03:00
Elena Stepanova
72a5542f0e MDEV-11: Generic storage engine test suite 2012-07-16 06:17:56 +04:00
Elena Stepanova
403cac0fe7 Allow multiple error codes inside a variable in --error command 2012-07-16 06:14:53 +04:00
Elena Stepanova
49da8e7e21 Export sys_errno and errno to variables 2012-07-16 06:12:11 +04:00
unknown
9f6a1c5842 fixed MySQL bug#53775:
Now partition engine adds underlying tables to the QC and ask underlying tables engine permittion to cache the query and return result of the query.

Incorrect QC cleanup in case of table registration failure fixe.

Unified interface for myisammrg & partitioned engnes for QC.
2012-07-13 22:17:32 +03:00
Vladislav Vaintroub
718bbcbfd0 MDEV-393. Remove --loose-pbxt=OFF/loose-skip-pbxt from bootstrapper calls to avoid "unknown parameter" warning 2012-07-12 15:32:35 +02:00
Bjorn Munch
1713550775 Merge unpushed changes from 5.1.64-release 2012-07-12 10:00:14 +02:00
Sergei Golubchik
a08631d696 lp:1023404 problems with savepoints and tokudb with 5.5
fix incorrect merge
2012-07-11 16:19:05 +02:00
Bjorn Munch
1877016c39 Empty version change upmerge 2012-07-11 15:34:38 +02:00
unknown
4c33e849f1 Raise version number after cloning 5.1.65 2012-07-11 15:18:34 +02:00
Sergey Petrunya
a49b4c970f t/show_explain_ps.test needs debug system to work. 2012-07-11 16:33:10 +04:00
unknown
21bc74e0c9 2012-07-11 16:42:55 +05:30
Sergey Petrunya
de65de3baa Make test results stable 2012-07-11 14:27:59 +04:00
Sergey Petrunya
f913ba7a60 MWL#182: Explain running statements: address review feedback
- Make THD::check_killed() an inline function which makes calls to non-inline 
  functions only whern there are APC requests to be served.
2012-07-11 13:39:56 +04:00
unknown
28255d4c58 2012-07-11 08:43:26 +02:00
Chaithra Gopalareddy
fc74e2e08f Bug #13444084:PRIMARY KEY OR UNIQUE KEY >453 BYTES FAILS FOR
COUNT DISTINCT GROUP BY

PROBLEM:
To calculate the final result of the count(distinct(select 1))
we call 'end_send' function instead of 'end_send_group'.
'end_send' cannot be called if we have aggregate functions
that need to be evaluated.

ANALYSIS:
While evaluating for a possible loose_index_scan option for
the query, the variable 'is_agg_distinct' is set to 'false'
as the item in the distinct clause is not a field. But, we
choose loose_index_scan by not taking this into 
consideration.
So, while setting the final 'select_function' to evaluate
the result, 'precomputed_group_by' is set to TRUE as in
this case loose_index_scan is chosen and we do not have
agg_distinct in the query (which is clearly wrong as we
have one).
As a result, 'end_send' function is chosen as the final
select_function instead of 'end_send_group'. The difference
between the two being, 'end_send_group' evaluates the
aggregates while 'end_send' does not. Hence the wrong result.

FIX:
The variable 'is_agg_distinct' always represents if 
'loose_idnex_scan' can be chosen for aggregate_distinct 
functions present in the select.
So, we check for this variable to continue with 
loose_index_scan option.


sql/opt_range.cc:
  Do not continue if is_agg_distinct is not set in case
  of agg_distinct functions.
2012-07-11 08:19:17 +05:30
Sergey Petrunya
725d76e1e8 MWL#182: Explain running statements: address review feedback
- switch SHOW EXPLAIN to using an INFORMATION_SCHEMA table.
2012-07-10 21:23:00 +04:00
Rohit Kalhans
6fe6288d83 bug#11759333:
follow-up patch for the failure on pb2 windows build
2012-07-10 22:02:25 +05:30
Mayank Prasad
3a71ab0805 Bug#13889741: HANDLE_FATAL_SIGNAL IN _DB_ENTER_ |HANDLE_FATAL_SIGNAL IN STRNLEN
Follow up patch to resolve pb2 failure on windows platform
2012-07-10 19:59:59 +05:30
Jon Olav Hauglid
a47e778a61 Bug#12623923 Server can crash after failure to create
primary key with innodb tables

The bug was triggered if a single ALTER TABLE statement both
added and dropped indexes and ALTER TABLE failed during drop
(e.g. because the index was needed in a foreign key constraint).
In such cases, the server index information would get out of
sync with InnoDB - the added index would be present inside
InnoDB, but not in the server. This could then lead to InnoDB
error messages and/or server crashes.

The root cause is that new indexes are added before old indexes
are dropped. This means that if ALTER TABLE fails while dropping
indexes, index changes will be reverted in the server but not
inside InnoDB.

This patch fixes the problem by dropping any added indexes
if drop fails (for ALTER TABLE statements that both adds
and drops indexes). 

However, this won't work if we added a primary key as this
key might not be possible to drop inside InnoDB. Therefore,
we resort to the copy algorithm if a primary key is added
by an ALTER TABLE statement that also drops an index.

In 5.6 this bug is more properly fixed by the handler interface
changes done in the scope of WL#5534 "Online ALTER".
2012-07-10 16:13:02 +02:00
unknown
51a47a8d3a 2012-07-10 19:15:20 +05:30
unknown
dfa0093096 2012-07-10 18:55:07 +05:30
Rohit Kalhans
6da51d1705 BUG#11759333: SBR LOGGING WARNING MESSAGES FOR PRIMARY
KEY UPDATES WITH A LIMIT OF 1

Problem: The unsafety warning for statements such as
update...limit1 where pk=1 are thrown when binlog-format
= STATEMENT,despite of the fact that such statements are
actually safe. this leads to filling up of the disk space 
with false warnings.
 
Solution: This is not a complete fix for the problem, but
prevents the disks from getting filled up. This should
therefore be regarded as a workaround. In the future this
should be overriden by server general suppress/filtering
framework. It should also be noted that another worklog is
supposed to defeat this case's artificial unsafety.

We use a warning suppression mechanism to detect warning flood,
enable the suppression, and disable this when the average
warnings/second has reduced to acceptable limits.
 
  Activation: The supression for LIMIT unsafe statements are
  activated when the last 50 warnings were logged in less 
  than 50 seconds. 
 
  Supression: Once activated this supression will prevent the
  individual warnings to be logged in the error log, but print
  the warning for every 50 warnings with the note:
  "The last warning was repeated N times in last S seconds"  
  Noteworthy is the fact that this supression works only on the
  error logs and the warnings seen by the clients will remain as
  it is (i.e. one warning/ unsafe statement)
 
  Deactivation: The supression will be deactivated once the
  average # of warnings/sec have gone down to the acceptable limits.



sql/sql_class.cc:
  Added code to supress warning while logging them to error-log.
2012-07-10 18:24:11 +05:30
Andrei Elkin
c60ad57543 null-merge from 5.1. 2012-07-10 13:56:06 +03:00
Andrei Elkin
f4dc921596 merge from 5.5 repo. 2012-07-10 13:53:19 +03:00
Andrei Elkin
cd0912a4ca merge from 5.1 repo. 2012-07-10 13:51:50 +03:00
Bjorn Munch
88a74a168d null upmerge 2012-07-10 12:01:09 +02:00
Andrei Elkin
eca29d5f33 merge from 5.1 repo. 2012-07-10 13:00:03 +03:00
Bjorn Munch
8647617947 mysql_client_fw.c was not included in make dist 2012-07-10 11:57:24 +02:00
Bjorn Munch
5473c42ac1 null upmerge 2012-07-10 11:51:18 +02:00
Bjorn Munch
dc05030971 mysql_client_fw.c was not included in make dist 2012-07-10 11:48:43 +02:00
Andrei Elkin
5be435dee3 merge from 5.1 repo. 2012-07-10 12:48:23 +03:00
Sujatha Sivakumar
2e84cf8674 merge from 5.1 to 5.5 2012-07-10 14:37:35 +05:30
Sujatha Sivakumar
13f7f00288 BUG#11762670:MY_B_WRITE RETURN VALUE IGNORED
Problem:
=======
The return value from my_b_write is ignored by: `my_b_write_quoted',
`my_b_write_bit',`Query_log_event::print_query_header'

Most callers of `my_b_printf' ignore the return value. `log_event.cc' 
has many calls to it. 

Analysis:
========
`my_b_write' is used to write data into a file. If the write fails it
sets appropriate error number and error message through my_error()
function call and sets the IO_CACHE::error == -1.
`my_b_printf' function is also used to write data into a file, it
internally invokes my_b_write to do the write operation. Upon
success it returns number of characters written to file and on error
it returns -1 and sets the error through my_error() and also sets
IO_CACHE::error == -1.  Most of the event specific print functions
for example `Create_file_log_event::print', `Execute_load_log_event::print'
etc are the ones which make several calls to the above two functions and
they do not check for the return value after the 'print' call. All the above 
mentioned abuse cases deal with the client side.

Fix:
===
As part of bug fix a check for IO_CACHE::error == -1 has been added at 
a very high level after the call to the 'print' function.  There are 
few more places where the return value of "my_b_write" is ignored
those are mentioned below.

+++ mysys/mf_iocache2.c    2012-06-04 07:03:15 +0000
@@ -430,7 +430,8 @@
           memset(buffz, '0', minimum_width - length2);
         else
           memset(buffz, ' ', minimum_width - length2);
-        my_b_write(info, buffz, minimum_width - length2);

+++ sql/log.cc	2012-06-08 09:04:46 +0000
@@ -2388,7 +2388,12 @@
     {
       end= strxmov(buff, "# administrator command: ", NullS);
       buff_len= (ulong) (end - buff);
-      my_b_write(&log_file, (uchar*) buff, buff_len);

At these places appropriate return value handlers have been added.

client/mysqlbinlog.cc:
  check for IO_CACHE::error == -1 has been added after the call to
  the event specific print functions
mysys/mf_iocache2.c:
  Added handler to check the written value of `my_b_write'
sql/log.cc:
  Added handler to check the written value of `my_b_write'
sql/log_event.cc:
  Added error simulation statements in `Create_file_log_event::print`
  and `Execute_load_query_log_event::print'
sql/rpl_utility.h:
  Removed the extra ';'
2012-07-10 14:23:17 +05:30
Bjorn Munch
8941847704 mysql_client_test did not build within limbysqld/examples 2012-07-10 10:07:46 +02:00
Bjorn Munch
b21319483f mysql_client_test did not build within limbysqld/examples 2012-07-10 10:04:57 +02:00
Michael Widenius
703ee1ad1b Fixed MDEV-385: mysqltest running with continue-on-error crashes on a non-SQL command producing an error
client/mysqltest.cc:
  Added missing DBUG_VOID_RETURN
2012-07-10 09:02:12 +03:00
Bjorn Munch
b4ac10fad9 Fixed compile error in mysql_client_test using gcc 2012-07-09 16:39:29 +02:00
Bjorn Munch
aacb690bd5 Fixed compile error in mysql_client_test using gcc 2012-07-09 16:36:50 +02:00
Bjorn Munch
62b4f9ae86 Refactor mysql_client_test.c into a framework part and a test part 2012-07-09 15:14:05 +02:00
Bjorn Munch
a1425b1032 Refactor mysql_client_test.c into a framework part and a test part 2012-07-09 15:10:07 +02:00
Sergey Petrunya
a931467e17 Enable PERFORMANCE_SCHEMA tracking for SHOW EXPLAIN's conditions. 2012-07-07 08:47:41 +04:00
Michael Widenius
5a86a61219 Fixed wrong error codes from InnoDB/XtraDB that caused %M to give system dependent error messages (for unknown error code)
- InnoDB now returns handler specific HA_WRONG_CREATE_OPTION instead of MySQL specific ER_ILLEGAL_HA_CREATE_OPTION
- This changes the user level error message from "Unknown error" to "Wrong create options"


mysql-test/r/lowercase_table2.result:
  Updated result file
mysql-test/r/partition_innodb_plugin.result:
  Updated to new error message
mysql-test/r/partition_open_files_limit.result:
  Updated result file
mysql-test/r/row-checksum-old.result:
  Updated to new error message
mysql-test/r/row-checksum.result:
  Updated to new error message
mysql-test/r/symlink.result:
  Updated result file
mysql-test/suite/innodb/r/innodb-create-options.result:
  Updated to new error message
mysql-test/suite/innodb/r/innodb-zip.result:
  Updated to new error message
mysql-test/suite/innodb/r/innodb.result:
  Updated to new error message
storage/innobase/handler/ha_innodb.cc:
  Return HA_WRONG_CREATE_OPTION instead of ER_ILLEGAL_HA_CREATE_OPTION
  This gives more clear and OS indepedent error messages
storage/xtradb/handler/ha_innodb.cc:
  Return HA_WRONG_CREATE_OPTION instead of ER_ILLEGAL_HA_CREATE_OPTION
  This gives more clear and OS indepedent error messages
2012-07-06 19:10:18 +03:00
Michael Widenius
f27c26e95a Fixed compiler warnings
client/mysqltest.cc:
  Added cast
plugin/feedback/utils.cc:
  Added #ifdef
sql/sql_select.cc:
  Added cast
sql/sys_vars.h:
  Changed limits to int
support-files/compiler_warnings.supp:
  Added suppression
2012-07-06 19:04:52 +03:00
unknown
f01bbb4cac 2012-07-06 18:53:13 +03:00
unknown
aa103d0225 2012-07-06 15:30:53 +03:00