Commit graph

58150 commits

Author SHA1 Message Date
Alfranio Correia
1dbb3010e7 Post-fix for BUG#43264
Install procedure does not copy *.inc files located under the mysql-test/t directory.
Therefore, this patch moves the rpl_trigger.inc to the mysql-test/include directory.
2009-08-03 14:37:50 +01:00
Satya B
56fd549989 Remove the 'single' space character after include/lock0iter.h in file
storage/innobase/Makefile.am

storage/innobase/Makefile.am:
  Remove the 'single' space character after include/lock0iter.h
2009-08-03 18:36:50 +05:30
Mikael Ronstrom
72ab530436 Auto-merge 2009-08-03 12:14:48 +02:00
Mikael Ronstrom
1e0b8f74e1 Fixed two test cases for extended partitioning tests 2009-08-03 12:12:36 +02:00
Alfranio Correia
40b85f65a7 null-merge mysql-5.0-bugteam --> mysql-5.1-bugteam 2009-08-03 10:47:45 +01:00
Alfranio Correia
3e9ddf3da9 auto-merge mysql-5.0-bugteam (local) --> mysql-5.0-bugteam 2009-08-03 10:43:20 +01:00
Alfranio Correia
968ec5eacc BUG#43264 Test rpl_trigger is failing randomly w/ use of copy_file in 5.0
The test case fails sporadically on Windows while trying to overwrite an unused
binary log. The problem stems from the fact that MySQL on Windows does not
immediately unlock/release a file while the process that opened and closed it is
still running. In BUG 38603, this issue was circumvented by stopping the MySQL
process, copying the file and then restarting the MySQL process. 

Unfortunately, such facilities are not available in the 5.0.  Other approaches
such as stopping the slave and issuing change master do not work because the relay
log file and index are not closed when a slave is stopped. So to fix the problem,
we simply don't run on windows the part of the test that was failing.
2009-08-02 23:58:43 +01:00
Davi Arnaut
439e1eb0e0 Backport Tomas Ulin fix for a spurious failure on PushBuild:
http://lists.mysql.com/commits/53569

sql/ha_ndbcluster_binlog.cc:
  Remove extraneous mutex lock which could cause the server to deadlock.
2009-08-01 18:24:20 -03:00
Jim Winstead
5a806762cd Not all of the necessary tests for multi-byte support in readline
were included in the configure tests. (Bug #46310)
2009-07-31 17:46:04 -07:00
Jim Winstead
f18c256c4e Merge fix to test results 2009-07-31 16:53:44 -07:00
Jim Winstead
ba1f513f1b Fix incorrectly-committed changes to mysql.result 2009-07-31 16:43:46 -07:00
Davi Arnaut
d0f98f38ed Test case clean up: Move test cases that depend on the CSV storage
engine to the partition_csv test. Also remove test case that was
duplicated. Fix connection procedure with the embedded server.

mysql-test/r/partition.result:
  Update test case result.
mysql-test/r/partition_csv.result:
  Update test case result.
mysql-test/t/partition.test:
  Move test cases to the partition_csv test.
mysql-test/t/partition_csv.test:
  Move tests from partition.test and remove duplicate.
  Tweaky connection procedure to work with embedded.
2009-07-31 20:39:26 -03:00
Ignacio Galarza
276d3dd228 Auto-merge 2009-07-31 16:33:09 -04:00
Tatiana A. Nurnberg
e26350e000 auto-merge 2009-07-31 21:58:40 +02:00
Ignacio Galarza
008dd95f70 Auto-merge 2009-07-31 15:28:15 -04:00
Ignacio Galarza
09877515f2 Bug#17270 - mysql client tool could not find ../share/charsets folder and fails.
- Define and pass compile time path variables as pre-processor definitions to 
  mimic the makefile build.
- Set new CMake version and policy requirements explicitly.
- Changed DATADIR to MYSQL_DATADIR to avoid conflicting definition in 
  Platform SDK header ObjIdl.h which also defines DATADIR.
2009-07-31 15:22:02 -04:00
Gleb Shchepa
4e95179af9 Bug# 30946: mysqldump silently ignores --default-character-set
when used with --tab

1) New syntax: added CHARACTER SET clause to the
  SELECT ... INTO OUTFILE (to complement the same clause in
  LOAD DATA INFILE).
  mysqldump is updated to use this in --tab mode.

2) ESCAPED BY/ENCLOSED BY field parameters are documented as
   accepting CHAR argument, however SELECT .. INTO OUTFILE
   silently ignored rests of multisymbol arguments.
   For the symmetrical behavior with LOAD DATA INFILE the
   server has been modified to fail with the same error:

     ERROR 42000: Field separator argument is not what is
                  expected; check the manual

3) Current LOAD DATA INFILE recognizes field/line separators
   "as is" without converting from client charset to data
   file charset. So, it is supposed, that input file of
   LOAD DATA INFILE consists of data in one charset and
   separators in other charset. For the compatibility with
   that [buggy] behaviour SELECT INTO OUTFILE implementation
   has been saved "as is" too, but the new warning message
   has been added:

     Non-ASCII separator arguments are not fully supported

   This message warns on field/line separators that contain
   non-ASCII symbols.


client/mysqldump.c:
  mysqldump has been updated to call SELECT ... INTO OUTFILE
  statement with a charset from the --default-charset command
  line parameter.
mysql-test/r/mysqldump.result:
  Added test case for bug #30946.
mysql-test/r/outfile_loaddata.result:
  Added test case for bug #30946.
mysql-test/t/mysqldump.test:
  Added test case for bug #30946.
mysql-test/t/outfile_loaddata.test:
  Added test case for bug #30946.
sql/field.cc:
  String conversion code has been moved from check_string_copy_error()
  to convert_to_printable() for reuse.
sql/share/errmsg.txt:
  New WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED message has been added.
sql/sql_class.cc:
  The select_export::prepare() method has been modified to:
  
    1) raise the ER_WRONG_FIELD_TERMINATORS error on multisymbol
       ENCLOSED BY/ESCAPED BY field arguments like LOAD DATA INFILE;
  
    2) warn with a new WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
       message on non-ASCII field or line separators.
  
  The select_export::send_data() merhod has been modified to
  convert item data to output charset (see new SELECT INTO OUTFILE
  syntax). By default the BINARY charset is used for backward
  compatibility.
sql/sql_class.h:
  The select_export::write_cs field added to keep output
  charset.
sql/sql_load.cc:
  mysql_load has been modified to warn on non-ASCII field or
  line separators with a new WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
  message.
sql/sql_string.cc:
  New global function has been added: convert_to_printable()
  (common code has been moved from check_string_copy_error()).
sql/sql_string.h:
  New String::is_ascii() method and new global convert_to_printable()
  function have been added.
sql/sql_yacc.yy:
  New syntax: added CHARACTER SET clause to the
  SELECT ... INTO OUTFILE (to complement the same clause in
  LOAD DATA INFILE). By default the BINARY charset is used for
  backward compatibility.
2009-07-31 22:14:52 +05:00
Davi Arnaut
7d8b967a86 Bug#46265: Can not disable warning about unsafe statements for binary logging
If using statement based replication (SBR), repeatedly calling
statements which are unsafe for SBR will cause a warning message
to be written to the error for each statement. This might lead
to filling up the error log and there is no way to disable this
behavior.

The solution is to only log these message (about statements unsafe
for statement based replication) if the log_warnings option is set.

For example:

SET GLOBAL LOG_WARNINGS = 0;
INSERT INTO t1 VALUES(UUID());
SET GLOBAL LOG_WARNINGS = 1;
INSERT INTO t1 VALUES(UUID());

In this case the message will be printed only once:

[Warning] Statement may not be safe to log in statement format.
          Statement: INSERT INTO t1 VALUES(UUID())

mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result:
  Add test case result for Bug#46265
mysql-test/suite/binlog/t/binlog_stm_unsafe_warning-master.opt:
  Make log_error value available.
mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test:
  Add test case for Bug#46265
sql/sql_class.cc:
  Print warning only if the log_warnings is enabled.
2009-07-31 10:00:35 -03:00
Tatiana A. Nurnberg
717d6054f5 Bug#40281, partitioning the general log table crashes the server
We disallow the partitioning of a log table. You could however
partition a table first, and then point logging to it. This is
not only against the docs, it also crashes the server.

We catch this case now.

mysql-test/r/partition.result:
  results for 40281
mysql-test/t/partition.test:
  test for 40281: show that trying to log to partitioned table fails rather
  to crash the server
sql/ha_partition.cc:
  Signal that we no longer support logging to partitioned tables,
  as per the docs.
sql/sql_partition.cc:
  Some commands like "USE ..." have no select, yet we may try
  to parse partition info after their execution if user set a
  partitioned table as log target. This shouldn't lead to a
  NULL-deref/crash.
2009-07-31 14:38:18 +02:00
Sergey Vojtovich
5444c400e4 Added fsp0types.h to source distribution. 2009-07-31 14:54:25 +05:00
Bjorn Munch
252c37a639 Bug #45698 MTR_VERSION=1 ./mtr --force does not work
Small amendment to original fix, as it did not work in azalea
Need to handle combinations, would eventually break in 5.1 too
2009-07-31 11:22:57 +02:00
Jim Winstead
a90bcde091 Merge bug fix. 2009-07-30 17:51:25 -07:00
Davi Arnaut
543e86728f Bug#45017: Failure to connect if hostname maps to multiple addresses
The problem is that the C API function mysql_real_connect
only attempts to connect to the first IP address returned
for a hostname. This can be a problem if a hostname maps
to multiple IP address and the server is not bound to the
first one that is returned.

The solution is to augment mysql_real_connect so that it
attempts to connect to all IPv4 addresses that a domain
name maps to. The function goes over the list of address
until a successful connection is established.

No test case is provided as its not possible to test this
automatically with the current testing infrastructure.

sql-common/client.c:
  The client will try to connect to each IPv4 address from
  the list of addresses that hostname maps to until a successful
  connection is established or there are no more address.
2009-07-30 21:28:43 -03:00
Davi Arnaut
88780b03b9 Bug#43435: LOCK_open does not use MY_MUTEX_INIT_FAST
Initialize LOCK_open as a adapative mutex on platforms where the
PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP macro is available. The flag
indicates that a thread should spin (busy wait) for some time on a
locked adaptive mutex before blocking (sleeping). It's intended to
to alleviate performance problems due to LOCK_open being a highly
contended mutex.

sql/mysqld.cc:
  Initialize LOCK_open as a adapative mutex.
2009-07-30 17:52:42 -03:00
V Narayanan
0f298415f8 merging with mysql-5.1-bugteam 2009-07-31 09:24:43 +05:30
Matthias Leich
69a9d66730 Merge 5.0 -> 5.1, no conflicts, no modification of files 2009-07-30 21:47:38 +02:00
Matthias Leich
7fc27f3dd5 Merge latest changes into local tree, no conflicts 2009-07-30 21:38:17 +02:00
Davi Arnaut
c8e67f4a3f Manual merge. 2009-07-30 16:11:39 -03:00
Joerg Bruehe
dc15e3d711 Merge the fix for bug#42213 up into 5.1-build:
Check for "stack overrun" doesn't work, server crashes
2009-07-30 17:24:09 +02:00
Joerg Bruehe
f0d31dbe69 Merge the fix for bug#42213 into 5.0-build. 2009-07-30 17:03:54 +02:00
Matthias Leich
9ceb829c8c Merge latest changes into GCA tree, no conflicts 2009-07-30 17:01:08 +02:00
Matthias Leich
097e735ba4 Merge 5.0 -> 5.1 of fix for bug 44493 2009-07-30 16:31:45 +02:00
Matthias Leich
79751dff10 Merge of fix for bug 44493 into GCA tree 2009-07-30 16:24:01 +02:00
Joerg Bruehe
9ff932336e Our autoconf function "MYSQL_STACK_DIRECTION" will not work
correctly if the compiler optimizes too clever.

This has happaned on HP-UX 11.23 (IA64) at optimization
level "+O2", causing bug#42213:
   Check for "stack overrun" doesn't work, server crashes

Fix it by adding a pragma that prevents this optimization.
As a result, it should be safe to use "+O2" on this platform
(unless there is some other, optimizer-related, bug which
is just currently masked because we use resudec optimization).


config/ac-macros/misc.m4:
  Our autoconf function "MYSQL_STACK_DIRECTION" is meant to
  determine whether the stack grows towards higher or towards
  lower addresses.
  It does this by comparing the addresses of a variable
  (which is local to a recursive function) on different
  nesting levels.
  
  This approach requires that the function is really
  implemented as a recursive function, with each nested call
  allocating a new stack frame containing the local variable.
  If, however, the compiler is optimizing so clever that the
  recursive function is implemented by a loop, then this
  test will not produce correct results.
  
  This has happened on HP-UX 11.23 (IA64) when HP's compiler
  was called with optimization "+O2" (not with "+O1"),
  reported as bug#42213.
  
  Rather than starting a race with the compiler and making
  the function so complicated that this optimization does
  not happen, the idea is to prevent the optimization
  by adding a pragma. For HP, this is "#pragma noinline".
  
  If we encounter other compilers which also optimize
  too clever, we may add their pragmas here.
  
  It is a debatable issue whether such pragmas should be
  guarded by conditional compiling or not, the reviewers
  voted to do it.
  It seems HP has different compilers, "ANSI C" and "aCC",
  on the affected platform "__HP_cc" ("ANSI C") is predefined.
  To be on the safe side, the pragma will also take effect
  if HP's "aCC" compiler is used, or any other compiler on HP-UX.
2009-07-30 16:12:26 +02:00
Sergey Vojtovich
bae6276d45 Update to innoplug-1.0.4. 2009-07-30 17:42:56 +05:00
V Narayanan
0d61bd9dce Bug#45800 crash when replacing into a merge table and there is a duplicate
A REPLACE in the MERGE engine is actually a REPLACE
into one (FIRST or LAST) of the underlying MyISAM
tables. So in effect the server works on the meta
data of the MERGE table, while the real insert happens
in the MyISAM table.

The MERGE table has no index, while MyISAM has a
unique index. When a REPLACE into a MERGE table (
and the REPLACE conflicts with a duplicate in a
child table) is done, we try to access the duplicate
key information for the MERGE table. This information
actually does not exist, hence this results in a crash.

The problem can be resolved by modifying the MERGE
engine to provide us the duplicate key information
directly, instead of just returning the MyISAM index
number as the error key. Then the SQL layer (or "the
server") does not try to access the key_info of the
MERGE table, which does not exist.

The current patch modifies the MERGE engine to provide
the position for a record where a unique key violation
occurs.

include/myisammrg.h:
  Bug#45800 crash when replacing into a merge table and there is a duplicate
  
  Add a member to the st_mymerge_info structure that will
  store the duplicate key offset in the MERGE table. This
  offset will be the sum of the record offset of the MyISAM
  table within the MERGE table and the offset of the record
  within the MyISAM table.
mysql-test/r/merge.result:
  Bug#45800 crash when replacing into a merge table and there is a duplicate
  
  Result file for the test case.
mysql-test/t/merge.test:
  Bug#45800 crash when replacing into a merge table and there is a duplicate
  
  Added test case for both REPLACE and INSERT...ON DUPLICATE UPDATE.
storage/myisammrg/ha_myisammrg.cc:
  Bug#45800 crash when replacing into a merge table and there is a duplicate
  
  The info method now will process the HA_STATUS_ERRKEY flag
  and will return the index and the offset of the duplicate
  key.
storage/myisammrg/ha_myisammrg.h:
  Bug#45800 crash when replacing into a merge table and there is a duplicate
  
  Set the HA_DUPLICATE_POS flag to indicate that the duplicate
  key information is now available in the MERGE storage engine.
storage/myisammrg/myrg_info.c:
  Bug#45800 crash when replacing into a merge table and there is a duplicate
  
  We modify the myrg_status function to return the position of the
  duplicate key. The duplicate key position in the MERGE table will
  be the MyISAM file_offset and the offset within the MyISAM table
  of the start position of the records.
2009-07-30 16:04:41 +05:30
Kristofer Pettersson
846f091300 Bug#44521 Prepared Statement: CALL p() - crashes: `! thd->main_da.is_sent' failed et.al.
Fixed wrong prototype declaration which cased build failure on solaris.
2009-07-30 00:44:04 +02:00
Kristofer Pettersson
0497f0c2a9 auto-merge 2009-07-29 22:27:43 +02:00
Kristofer Pettersson
fc1acef6b2 Bug#44521 Executing a stored procedure as a prepared statement can sometimes cause
an assertion in a debug build.

The reason is that the C API doesn't support multiple result sets for prepared
statements and attempting to execute a stored routine which returns multiple result
sets sometimes lead to a network error. The network error sets the diagnostic area
prematurely which later leads to the assert when an attempt is made to set a second
server state.

This patch fixes the issue by changing the scope of the error code returned by
sp_instr_stmt::execute() to include any error which happened during the execution.
To assure that Diagnostic_area::is_sent really mean that the message was sent all
network related functions are checked for return status.

libmysqld/lib_sql.cc:
  * Changed prototype to return success/failure status on net_send_error_packet(),
    net_send_ok(), net_send_eof(), write_eof_packet().
mysql-test/r/sp_notembedded.result:
  * Added test case for bug 44521
mysql-test/t/sp_notembedded.test:
  * Added test case for bug 44521
sql/protocol.cc:
  * Changed prototype to return success/failure status on net_send_error_packet(),
    net_send_ok(), net_send_eof(), write_eof_packet().
sql/protocol.h:
  * Changed prototype to return success/failure status on net_send_error_packet(),
    net_send_ok(), net_send_eof(), write_eof_packet().
sql/sp_head.cc:
  * Changed prototype to return success/failure status on net_send_error_packet(),
    net_send_ok(), net_send_eof(), write_eof_packet().
2009-07-29 22:07:08 +02:00
Mikael Ronstrom
2c38ed0d1c Auto-merge latest changes from mysql-5.1-bugteam 2009-07-29 17:58:27 +02:00
Mikael Ronstrom
a8e7535e33 Bug#46354, when defining partitions without subpartition definition after defining it with the first partition and using list partition caused crash, fixed by more error checks in parser 2009-07-29 17:56:32 +02:00
Guilhem Bichot
79283b61ca removing unused array (compiler warning) 2009-07-29 16:58:31 +02:00
Guilhem Bichot
a58b887c17 Bug#45829 "CREATE TABLE TRANSACTIONAL PAGE_CHECKSUM ROW_FORMAT=PAGE accepted, does nothing":
those keywords do nothing in 5.1 (they are meant for future versions, for example featuring the Maria engine)
so they are here removed from the syntax. Adding those keywords to future versions when needed is:
- WL#5034 "Add TRANSACTIONA=0|1 and PAGE_CHECKSUM=0|1 clauses to CREATE TABLE"
- WL#5037 "New ROW_FORMAT value for CREATE TABLE: PAGE"

mysql-test/r/create.result:
  test that syntax is not accepted
mysql-test/t/create.test:
  test that syntax is not accepted
sql/handler.cc:
  remove ROW_FORMAT=PAGE
sql/handler.h:
  Mark unused objects, but I don't remove them by fear of breaking any plugin which includes this file
  (see also table.h)
sql/lex.h:
  removing syntax
sql/sql_show.cc:
  removing output of noise keywords in SHOW CREATE TABLE and INFORMATION_SCHEMA.TABLES
sql/sql_table.cc:
  removing TRANSACTIONAL
sql/sql_yacc.yy:
  removing syntax
sql/table.cc:
  removing TRANSACTIONAL, PAGE_CHECKSUM. Their place in the frm file is not reclaimed,
  for compatibility with older 5.1.
sql/table.h:
  Mark unused objects, but I don't remove them by fear of breaking any plugin which includes this file
  (and there are several engines which use the content TABLE_SHARE and thus rely on a certain binary
  layout of this structure).
2009-07-29 10:54:20 +02:00
Alfranio Correia
d871bef758 auto-merge mysql-5.1-bugteam (local) --> mysql-5.1-bugteam 2009-07-28 23:39:58 +01:00
Davi Arnaut
1df8ad6c14 If running the mysql_upgrade test case with Valgrind, the resource
consumption (CPU) for upgrading a large log table can be intense.
Therefore, truncate the general_log table beforehand if running
mysql_upgrade test with Valgrind.

mysql-test/t/mysql_upgrade.test:
  Truncate log table if running with Valgrind.
2009-07-28 16:59:38 -03:00
Joerg Bruehe
ecc3042fcd Upmerge of a merge changeset from 5.0-build to 5.1-build,
no code change.
2009-07-28 21:39:07 +02:00
Alexey Kopytov
879162d336 Automerge. 2009-07-28 23:15:52 +04:00
Alexey Kopytov
fd3b0066f9 Automerge. 2009-07-28 23:14:24 +04:00
Alexey Kopytov
bac18522e6 Automerge. 2009-07-28 23:14:04 +04:00
Alexey Kopytov
f9437bd769 Manual merge. 2009-07-28 22:44:28 +04:00