Commit graph

24945 commits

Author SHA1 Message Date
Sergey Glukhov
9ab3654530 Bug#42495 updatexml: Assertion failed: xpath->context, file .\item_xmlfunc.cc, line 2507
Problem:
   RelativeLocationPath can appear only after a node-set expression
   in the third and the fourth branches of this rule:
     PathExpr :: =  LocationPath
                    | FilterExpr
                    | FilterExpr '/' RelativeLocationPath
                    | FilterExpr '//' RelativeLocationPath
   XPatch code didn't check the type of FilterExpr and crashed.
Fix:
   If FilterExpr is a scalar expression
   (variable reference, literal, number, scalar function call)
   return error.
2009-02-04 15:40:12 +04:00
Davi Arnaut
7aec6cceca Merge from upstream 5.1-bugteam 2009-02-04 09:16:43 -02:00
Andrei Elkin
be1b03fd89 Bug #41183 rpl_ndb_circular, rpl_ndb_circular_simplex need maintenance, crash
fixing build issue, caused by the previous push.
2009-02-04 13:08:27 +02:00
Andrei Elkin
da01f3846b Bug #41183 rpl_ndb_circular, rpl_ndb_circular_simplex need maintenance, crash
The bug happened because filtering-out a STMT_END_F-flagged event so that
the transaction COMMIT finds traces of incomplete statement commit.
Such situation is only possible with ndb circular replication. The filtered-out
rows event is one that immediately preceeds the COMMIT query event.
      
Fixed with deploying an the rows-log-event statement commit at executing
of the transaction COMMIT event. 
Resources that were allocated by other than STMT_END_F-flagged event of
the last statement are clean up prior execution of the commit logics.
2009-02-04 12:13:54 +02:00
Davi Arnaut
bc03c9ef19 Bug#40536: SELECT is blocked by INSERT DELAYED waiting on
upgrading lock, even with low_priority_updates

The problem is that there is no mechanism to control whether a
delayed insert takes a high or low priority lock on a table.

The solution is to modify the delayed insert thread ("handler")
to take into account the global value of low_priority_updates
when taking table locks. The value of low_priority_updates is
retrieved when the insert delayed thread is created and will
remain the same for the duration of the thread.
2009-02-03 15:16:24 -02:00
Tatiana A. Nurnberg
db39a76696 auto-merge 2009-01-31 02:08:41 +01:00
Tatiana A. Nurnberg
d36d50f414 auto-merge 2009-01-31 02:07:36 +01:00
Tatiana A. Nurnberg
1fcf891629 Bug#41370: TIMESTAMP field does not accepts NULL from FROM_UNIXTIME()
When storing a NULL to a TIMESTAMP NOT NULL DEFAULT ...,
NULL returned from some functions threw a 'cannot be NULL error.'

NULL-returns now correctly result in the timestamp-field being
assigned its default value.
2009-01-30 17:12:24 +01:00
Georgi Kodinov
3aec7ca415 merged 5.1-main -> 5.1-bugteam 2009-01-30 15:44:49 +02:00
Georgi Kodinov
1622582b45 merged 35396 to 5.0-bugteam 2009-01-29 14:45:24 +02:00
Georgi Kodinov
63ed1e4964 Bug #35396: Abnormal query times in slow query log
If the system time is adjusted back during a query execution
(resulting in the end time being earlier than the start time)
the code that prints to the slow query log gets confused and 
prints unsigned negative numbers.
            
Fixed by not logging the statements that would have negative
execution time due to time shifts.
No test case since this would involve changing the system time.
2009-01-29 14:40:48 +02:00
Alfranio Correia
8eddfc514f merge 5.1-bugteam --> 5.1-bugteam (local) 2009-01-29 11:30:02 +00:00
Sergey Petrunia
7820ae5e25 Merge 2009-01-28 22:21:14 +03:00
Sergey Petrunia
cd4f6cc17b BUG#37822: Correlated subquery with IN and IS UNKNOWN provides wrong result
Item_in_optimizer::is_null() evaluated "NULL IN (SELECT ...)" to NULL regardless of
whether subquery produced any records, this was a documented limitation.

The limitation has been removed (see bugs 8804, 24085, 24127) now
Item_in_optimizer::val_int() correctly handles all cases with NULLs. Make
Item_in_optimizer::is_null() invoke val_int() to return correct values for
"NULL IN (SELECT ...)".
2009-01-28 22:18:27 +03:00
Gleb Shchepa
64c0951fde automerge 5.0-bugteam --> 5.1-bugteam (bug 39069) 2009-01-28 22:48:41 +04:00
Gleb Shchepa
b41c1a45f1 Bug #39069: <row constructor> IN <table-subquery> seriously
messed up

"ROW(...) IN (SELECT ... FROM DUAL)" always returned TRUE.

Item_in_subselect::row_value_transformer rewrites "ROW(...)
IN SELECT" conditions into the "EXISTS (SELECT ... HAVING ...)"
form.
For a subquery from the DUAL pseudotable resulting HAVING
condition is an expression on constant values, so further
transformation with optimize_cond() eliminates this HAVING
condition and resets JOIN::having to NULL.
Then JOIN::exec treated that NULL as an always-true-HAVING
and that caused a bug.

To distinguish an optimized out "HAVING TRUE" clause from
"HAVING FALSE" we already have the JOIN::having_value flag.
However, JOIN::exec() ignored JOIN::having_value as described
above as if it always set to COND_TRUE.

The JOIN::exec method has been modified to take into account
the value of the JOIN::having_value field.
2009-01-28 22:46:45 +04:00
Alfranio Correia
4aee29e844 BUG#35583 mysqlbinlog replay fails with ERROR 1146 when temp tables are used
When using CREATE TEMPORARY TABLE LIKE to create a temporary table, 
or using TRUNCATE to delete all rows of a temporary table, they 
did not set the tmp_table_used flag, and cause the omission of
"SET @@session.pseudo_thread_id" when dumping binlog with mysqlbinlog,
and cause error when replay the statements.
      
This patch fixed the problem by setting tmp_table_used in these two
cases. (Done by He Zhenxing 2009-01-12)
2009-01-28 14:35:12 +00:00
Satya B
acb8a5dd0f Fix for BUG#39886 - Table full for MEMORY table is not written into error log
When a MEMORY table is full the error is returned to client but not written
to error log.

Fixed the handler api to write the error mesage to error log when the table is
full.

Note: No TestCase included as testing the error log is non-trivial.
2009-01-28 17:22:53 +05:30
Magnus Svensson
d4c402db64 Merge 2009-01-27 15:10:15 +01:00
Chad MILLER
6841772b58 Merge from team tree. 2009-01-26 12:34:55 -05:00
Magnus Svensson
2cc7e72aaa WL#4189 mtr.pl v2
- Suppress intentional safemalloc dump warnings
 - add fflush(stdout) to make sure that the "End safemalloc memory dump." marker is flushed.
2009-01-26 16:39:00 +01:00
Chad MILLER
7b92f9cf95 Merge fix for bug 38145 from 5.0. 2009-01-26 10:27:51 -05:00
Gleb Shchepa
33a09cdcc8 Bug#42188: crash and/or memory corruption with user variables
in trigger

Interchangeable calls to the mysql_change_user client function
and invocations of a trigger changing some user variable caused
a memory corruption and a crash.

The mysql_change_user API call forces TDH::cleanup() on a server
that frees user variable entries.
However it didn't reset Item_func_set_user_var::entry to NULL
because Item_func_set_user_var::cleanup() was not overloaded.
So, Item_func_set_user_var::entry held a pointer to freed memory,
that caused a crash.

The Item_func_set_user_var::cleanup method has been overloaded
to cleanup the Item_func_set_user_var::entry field.
2009-01-23 22:18:02 +04:00
Andrei Elkin
3e96808863 merge from 5.1-bt to a local tree. 2009-01-23 19:10:13 +02:00
Luis Soares
14d4576bfe merge: 5.1 -> 5.1-rpl
conflicts:
  Text conflict in client/mysqltest.cc
  Text conflict in mysql-test/include/wait_until_connected_again.inc
  Text conflict in mysql-test/lib/mtr_report.pm
  Text conflict in mysql-test/mysql-test-run.pl
  Text conflict in mysql-test/r/events_bugs.result
  Text conflict in mysql-test/r/log_state.result
  Text conflict in mysql-test/r/myisam_data_pointer_size_func.result
  Text conflict in mysql-test/r/mysqlcheck.result
  Text conflict in mysql-test/r/query_cache.result
  Text conflict in mysql-test/r/status.result
  Text conflict in mysql-test/suite/binlog/r/binlog_index.result
  Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result
  Text conflict in mysql-test/suite/rpl/r/rpl_packet.result
  Text conflict in mysql-test/suite/rpl/t/rpl_packet.test
  Text conflict in mysql-test/t/disabled.def
  Text conflict in mysql-test/t/events_bugs.test
  Text conflict in mysql-test/t/log_state.test
  Text conflict in mysql-test/t/myisam_data_pointer_size_func.test
  Text conflict in mysql-test/t/mysqlcheck.test
  Text conflict in mysql-test/t/query_cache.test
  Text conflict in mysql-test/t/rpl_init_slave_func.test
  Text conflict in mysql-test/t/status.test
2009-01-23 13:22:05 +01:00
Andrei Elkin
ffb141170e Bug #31240 load data infile replication between (4.0 or 4.1) and 5.1 fails
It's a regression issue.
The reason of the bug appeared to be an error introduced into 5.1 source code.
A piece of code in Create_file_log_event::do_apply_event() did not have test
coverage which made make test and pb unaware.
      
Fixed with inverting the old value of the return value from 
Create_file_log_event::do_apply_event().
The rpl test suite is extended with `rpl_cross_version' the file to hold 
regression cases similar to the current.
2009-01-22 16:55:14 +02:00
Davi Arnaut
b88ec2f1a2 Merge test case of Bug#40264 to mysql-5.1-bugteam 2009-01-22 09:22:26 -02:00
Davi Arnaut
6a834d1f4f Bug#40264: Aborted cached query causes query to hang indefinitely on next cache hit
The problem is that the query cache was storing partial results
if the statement failed when sending the results to the client.
This could cause clients to hang when trying to read the results
from the cache as they would, for example, wait indefinitely for
a eof packet that wasn't saved.

The solution is to always discard the caching of a query that
failed to send its results to the associated client.
2009-01-22 08:28:01 -02:00
Georgi Kodinov
c34491360f merged 5.0-bugteam -> 5.1-bugteam 2009-01-16 17:38:38 +02:00
Georgi Kodinov
7fc8286257 auto merge 2009-01-16 16:48:41 +02:00
Georgi Kodinov
e5dd9c5a1d merged 5.0-bugteam -> 5.1-bugtteam 2009-01-16 12:45:17 +02:00
Georgi Kodinov
7a6dda5077 merged Bug 38795 to 5.0-bugteam 2009-01-15 16:15:38 +02:00
Davi Arnaut
cf5dd72ee0 Merge from 5.0-bugteam 2009-01-15 08:28:10 -02:00
Alexander Nozdrin
50a8cdc6c8 Pull from 5.0-bugteam 2009-01-15 13:10:20 +03:00
Alexander Nozdrin
333aa975ec Backport patch for Bug#31222 (com_% global status counters behave randomly
with mysql_change_user) to 5.0.
2009-01-15 12:36:34 +03:00
Chad MILLER
0ba397e0b2 Merge from dev tree. 2009-01-14 11:15:11 -05:00
Chad MILLER
8c9e81e8af Bug#38145: .frm file isn't sync'd with sync_frm enabled
Views weren't sync()d the same way other structures were.

In creating the FRM for views, obey the same rules for variable 
"sync_frm" as for everything else.
2009-01-14 11:11:31 -05:00
Chad MILLER
6ab0034f5a Fix comment. Boolean function returns true/false, not zero/one. 2009-01-14 11:10:36 -05:00
Ramil Kalimullin
347762946e Fix for
bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
triggers
and
#41385: Crash when attempting to repair a #mysql50# upgraded table
with triggers.

Problem:
1. trigger code didn't assume a table name may have
a "#mysql50#" prefix, that may lead to a failing ASSERT().
2. "ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME" failed
for databases with "#mysql50#" prefix if any trigger.
3. mysqlcheck --fix-table-name didn't use UTF8 as a default
character set that resulted in (parsing) errors for tables with
non-latin symbols in their names and definitions of triggers.

Fix:
1. properly handle table/database names with "#mysql50#" prefix.
2. handle --default-character-set mysqlcheck option;
if mysqlcheck is launched with --fix-table-name or --fix-db-name
set default character set to UTF8 if no --default-character-set
option given.

Note: if given --fix-table-name or --fix-db-name option,
without --default-character-set mysqlcheck option
default character set is UTF8.
2009-01-14 18:50:51 +04:00
He Zhenxing
2c1cf1a0ed Auto merge 2009-01-14 17:32:25 +08:00
He Zhenxing
9904550760 BUG#41986 Replication slave does not pick up proper AUTO_INCREMENT value for Innodb tables
The next number (AUTO_INCREMENT) field of the table for write
rows events are not initialized, and cause some engines (innodb)
not correctly update the tables's auto_increment value.

This patch fixed this problem by honor next number fields if present.
2009-01-14 16:27:32 +08:00
Davi Arnaut
918a038165 Bug#36326: nested transaction and select
The problem is that the query cache stores packets containing
the server status of the time when the cached statement was run.
This might lead to a wrong transaction status in the client side
if a statement is cached during a transaction and is later served
outside a transaction context (and vice-versa).

The solution is to take into account the transaction status when
storing in and serving from the query cache.
2009-01-13 20:07:06 -02:00
Georgi Kodinov
83823a1477 Bug #38795: Automatic search depth and nested join's results in server crash
The greedy optimizer tracks the current level of nested joins and the position
inside these by setting and maintaining a state that's global for the whole FROM
clause.
This state was correctly maintained inside the selection of the next partial plan
table (in best_extension_by_limited_search()). 
greedy_search() also moves the current position by adding the last partial match 
table when there's not enough tables in the partial plan found by 
best_extension_by_limited_search().
This may require update of the global state variables that describe the current
position in the plan if the last table placed by greedy_search is not a top-level 
join table.
Fixed by updating the state after placing the partial plan table in greedy_search()
in the same way this is done on entering the best_extension_by_limited_search().
Fixed the signature of the function called to update the state : 
check_interleaving_with_nj
2009-01-13 13:09:12 +02:00
Georgi Kodinov
b180a10233 Fixed a warning in sql_profile.cc 2009-01-12 18:17:15 +02:00
Georgi Kodinov
ba506ca6b7 merged 41453 to 5.1-bugteam 2009-01-12 17:52:46 +02:00
Tatiana A. Nurnberg
a7d03bf4ed Bug#31177: Server variables can't be set to their current values
Bounds-checks and blocksize corrections were applied to user-input,
but constants in the server were trusted implicitly. If these values
did not actually meet the requirements, the user could not set change
a variable, then set it back to the (wonky) factory default or maximum
by explicitly specifying it (SET <var>=<value> vs SET <var>=DEFAULT).

Now checks also apply to the server's presets. Wonky values and maxima
get corrected at startup. Consequently all non-offsetted values the user
sees are valid, and users can set the variable to that exact value if
they so desire.
2009-01-12 06:32:49 +01:00
Georgi Kodinov
18526afc07 merged 41437 to 5.1-bugteam 2009-01-09 19:51:52 +02:00
Mattias Jonsson
2314183806 merge 2009-01-09 14:21:29 +01:00
Mattias Jonsson
b43b8c2479 Bug#40972: Partition pruning can lead to crash for bad dates
post push fix, added test found a valgrind warning
2009-01-09 14:18:08 +01:00
Sven Sandberg
a24862ed46 BUG#41924: high-level replication functions are not commented
Adding comments to some of the high-level functions in replication.
2009-01-09 13:49:24 +01:00