Commit graph

39332 commits

Author SHA1 Message Date
Evgeny Potemkin
368f7f63b2 Fixed failing test case for the bug#38195. 2008-08-14 23:55:18 +04:00
Evgeny Potemkin
b789b4f33c Bug#38195: Incorrect handling of aggregate functions when loose index scan is
used causes server crash.

When the loose index scan access method is used values of aggregated functions
are precomputed by it. Aggregation of such functions shouldn't be performed
in this case and functions should be treated as normal ones.
The create_tmp_table function wasn't taking this into account and this led to
a crash if a query has MIN/MAX aggregate functions and employs temporary table
and loose index scan.
Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate
functions as normal ones when the loose index scan is used.


mysql-test/r/group_min_max.result:
  Added a test case for the bug#38195.
mysql-test/t/group_min_max.test:
  Added a test case for the bug#38195.
sql/sql_select.cc:
  Bug#38195: Incorrect handling of aggregate functions when loose index scan is
  used causes server crash.
  Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate
  functions as normal ones when the loose index scan is used.
2008-08-13 22:24:55 +04:00
Daniel Fischer
e9067a6689 let's try to avoid re-defining _vsnprintf on Windows 2008-08-13 18:44:05 +02:00
Joerg Bruehe
182b238334 Correct the version number to 5.0.70.
configure.in:
  Version number raise was incomplete, the 5.0 tree steps by 2.
2008-08-13 12:34:35 +02:00
unknown
6cab759d7a Raise version number after cloning 5.0.68 2008-08-13 11:05:24 +02:00
Timothy Smith
d7c36eb334 Merge some 5.0 innodb changes 2008-08-13 00:11:11 -06:00
Davi Arnaut
8ed209b21d Merge and fix tree name. 2008-08-12 16:52:52 -03:00
Davi Arnaut
7e35139c8f Merge mysql-5.0-bugteam into mysql-5.0 2008-08-12 15:51:00 -03:00
Davi Arnaut
1912eaacc4 Bug#38486: Crash when using cursor protocol
Post-merge fix: mysql_client_test.c is compiled by C compilers
and some C compilers don't support mixed declarations and code
and it's explicitly forbidden by ISO C90.

tests/mysql_client_test.c:
  Don't mix declarations and code.
2008-08-11 20:27:09 -03:00
Marc Alff
2f3b860305 Merge mysql-5.0-bugteam -> local bugfix branch 2008-08-11 15:21:29 -06:00
Marc Alff
b4418b5c3a Bug#37302 (missing DBUG_RETURN macro in function "find_key_block" (5.0 only))
Fixed missing DBUG_RETURN in the function find_key_block
2008-08-11 15:08:12 -06:00
Chad MILLER
26ed51d095 Merge from bugteam 5.0 trunk. 2008-08-11 13:56:54 -04:00
Marc Alff
e04dfffb59 Bug#38296 (low memory crash with many conditions in a query)
This fix is for 5.0 only : back porting the 6.0 patch manually

The parser code in sql/sql_yacc.yy needs to be more robust to out of
memory conditions, so that when parsing a query fails due to OOM,
the thread gracefully returns an error.

Before this fix, a new/alloc returning NULL could:
- cause a crash, if dereferencing the NULL pointer,
- produce a corrupted parsed tree, containing NULL nodes,
- alter the semantic of a query, by silently dropping token values or nodes

With this fix:
- C++ constructors are *not* executed with a NULL "this" pointer
when operator new fails.
This is achieved by declaring "operator new" with a "throw ()" clause,
so that a failed new gracefully returns NULL on OOM conditions.

- calls to new/alloc are tested for a NULL result,

- The thread diagnostic area is set to an error status when OOM occurs.
This ensures that a request failing in the server properly returns an
ER_OUT_OF_RESOURCES error to the client.

- OOM conditions cause the parser to stop immediately (MYSQL_YYABORT).
This prevents causing further crashes when using a partially built parsed
tree in further rules in the parser.

No test scripts are provided, since automating OOM failures is not
instrumented in the server.
Tested under the debugger, to verify that an error in alloc_root cause the
thread to returns gracefully all the way to the client application, with
an ER_OUT_OF_RESOURCES error.
2008-08-11 10:10:00 -06:00
Chad MILLER
b615e3d535 Backport compiler warning fix from 5.1-bugteam. 2008-08-11 11:28:35 -04:00
Davi Arnaut
d622b04f39 Post-merge fix: Silence warning due to type mismatch.
client/mysql_upgrade.c:
  Silence warning due to type mismatch.
2008-08-11 10:08:21 -03:00
Kristofer Pettersson
861c06f0b8 Automerge 2008-08-11 13:00:48 +02:00
Kristofer Pettersson
75a5ecbd72 Bug#38486 Crash when using cursor protocol
Server side cursors were not initialized properly and this caused a reference to
uninitialized memory.
2008-08-11 11:40:54 +02:00
Timothy Smith
9d9fa39b97 Cherry-pick fix for Bug#35220 from innodb-5.0-ss2475 snapshot.
Bug#35220: ALTER TABLE too picky on reserved word "foreign"

In ALTER TABLE, change the internal parser to search for
``FOREIGN[[:space:]]'' instead of only ``FOREIGN'' when parsing
ALTER TABLE ... DROP FOREIGN KEY ...; otherwise it could be mistaken
with ALTER TABLE ... DROP foreign_col;

(This fix is already present in MySQL 5.1 and higher.)
2008-08-07 18:25:24 -06:00
Chad MILLER
abeda651c5 Bug#31605: mysql_upgrade relies on Linux /proc filesystem when not \
running on Windows

We used two OS-specific methods of looking up the executable 
name, which don't work outside of those two kinds of OSes 
(Linux+Solaris and Windows).

We assume that if the user ran this program with a certain 
name, we can run the other sibling programs with a similar name.

(re-patch in bzr)
2008-08-07 12:24:39 -04:00
Chad MILLER
82d13392eb Bug#37201: make tags doesn't work in bazaar server trees
Fall back to "find" if bzr is unavailable.

Don't fail for paths that have spaces in them.
2008-08-06 16:25:25 -04:00
Chad MILLER
93df483fdd Bug#37201: make tags doesn't work in bazaar server trees
bk sfiles -> bzr ls
2008-08-06 15:27:28 -04:00
Chad MILLER
ff577e3590 Bug#30129: mysql_install_db appears to run normally, but the databases \
are not created  {Netware}

The init and test sql files were not created at cross-compilation time.

Now, make them in the default build rule.  Additionally, remove the "fix" 
SQL instructions, which are unnecessary for newly initialized databases.
Also, clean up the english in an error message, and BZRify nwbootstrap.
2008-08-06 09:25:03 -04:00
Kristofer Pettersson
be7d4dc8ee automerge 2008-08-04 14:37:28 +02:00
Timothy Smith
dc593c3ec4 Cherry-pick InnoDB fixes for Bug#34286, Bug#35352, and Bug#36600 from snapshot
innodb-5.0-ss2475.

Bug #34286  Assertion failure in thread 2816 in file .\row\row0sel.c line 3500
Since autoinc init performs a MySQL SELECT query to determine the auto-inc
value, set prebuilt->sql_stat_start = TRUE so that it is performed like any
normal SELECT, regardless of the context in which it was invoked.


Bug #35352  If InnoDB crashes with UNDO slots full error the error persists on restart
We've added a heuristic that checks the size of the UNDO slots cache lists
(insert and upate). If either of cached lists has more than 500 entries then we
add any UNDO slots that are freed, to the common free list instead of the cache
list, this is to avoid the case where all the free slots end up in only one of
the lists on startup after a crash.

Tested with test case for 26590 and passes all mysql-test(s).

Bug #36600  SHOW STATUS takes a lot of CPU in buf_get_latched_pages_number
Fixed by removing the Innodb_buffer_pool_pages_latched variable from SHOW
STATUS output in non-UNIV_DEBUG compilation.
2008-07-31 15:47:57 -06:00
Georgi Kodinov
b19155258e Bug#34159: mysql_install_db fails with sql_mode=TRADITIONAL
Reset session sql_mode before creating system tables as it
is done in the mysql_fix_privilege_tables.sql script.

scripts/mysql_system_tables.sql:
  reset sql mode
2008-07-31 12:28:04 +03:00
Georgi Kodinov
ae4a35fd5c Bug#37662 nested if() inside sum() is parsed in exponential time
min() and max() functions are implemented in MySQL as macros.
This means that max(a,b) is expanded to: ((a) > (b) ? (a) : (b))
Note how 'a' is quoted two times.
Now imagine 'a' is a recursive function call that's several 10s of levels deep.
And the recursive function does max() with a function arg as well to dive into
recursion.
This means that simple function call can take most of the clock time.
Identified and fixed several such calls to max()/min() : including the IF() 
sql function implementation.

mysql-test/r/func_if.result:
  Bug#37662 test case
mysql-test/t/func_if.test:
  Bug#37662 test case
sql/item.cc:
  Bug#37662 don't call expensive functions as arguments to min/max
sql/item_cmpfunc.cc:
  Bug#37662 don't call expensive functions as arguments to min/max
sql/item_func.cc:
  Bug#37662 don't call expensive functions as arguments to min/max
2008-07-30 14:07:37 +03:00
Kristofer Pettersson
0a415f62fd Bug#29738 Error message not properly translated to Serbian
Community contribution fix for Serbian translation in error message list.
2008-07-29 15:58:15 +02:00
Kristofer Pettersson
f0dfb82fcb Bug#37781 mysql_drop_user calls get_current_user() twice for no reason
Fixed typo and removed duplicate call to get_current_user.
2008-07-29 15:37:09 +02:00
Kristofer Pettersson
0b918cfd7d auto merge 2008-07-29 15:15:04 +02:00
Igor Babaev
7f615b2c14 Merge 2008-07-28 01:24:56 -07:00
Igor Babaev
b6e3a9e28c Fixed bug #38191.
Calling List<Cached_item>::delete_elements for the same list twice
caused a crash of the server in the function JOIN::cleaunup.
Ensured that delete_elements() in JOIN::cleanup would be called only once.


mysql-test/r/subselect.result:
  Added a test case for bug #38191.
mysql-test/t/subselect.test:
  Added a test case for bug #38191.
sql/sql_select.cc:
  Fixed bug #38191.
  Ensured that delete_elements() in JOIN::cleanup would be called only once.
2008-07-26 13:44:07 -07:00
Davi Arnaut
14887bb2ab Cherry-pick Bug#33362 from mysql-5.1 2008-07-24 11:14:34 -03:00
Georgi Kodinov
dd85aa78ba Bug#37830 : ORDER BY ASC/DESC - no difference
Range scan in descending order for c <= <col> <= c type of
ranges was ignoring the DESC flag.
However some engines like InnoDB have the primary key parts 
as a suffix for every secondary key.
When such primary key suffix is used for ordering ignoring 
the DESC is not valid.
But we generally would like to do this because it's faster.
            
Fixed by performing only reverse scan if the primary key is used.
Removed some dead code in the process.

mysql-test/r/innodb_mysql.result:
  Bug#37830 : test case
mysql-test/t/innodb_mysql.test:
  Bug#37830 : test case
sql/opt_range.cc:
  Bug#37830 : 
  - preserve and use used_key_parts to
    distinguish when a primary key suffix is used
  - removed some dead code
sql/opt_range.h:
  Bug#37830 : 
  - preserve used_key_parts
  - dead code removed
sql/sql_select.cc:
  Bug#37830 : Do only reverse order traversal
  if the primary key suffix is used.
2008-07-23 14:25:00 +03:00
Kristofer Pettersson
f5bbcba96f merge 5.0->5.0-bugteam 2008-07-22 12:55:15 +02:00
Kristofer Pettersson
6da6bbc75e Auto merge 2008-07-21 12:24:31 +02:00
Kristofer Pettersson
b7d4c76a54 Bug#37027 expire_logs_days and missing binlogs cause a crash !
If the server failed to expired log files during start up it could crash.

sql/log.cc:
  Added predicate to protect againt cases when current_thd might be NULL.
2008-07-24 14:28:21 +02:00
Timothy Smith
6825ffd153 Merge latest changes from 5.0-build 2008-07-20 21:59:47 -06:00
Timothy Smith
100d417ec2 Merge 5.0.66a-release changes 2008-07-18 21:46:03 -06:00
unknown
7da2f133e0 Merge from mysql-5.0.66-release 2008-07-19 02:52:13 +02:00
Georgi Kodinov
88d66418c8 Bug 38158: mysql client regression, can't read dump files
- Revert the fix for bug 33812
- fixed a win32 warning

client/mysql.cc:
  revert the fix for bug 33812
mysql-test/r/mysql.result:
  revert the fix for bug 33812
mysql-test/t/mysql_delimiter.sql:
  revert the fix for bug 33812
mysys/default.c:
  fixed a win32 warning
2008-07-18 13:24:59 +03:00
Alexander Barkov
6a42c35fa7 Bug#27934 test client_xml misssing initialization
Problem: missing initialization, if the previous test
fails leaving table t1, client_xml fails as well.
Fix: adding initialization.
2008-07-18 14:07:16 +05:00
Timothy Smith
006a3a0059 Merge in changes from mysql-5.0.66a-release into 5.0.
Includes fix for Bug #38180, "options are read from ~/my.cnf instead of ~/.my.cnf"
2008-07-17 11:08:49 -06:00
Georgi Kodinov
430aaacdaf Folow-up on Bug#37069: fix a valgrind warning
Don't initalize federated if it's disabled by a command line option.

sql/ha_federated.cc:
  Folow-up on Bug#37069: Don't initalize federated if it's disabled 
  by a command line option.
2008-07-17 17:33:41 +03:00
unknown
49f09f136f Set version to 5.0.66a 2008-07-17 01:33:45 +02:00
Timothy Smith
aa5731dad9 Bug #38180 options are read from ~/my.cnf instead of ~/.my.cnf
Pull out some of unpack_dirname() into normalize_dirname(); this
new function does not expand "~" to the home directory.  Use this
function in unpack_dirname(), and use it during init_default_directories()
to remove duplicate entries without losing track of which directory
is a user's home dir.
2008-07-16 16:58:45 -06:00
Marc Alff
95ca2c6d96 Bug#30087 Set query_cache_size, if the value is too small, get a unclear warning
Reverting the previous patch
2008-07-16 16:29:22 -06:00
Kristofer Pettersson
76bd3a55a6 Auto merged 2008-07-16 16:12:20 +02:00
Jonathan Perkin
5fce61fbd2 Merge from mysql-5.0.60sp1-release 2008-07-16 12:28:44 +02:00
Sergey Petrunia
7315a7002a Merge 2008-07-15 21:49:28 +04:00
Kristofer Pettersson
f81c2f070b auto merge 2008-07-15 17:29:26 +02:00