Commit graph

16765 commits

Author SHA1 Message Date
mhansson/martin@linux-st28.site
b1375104b3 bug#28273: GROUP_CONCAT and ORDER BY: No warning when result gets truncated.
When using GROUP_CONCAT with ORDER BY, a tree is used for the sorting, as 
opposed to normal nested loops join used when there is no ORDER BY. 

The tree traversal that generates the result counts the lines that have been 
cut down. (as they get cut down to the field's max_size)
But the check of that count was before the tree traversal, so no 
warning was generated if the output is truncated.

Fixed by moving the check to after the tree traversal.
2007-05-11 16:05:20 +03:00
holyfoot/hf@mysql.com/hfmain.(none)
8df08a2de2 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/27957/my50-27957
2007-05-11 17:42:50 +05:00
gshchepa/uchum@gleb.loc
848f56b046 Fixed bug #28000.
Bug occurs in INSERT IGNORE ... SELECT ... ON DUPLICATE KEY UPDATE
statements, when SELECT returns duplicated values and UPDATE clause
tries to assign NULL values to NOT NULL fields.
NOTE: By current design MySQL server treats INSERT IGNORE ... ON
DUPLICATE statements as INSERT ... ON DUPLICATE with update of
duplicated records, but MySQL manual lacks this information.
After this fix such behaviour becomes legalized.

The write_record() function was returning error values even within
INSERT IGNORE, because ignore_errors parameter of
the fill_record_n_invoke_before_triggers() function call was
always set to FALSE. FALSE is replaced by info->ignore.
2007-05-11 03:17:05 +05:00
kostja@vajra.(none)
0d6e93e0c1 Follow the coding style with class names. 2007-05-10 18:27:36 +04:00
kostja@vajra.(none)
4b47e1df83 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  vajra.(none):/opt/local/work/mysql-5.0-21483
2007-05-10 17:54:55 +04:00
thek@adventure.(none)
563a626f33 Corrected merge error; missing line in debug statement. 2007-05-10 14:54:55 +02:00
kostja@vajra.(none)
41239f1ff0 No semantical change. Move checks of compatibility
of requested lock type and requested table operation from 
mysql_insert into a separate function.
2007-05-10 16:18:01 +04:00
igor@olga.mysql.com
53888b4282 Fixed bug #28189: in some rare cases optimizer preferred a more expensive
ref access to a less expensive range access. 
This occurred only with InnoDB tables.
2007-05-10 00:06:24 -07:00
tomas@whalegate.ndb.mysql.com
fd5f5d0abd Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-opt
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-05-10 07:15:46 +02:00
holyfoot/hf@mysql.com/hfmain.(none)
d99b4c6a1a Bug #27921 View ignores precision for CAST()
Item_decimal_typecast::print properly implemented
2007-05-10 00:17:21 +05:00
holyfoot/hf@mysql.com/hfmain.(none)
e3fa9c594d Bug #27957 cast as decimal does not check overflow, also inconsistent with group, subselect
Missing check for overflow added to the Item_decimal_typecast::val_decimal
2007-05-09 17:27:14 +05:00
evgen@moonbone.local
b45ef06e76 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27670-bug-5.0-opt-mysql
2007-05-09 00:35:21 +04:00
evgen@moonbone.local
98fa542a08 Bug#27670: LOAD DATA does not set CURRENT_TIMESTAMP default value for a
TIMESTAMP field when no value has been provided.

The LOAD DATA sets the current time in the TIMESTAMP field with
CURRENT_TIMESTAMP default value when the field is detected as a null.
But when the LOAD DATA command loads data from a file that doesn't contain
enough data for all fields then the rest of fields are simply set to null
without any check. This leads to no value being inserted to such TIMESTAMP
field.

Now the read_sep_field() and the read_fixed_length() functions set current
time to the TIMESTAMP field with CURRENT_TIMESTAMP default value in all cases
when a NULL value is loaded to the field.
2007-05-09 00:23:16 +04:00
thek@adventure.(none)
4144dc7262 Merge adventure.(none):/home/thek/Development/cpp/bug27792/my50-bug27792
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
2007-05-08 12:18:36 +02:00
thek@adventure.(none)
5e774747bc 4.1 -> 5.0 Manual merge for Bug #27792 2007-05-08 11:24:07 +02:00
thek@adventure.(none)
4744b0b91e Merge adventure.(none):/home/thek/Development/cpp/bug27792/my41-bug27792
into  adventure.(none):/home/thek/Development/cpp/bug27792/my50-bug27792
2007-05-08 09:36:21 +02:00
thek@adventure.(none)
4ea05eae31 Bug #27792 query cache returns wrong result, with certain system variables
- Queries in the query cache are identified by the individual 
   characters in the query statement, the current database and 
   the current environment expressed as a set of system variable
   flags.
 - Since the set of environment flags didn't properly describe the
   current environment unexpected results were returned from the 
   query cache.
 - Query cache is now cleared when the variable ft_boolean_syntax is 
   updated.
 - An identification flag for the variable default_week_format is 
   added to the query cache record.
 
Thanks to Martin Friebe who has supplied significant parts of this patch.
2007-05-08 09:09:25 +02:00
gni@dev3-221.dev.cn.tlan
db73bea313 Merge dev3-221.dev.cn.tlan:/home/ngb/mysql/mysql-5.0/mysql-5.0-ndb-bj
into  dev3-221.dev.cn.tlan:/home/ngb/mysql/mysql-5.0/mysql-5.0-ndb
2007-05-08 10:00:12 +08:00
evgen@moonbone.local
afbfcd8480 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27759-bug-5.0-opt-mysql
2007-05-08 00:16:05 +04:00
evgen@moonbone.local
eddd02158b Additional fix for the bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions. 2007-05-08 00:08:00 +04:00
gshchepa/uchum@gleb.loc
59efb58ffb Merge gleb.loc:/home/uchum/work/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/mysql-5.0-opt-27954
2007-05-08 00:53:01 +05:00
gshchepa/uchum@gleb.loc
eb1f21f8b6 Fixed bug #27954.
This bug affects multi-row INSERT ... ON DUPLICATE into table
with PRIMARY KEY of AUTO_INCREMENT field and some additional UNIQUE indices.
If the first row in multi-row INSERT contains duplicated values of UNIQUE
indices, then following rows of multi-row INSERT (with either duplicated or
unique key field values) may me applied to _arbitrary_ records of table as
updates.
This bug was introduced in 5.0. Related code was widely rewritten in 5.1, and
5.1 is already free of this problem. 4.1 was not affected too.

When updating the row during INSERT ON DUPLICATE KEY UPDATE, we called
restore_auto_increment(), which set next_insert_id back to 0, but we
forgot to set clear_next_insert_id back to 0.
restore_auto_increment() function has been fixed.
2007-05-08 00:24:25 +05:00
evgen@moonbone.local
6ec0bc24a7 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/28133-bug-5.0-opt-mysql
2007-05-07 22:22:51 +04:00
evgen@moonbone.local
7d473a1a37 Bug#28133: Wrong DATE/DATETIME comparison in IN() function.
The IN function was comparing DATE/DATETIME values either as ints or as
strings. Both methods have their disadvantages and may lead to a wrong
result.

Now IN function checks whether all of its arguments has the STRING result
types and at least one of them is a DATE/DATETIME item. If so it uses either
an object of the in_datetime class or an object of the cmp_item_datetime
class to perform its work. If the IN() function arguments are rows then
row columns are checked whether the DATE/DATETIME comparator should be used
to compare them.
The in_datetime class is used to find occurence of the item to be checked
in the vector of the constant DATE/DATETIME values. The cmp_item_datetime
class is used to compare items one by one in the DATE/DATETIME context.
Both classes obtain values from items with help of the get_datetime_value()
function and cache the left item if it is a constant one.
2007-05-07 22:20:43 +04:00
evgen@moonbone.local
6bef06edfa item_func.cc:
Fixed compiler warnings.
2007-05-07 18:24:46 +04:00
holyfoot/hf@mysql.com/hfmain.(none)
37a9575b2e Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/d2/hf/mrg/mysql-5.0-opt
2007-05-07 16:08:29 +05:00
thek@adventure.(none)
889a56e07c Merge adventure.(none):/home/thek/Development/cpp/bug26977/my50-bug26977
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
2007-05-07 10:32:00 +02:00
thek@adventure.(none)
ae10d3d9e2 Bug#26977 exception handlers never hreturn
- In some cases, flow control optimization implemented in sp::optimize
    removes hreturn instructions, causing SQL exception handlers to:
      * never return
      * execute wrong logic
  - This patch overrides default short cut optimization on hreturn instructions
    to avoid this problem.
2007-05-07 10:23:10 +02:00
evgen@moonbone.local
68e5c1e622 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27759-bug-5.0-opt-mysql
2007-05-04 21:38:05 +04:00
cmiller@zippy.cornsilk.net
881c0aab23 Merge zippy.cornsilk.net:/home/cmiller/work/mysql/bug27173/my41-bug27173
into  zippy.cornsilk.net:/home/cmiller/work/mysql/bug27173/my50-bug27173
2007-05-04 13:27:33 -04:00
cmiller@zippy.cornsilk.net
e5ee6a74ff Bug #27173: "Enabling keys got errno ..." does not say which table
Warnings may show up in the error log that complain about a table, yet
don't tell us which table.

Add the database and table names to the message.
2007-05-04 13:17:07 -04:00
gkodinov/kgeorge@magare.gmz
13e55b8a21 bug #27531:
fixed coverage of out-of-mem errors
2007-05-04 18:55:01 +03:00
evgen@moonbone.local
239f727b7e Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions.
The LEAST/GREATEST functions compared DATE/DATETIME values as
strings which in some cases could lead to a wrong result.

A new member function called cmp_datetimes() is added to the
Item_func_min_max class. It compares arguments in DATETIME context
and returns index of the least/greatest argument.
The Item_func_min_max::fix_length_and_dec() function now detects when
arguments should be compared in DATETIME context and sets the newly
added flag compare_as_dates. It indicates that the cmp_datetimes() function
should be called to get a correct result.
Item_func_min_max::val_xxx() methods are corrected to call the
cmp_datetimes() function when needed.
Objects of the Item_splocal class now stores and reports correct original
field type.
2007-05-04 18:57:10 +04:00
gkodinov/kgeorge@magare.gmz
cead246f7a Merge magare.gmz:/home/kgeorge/mysql/work/B27531-4.1-opt
into  magare.gmz:/home/kgeorge/mysql/work/B27531-5.0-opt
2007-05-04 16:47:58 +03:00
gkodinov/kgeorge@magare.gmz
d11e1f248b Bug #27531: the 4.1 fix.
When checking for applicability of join cache
we must disable its usage only if there is no
temp table in use.
When a temp table is used we can use join
cache (and it will not make the result-set 
unordered) to fill the temp table. The filesort() 
operation is then applied to the data in the temp 
table and hence is not affected by join cache
usage.
Fixed by narrowing the condition for disabling 
join cache to exclude the case where temp table
is used.
2007-05-04 16:43:29 +03:00
gluh@mysql.com/eagle.(none)
287ebed161 Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
2007-05-04 14:42:32 +05:00
gluh@mysql.com/eagle.(none)
16d6bdfd75 Bug#28181 Access denied to 'information_schema when select into out file (regression)
allow select into out file from I_S if user has FILE privilege
otherwise issue an error
2007-05-04 14:41:58 +05:00
gkodinov/kgeorge@magare.gmz
636d8839f9 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27807-5.0-opt
2007-05-04 12:09:29 +03:00
evgen@moonbone.local
2479dc71c4 Merge moonbone.local:/mnt/gentoo64/work/23656-bug-4.1-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/23656-bug-5.0-opt-mysql
2007-05-04 12:27:21 +04:00
gkodinov/kgeorge@magare.gmz
27624ee4e8 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27807-5.0-opt
2007-05-04 10:57:14 +03:00
gkodinov/kgeorge@magare.gmz
6badb08ce3 Bug #27807.
Non-correlated scalar subqueries may get executed
in EXPLAIN at the optimization phase if they are
part of a right hand sargable expression.
If the scalar subquery uses a temp table to 
materialize its results it will replace the 
subquery structure from the parser with a simple
select from the materialization table.
As a result the EXPLAIN will crash as the 
temporary materialization table is not to be shown
in EXPLAIN at all.
Fixed by preserving the original query structure
right after calling optimize() for scalar subqueries
with temp tables executed during EXPLAIN.
2007-05-04 10:48:51 +03:00
evgen@moonbone.local
7f9411c156 Bug#23656: Wrong conversion result of a DATETIME to integer using CAST function.
The generic string to int conversion was used by the Item_func_signed and
the Item_func_unsigned classes to convert DATE/DATETIME values to the
SIGNED/UNSIGNED type. But this conversion produces wrong results for such
values.

Now if the item which result has to be converted can return its result as
longlong then the item->val_int() method is used to allow the item to carry
out the conversion itself and return the correct result.
This condition is checked in the Item_func_signed::val_int() and the
Item_func_unsigned::val_int() functions.
2007-05-04 00:53:37 +04:00
malff/marcsql@weblab.(none)
4b0d37362b Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
2007-05-02 09:59:39 -06:00
msvensson@pilot.blaudden
1675d6f41a Bug#27994 Expose counter for stored procedure calls in Com_% status
- Expose the already existing counter for number of stored procedure calls
2007-05-02 14:25:11 +02:00
mskold/marty@mysql.com/linux.site
c2e71d1804 Merge mskold@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  mysql.com:/windows/Linux_space/MySQL/mysql-5.0-ndb
2007-05-02 12:43:17 +02:00
msvensson@pilot.blaudden
aea65eab78 Merge bk-internal:/home/bk/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
2007-05-02 11:16:41 +02:00
mskold/marty@mysql.com/linux.site
f6e28f2879 ndb_insert.test, ndb_insert.result, ha_ndbcluster.cc:
Bug#27980 INSERT IGNORE wrongly ignores NULLs in unique index: added check for null values
2007-05-02 10:02:27 +02:00
igor@olga.mysql.com
1a0cf6db7c Fixed bug #28188: performance degradation for outer join queries to which
'not exists' optimization is applied.

In fact 'not exists' optimization did not work anymore after the patch
introducing the evaluate_join_record function had been applied.

Corrected the evaluate_join_record function to respect the 'not_exists'
optimization.
2007-05-01 23:34:14 -07:00
tsmith@quadxeon.mysql.com
90468a7274 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-05-01 18:12:04 +02:00
tsmith@quadxeon.mysql.com
91a5830729 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-05-01 12:40:43 +02:00
tsmith@quadxeon.mysql.com
e267f900a2 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/b27653/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-04-30 23:33:32 +02:00
tsmith@quadxeon.mysql.com
44af4144e6 Bug #27653: Temp table can't be created if lower_case_table_names=1 and
tmpdir has uppercase

Fix: don't convert mysql_tmpdir to lower case when building the path to a
temporary table
2007-04-30 23:16:46 +02:00
msvensson@pilot.blaudden
a1ba53df26 Merge bk-internal:/home/bk/mysql-5.0-maint
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
2007-04-30 18:14:08 +02:00
igor@olga.mysql.com
2cf753a1e8 Post-merge fix. 2007-04-29 20:14:35 -07:00
igor@olga.mysql.com
f9ac5b43cc Merge olga.mysql.com:/home/igor/mysql-4.1-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug24856
2007-04-29 18:32:59 -07:00
igor@olga.mysql.com
ce0be732d0 Fixed bug #24856: the result set of a ROLLUP query with DISTINCT could lack
some rollup rows (rows with NULLs for grouping attributes) if GROUP BY
list contained constant expressions.

This happened because the results of constant expressions were not put
in the temporary table used for duplicate elimination. In fact a constant
item from the GROUP BY list of a ROLLUP query can be replaced for an
Item_null_result object when a rollup row is produced . 

Now the JOIN::rollup_init function wraps any constant item referenced in
the GROYP BY list of a ROLLUP query into an Item_func object of a special
class that is never detected as constant item. This ensures creation of
fields for such  constant items in temporary tables and guarantees right
results when the result of the rollup operation first has to be written
into a temporary table, e.g. in the cases when duplicate elimination is
required.
2007-04-29 16:04:43 -07:00
holyfoot/hf@mysql.com/hfmain.(none)
e2f6bd86b4 Merge bk@192.168.21.1:mysql-5.0
into  mysql.com:/d2/hf/mrg/mysql-5.0-opt
2007-04-29 18:42:50 +05:00
holyfoot/hf@mysql.com/hfmain.(none)
2d8037610c Merge bk@192.168.21.1:mysql-4.1
into  mysql.com:/d2/hf/mrg/mysql-4.1-opt
2007-04-29 18:39:45 +05:00
gshchepa/uchum@gshchepa.loc
90864c2874 Patch to eliminate compilation errors under VC after bug #13191 fix. 2007-04-29 12:56:46 +05:00
gshchepa/uchum@gshchepa.loc
389cf7ddfc Merge gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt
into  gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-13191
2007-04-29 12:09:08 +05:00
gshchepa/uchum@gshchepa.loc
fbed482689 Patch to eliminate compilation errors under VC after bug #13191 fix. 2007-04-29 11:56:23 +05:00
gshchepa/uchum@gshchepa.loc
85d70a9652 Merge gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt
into  gshchepa.loc:/home/uchum/work/bk-trees/mysql-5.0-opt-13191
2007-04-29 08:51:51 +05:00
gshchepa/uchum@gshchepa.loc
87c6ef4c30 Merge gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt
into  gshchepa.loc:/home/uchum/work/bk-trees/mysql-4.1-opt-13191
2007-04-29 05:31:53 +05:00
gshchepa/uchum@gshchepa.loc
3adcb94ede Fixed bug #13191.
INSERT...ON DUPLICATE KEY UPDATE may cause error 1032: 
"Can't find record in ..." if we are inserting into
InnoDB table unique index of partial key with
underlying UTF-8 string field.

This error occurs because INSERT...ON DUPLICATE uses a wrong
procedure to copy string fields of multi-byte character sets
for index search.
2007-04-29 04:16:17 +05:00
kaa@polly.local
edf6b73302 Avoid compiler warnings in Windows builds introduced by the patch for bug #24912 "problems with bigint in abs() ceiling() ruond() truncate() mod()" 2007-04-28 23:25:31 +04:00
kaa@polly.local
561bd78654 Merge polly.local:/home/kaa/src/maint/bug24912/my50-bug24912
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint
2007-04-28 20:26:14 +04:00
kaa@polly.local
050c6723e8 Fix for bug #24912 "problems with bigint in abs() ceiling() round() truncate() mod()" and a number of related problems:
- unsigned flag was not handled correctly for a number of mathematical funcions, which led to incorrect results
- passing large values as the number of decimals to ROUND() resulted in incorrect results and even server crashes in some cases
- reverted the fix and the testcase for bug #10083 as it violates the manual
- fixed some testcases which relied on broken ROUND() behavior
2007-04-28 20:01:01 +04:00
tsmith@quadxeon.mysql.com
acee0c8e20 Merge quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/50
into  quadxeon.mysql.com:/benchmarks/ext3/TOSAVE/tsmith/bk/maint/50
2007-04-28 01:48:59 +02:00
malff/marcsql@weblab.(none)
012f841fd4 Bug#21513 (SP having body starting with quoted label rendered unusable)
Before this fix, the parser would sometime change where a token starts by
altering Lex_input_string::tok_start, which later confused the code in
sql_yacc.yy that needs to capture the source code of a SQL statement,
like to represent the body of a stored procedure.

This line of code in sql_lex.cc :

case MY_LEX_USER_VARIABLE_DELIMITER:
  lip->tok_start= lip->ptr; // Skip first `

would <skip the first back quote> ... and cause the bug reported.

In general, the responsibility of sql_lex.cc is to *find* where token are
in the SQL text, but is *not* to make up fake or incomplete tokens.
With a quoted label like `my_label`, the token starts on the first quote.
Extracting the token value should not change that (it did).

With this fix, the lexical analysis has been cleaned up to not change
lip->tok_start (in the case found for this bug).

The functions get_token() and get_quoted_token() now have an extra
parameters, used when some characters from the beginning of the token need
to be skipped when extracting a token value, like when extracting 'AB' from
'0xAB', for example, for a HEX_NUM token.

This exposed a bad assumption in Item_hex_string and Item_bin_string,
which has been fixed:

The assumption was that the string given, 'AB', was in fact preceded in
memory by '0x', which might be false (it can be preceded by "x'" and
followed by "'" -- or not be preceded by valid memory at all)

If a name is needed for Item_hex_string or Item_bin_string, the name is
taken from the original and true source code ('0xAB'), and assigned in
the select_item rule, instead of relying on assumptions related to how
memory is used.
2007-04-27 17:14:25 -06:00
evgen@sunlight.local
4b5c387f5d Additional fix for the bug#27590. 2007-04-28 00:04:50 +04:00
evgen@moonbone.local
e0b8b6e596 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/16377-bug-5.0-opt-mysql
2007-04-27 21:26:47 +04:00
evgen@moonbone.local
72e53ede3a Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/27590-bug-5.0-opt-mysql
2007-04-27 21:07:05 +04:00
msvensson@pilot.blaudden
0246ca9281 Remove dangerous "remove warning" hack, cast to long
will truncate the time value on systems where "long" are 32bit,
instead use time_t as datatype
2007-04-27 15:33:48 +02:00
tomas@whalegate.ndb.mysql.com
fa32db5f88 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-04-27 11:45:28 +02:00
evgen@moonbone.local
7a1c61efb6 Bug#16377: Wrong DATE/DATETIME comparison in BETWEEN function.
The BETWEEN function was comparing DATE/DATETIME values either as ints or as
strings. Both methods have their disadvantages and may lead to a wrong
result.

Now BETWEEN function checks whether all of its arguments has the STRING result
types and at least one of them is a DATE/DATETIME item. If so it sets up
two Arg_comparator obects to compare with the compare_datetime() comparator
and uses them to compare such items.

Added two Arg_comparator object members and one flag to the
Item_func_between class for the correct DATE/DATETIME comparison.
The Item_func_between::fix_length_and_dec() function now detects whether
it's used for DATE/DATETIME comparison and sets up newly added Arg_comparator
objects to do this.
The Item_func_between::val_int() now uses Arg_comparator objects to perform
correct DATE/DATETIME comparison.
The owner variable of the Arg_comparator class now can be set to NULL if the
caller wants to handle NULL values by itself.
Now the Item_date_add_interval::get_date() function ajusts cached_field type according to the detected type.
2007-04-27 00:40:35 +04:00
evgen@moonbone.local
84c47ae08f Merge moonbone.local:/mnt/gentoo64/work/27590-bug-5.0-opt-mysql
into  moonbone.local:/mnt/gentoo64/work/16377-bug-5.0-opt-mysql
2007-04-27 00:13:13 +04:00
evgen@moonbone.local
4747fa0c03 Bug#27590: Wrong DATE/DATETIME comparison.
DATE and DATETIME can be compared either as strings or as int. Both
methods have their disadvantages. Strings can contain valid DATETIME value
but have insignificant zeros omitted thus became non-comparable with
other DATETIME strings. The comparison as int usually will require conversion
from the string representation and the automatic conversion in most cases is
carried out in a wrong way thus producing wrong comparison result. Another
problem occurs when one tries to compare DATE field with a DATETIME constant.
The constant is converted to DATE losing its precision i.e. losing time part.

This fix addresses the problems described above by adding a special
DATE/DATETIME comparator. The comparator correctly converts DATE/DATETIME
string values to int when it's necessary, adds zero time part (00:00:00)
to DATE values to compare them correctly to DATETIME values. Due to correct
conversion malformed DATETIME string values are correctly compared to other
DATE/DATETIME values.

As of this patch a DATE value equals to DATETIME value with zero time part.
For example '2001-01-01' equals to '2001-01-01 00:00:00'.

The compare_datetime() function is added to the Arg_comparator class.
It implements the correct comparator for DATE/DATETIME values.
Two supplementary functions called get_date_from_str() and get_datetime_value()
are added. The first one extracts DATE/DATETIME value from a string and the
second one retrieves the correct DATE/DATETIME value from an item.
The new Arg_comparator::can_compare_as_dates() function is added and used
to check whether two given items can be compared by the compare_datetime()
comparator.
Two caching variables were added to the Arg_comparator class to speedup the
DATE/DATETIME comparison.
One more store() method was added to the Item_cache_int class to cache int
values.
The new is_datetime() function was added to the Item class. It indicates
whether the item returns a DATE/DATETIME value.
2007-04-27 00:12:09 +04:00
svoj@mysql.com/april.(none)
ce55046fbd Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-5.0-build
into  mysql.com:/home/svoj/devel/mysql/merge/mysql-5.0-engines
2007-04-27 00:56:50 +05:00
svoj@mysql.com/april.(none)
f698977298 Merge svojtovich@bk-internal.mysql.com:/home/bk/mysql-4.1-build
into  mysql.com:/home/svoj/devel/mysql/merge/mysql-4.1-engines
2007-04-27 00:32:51 +05:00
kaa@polly.local
02f2616ee3 Merge polly.local:/home/kaa/src/maint/bug22364/my50-bug22364
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint
2007-04-26 20:51:02 +04:00
joerg@trift-lap.fambruehe
2ed383302f Merge trift-lap.fambruehe:/MySQL/M50/mysql-5.0
into  trift-lap.fambruehe:/MySQL/M50/push-5.0
2007-04-26 16:06:44 +02:00
gkodinov/kgeorge@magare.gmz
f4ec0f1cbe Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27363-5.0-opt
2007-04-26 11:16:01 +03:00
gkodinov/kgeorge@magare.gmz
bfa29e175e Bug #27363:
Validity checks for nested set functions
were not taking into account that the enclosed
set function may be on a nest level that is
lower than the nest level of the enclosing set
function.
Fixed by :
 - propagating max_sum_func_level
up the enclosing set functions chain.
 - updating the max_sum_func_level of the 
   enclosing set function when the enclosed set
   function is aggregated above or on the same
   nest level of as the level of the enclosing 
   set function.
 - updating the max_arg_level of the enclosing
   set function on a reference that refers to
   an item above or on the same nest level
   as the level of the enclosing set function.
 - Treating both Item_field and Item_ref as possibly
   referencing items from outer nest levels.
2007-04-26 11:12:17 +03:00
gshchepa/uchum@gshchepa.loc
5983038a66 Fixed bug #27650:
INSERT into InnoDB table may cause "ERROR 1062 (23000): Duplicate entry..."
errors or lost records after multi-row INSERT of the form:
"INSERT INTO t (id...) VALUES (NULL...) ON DUPLICATE KEY UPDATE id=VALUES(id)",
where "id" is an AUTO_INCREMENT column.

It happens because InnoDB handler forgets to save next insert id after
updating of auto_increment column with new values. As result of that
last insert id stored inside InnoDB dictionary tables differs from it's
cached thd->next_insert_id value.
2007-04-26 02:01:23 +05:00
malff/marcsql@weblab.(none)
10dd997019 code review fix 2007-04-25 11:38:11 -06:00
tomas@whalegate.ndb.mysql.com
c1d0bbbbe6 Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-telco-gca
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-04-25 15:24:17 +02:00
tomas@whalegate.ndb.mysql.com
0ac443eff5 Bug #28093 ndb: retry sleep in get table stats 30s instead of 30ms 2007-04-25 15:21:38 +02:00
msvensson@pilot.blaudden
6e4acae645 Merge pilot.blaudden:/home/msvensson/mysql/bug25262/my50-bug25262
into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
2007-04-25 12:08:39 +02:00
evgen@moonbone.local
5cd1f992ce Bug#27874: Non-grouped columns are allowed by * in ONLY_FULL_GROUP_BY mode.
When fields are inserted instead of * in the select list they were not marked
for check for the ONLY_FULL_GROUP_BY mode.

The Field_iterator_table::create_item() function now marks newly created
items for check when in the ONLY_FULL_GROUP_BY mode.
The setup_wild() and the insert_fields() functions now maintain the
cur_pos_in_select_list counter for the ONLY_FULL_GROUP_BY mode.
2007-04-24 22:35:57 +04:00
tomas@whalegate.ndb.mysql.com
6654cc8a99 Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
2007-04-24 19:24:07 +02:00
malff/marcsql@weblab.(none)
575eeda804 Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-25411_d
2007-04-24 09:25:54 -06:00
malff/marcsql@weblab.(none)
fc809c70cc Bug#25411 (trigger code truncated), PART I
The issue found with bug 25411 is due to the function skip_rear_comments()
which damages the source code while implementing a work around.
The root cause of the problem is in the lexical analyser, which does not
process special comments properly.
For special comments like :
[1] aaa /*!50000 bbb */ ccc
since 5.0 is a version older that the current code, the parser is in lining
the content of the special comment, so that the query to process is
[2] aaa bbb ccc
However, the text of the query captured when processing a stored procedure,
stored function or trigger (or event in 5.1), can be after rebuilding it:
[3] aaa bbb */ ccc
which is wrong.

To fix bug 25411 properly, the lexical analyser needs to return [2] when
in lining special comments.
In order to implement this, some preliminary cleanup is required in the code,
which is implemented by this patch.

Before this change, the structure named LEX (or st_lex) contains attributes
that belong to lexical analysis, as well as attributes that represents the
abstract syntax tree (AST) of a statement.
Creating a new LEX structure for each statements (which makes sense for the
AST part) also re-initialized the lexical analysis phase each time, which
is conceptually wrong.

With this patch, the previous st_lex structure has been split in two:
- st_lex represents the Abstract Syntax Tree for a statement. The name "lex"
has not been changed to avoid a bigger impact in the code base.
- class lex_input_stream represents the internal state of the lexical
  analyser, which by definition should *not* be reinitialized when parsing
  multiple statements from the same input stream.

This change is a pre-requisite for bug 25411, since the implementation of
lex_input_stream will later improve to deal properly with special comments,
and this processing can not be done with the current implementation of
sp_head::reset_lex and sp_head::restore_lex, which interfere with the lexer.

This change set alone does not fix bug 25411.
2007-04-24 09:24:21 -06:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
1d0f9bed85 Merge mysql.com:/home/ram/work/mysql-4.1-maint
into  mysql.com:/home/ram/work/b27515/b27515.4.1
2007-04-24 14:33:15 +05:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
250ae972e7 Merge mysql.com:/home/ram/work/mysql-4.1-maint
into  mysql.com:/home/ram/work/b27515/b27515.4.1
2007-04-24 14:20:28 +05:00
mskold/marty@mysql.com/linux.site
25ecc73891 Moved method definition to ease merge to 5.1 2007-04-24 11:17:27 +02:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
49b187034d Merge mysql.com:/home/ram/work/mysql-5.0-maint
into  mysql.com:/home/ram/work/b27515/b27515.5.0
2007-04-24 14:08:03 +05:00
mskold/marty@mysql.com/linux.site
c68a4c9c6f Back-ported compiler warning fixes from 5.1 to ease merging 2007-04-24 10:25:15 +02:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
bb3b6ae72c Merge mysql.com:/home/ram/work/b27515/b27515.4.1
into  mysql.com:/home/ram/work/b27515/b27515.5.0
2007-04-24 10:27:59 +05:00
iggy@recycle.(none)
4a50d613df Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  recycle.(none):/src/bug24732/my50-bug24732
2007-04-23 16:36:40 -04:00
iggy@recycle.(none)
7a358c4b5c Bug#24732 Executables do not include Vista manifests
- Added script to generate application specific manifest.
- Added new CMake MACRO to add customer build events which will first
generate a manifest and then embeds that manifest into an executable.
2007-04-23 15:41:24 -04:00