Commit graph

57136 commits

Author SHA1 Message Date
Narayanan V
2187c60bf4 merging with mysql-5.1-bugteam 2009-04-13 17:05:40 +05:30
Narayanan V
097262a85b merging with mysql-5.1-bugteam tree 2009-04-13 16:51:24 +05:30
Narayanan V
af639a90ad merging with mysql-5.1-bugteam tree 2009-04-13 16:26:21 +05:30
Chad MILLER
ebd4f43e44 Merge fix for bug 39559 and bugteam trunk. 2009-04-10 10:18:57 -04:00
Sergey Glukhov
bb08984f07 Bug#43385 Cannot ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME when Views exist
allow 'rename view' for ALTER ...UPGRADE DATA DIRECTORY NAME command.
it's safe because a view has valid internal db&table names in this case.


mysql-test/r/upgrade.result:
  test result
mysql-test/t/upgrade.test:
  test case
sql/sql_rename.cc:
  allow 'rename view' for ALTER ...UPGRADE DATA DIRECTORY NAME command.
  it's safe because a view has valid internal db&table names in this case.
2009-04-10 14:25:48 +05:00
Narayanan V
f286444bd5 Bug#44025 Some schema names longer than 8 characters not supported by IBMDB2I
On IBM i 5.4, schemas with names that are longer 
than 8 characters and contain digits or an underscore
cannot contain IBMDB2I tables, even though this should
theoritically be possible if all alpha characters
are uppercase.

THe current patch fixes the IBMDB2I engine to
allow digits and the underscore(_) to be used in
schema names longer than 8 characters on IBM i 5.4.

storage/ibmdb2i/db2i_misc.h:
  The function which detected whether the
  operating system would treat a schema as an "ordinary identifier" (allowing 10 characters in the name instead of 8) did not cover all possible cases.Function was
  renamed and enhanced to detect all
  possible cases of "ordinary identifiers".
storage/ibmdb2i/ha_ibmdb2i.cc:
  use the renamed function to cover all
  possible cases of ordinary identifiers.
2009-04-10 13:18:07 +05:30
Narayanan V
63e2b7dd08 Bug#44022 CREATE TABLE sometimes fails silently for IBMDB2I engine
In some circumstances, when a table is created with
the IBMDB2I engine, the CREATE TABLE statement will
return successfully but the table will not exist.

The current patch addresses the above issue and causes
CREATE to fail and report and error to the user.

storage/ibmdb2i/ha_ibmdb2i.cc:
  Locally declared return code hid function-
  scoped declaration and went out of scope
  before being returned. Removed inner
  declaration.
2009-04-10 13:01:15 +05:30
Narayanan V
ee64a8d4f0 Bug#44020 Unicode Swedish collations not working with IBMDB2I
The utf8_swedish_ci and ucs2_swedish_ci
collations do not work with indexes on 
IBMDB2I tables.

The current patch adds the mapping for
ucs2_swedish collation and removes the 
ucs2_spanish2 mapping which is not
supported by any version of the operating
system.

storage/ibmdb2i/db2i_collationSupport.cc:
  Removed mapping for ucs2_spanish2 collation
  since it is not supported by any version of the operating system. Added mapping for ucs2_swedish
  collation which had been overlooked but is
  supported by the IBM i 6.1.
2009-04-10 11:56:54 +05:30
Chad MILLER
8c828507e4 Bug#39559: dump of stored procedures / functions with C-style \
comment can't be read back

A change to the lexer in 5.1 caused slash-asterisk-bang-version
sections to be terminated early if there exists a slash-asterisk-
style comment inside it.  Nesting comments is usually illegal,
but we rely on versioned comment blocks in mysqldump, and the
contents of those sections must be allowed to have comments.

The problem was that when encountering open-comment tokens and
consuming -or- passing through the contents, the "in_comment"
state at the end was clobbered with the not-in-a-comment value,
regardless of whether we were in a comment before this or not.  

So, """/*!VER one /* two */ three */""" would lose its in-comment
state between "two" and "three".  Save the echo and in-comment
state, and restore it at the end of the comment if we consume a 
comment.
2009-04-09 22:18:18 -04:00
Davi Arnaut
214bd5a121 Bug#43706: libmysqld segfaults when re-intialised
Bug#44091: libmysqld gets stuck waiting on mutex on initialization

The problem was that libmysqld wasn't enforcing a certain
initialization and deinitialization order for the mysys
library. Another problem was that the global object used
for management of log event handlers (aka LOGGER) wasn't
being prepared for a possible reutilization.

What leads to the hang/crash reported is that a failure
to load the language file triggers a double call of the
cleanup functions, causing an already destroyed mutex to
be used.

The solution is enforce a order on the initialization and
deinitialization of the mysys library within the libmysqld
library and to ensure that the global LOGGER object reset
it's internal state during cleanup.

mysys/my_init.c:
  Deinitialize only if initialized already.
sql/log.cc:
  Reset state.
2009-04-09 12:25:25 -03:00
Andrei Elkin
a3299de2f7 Bug #38205 Row-based Replication (RBR) causes inconsistencies: HA_ERR_FOUND_DUPP_KEY
Bug#319  if while a non-transactional slave is replicating a transaction possible problem

only testing related: addressing reviewers' comments.

mysql-test/suite/bugs/r/rpl_bug38205.result:
  new results.
mysql-test/suite/bugs/t/rpl_bug38205.test:
  changing output per reviewer's offering.
mysql-test/suite/rpl/r/rpl_start_stop_slave.result:
  new results.
mysql-test/suite/rpl/t/rpl_start_stop_slave.test:
  refining tests for Bug #38205, Bug#319 to start slave with the necessary synchronization;
  changing output per reviewer's offering;
  removing redundant wait for stop.
2009-04-09 16:05:41 +03:00
Luis Soares
8a41a0ba1f manual merge: 5.0-bugteam --> 5.1-bugteam
Note: empty changeset.
2009-04-09 12:30:44 +01:00
Luis Soares
84ae9ecab0 BUG#13684: SP: DROP PROCEDURE|FUNCTION IF EXISTS not binlogged if
routine does not exist 
      
There is an inconsistency with DROP DATABASE IF EXISTS, DROP TABLE IF
EXISTS and DROP VIEW IF EXISTS: those are binlogged even if the DB or
TABLE does not exist, whereas DROP PROCEDURE IF EXISTS does not. It
would be nice or at least consistent if DROP PROCEDURE/STATEMENT
worked the same too.
      
Fixed DROP PROCEDURE|FUNCTION IF EXISTS by adding a call to
mysql_bin_log.write in mysql_execute_command. Checked also if all 
documented "DROP (...) IF EXISTS" get binlogged.
      
NOTE: This is a 5.0 backport patch as requested by support.

mysql-test/r/rpl_drop_if_exists.result:
  Result file for test case added.
mysql-test/r/rpl_sp.result:
  Updated result file for existing test case that has now extra events in
  binary log (the ones from drop if exists procedure/function).
mysql-test/t/rpl_drop_if_exists.test:
  Added test case for asserting validity of proposed patch.
sql/sql_parse.cc:
  Added call mysql_bin_log.write when lex has drop_if_exists enabled for 
  stored procedures.
2009-04-09 11:40:22 +01:00
Narayanan V
d0bc4e26a3 merging with mysql-5.1-bugteam 2009-04-09 16:04:28 +05:30
Sergey Glukhov
2711e1fa49 null merge 2009-04-09 14:58:23 +05:00
Sergey Glukhov
16d805c179 null merge 2009-04-09 14:57:30 +05:00
Sergey Glukhov
1db674f5c7 auotmerge 2009-04-09 14:55:23 +05:00
Sergey Glukhov
d2e6c462c8 5.0-bugteam->5.1-bugteam merge 2009-04-09 14:38:50 +05:00
He Zhenxing
ae439728f2 Null merge the fix only for 5.0-bugteam 2009-04-09 17:24:36 +08:00
Sergey Glukhov
920abd58b2 Bug#43833 Simple INSERT crashes the server
The crash happens due to wrong 'digits' variable value(0),
'digits' can not be 0, so the fix is use 1 as min allowed value.


mysql-test/r/insert.result:
  test result
mysql-test/t/insert.test:
  test case
sql/field.cc:
  The crash happens due to wrong 'digits' variable value(0),
  'digits' can not be 0, so the fix is use 1 as min allowed value.
2009-04-09 14:19:31 +05:00
He Zhenxing
3b4ec32d45 Fix compile error on windows for BUG#37145 on 5.0-bugteam 2009-04-09 16:58:18 +08:00
Narayanan V
cce39fe8cf merging with mysql-5.1-bugteam tree 2009-04-09 14:04:34 +05:30
Narayanan V
53f8922307 Bug#38848 myisam_use_mmap causes widespread myisam corruption on windows
Currently the memory map is being created
with a size that is greater than the size 
of the underlying datafile. This can cause
varying behaviour,

e.g. 

In windows the size of the datafile
is increased, while on linux it remains
the same.

This fix removes the increment margin to
the size that is used while creating the
memory map.

storage/myisam/mi_dynrec.c:
  remove MEMMAP_EXTRA_MARGIN that is used as
  the increment margin to the underlying 
  datafile size while creating the mmap.
storage/myisam/mi_packrec.c:
  The size of the underlying datafile is
  increased by MEMMAP_EXTRA_MARGIN when
  using a packed record format. Hence in 
  this case the size of the memory map should 
  be incremented by the same factor.
2009-04-09 13:48:23 +05:30
Anurag Shekhar
b1b8ab5159 merging with 5.0 bugteam tree 2009-04-09 13:36:47 +05:30
Anurag Shekhar
16e078f56c merging with 5.0-bugteam tree. 2009-04-09 13:30:04 +05:30
He Zhenxing
c048216ebb Null merge from 5.0-bugteam 2009-04-09 15:47:06 +08:00
He Zhenxing
3308a7f2fd post fix compiling problem after push BUG#37145 to 5.0-bugteam 2009-04-09 15:42:59 +08:00
He Zhenxing
a15e25f852 Auto merge 2009-04-09 14:31:09 +08:00
He Zhenxing
caaa8531bd Post fix of BUG#37145
Binlog the CREATE EVENT unless the created event been successfully dropped

Modified Query_log_event constructor to make sure that error_code
is not set to ER_SERVER_SHUTDOWN or ER_QUERY_INTERRUPTED errors
when NOT_KILLED

sql/events.cc:
  binlog the create event unless it's been successfully dropped
sql/log_event.cc:
  Modified Query_log_event constructor to make sure that error_code
  is not set to ER_SERVER_SHUTDOWN or ER_QUERY_INTERRUPTED errors
  when NOT_KILLED
2009-04-09 14:22:06 +08:00
He Zhenxing
4ab0005be6 auto merge from 5.0-bugteam 2009-04-09 07:58:57 +08:00
He Zhenxing
1881ee2da5 auto merge 2009-04-09 07:53:21 +08:00
He Zhenxing
85cff45ef7 Manually merge BUG#37145 to 5.1-bugteam 2009-04-09 07:42:51 +08:00
Alfranio Correia
fb5bc0a39d BUG#39393. Post-fix for test rpl_skip_error.
The result set for multi-row statements is not the same between STMT and
RBR and among different versions. Thus to avoid test failures, we are not
printing out such result sets. Note, however, that this does not have
impact on coverage and accuracy since the execution is able to continue
without further issues when an error is found on the master and such error
is set to be skipped.
2009-04-08 22:02:19 +01:00
Anurag Shekhar
dd0a6eb230 Bug #43950 myisamchk shows negative value for 'Max keyfile length'
While printing the Max keyfile length 'llstr' call was used which 
was treating the max_key_file_length as negative.

Changing this to ullstr fixes the problem. 
myisamchk output will differ in 32 bit and 64 bit Operating systems 
so its not possible to have test case for this bug.


myisam/myisamchk.c:
  Replaced llstr by ullstr, while converting 
  share->base.max_key_file_length-1 to string.
2009-04-08 16:45:43 +05:30
Alfranio Correia
43e85ecedf merge 5.1-bugteam --> 5.1-bugteam (local) 2009-04-08 11:07:24 +01:00
He Zhenxing
16641a8820 Auto merge 2009-04-08 16:17:26 +08:00
Narayanan V
92aee5a6c6 Bug#37631 Incorrect key file for table after upgrading from 5.0 to 5.1
The conformance checker was not taking into
account, and, making concessions for acceptable
incompatibilites in tables created by
versions earlier than 4.1.

The current patch relaxes the conformance
checker to ignore differences in key_alg
and language for tables created by versions
earlier than 4.1.

storage/myisam/ha_myisam.cc:
  Modify check_definition to ignore differences
  in key_alg and language for tables created
  by versions earlier than 4.1.
2009-04-08 12:25:19 +05:30
Satya B
440858b816 merge to latest 5.1-bugteam 2009-04-07 18:44:37 +05:30
Satya B
55a149f29d merge to latest 5.0-bugteam 2009-04-07 18:42:51 +05:30
Satya B
543abcd48e merge 5.0-bugteam to 5.1-bugteam 2009-04-07 17:06:15 +05:30
Satya B
10350e2097 Fix for Bug #43973 - backup_myisam.test fails on 6.0-bugteam
The test started failing following the push for BUG#41541.
Some of the algorithms access bytes beyond the input data
and this can affect up to one byte less than "word size"
which is BITS_SAVED / 8. 
      
Fixed by adding (BITS_SAVED / 8) -1 bytes to buffer size
(i.e. Memory Segment #2) to avoid accessing un-allocated data.

myisam/mi_packrec.c:
  Fixed _mi_read_pack_info() method to allocate (BITS_SAVED/8) - 1 
  bytes to the Memory Segment #2
mysql-test/r/myisampack.result:
  Result file for BUG#43973
mysql-test/t/myisampack.test:
  Testcase for BUG#43973
2009-04-07 16:54:32 +05:30
Alexander Barkov
5847be8c9a Bug#42649 THR_LOCK_charset global mutex abused by InnoDB
The patch was originally proposed by Mikael and reviewed by Bar.
2009-04-07 11:48:38 +05:00
Tatiana A. Nurnberg
88a9e65ba6 Bug#43835: SHOW VARIABLES does not include 0 for slave_skip_errors
We didn't expect "error: no error", although this is
in fact a legitimate state (if something is erroneous
on the master, but not on the slave, e.g. INSERT fails
on master due to UNIQUE constraint which does not exist
on slave).

We now list the ignore for "0: no error" the same way
as any other ignore; moreover, if no or an empty
--slave-skip-errors is passed at start-up, we show
"OFF" instead of empty list, as intended. (The code
for that was there, but was only run for the empty-
argument case, even if it subsequently tested for
both conditions.) 

mysql-test/r/not_embedded_server.result:
  Show that passing no --slave-skip-errors results
  in "OFF" being shown as the variable's value. This
  test's "twin" (also not embedded, but setting
  --slave-skip-errors in its -opt file) lives in
  variables-notembbeded.test.
mysql-test/r/variables-notembedded.result:
  Show that error-ignore 0 is handled just like any other
  ignore. This test's "twin" (also not embedded, but not
  setting --slave-skip-errors in its -opt file) lives in
  not_embbeded_server.test.
mysql-test/t/not_embedded_server.test:
  Show that passing no --slave-skip-errors results
  in "OFF" being shown as the variable's value.
mysql-test/t/variables-notembedded-master.opt:
  Show that error-ignore 0 is handled just like any other
  ignore.
sql/slave.cc:
  - set up error-ignore-info even if --slave-skip-errors
    was not passed at start-up.
  
  - handle error 0 just like any other error.
2009-04-06 13:42:33 +02:00
Satya B
58fa483a20 merge 5.0-bugteam to 5.1-bugteam 2009-04-06 12:31:17 +05:30
Alfranio Correia
e0d74efd85 merge 5.1-bugteam --> 5.1-bugteam (local) 2009-04-06 01:22:34 +01:00
Alfranio Correia
f9338b318e BUG#39393 slave-skip-errors does not work when using ROW based replication
RBR was not considering the option --slave-skip-errors.
                              
To fix the problem, we are reporting the ignored ERROR(s) as warnings thus avoiding 
stopping the SQL Thread. Besides, it fixes the output of "SHOW VARIABLES LIKE 
'slave_skip_errors'" which was showing nothing when the value "all" was assigned 
to --slave-skip-errors.
                  
@sql/log_event.cc
  skipped rbr errors when the option skip-slave-errors is set.
@sql/slave.cc
  fixed the output of for SHOW VARIABLES LIKE 'slave_skip_errors'"
@test-cases
  fixed the output of rpl.rpl_idempotency
  updated the test case rpl_skip_error
2009-04-05 13:03:04 +01:00
Serge Kozlov
a81e21f8a4 Bug#37716.
1. Test case was rewritten completely.
2. Test covers 3 cases:
 a) do deadlock on slave, wait retries of transaction, unlock slave before lock
timeout;
 b) do deadlock on slave and wait error 'lock timeout exceed' on slave;
 c) same as b) but if of max relay log size = 0;
3. Added comments inline.
4. Updated result file.
2009-04-04 01:33:13 +04:00
Davi Arnaut
54bf80b633 Merge Bug#43230 into mysql-5.1-bugteam 2009-04-03 16:46:00 -03:00
Davi Arnaut
72e978828e Bug#43230: SELECT ... FOR UPDATE can hang with FLUSH TABLES WITH READ LOCK indefinitely
The problem is that a SELECT .. FOR UPDATE statement might open
a table and later wait for a impeding global read lock without
noticing whether it is holding a table that is being waited upon
the the flush phase of the process that took the global read
lock.

The same problem also affected the following statements:

LOCK TABLES .. WRITE
UPDATE .. SET (update and multi-table update)
TRUNCATE TABLE ..
LOAD DATA ..

The solution is to make the above statements wait for a impending
global read lock before opening the tables. If there is no
impending global read lock, the statement raises a temporary
protection against global read locks and progresses smoothly
towards completion.

Important notice: the patch does not try to address all possible
cases, only those which are common and can be fixed unintrusively
enough for 5.0.

mysql-test/r/lock_multi.result:
  Add test case result for Bug#43230
mysql-test/t/lock_multi.test:
  Add test case for Bug#43230
sql/sql_lex.cc:
  Initialize flag.
sql/sql_lex.h:
  Add a flag to the lexer.
sql/sql_parse.cc:
  Wait for the global read lock is a write lock is going to be
  taken. The wait is done before opening tables.
sql/sql_yacc.yy:
  Protect against the GRL if its a SELECT .. FOR UPDATE or LOCK TABLES
  .. WRITE statement.
2009-04-03 16:11:54 -03:00
Guangbao Ni
102de8f5c3 AutoMerged from pushbuild mysql-5.1-bugteam 2009-04-03 18:42:00 +00:00