1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00
Commit Graph

71674 Commits

Author SHA1 Message Date
Tor Didriksen
45f739bd9d Bug#14834378 ADDRESSSANITIZER BUG IN FILENAME_TO_TABLENAME
Backport to 5.5


sql/sql_table.cc:
  gcc asan crashes in filename_to_tablename() on this: memcmp("-@", "#sql", 4)
  during loading of the innobase plugin
2013-06-14 16:38:27 +02:00
Tor Didriksen
c94ccb237e Bug#16729109: FIX COMPILATION WARNINGS WITH GCC 4.8
Backport to 5.5
(external Bug#69407 Build warnings with mysql)


support-files/build-tags:
  Run etags on sql_yacc.yy, ignore other .yy files
unittest/mysys/explain_filename-t.cc:
  NO_PLAN seems to fail on some platforms, use the actual number instead.
2013-06-14 10:52:23 +02:00
unknown
d0e586763a 2013-06-14 16:55:37 +05:30
unknown
28c676997c 2013-06-14 16:44:49 +05:30
Aditya A
291e0296d5 Bug#13548704 ALGORITHM USED FOR DROPPING PARTITIONED TABLE CAN LEAD
TO INCONSISTENCY 
[Merge from 5.1]
2013-06-14 11:28:29 +05:30
Aditya A
dfb6f63bcf Bug#13548704 ALGORITHM USED FOR DROPPING PARTITIONED TABLE CAN LEAD
TO INCONSISTENCY 

PROBLEM
--------
When we drop a partitoned table , we first gather the
information about partitions in the table from the 
table_name.par file and store it in an internal data 
structure.Then we delete this file and the data in 
the table. If the server crashes  after deleting the
file,then after recovering we cannot access the table
.Even we cannot drop the table ,because drop algorithm
requires par file to read the partition information.


FIX
---
1. We move the part of deleting par file after deleting 
   all the table data from the storage egine.
2. During drop operation if we detect that the par 
   file is missing then we delete the .frm file,since 
   there is no way of recovering without par file.
  
[Approved by Mattias rb#2576 ]
2013-06-14 11:22:05 +05:30
Annamalai Gurusami
d9a71d5cbe Bug #16417635 INNODB FAILS TO MERGE UNDER-FILLED PAGES DEPENDING
ON DELETION ORDER

Problem:

When a InnoDB index page is under-filled, we will merge it with either
the left sibling node or the right sibling node.  But this checking is
incorrect.  When the left sibling node is available, even if merging
is not possible with left sibling node, we do not check for the 
possibility of merging with the right sibling node.  

Solution:

If left sibling node is available, and merging with left sibling node
is not possible, then check if merge with right sibling node is
possible.

rb#2506 approved by jimmy & ima.
2013-06-13 11:14:13 +05:30
Sivert Sorumgard
c8fc3db1b0 Bug #14227431: CHARACTER SET MISMATCH WHEN ALTERING FOREIGN KEYS
CAN LEAD TO MISSING TABLES

Overview
--------
If the FOREIGN_KEY_CHECKS system variable is set to 0, it is
possible to break a foreign key constraint by changing the type
or character set of the foreign key column, or by dropping the
foreign key index (without carrying out corresponding changes on
another table in the relationship).

If we subsequently set FOREIGN_KEY_CHECKS to 1 and execute ALTER
TABLE involving the COPY algorithm on such a table, the following
happens:

1) If ALTER TABLE does not contain a RENAME clause, the attempt 
   to install the new version of the table instead of the old one
   will fail due to the fact that the inconsistency will be 
   detected. An attempt to revert the partially executed alter 
   table operation by restoring the old table definition will 
   fail as well due to FOREIGN_KEY_CHECKS == 1. As a result, the 
   table being altered will be lost.
2) If ALTER TABLE contains the RENAME clause, the inconsistency 
   will not be detected (most probably due to other bugs). But if
   an attempt to install the new version of the table fails (for 
   example, due to a failure when updating triggers associated 
   with the table), reverting the partially executed alter table 
   by restoring the old table definition will fail too. So the 
   table being altered might be lost as well.


Suggested fix
-------------
The suggested fix is to temporarily unset the option bit
representing FOREIGN_KEY_CHECKS when the old table definition is
restored while reverting the partially executed operation.
2013-06-12 09:35:33 +02:00
unknown
b75b32291f 2013-06-12 12:00:44 +05:30
Murthy Narkedimilli
b292b5d2e3 Fixing the bug 16919882 - WRONG FSF ADDRESS IN LICENSES HEADERS 2013-06-10 22:29:41 +02:00
Murthy Narkedimilli
df2f1d4cc8 Upmerging the changes from 5.1 for the bug 16919882 - WRONG FSF ADDRESS IN LICENSES HEADERS 2013-06-11 01:20:25 +05:30
Murthy Narkedimilli
af23963e64 Bug 16919882 - WRONG FSF ADDRESS IN LICENSES HEADERS 2013-06-11 01:13:07 +05:30
Olav Sandstaa
9516510f7f Bug #16917425 -DBUILD_CONFIG=MYSQL_RELEASE -DWITH_DEBUG=ON FAILS 4 AND SKIPS 27 MTR TESTS
Revert fix since it caused mtr tests to not run in pushbuild.
2013-06-07 21:34:34 +02:00
sayantan dutta
fdf54a0d3a Bug #16917425 -DBUILD_CONFIG=MYSQL_RELEASE -DWITH_DEBUG=ON FAILS 4 AND SKIPS 27 MTR TESTS 2013-06-07 19:29:56 +05:30
Murthy Narkedimilli
8a87f960fe Null merging the changes of 5.1 branch 2013-06-06 15:47:55 +02:00
unknown
22923333c3 Merge from mysql-5.5.32-release 2013-06-05 14:17:01 +02:00
unknown
dedc9de24b Merge from mysql-5.1.70-release 2013-06-04 18:17:58 +02:00
sayantan dutta
17243357a6 BUG #13619394 - MAKE TEST FAILS ON MY_VSNPRINTF 2013-06-03 16:34:43 +05:30
Sreedhar S
5496dff357 Fix to remove unreferenced components 2013-05-29 20:09:45 +05:30
Maitrayi Sabaratnam
baca6688bc 4371 Maitrayi Sabaratnam 2013-05-23
Bug#13116514 - CREATE LOGFILE GROUP INITIAL_SIZE & UNDO_BUFFER_SIZE FAILS
      
      Fixing parser to accept the syntax: to give a size with suffix 'M', eg. undo_buffer_size=10M (M for mega bytes), in 'create logfile group' command.
2013-05-24 18:17:36 +02:00
Marko Mäkelä
90f3f080af Bug#16859867 INNODB_BUG14529666 FAILS SPORADICALLY IN VALGRIND
i_s_innodb_buffer_page_get_info(): Do not read the buffer block frame
contents of read-fixed blocks, because it may be invalid or
uninitialized. When we are going to decompress or read a block, we
will put it into buf_pool->page_hash and buf_pool->LRU, read-fix the
block and release the mutexes for the duration of the reading or
decompression.

rb#2500 approved by Jimmy Yang
2013-05-24 13:58:42 +03:00
Venkatesh Duggirala
8cfe636524 Bug#16765278 DELETE SQL_LOAD_MB* FILE (TEMP FILE) CREATED
BY BINLOG_KILLED_SIMULATE.TEST
Merging fix from mysql-5.1
2013-05-24 14:35:00 +05:30
Venkatesh Duggirala
e8a0b9f943 Bug#16765278 DELETE SQL_LOAD_MB* FILE (TEMP FILE) CREATED
BY BINLOG_KILLED_SIMULATE.TEST
      
'mysqbinlog' tool creates a temporary file while 
preparing LOAD DATA QUERY. These files needs to be deleted
at the end of the test script otherwise these files are
left out in the daily-run machines, causing
"no space on device issues"
      
Fix: 
Delete them at the end of these test scripts
1) execute mysqlbinlog with --local-load option to
create these files in a specified tmpdir
2) delete the tmpdir at the end of the test script
2013-05-24 14:25:00 +05:30
Chaithra Gopalareddy
d8d95d4129 Null merge from 5.1 to 5.5 2013-05-23 15:02:33 +05:30
Chaithra Gopalareddy
4bd94e7d1c Bug #16119355: PREPARED STATEMENT: READ OF FREED MEMORY WITH
STRING CONVERSION FUNCTIONS
            
Problem:
While executing the prepared statement, user variable is
set to memory which would be freed at the end of
execution.
If the statement is executed again, valgrind throws
error when accessing this pointer.
                  
Analysis:
                
1. First time when Item_func_set_user_var::check is called,
   memory is allocated for "value" to store the result.
   (In the call to copy_if_not_alloced).
2. While sending the result, Item_func_set_user_var::check
   is called again. But, this time, its called with
   "use_result_field" set to true. 
   As a result, we call result_field->val_str(&value).
3. Here memory allocated for "value" gets freed. And "value"
   gets set to "result_field", with "str_length" being that of
   result_field's.
4. In the call to JOIN::cleanup, result_field's memory gets
   freed as this is allocated in a chunk as part of the
   temporary table which is needed to execute the query.
5. Next time, when execute of the same statement is called,
   "value" will be set to memory which is already freed.
   Valgrind error occurs as "str_length" is positive 
   (set at Step 3)
                  
Note that user variables list is stored as part of the Lex object
in set_var_list. Hence the persistance across executions.
            
Solution:
Patch for Bug#11764371 fixed in mysql-5.6+ fixes this problem 
as well.So backporting the same.
            
In the solution for Bug#11764371, we create another object of 
user_var and repoint it to temp_table's field. As a result while 
deleting the alloced buffer in Step 3, since the cloned object 
does not own the buffer, deletion will not happen.
So at step 5 when we execute the statement second time, the 
original object will be used and since deletion did not happen 
valgrind will not complain about dangling pointer.


sql/item_func.h:
  Add constructors.
sql/sql_select.cc:
  Change user variable assignment functions to read from fields after
  tables have been unlocked.
2013-05-23 15:00:31 +05:30
Chaithra Gopalareddy
e2f73d9dd6 Merge from 5.5 to 5.6 2013-05-23 11:06:34 +05:30
Chaithra Gopalareddy
0c903fb5c9 Bug#11766191:INVALID MEMORY READ IN DO_DIV_MOD WITH DOUBLY ASSIGNED VARIABLES
Bug#12608543: CRASHES WITH DECIMALS AND STATEMENT NEEDS TO BE REPREPARED ERRORS

Backporting these two fixes to 5.1 
Added unittest to test my_decimal construtor and assignment operators

sql/my_decimal.h:
  Added constructor and assignment operators for my_decimal
unittest/my_decimal/my_decimal-t.cc:
  Added test to check constructor and assignment operators for my_decimal
2013-05-22 14:36:43 +05:30
unknown
1d152a1cdd 2013-05-20 14:00:40 +05:30
Ashish Agarwal
0c4f4ff015 Bug#16194302: SUPPORT FOR FLOATING-POINT SYSTEM VARIABLES
USING THE PLUGIN INTERFACE.

ISSUE: No support for floating-point plugin
       system variables.

SOLUTION: Allowing plugins to define and expose floating-point
          system variables of type double. MYSQL_SYSVAR_DOUBLE
          and MYSQL_THDVAR_DOUBLE are added.

ISSUE: Fractional part of the def, min, max values of system
       variables are ignored.

SOLUTION: Adding functions that are used to store the raw
          representation of a double in the raw bits of unsigned
          longlong in a way that the binary representation
          remains the same.
2013-05-19 23:38:06 +05:30
Annamalai Gurusami
5ca36b3b46 Bug #12762377 FOREIGN KEYS NOT CONSTRUCTED WHEN APOSTROPHES ARE
ESCAPED WITH BACKSLASH

Problem:

When the CREATE TABLE statement used COMMENTS with escape sequences like
'foo\'s', InnoDB did not parse is correctly when trying to extract the
foreign key information.  Because of this, the foreign keys specified
in the CREATE TABLE statement were not created.

Solution:

Make the InnoDB internal parser aware of escape sequences. 

rb#2457 approved by Kevin.
2013-05-18 10:20:56 +05:30
Venkatesh Duggirala
7397aa913d Bug#14236170 MYSQLDUMP 5.5.25 CLIENT FAILS TO DUMP
MYSQL DB FROM REMOTE 5.0.96 SERVER

Problem: mysqldump tool assumes the existence of
general_log and slow_log tables in the server.
If mysqldump tool executes on a old server where
there are no log tables like these, mysqldump tool
fails.

Analysis: general_log and slow_log tables are added
in the ignore-table list as part of bug-26121 fix
causes bug-45740 (MYSQLDUMP DOESN'T DUMP GENERAL_LOG
AND SLOW_QUERY CAUSES RESTORE PROBLEM). As part of
the bug-45740 fix, mysqldump tool adds create table
queries for these two tables. But the fix assumes
that on all the servers, general_log and slow_log
will be there. If the new mysqldump tool is executed
against a old server where there are no general_log
and slow_log, the mysqldump tool fails with an error
that 'there is no general_log table'.

Fix: When mysqldump tool is trying to retrieve general_log
and slow_log table structures, first the tool should
check their existence of these tables in the server
instead of trying to dump it blindly.
2013-05-17 18:54:36 +05:30
unknown
53f57ab221 2013-05-17 08:00:38 +05:30
Murthy Narkedimilli
4f5c10e6b5 Fix for BUG# 16812255: Removing the --random-password option
which is supported only for MYSQL server versions 5.6 and above.
2013-05-16 17:33:32 +02:00
sayantan dutta
01b6e8e71b BUG #16813006 - UNIT TEST FOR MY_VSNPRINTF FAIL FOR NON GNU COMPILER 2013-05-16 18:14:25 +05:30
Mattias Jonsson
3e5ce14c60 Bug#16447483: PARTITION PRUNING IS NOT CORRECT FOR RANGE COLUMNS
The problem was in get_partition_id_cols_range_for_endpoint
and cmp_rec_and_tuple_prune, which stepped one partition too long.

Solution was to move a small portion of logic to cmp_rec_and_tuple_prune,
to simplify both get_partition_id_cols_range_for_endpoint and
get_partition_id_cols_list_for_endpoint.
2013-05-16 11:02:39 +02:00
Annamalai Gurusami
9904193de2 Fixing a compiler warning issue. At the end of the function
ibuf_insert_to_index_page_low() add a DBUG_RETURN(NULL).
2013-05-16 16:56:02 +05:30
sayantan dutta
affc7dc23c Bug 16813007 5.1 => 5.5 null 2013-05-16 14:34:06 +05:30
sayantan dutta
40fbf8bc28 Bug #16813007 - MTR IS NOT TAKING MYSQLTEST CLIENT USING THE ENV VARIABLE MYSQL_TEST 2013-05-16 14:32:09 +05:30
sayantan dutta
4639c7ec7f Bug 16813007 5.1 => 5.5 2013-05-16 14:19:57 +05:30
sayantan dutta
0bec3c4142 Bug #16813007 - MTR IS NOT TAKING MYSQLTEST CLIENT USING THE ENV VARIABLE MYSQL_TEST 2013-05-16 14:18:04 +05:30
Annamalai Gurusami
8756841ae3 Null merge from mysql-5.1 to mysql-5.5 2013-05-16 14:05:51 +05:30
Annamalai Gurusami
59b43c7965 Bug #16806366 BOGUS CALL TO LOCK_REC_RESTORE_FROM_PAGE_INFIMUM IN
INSERT BUFFER MERGE

Problem:

When the record is merged from the change buffer to the actual page,
in a particular condition, it is assumed that the deleted rec will
be re-used by the inserted rec.  With this assumption the lock is
restored on the pointer to the deleted rec itself, thinking that
it is pointing to the newly inserted rec.

Solution:

Just before restoring the lock, update the rec pointer to point
to the newly inserted record.  An assert has been added to verify
this.  This assert will fail without the fix and will pass with
the fix.

rb#2449 in review by Marko and Jimmy
2013-05-16 14:05:05 +05:30
Annamalai Gurusami
6057702766 Merge from mysql-5.1 to mysql-5.5 2013-05-16 13:58:26 +05:30
Murthy Narkedimilli
0e5b0d503e Changes to verify the solaris upgrade issue. 2013-05-16 10:24:26 +02:00
Jon Olav Hauglid
f9c603a099 Merge from mysql-5.1 to mysql-5.5 2013-05-16 09:01:11 +02:00
Jon Olav Hauglid
9486aaeffa Bug#16807394: PREVENT NEW ERROR MESSAGES FROM BEING ADDED TO 5.5
In order to keep error message numbers stable between GA releases, we
can not now add a new error message to 5.1/5.5 as this message would get 
a number now used in 5.6.

This patch enforces this by adding a 5.1/5.5 specific check when processing
the error message file. If a new error message is added, building will
abort and report an error.
2013-05-16 08:09:48 +02:00
unknown
367f58ae5d 2013-05-16 13:34:50 +08:00
Annamalai Gurusami
e8fa04cee0 Bug #16806366 BOGUS CALL TO LOCK_REC_RESTORE_FROM_PAGE_INFIMUM IN
INSERT BUFFER MERGE

Problem:

When the record is merged from the change buffer to the actual page,
in a particular condition, it is assumed that the deleted rec will
be re-used by the inserted rec.  With this assumption the lock is
restored on the pointer to the deleted rec itself, thinking that
it is pointing to the newly inserted rec.

Solution:

Just before restoring the lock, update the rec pointer to point
to the newly inserted record.  An assert has been added to verify
this.  This assert will fail without the fix and will pass with
the fix.

rb#2449 in review by Marko and Jimmy
2013-05-16 10:26:09 +05:30
Annamalai Gurusami
5e3dd90fb1 Bug #16411457 MASTER THREAD CANNOT EXIT FLUSH_LOOP WHEN
INNODB_FAST_SHUTDOWN IS 2

Problem:

When innodb_fast_shutdown is set to 2 and the master thread enters
flush loop, under some circumstances it will not be able to exit it.
This may lead to a shutdown hanging.

This is happening because of the following:

1. In the flush_loop block of code, if the srv_fast_shutdown is
   equal to 2 (very fast shutdown), then we do not flush dirty
   pages in buffer pool to disk.
 
2. In the same flush_loop block of code, if the number of dirty
   pages is more than user specified limit, we go to step 1.

This results in infinite loop.

Solution:

When we are in the process of doing a very fast shutdown, don't
do step 2 above.

rb#2328 approved by Inaam.
2013-05-16 10:01:06 +05:30
Marko Mäkelä
09510e3e7a Merge mysql-5.1 to mysql-5.5. 2013-05-15 22:50:44 +03:00