Commit graph

30830 commits

Author SHA1 Message Date
gkodinov@mysql.com
7149f48d97 Merge mysql.com:/home/kgeorge/mysql/4.1/B16458
into  mysql.com:/home/kgeorge/mysql/5.0/B16458
2006-06-27 17:59:49 +03:00
gkodinov@mysql.com
9ec681ef35 Bug #16458: Simple SELECT FOR UPDATE causes "Result Set not updatable" error
'SELECT DISTINCT a,b FROM t1' should not use temp table if there is unique 
index (or primary key) on a.
There are a number of other similar cases that can be calculated without the
use of a temp table : multi-part unique indexes, primary keys or using GROUP BY 
instead of DISTINCT.
When a GROUP BY/DISTINCT clause contains all key parts of a unique
index, then it is guaranteed that the fields of the clause will be
unique, therefore we can optimize away GROUP BY/DISTINCT altogether.
This optimization has two effects:
* there is no need to create a temporary table to compute the
   GROUP/DISTINCT operation (or the temporary table will be smaller if only GROUP 
   is removed and DISTINCT stays or if DISTINCT is removed and GROUP BY stays)
* this causes the statement in effect to become updatable in Connector/Java
because the result set columns will be direct reference to the primary key of 
the table (instead to the temporary table that it currently references). 

Implemented a check that will optimize away GROUP BY/DISTINCT for queries like 
the above.
Currently it will work only for single non-constant table in the FROM clause.
2006-06-27 17:40:19 +03:00
igor@rurik.mysql.com
aa3cebe143 Merge rurik.mysql.com:/home/igor/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-5.0-opt
2006-06-22 20:48:49 -07:00
igor@rurik.mysql.com
faa48bf1a0 Added a test case for bug #18359.
This was another manifestation of the problems fixed in the
patch for bug 16674.
Wrong calculation of length of the search prefix in the pattern
string led here to a wrong result set for a query in 4.1. 
The bug could be demonstrated for any multi-byte character set.
2006-06-22 20:39:46 -07:00
igor@rurik.mysql.com
98251c62d5 Merge rurik.mysql.com:/home/igor/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-5.0-opt
2006-06-22 16:18:54 -07:00
igor@rurik.mysql.com
8940231491 Fixed bug #20076.
Server crashed in some cases when a query required a MIN/MAX
agrregation for a 'ucs2' field. 
In these cases  the aggregation caused calls of the function
update_tmptable_sum_func that indirectly invoked 
the method Item_sum_hybrid::min_max_update_str_field() 
containing a call to strip_sp for a ucs2 character set.
The latter led directly to the crash as it used my_isspace
undefined for the ucs2 character set.
Actually the call of strip_sp is not needed at all in this
situation and has been removed by the fix.
2006-06-22 15:50:15 -07:00
igor@rurik.mysql.com
f1eb33096f Post-merge fix. 2006-06-22 00:08:32 -07:00
igor@rurik.mysql.com
85f0e50ab3 Merge rurik.mysql.com:/home/igor/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-5.0-opt
2006-06-21 22:41:51 -07:00
igor@rurik.mysql.com
e307b5b297 Modified the test case for bug 16674 to have the same
execution plans in 4.1 and 5.0.
2006-06-21 22:39:48 -07:00
igor@rurik.mysql.com
9631db0620 Merge rurik.mysql.com:/home/igor/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-5.0-opt
2006-06-21 20:06:33 -07:00
igor@rurik.mysql.com
cfd2c2a569 Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-4.1-opt
2006-06-21 16:29:58 -07:00
evgen@moonbone.local
c948256692 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-22 01:16:57 +04:00
evgen@moonbone.local
e39e665390 Manual merge 2006-06-22 00:49:17 +04:00
evgen@moonbone.local
36a436adae Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-22 00:45:42 +04:00
evgen@moonbone.local
6439337bb1 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1
into moonbone.local:/work/tmp_merge-4.1-opt-mysql
2006-06-22 00:29:47 +04:00
evgen@moonbone.local
8d4a910a1f Fixed bug #14896.
This bug in Field_string::cmp resulted in a wrong comparison 
with keys in partial indexes over multi-byte character fields.
Given field a is declared as a varchar(16) collate utf8_unicode_ci
INDEX(a(4)) gives us an example of such an index.
  
Wrong key comparisons could lead to wrong result sets if 
the selected query execution plan used a range scan by 
a partial index over a utf8 character field.
This also caused wrong results in many other cases.
2006-06-22 00:29:04 +04:00
mats@mysql.com
9025bcfb4e Merge mkindahl@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/bk/fix-mysql-5.0
2006-06-21 20:08:34 +02:00
svoj@may.pils.ru
ffd8ea244d Merge may.pils.ru:/home/svoj/devel/mysql/BUG20357/mysql-4.1
into  may.pils.ru:/home/svoj/devel/mysql/BUG20357/mysql-5.0
2006-06-21 19:41:09 +05:00
svoj@may.pils.ru
fedbbf4865 Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-4.1
into  may.pils.ru:/home/svoj/devel/mysql/BUG20357/mysql-4.1
2006-06-21 19:41:08 +05:00
tomas@poseidon.ndb.mysql.com
5f46cb7e1a added missing MYSQLTEST_VARDIR declaration 2006-06-21 16:41:07 +02:00
svoj@may.pils.ru
e560564cfa Merge april:devel/BitKeeper/mysql-4.1
into  may.pils.ru:/home/svoj/devel/mysql/BUG20357/mysql-4.1
2006-06-21 17:51:16 +05:00
svoj@may.pils.ru
8b98be2844 BUG#20357 - Got error 124 from storage engine using MIN and MAX
functions in queries

Using MAX()/MIN() on table with disabled indexes (by ALTER TABLE)
results in error 124 (wrong index) from storage engine.

The problem was that optimizer use disabled index to optimize
MAX()/MIN(). Normally it must skip disabled index and perform
table scan.

This patch skips disabled indexes for min/max optimization.
2006-06-21 17:30:59 +05:00
knielsen@mysql.com
66bdb6de02 Merge knielsen@10.100.52.19:/usr/local/mysql/mysql-5.0
into  mysql.com:/data0/knielsen/mysql-5.0
2006-06-21 12:59:19 +02:00
knielsen@mysql.com
8167b2c8ef BUG#20578
Backport Valgrind suppression from mysql-5.1:

D 1.4 05/11/23 22:44:54+02:00 monty@mysql.com 5 4 12/0/154
P mysql-test/valgrind.supp
C Remove warning that may happens becasue threads dies in different order
2006-06-21 12:52:59 +02:00
joerg@mysql.com
e9fda5b23e Merge mysql.com:/M50/bug19353-5.0 into mysql.com:/M50/autopush-5.0 2006-06-21 12:29:30 +02:00
gkodinov@mysql.com
bca6492927 Merge mysql.com:/home/kgeorge/mysql/5.0/teamclean
into  mysql.com:/home/kgeorge/mysql/5.0/B18080
2006-06-21 13:06:32 +03:00
mskold@mysql.com
22334907fc Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/marty/MySQL/mysql-5.0
2006-06-21 12:03:08 +02:00
tomas@poseidon.ndb.mysql.com
0b247f8092 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-main
2006-06-21 12:03:07 +02:00
gkodinov@mysql.com
f327a8c536 merge of the changes for bug #18080 2006-06-21 13:03:06 +03:00
gkodinov@mysql.com
4f8f4cd51a manual merge 2006-06-21 13:01:00 +03:00
gkodinov@mysql.com
bee985af35 Merge mysql.com:/home/kgeorge/mysql/5.0/teamclean
into  mysql.com:/home/kgeorge/mysql/5.0/B20482
2006-06-21 12:59:34 +03:00
gkodinov@mysql.com
75ca055493 Bug #20482: failure on Create join view with sources views/tables in different
schemas
The function check_one_table_access() called to check access to tables in 
SELECT/INSERT/UPDATE was doing additional checks/modifications that don't hold
in the context of setup_tables_and_check_access().
That's why the check_one_table() was split into two : the functionality needed by
setup_tables_and_check_access() into check_single_table_access() and the rest of 
the functionality stays in check_one_table_access() that is made to call the new
check_single_table_access() function.
2006-06-21 12:12:46 +03:00
mskold@mysql.com
f0bd8a7cd9 Merge mysql.com:/home/marty/MySQL/mysql-5.0-backed
into  mysql.com:/home/marty/MySQL/mysql-5.0
2006-06-21 09:50:41 +02:00
mskold@mysql.com
e77850e573 Fix for Bug #19906 REPLACE doesn't update TEXT fields correctly 2006-06-21 09:36:50 +02:00
tomas@poseidon.ndb.mysql.com
ca69967dd4 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-main
2006-06-21 08:52:31 +02:00
igor@rurik.mysql.com
5e8d011c3a Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-4.1-opt
2006-06-20 22:15:30 -07:00
ramil@mysql.com
81277475f8 Merge mysql.com:/usr/home/ram/work/mysql-4.1
into  mysql.com:/usr/home/ram/work/mysql-5.0
2006-06-21 09:16:22 +05:00
igor@rurik.mysql.com
2893d11c5e Fixed bug #16674.
The length of the prefix of the pattern string in the LIKE predicate that 
determined the index range to be scanned was calculated incorrectly for
multi-byte character sets. 
As a result of this in 4. 1 the the scanned range was wider then necessary
if the prefix contained not only one-byte characters.  
In 5.0 additionally it caused missing some rows from the result set.
2006-06-20 19:57:21 -07:00
evgen@moonbone.local
d924f70cc7 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-21 02:21:11 +04:00
sergefp@mysql.com
827fe15621 Remove deadcode in select_dumpvar::send_data() 2006-06-21 02:21:10 +04:00
evgen@moonbone.local
8c0aa3560c field.cc, field.h:
Additional fix for #16377 for bigendian platforms
sql_select.cc, select.result, select.test:
  After merge fix
2006-06-21 01:14:53 +04:00
evgen@moonbone.local
278b26a39b Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-21 01:10:59 +04:00
joerg@mysql.com
27df8b07b7 Fix for bug#18516 (also #19353, reported for 5.1):
In addition to include "mysql_upgrade" in a RPM, it should also be called
when the RPM is upgraded.
2006-06-20 22:40:46 +02:00
evgen@moonbone.local
52d86dff85 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1
into moonbone.local:/work/tmp_merge-4.1-opt-mysql
2006-06-20 23:49:33 +04:00
evgen@moonbone.local
bb53b6eeaa Manually merged 2006-06-20 23:22:51 +04:00
evgen@moonbone.local
ae6970e6bc select.result:
Added test case for bug#18759 Incorrect string to numeric conversion.  
select.test:
  Added test case for bug#18759 Incorrect string to numeric conversion.
item_cmpfunc.cc:
  Cleanup after fix for bug#18360 removal
2006-06-20 23:05:55 +04:00
mats@mysql.com
e57e87980b Bug#19437 (Connection refused by server: "2002 Can't connect... /master.sock"):
Clearing active VIO before calling mysql_close() in the slave I/O
thread.
2006-06-20 20:46:45 +02:00
evgen@moonbone.local
1e0138fd3d Manually merged 2006-06-20 22:22:14 +04:00
elliot@mysql.com
6043f29810 Merge emurphy@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/emurphy/mysql-5.0-heikki
2006-06-20 13:44:36 -04:00
elliot@mysql.com
37e5ec9f50 Applying patch from SergeyV
Fixes bug#17264, for alter table on win32 for successfull operation completion
it is used TL_WRITE(=10) lock instead of TL_WRITE_ALLOW_READ(=6), however here
in innodb handler TL_WRTIE is lifted to TL_WRITE_ALLOW_WRITE, which causes
race condition when several clients do alter table simultaneously.
2006-06-20 13:43:13 -04:00