Commit graph

20525 commits

Author SHA1 Message Date
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
evgen@moonbone.local
de8a1b4f19 Merge moonbone.local:/work/18630-bug-4.1-mysql
into moonbone.local:/work/18360-bug-4.1-mysql-opt
2006-05-30 18:57:08 +04:00
evgen@moonbone.local
641f852de8 Fixed bug#18360: Incorrect type coercion in IN() results in false comparison
The IN() function uses agg_cmp_type() to aggregate all types of its arguments
to find out some common type for comparisons. In this particular case the 
char() and the int was aggregated to double because char() can contain values
like '1.5'. But all strings which do not start from a digit are converted to
0. thus 'a' and 'z' become equal. 
This behaviour is reasonable when all function arguments are constants. But 
when there is a field or an expression this can lead to false comparisons. In
this case it makes more sense to coerce constants to the type of the field
argument.

The agg_cmp_type() function now aggregates types of constant and non-constant
items separately. If some non-constant items will be found then their
aggregated type will be returned. Thus after the aggregation constants will be
coerced to the aggregated type.
2006-05-30 00:36:48 +04:00
evgen@moonbone.local
1f30bf5a33 Fixed bug#19225: unchecked error results in server crash
In multi-table delete a table for delete can't be used for selecting in
subselects. Appropriate error was raised but wasn't checked which leads to a
crash at the execution phase.

The mysql_execute_command() now checks for errors before executing select
for multi-delete.
2006-05-29 00:32:59 +04:00
msvensson@neptunus.(none)
7667b271d8 Merge bk-internal:/home/bk/mysql-4.1
into  neptunus.(none):/home/msvensson/mysql/mysql-4.1
2006-05-23 11:38:05 +02:00
msvensson@neptunus.(none)
cb7958ce1b Merge neptunus.(none):/home/msvensson/mysql/my41-bug13711
into  neptunus.(none):/home/msvensson/mysql/mysql-4.1
2006-05-23 10:34:59 +02:00
msvensson@neptunus.(none)
0144b51445 Add comment for 'kill_server' function 2006-05-23 10:33:53 +02:00
ramil@mysql.com
71c035fafb Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/usr/home/ram/work/4.1.b18536
2006-05-22 11:49:35 +05:00
holyfoot@mysql.com
00f3ca8d27 Merge bk@192.168.21.1:mysql-4.1
into mysql.com:/home/hf/work/mysql-4.1.clean
2006-05-21 18:19:51 +05:00
kent@mysql.com
2419732379 Merge 2006-05-20 23:36:17 +02:00
kent@mysql.com
e09910f91f mysql.spec.sh:
Always compile position independent
2006-05-20 22:47:20 +02:00
ramil@mysql.com
13baf7575f Fix for bug #18536: mysqldump does not maintain table orders as per --tables option 2006-05-19 16:21:32 +05:00
msvensson@neptunus.(none)
e3a75df3ca Merge bk-internal:/home/bk/mysql-4.1
into  neptunus.(none):/home/msvensson/mysql/mysql-4.1
2006-05-19 13:11:49 +02:00
msvensson@neptunus.(none)
d04113db05 Merge neptunus.(none):/home/msvensson/mysql/my41-bug13711
into  neptunus.(none):/home/msvensson/mysql/mysql-4.1
2006-05-19 13:10:52 +02:00
msvensson@neptunus.(none)
b9a59fa014 Bug#15869 Cannot shutdown the server - it restarts
- A segfault occured when the function 'kill_server' called 
   'my_sigset' with signal number 0. 'my_sigset' is a macro which
   uses 'sigaction' to install the signal handler with an invalid
   signal number will on most platforms return EINVAL but yields
   a segfauilt on IRIX 6.5
 - The server crash was detected by mysqld_safe and it was restarted although
   a shutdown was requested. 
 - Semantics of kill_server(0) is not known, leaving it intact
2006-05-19 13:07:24 +02:00
msvensson@neptunus.(none)
28cf106088 Merge bk-internal:/home/bk/mysql-4.1
into  neptunus.(none):/home/msvensson/mysql/bug18818/my41-bug18818
2006-05-17 14:14:54 +02:00
tulin@production.mysql.com
132a631108 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  production.mysql.com:/usersnfs/tulin/mysql-4.1
2006-05-17 09:34:55 +02:00
tomas@poseidon.ndb.mysql.com
ee75437891 Merge tulin@production.mysql.com:mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-05-17 00:25:51 +02:00
tomas@poseidon.ndb.mysql.com
4fd4e014aa Merge poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-05-17 00:23:55 +02:00
tomas@poseidon.ndb.mysql.com
9432143bee ndb: added some missing error codes to mgmapi
ndb: ndb_waiter disconnect/reconnect on get status error
2006-05-17 00:22:43 +02:00
tulin@production.mysql.com
4d0169c6f6 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  production.mysql.com:/usersnfs/tulin/mysql-4.1
2006-05-16 21:46:52 +02:00
kent@mysql.com
6cd860a9d9 Merge mysql.com:/data0/mysqldev/my/bk_saved/mysql-4.1.18-release
into  mysql.com:/data0/mysqldev/my/mysql-4.1
2006-05-16 19:25:10 +02:00
aelkin@mysql.com
713d17d5e7 BUG#14157: utf8 encoding in binlog without set character_set_client: e.g DROP temporary
fixing encoding example because of table names can not be in koi8r 
on some platforms.
2006-05-16 16:50:05 +03:00
tomas@poseidon.ndb.mysql.com
a5686c3138 Merge poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-main
2006-05-16 12:32:36 +02:00
tomas@poseidon.ndb.mysql.com
3559bdb7b6 Bug #18591 Repeated "show" and "all status" calls to ndb_mgm causes mgmd to crash
- not having lock can cause "block number list" to become corrupt => crash
- also may result in 2 threads receiving same block no => possble cause of
Bug #13987 Cluster: Loss of data nodes can cause high CPU usage from ndb_mgmd
2006-05-16 11:47:33 +02:00
tomas@poseidon.ndb.mysql.com
b592d872ec Merge jonas@perch:src/mysql-4.1
into  poseidon.ndb.mysql.com:/home/tomas/mysql-4.1
2006-05-16 11:31:10 +02:00
pekka@mysql.com
da44e731cc ndb - bug#19537: arithmetic conversion Uint64 reg to Uint32 attr 2006-05-15 19:53:29 +02:00
aivanov@mysql.com
9326f67dda Merge aivanov@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/alexi/innodb/mysql-4.1-ss29
2006-05-15 21:53:28 +04:00
tomas@poseidon.ndb.mysql.com
271c72aa03 Bug #16875 , correction of previous patch 2006-05-15 17:16:21 +02:00
tomas@poseidon.ndb.mysql.com
fe9934c9fe Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
- invalidate ndb dict cache on cluster disconnect (ClusterMgr.cpp)
- add check for correct frm on external lock when table cache is found invalid
2006-05-15 16:23:59 +02:00
aivanov@mysql.com
9595317cfa Applied innodb-4.1-ss29 snapshot.
Fix BUG#19542 "InnoDB doesn't increase the Handler_read_prev counter.
2006-05-15 17:25:37 +04:00
aelkin@mysql.com
ab440799e1 BUG#14157: utf8 encoding in binlog without set character_set_client
fixing names length. Got an issue when merged to 5.0, decided to fix starting from 4.1
2006-05-14 20:09:09 +03:00
holyfoot@deer.(none)
b457eaba71 bug 15430 (init_connect test fails with the embedded server)
mysqltest program should be really multithreaded to perform this
test with the embedded server. So this test disabled until we
redo mysqltest this way
2006-05-14 21:49:33 +05:00
holyfoot@deer.(none)
447e9f019f bug #15435 (wait_timeout.test fails with the embedded server)
this test just can't work in the embedded server
2006-05-14 21:43:22 +05:00
aelkin@mysql.com
27696712ef BUG#14157: utf8 encoding in binlog without set character_set_client
fixing a path to find charset by $MYSQL client. I believe the fix is done what should be
by default.
2006-05-13 12:14:20 +03:00
aelkin@mysql.com
a0b4c8ed12 Merge mysql.com:/net/nb/home/elkin/MySQL/FIXES/4.1-bug19188_tmp_name
into  mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/4.1
2006-05-12 21:38:41 +03:00
aelkin@mysql.com
0cec36305b Merge mysql.com:/usr_rh9/home/elkin.rh9/MySQL/FIXES/4.1-bug14157-utf8_binlog
into  mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/4.1
2006-05-12 21:33:24 +03:00
aelkin@mysql.com
9b16a7b91a BUG#19188: incorrect temporary table name of DROP query in replication
A pattern to generate binlog for DROPped temp table in close_temporary_tables
  was buggy: could not deal with a grave-accent-in-name table.

  The fix exploits `append_identifier()' for quoting and duplicating accents.
2006-05-12 21:29:06 +03:00
kent@mysql.com
08c1a05822 Many files:
Change mode to -rw-rw-r--
Ereport.pl, Ecreate.pl, Ecompare.pl:
  Change mode to -rwxrwxr--
2006-05-12 18:28:48 +02:00
kent@mysql.com
9d36515baf Merge 2006-05-12 18:19:36 +02:00
kent@mysql.com
9e77c3a0b1 Many files:
Change mode to -rw-rw-r--
dbug_add_tags.pl:
  Change mode to -rwxrwxr--
2006-05-12 17:51:37 +02:00
msvensson@neptunus.(none)
302eb27a59 Bug#18818 configure: No longer finds OpenSSL on Mac OS X
- Remove usage of $shrext_cmds variable
 - Test for libs using all known library file endings
2006-05-12 11:18:06 +02:00
kent@mysql.com
39516f3886 configure.in:
Stepped up to 4.0.28
2006-05-11 19:48:57 +02:00
tnurnberg@mysql.com
133a5d17f7 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/home/mysql-4.1-10418
2006-05-11 12:48:49 +02:00
kent@mysql.com
237f4a37d8 mysql.spec.sh:
Compile in all character sets in Max (bug#14918)
2006-05-10 21:53:01 +02:00
ramil@mysql.com
cf0fc729f8 Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/usr/home/ram/work/4.1.b18501
2006-05-10 13:27:48 +05:00
aelkin@mysql.com
226d978ae8 BUG#14157: utf8 encoding in binlog without set character_set_client e.g DROP temporary
Binlog lacks encoding info about DROPped temporary table.

Idea of the fix is to switch temporary to system_charset_info when a temporary table
is DROPped for binlog. Since that is the server, that automatically, but not the client, who generates the query
the binlog should be updated on the server's encoding for the coming DROP.
The `write_binlog_with_system_charset()' is introduced to replace similar problematic places in the code.
2006-05-09 23:01:31 +03:00
mskold@mysql.com
f1fb5b9f34 bug #19623 UniqueHashIndexes resource leak: allocate array pool based on MaxNoOfTables 2006-05-09 11:55:41 +02:00
jonas@perch.ndb.mysql.com
a5fc03387a Merge joreland@bk-internal.mysql.com:/home/bk/mysql-4.1
into  perch.ndb.mysql.com:/home/jonas/src/mysql-4.1
2006-05-08 07:48:08 +02:00
tnurnberg@mysql.com
21f4e8aadb Bug#10418: LOAD_FILE does not behave like in manual if file does not exist
load_file() string-function should return NULL rather than throw an error if
the file doesn't exist, as per the manual.
2006-05-08 04:37:58 +02:00