Commit graph

10451 commits

Author SHA1 Message Date
igor@rurik.mysql.com
355753baa4 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-13 19:57:50 -07:00
pekka@clam.ndb.mysql.com
e071bbcb0b ndb - bug#20406 multi-platform testing - not FIX 2006-06-14 00:38:34 +02:00
evgen@moonbone.local
111dc92786 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into moonbone.local:/home/evgen/bk-trees/mysql-4.1-opt
2006-06-13 22:53:30 +04:00
gkodinov@mysql.com
8d94b8cacf Bug #20195: INSERT DELAYED with auto_increment is assigned wrong values
The INSERT DELAYED should not maintain its own private auto-increment
counter, because this is assuming that other threads cannot insert
into the table while the INSERT DELAYED thread is inserting, which is
a wrong assumption.

So the start of processing of a batch of INSERT rows in the 
INSERT DELAYED thread must be treated as a start of a new statement
and cached next_insert_id must be cleared.
2006-06-13 18:18:32 +03:00
evgen@moonbone.local
d4942a2635 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into moonbone.local:/work/16377-bug-4.1-opt-mysql
2006-06-13 19:10:27 +04:00
evgen@moonbone.local
67de8c46a5 Fixed bug#16377: result of DATE/TIME functions were compared as strings which
can lead to a wrong result.

All date/time functions has the STRING result type thus their results are
compared as strings. The string date representation allows a user to skip 
some of leading zeros. This can lead to wrong comparison result if a date/time 
function result is compared to such a string constant.

The idea behind this bug fix is to compare results of date/time functions
and data/time constants as ints, because that date/time representation is 
more exact. To achieve this the agg_cmp_type() is changed to take in the
account that a date/time field or an date/time item should be compared 
as ints.

This bug fix is partially back ported from 5.0.

The agg_cmp_type() function now accepts THD as one of parameters. 
In addition, it now checks if a date/time field/function is present in the
list. If so, it tries to coerce all constants to INT to make date/time
comparison return correct result. The field for the constant coercion is
taken from the Item_field or constructed from the Item_func. In latter case
the constructed field will be freed after conversion of all constant items.
Otherwise the result is same as before - aggregated with help of the
item_cmp_type() function.

From the Item_func_between::fix_length_and_dec() function removed the part
which was converting date/time constants to int if possible. Now this is 
done by the agg_cmp_type() function.

The new function result_as_longlong() is added to the Item class. 
It indicates that the item is a date/time item and result of it can be
compared as int. Such items are date/time fields/functions.

Correct val_int() methods are implemented for classes Item_date_typecast, 
Item_func_makedate, Item_time_typecast, Item_datetime_typecast. All these
classes are derived from Item_str_func and Item_str_func::val_int() converts
its string value to int without regard to the date/time type of these items.

Arg_comparator::set_compare_func() and Arg_comparator::set_cmp_func()
functions are changed to substitute result type of an item with the INT_RESULT
if the item is a date/time item and another item is a constant. This is done
to get a correct result of comparisons like date_time_function() = string_constant.
2006-06-13 19:09:24 +04:00
gkodinov@mysql.com
df358201e8 Merge mysql.com:/home/kgeorge/mysql/5.0/clean
into  mysql.com:/home/kgeorge/mysql/5.0/B20363
2006-06-12 18:28:04 +03:00
gkodinov@mysql.com
eb693dcc7b Bug #20363: Create view on just created view is now denied
There was a wrong determination of the DB name (witch is 
not always the one in TABLE_LIST because derived tables
may be calculated using temp tables that have their db name
set to "").
The fix determines the database name according to the type 
of table reference, and calls the function check_access() 
with the correct db name so the correct set of grants is found.
2006-06-12 18:15:08 +03:00
mskold@mysql.com
69d52db924 Added order by 2006-06-12 15:36:12 +02:00
mskold@mysql.com
4242beb31d Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/marty/MySQL/mysql-5.0
2006-06-12 15:36:10 +02:00
mskold@mysql.com
47bb569979 Added order by 2006-06-12 15:35:47 +02:00
mskold@mysql.com
049c3e3f69 Merge mskold@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/marty/MySQL/mysql-4.1
2006-06-12 15:35:46 +02:00
evgen@moonbone.local
147961bc59 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into moonbone.local:/home/evgen/bk-trees/mysql-4.1-opt
2006-06-12 15:56:21 +04:00
evgen@moonbone.local
e831704a33 Merge moonbone.local:/work/16716-bug-4.1-mysql
into moonbone.local:/work/16716-bug-4.1-opt-mysql
2006-06-12 15:50:59 +04:00
mskold@mysql.com
d17c3d3c7c Fix for Bug #18184 SELECT ... FOR UPDATE does not work..: Skipped lock check for full table scan due to bug #20390 SELECT FOR UPDATE does not release locks of untouched rows in full table scans 2006-06-12 10:40:56 +02:00
mskold@mysql.com
b93ba41e68 Merge mysql.com:/home/marty/MySQL/mysql-4.1
into  mysql.com:/home/marty/MySQL/mysql-5.0
2006-06-12 09:42:20 +02:00
mskold@mysql.com
b89f17912c Added lock test on index scan 2006-06-12 09:28:27 +02:00
igor@rurik.mysql.com
bb94b35f2f Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  rurik.mysql.com:/home/igor/mysql-5.0-opt
2006-06-11 13:45:18 -07:00
ingo@mysql.com
76f066aa32 Merge mysql.com:/home/mydev/mysql-5.0
into  mysql.com:/home/mydev/mysql-5.0-amerge
2006-06-10 12:24:44 +02:00
igor@rurik.mysql.com
60620b31fe Post-merge fixes 2006-06-09 19:29:39 -07:00
igor@rurik.mysql.com
940fe6fea6 Merge rurik.mysql.com:/home/igor/tmp_merge
into  rurik.mysql.com:/home/igor/dev/mysql-5.0-0
2006-06-09 17:56:08 -07:00
kent@mysql.com
3744b46a1d Merge bk-internal:/home/bk/mysql-4.1
into  mysql.com:/data0/mysqldev/my/mysql-4.1
2006-06-09 22:42:34 +02:00
kent@mysql.com
a5bc38a0d3 Merge bk-internal:/home/bk/mysql-5.0
into  mysql.com:/data0/mysqldev/my/mysql-5.0
2006-06-09 22:34:21 +02:00
joerg@trift2.mysql.com
44c0053a44 Merge trift2.mysql.com:/M41/bug20303-4.1
into trift2.mysql.com:/M41/mysql-4.1
2006-06-09 14:37:24 +02:00
joerg@trift2.mysql.com
4b9a1a8bbb Merge trift2.mysql.com:/M50/bug20303-5.0
into trift2.mysql.com:/M50/mysql-5.0
2006-06-09 14:13:01 +02:00
mskold@mysql.com
22fea185bd Merge mysql.com:/home/marty/MySQL/mysql-4.1
into  mysql.com:/home/marty/MySQL/mysql-5.0
2006-06-09 12:07:04 +02:00
joerg@mysql.com
1cd78f7a2b Merge mysql.com:/M41/bug20303-4.1 into mysql.com:/M50/bug20303-5.0 2006-06-08 19:57:26 +02:00
joerg@mysql.com
a26c9c31a1 mysql-test/mysql-test-run.pl : Output the usage error if one is given. (Found when fixing bug#20303) 2006-06-08 19:55:22 +02:00
joerg@mysql.com
47f37f4d45 Merge mysql.com:/M41/bug20303-4.1 into mysql.com:/M50/bug20303-5.0 2006-06-08 19:32:25 +02:00
mskold@mysql.com
597e1444aa Fix for Bug #18184 SELECT ... FOR UPDATE does not work..: implemented ha_ndblcuster::unlock_row() and explicitly lock all rows that are not being unlocked 2006-06-08 16:12:38 +02:00
joerg@mysql.com
5091df1333 mysql-test/mysql-test-run.pl : A fix for bug#20303 "mysql-test-run.pl: Does not recognize -- argument" 2006-06-08 14:52:33 +02:00
gkodinov@mysql.com
c9bb9413ab Merge mysql.com:/home/kgeorge/mysql/5.0/teamclean
into  mysql.com:/home/kgeorge/mysql/5.0/B15355
2006-06-08 14:26:02 +03:00
gkodinov@mysql.com
395affb8e9 Bug #15355: Common natural join column not resolved in prepared statement nested
query
Problem:
There was a wrong context assigned to the columns that were added in insert_fields()
when expanding a '*'. When this is done in a prepared statement it causes 
fix_fields() to fail to find the table that these columns reference.
Actually the right context is set in setup_natural_join_row_types() called at the 
end of setup_tables(). However when executed in a context of a prepared statement
setup_tables() resets the context, but setup_natural_join_row_types() was not
setting it to the correct value assuming it has already done so.

Solution:
The top-most, left-most NATURAL/USING join must be set as a 
first_name_resolution_table in context even when operating on prepared statements.
2006-06-08 13:34:03 +03:00
evgen@moonbone.local
9743628758 Fixed bug#19789: REPLACE was allowed for a VIEW with CHECK OPTION enabled.
The st_lex::which_check_option_applicable() function controls for which 
statements WITH CHECK OPTION clause should be taken into account. REPLACE and
REPLACE_SELECT wasn't in the list which results in allowing REPLACE to insert
wrong rows in a such view.

The st_lex::which_check_option_applicable() now includes REPLACE and 
REPLACE_SELECT in the list of statements for which WITH CHECK OPTION clause is
applicable.
2006-06-07 16:17:56 +04:00
ramil@mysql.com
fe01874613 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/usr/home/ram/work/4.1.b6880
2006-06-07 14:40:33 +05:00
ramil@mysql.com
0bdae38efb Fix for bug #6880: LAST_INSERT_ID() within a statement 2006-06-07 14:01:10 +05:00
evgen@moonbone.local
d027dd7c0d Fixed bug#15962: CONCAT() in UNION may lead to a data trucation.
To calculate its max_length the CONCAT() function is simply sums max_lengths
of its arguments but when the collation of an argument differs from the 
collation of the CONCAT() max_length will be wrong. This may lead to a data
truncation when a tmp table is used, in UNIONS for example.

The Item_func_concat::fix_length_and_dec() function now recalculates the 
max_length of an argument when the mbmaxlen of the argument differs from the
mbmaxlen of the CONCAT().
2006-06-07 01:10:23 +04:00
kent@mysql.com
c73ca30d71 Merge bk-internal:/home/bk/mysql-5.0
into  mysql.com:/data0/mysqldev/my/mysql-5.0
2006-06-06 22:12:14 +02:00
aivanov@mysql.com
b6d1fcd00a Merge aivanov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/alexi/innodb/mysql-5.0-ss609
2006-06-06 23:56:48 +04:00
aivanov@mysql.com
c46b17a731 Applied innodb-5.0-ss609 snapshot.
Fixed BUG#19727 "InnoDB crashed server and crashed tables
 are not recoverable".
2006-06-06 23:37:42 +04:00
gluh@eagle.intranet.mysql.r18.ru
8acb6eeb80 Bug#18035 Information Schema: Output is not Sorted
added 'order by' to avoid result order difference
2006-06-06 12:57:50 +05:00
gluh@eagle.intranet.mysql.r18.ru
b1892278c7 Bug#19599 duplication of information_schema column value in a CONCAT expr with user var
mark result string using String::mark_as_const()
which prevents CONCAT from reusing it as a buffer
for concatenation result.
2006-06-06 12:51:04 +05:00
gluh@eagle.intranet.mysql.r18.ru
03d8717ac8 Bug#17661 information_schema.SCHEMATA returns uppercase with lower_case_table_names = 1
fix: return db name for I_S.TABLES(and others) in original letter case.
if mysql starts with lower_case_table_names=1 | 2 then original db name is converted
to lower case(for I_S tables). It happens when we perform add_table_to_list. 
to avoid this we make a copy of original db name and use the copy hereafter.
2006-06-06 11:25:31 +05:00
ramil@mysql.com
19e312af08 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/usr/home/ram/work/4.1.b16546
2006-06-06 09:10:28 +05:00
anjuta@arthur.local
a83580b33a Merge anna@bk-internal.mysql.com:/home/bk/mysql-5.0
into  arthur.local:/home/my/mysql-5.0-clean
2006-06-05 11:59:44 +03:00
anjuta@arthur.local
29615ac8fd BUG#19479: mysqldump creates invalid dump
Moved the test case to separate non-windows specific file.
2006-06-04 21:27:41 +03:00
igor@rurik.mysql.com
5ade9e75dc Merge rurik.mysql.com:/home/igor/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-5.0-opt
2006-06-02 17:06:10 -07:00
igor@rurik.mysql.com
d02f254eaa Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-4.1-opt
2006-06-02 14:16:22 -07:00
igor@rurik.mysql.com
37e049db01 Fixed bug #18206.
The bug report revealed two problems related to min/max optimization:
1. If the length of a constant key used in a SARGable condition for
for the MIN/MAX fields is greater than the length of the field an 
unwanted warning on key truncation is issued;
2. If MIN/MAX optimization is applied to a partial index, like INDEX(b(4))
than can lead to returning a wrong result set.
2006-06-02 14:14:57 -07:00
kent@mysql.com
4cc58e7ff2 Merge bk-internal:/home/bk/mysql-5.0
into  mysql.com:/data0/mysqldev/my/mysql-5.0
2006-06-02 21:41:57 +02:00