Commit graph

10847 commits

Author SHA1 Message Date
igor@olga.mysql.com
7f64144bf0 Fixed bug #29604.
A bug in the restore_prev_nj_state function allowed interleaving 
inner tables of outer join operations with outer tables. With the
current implementation of the nested loops algorithm it could lead
to wrong result sets for queries with nested outer joins.
Another bug in this procedure effectively blocked evaluation of some
valid execution plans for queries with nested outer joins.
2007-07-11 18:45:35 -07:00
evgen@moonbone.local
7cab171f64 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/29461-bug-5.0-opt-mysql
2007-07-09 02:02:18 +04:00
evgen@moonbone.local
ff3fd46c32 Bug#29461: Sort order of the collation wasn't used when comparing characters
with the space character.

When the my_strnncollsp_simple function compares two strings and one is a prefix
of another then this function compares characters in the rest of longer key
with the space character to find whether the longer key is greater or less.
But the sort order of the collation isn't used in this comparison. This may
lead to a wrong comparison result, wrongly created index or wrong order of the
result set of a query with the ORDER BY clause.

Now the my_strnncollsp_simple function uses collation sort order to compare
the characters in the rest of longer key with the space character.
2007-07-09 01:23:33 +04:00
gshchepa/uchum@gleb.loc
b1d230e09f Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-08 11:46:52 +05:00
igor@olga.mysql.com
e1eababbba Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29417
2007-07-07 15:45:28 -07:00
gshchepa/uchum@gleb.loc
6aa9e3a4fc Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-08 03:40:01 +05:00
igor@olga.mysql.com
63d538575b Fixed bug #29417.
An assertion abort could occur for some grouping queries that employed 
decimal user variables with assignments to them.

The problem appeared the constructors of the class Field_new_decimal
because the function my_decimal_length_to_precision did not guarantee
returning decimal precision not greater than DECIMAL_MAX_PRECISION.
2007-07-07 12:31:55 -07:00
gshchepa/uchum@gleb.loc
3c918268e7 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-08 00:19:31 +05:00
igor@olga.mysql.com
87c3d18f6f Fixed bug #29415.
The cast operation ignored the cases when the precision and/or the scale exceeded
the limits, 65 and 30 respectively. No errors were reported in these cases.
For some queries this may lead to an assertion abort.

Fixed by throwing errors for such cases.
2007-07-07 10:33:02 -07:00
antony@ppcg5.local
edc4f4b3a6 Merge acurtis@bk-internal.mysql.com:/home/bk/mysql-5.0
into  ppcg5.local:/private/Network/Servers/anubis.xiphis.org/home/antony/work/mysql-5.0-engines.merge
2007-07-06 14:29:58 -07:00
antony@ppcg5.local
1988c1c668 fix test for bug29299 2007-07-06 11:35:10 -07:00
antony@ppcg5.local
2b52524ea5 Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.0-engines
into  anubis.xiphis.org:/usr/home/antony/work/mysql-5.0-engines.merge
2007-07-06 09:00:40 -07:00
jani@labbari.dsl.inet.fi
7d7524d94d Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.0
into  labbari.dsl.inet.fi:/home/my/bk/mysql-5.0-marvel
2007-07-06 09:51:02 +03:00
igor@olga.mysql.com
5b1e1eeae5 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29392
2007-07-05 17:39:51 -07:00
gshchepa/uchum@gleb.loc
0b00ebbba0 Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-06 03:49:40 +05:00
gshchepa/uchum@gleb.loc
c33f4d3d85 Fixed bug #29442.
The SELECT INTO OUTFILE FIELDS ENCLOSED BY digit or minus sign,
followed by the same LOAD DATA INFILE statement, used wrond encoding
of non-string fields contained the enclosed character in their text
representation.

Example:
  SELECT 15, 9 INTO OUTFILE 'text' FIELDS ENCLOSED BY '5';

Old encoded result in the text file:
  5155 595
         ^ was decoded as the 1st enclosing character of the 2nd field;
        ^ was skipped as garbage;
  ^    ^ was decoded as a pair of englosing characters of the 1st field;
      ^   was decoded as traling space of the first field;
    ^^ was decoded as a doubled enclosed character.

New encoded result in the text file:
  51\55 595
  ^   ^ pair of enclosing characters of the 1st field;
    ^^ escaped enclosed character.
2007-07-06 03:43:23 +05:00
gkodinov/kgeorge@magare.gmz
1532452a00 Bug #29166:
AsText() needs to know the maximum number of
characters a IEEE double precision value can
occupy to make sure there's enough buffer space.
The number was too small to hold all possible
values and this caused buffer overruns.
Fixed by correcting the calculation of the 
maximum digits in a string representation of an
IEEE double precision value as printed by 
String::qs_append(double).
2007-07-05 18:24:48 +03:00
igor@olga.mysql.com
4c02004da9 Fixed bug #29392.
This bug may manifest itself for select queries over a multi-table view
that includes an ORDER BY clause in its definition. If the select list of 
the query contains references to the same view column with different
aliases the names of the columns in the result output will be nevertheless
the same, coinciding with one of the alias.

The bug happened because the method Item_ref::get_tmp_table_item that
was inherited by the class Item_direct_view_ref ignored the fact that
the name of the view column reference must be inherited by the fields
of the temporary table that was created in order to get the result rows
sorted.
2007-07-04 21:12:07 -07:00
gshchepa/uchum@gleb.loc
eb454f85d9 Merge gleb.loc:/home/uchum/work/bk/5.0
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-05 03:34:56 +05:00
gshchepa/uchum@gleb.loc
79622efe7c loaddata.result, loaddata.test:
Updated test case for bug #29294.
2007-07-04 03:15:37 +05:00
gshchepa/uchum@gleb.loc
4269994622 Merge gleb.loc:/home/uchum/work/bk/4.1-opt
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-04 02:09:56 +05:00
gshchepa/uchum@gleb.loc
1f85dac21c loaddata.result, loaddata.test:
Test case update for bug #29294.
2007-07-03 21:45:20 +05:00
gshchepa/uchum@gleb.loc
dbe4fb94ca Fixed bug #29294.
The `SELECT 'r' INTO OUTFILE ... FIELDS ENCLOSED BY 'r' ' statement
encoded the 'r' string to a 4 byte string of value x'725c7272'
(sequence of 4 characters: r\rr).
The LOAD DATA statement decoded this string to a 1 byte string of
value x'0d' (ASCII Carriage Return character) instead of the original
'r' character.
The same error also happened with the FIELDS ENCLOSED BY clause
followed by special characters: 'n', 't', 'r', 'b', '0', 'Z' and 'N'.

NOTE 1: This is a result of the undocumented feature: the LOAD DATA INFILE
recognises 2-byte input sequences like \n, \t, \r and \Z in addition
to documented 2-byte sequences: \0 and \N. This feature should be
documented (here backspace character is a default ESCAPED BY character,
in the real-life example it may be any ESCAPED BY character).

NOTE 2, changed behaviour:
Now the `SELECT INTO OUTFILE' statement with the `FIELDS ENCLOSED BY'
clause followed by one of: 'n', 't', 'r', 'b', '0', 'Z' or 'N' characters
encodes this special character itself by doubling it ('r' --> 'rr'),
not by prepending it with an escape character.
2007-07-03 19:37:46 +05:00
bar@bar.myoffice.izhnet.ru
825570f5a4 Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/home/bar/mysql-work/mysql-5.0.b27345
2007-07-03 13:58:19 +05:00
sergefp@mysql.com
de0cf5d22f Fix testcase to be platform-independent 2007-07-02 22:18:41 +04:00
lars/lthalmann@dl145k.mysql.com
f969f0000c Merge lthalmann@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/nfsdisk1/lars/bk/mysql-5.0-rpl
2007-07-02 17:02:01 +02:00
lars/lthalmann@dl145j.mysql.com
6f6492b715 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
2007-07-02 13:22:23 +02:00
svoj@june.mysql.com
0539080296 Merge mysql.com:/home/svoj/devel/bk/mysql-5.0-engines
into  mysql.com:/home/svoj/devel/mysql/BUG29299/mysql-5.0-engines
2007-07-02 12:31:34 +05:00
igor@olga.mysql.com
f8683bfb44 Fixed bug #25798.
This bug may manifest itself not only with the queries for which
the index-merge access method is chosen. It also may display
itself for queries with DISTINCT.

The bug was in how the Unique::get method used the merge_buffers
function. To compare elements in the the queue employed by
merge_buffers() it must use the buffpek_compare function rather
than the function for binary comparison.
2007-07-01 15:33:28 -07:00
kostja@bodhi.(none)
674d10270c Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.(none):/opt/local/work/mysql-5.0-runtime
2007-07-02 02:01:05 +04:00
igor@olga.mysql.com
38deea2496 Merge olga.mysql.com:/home/igor/mysql-4.1-opt
into  olga.mysql.com:/home/igor/mysql-5.0-opt
2007-06-30 16:24:09 -07:00
gshchepa/uchum@gleb.loc
3b8b31b0be Merge gleb.loc:/home/uchum/work/bk/5.0-opt-29205
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-06-30 02:47:22 +05:00
gshchepa/uchum@gleb.loc
3c260e4a9a Fixed bug #29205.
When a UNION statement forced conversion of an UTF8
charset value to a binary charset value, the byte
length of the result values was truncated to the
CHAR_LENGTH of the original UTF8 value.
2007-06-30 02:09:50 +05:00
antony@anubis.xiphis.org
ed74cfe087 Merge anubis.xiphis.org:/usr/home/antony/work/mysql-5.0-engines
into  anubis.xiphis.org:/usr/home/antony/work/5.0-engines-merge
2007-06-29 14:04:08 -07:00
evgen@moonbone.local
1f118574f2 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/29261-bug-5.0-opt-mysql
2007-06-29 22:22:05 +04:00
evgen@moonbone.local
fc601d775f Bug#29261: Sort order of the collation wasn't used when comparing trailing
spaces.

When the my_strnncollsp_simple function compares two strings and one is a prefix
of another then this function compares characters in the rest of longer key
with the space character to find whether the longer key is greater or less.
But the sort order of the collation isn't used in this comparison. This may
lead to a wrong comparison result, wrongly created index or wrong order of the
result set of a query with the ORDER BY clause.

Now the my_strnncollsp_simple function uses collation sort order to compare
the characters in the rest of longer key with the space character.
2007-06-29 22:13:33 +04:00
gkodinov/kgeorge@magare.gmz
9a9263a380 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B27333-gcov-5.0-opt
2007-06-29 11:05:59 +03:00
gkodinov/kgeorge@magare.gmz
38172240e3 Bug#27333: subquery grouped for aggregate of outer
query / no aggregate of subquery
 The optimizer counts the aggregate functions that 
 appear as top level expressions (in all_fields) in 
 the current subquery. Later it makes a list of these
 that it uses to actually execute the aggregates in
 end_send_group().
 That count is used in several places as a flag whether
 there are aggregates functions.
 While collecting the above info it must not consider
 aggregates that are not aggregated in the current 
 context. It must treat them as normal expressions 
 instead. Not doing that leads to incorrect data about
 the query, e.g. running a query that actually has no
 aggregate functions as if it has some (and hence is
 expected to return only one row).
 Fixed by ignoring the aggregates that are not aggregated
 in the current context. 
 One other smaller omission discovered and fixed in the 
 process : the place of aggregation was not calculated for
 user defined functions. Fixed by calling 
 Item_sum::init_sum_func_check() and 
 Item_sum::check_sum_func() as it's done for the rest of 
 the aggregate functions.
2007-06-29 10:39:17 +03:00
antony@ppcg5.local
fc241de333 Bug#25513
"Federared Transactions Failure"
  Bug occurs when the user performs an operation which inserts more than 
  one row into the federated table and the federated table references a 
  remote table stored within a transactional storage engine. When the
  insert operation for any one row in the statement fails due to 
  constraint violation, the federated engine is unable to perform 
  statement rollback and so the remote table contains a partial commit. 
  The user would expect a statement to perform the same so a statement 
  rollback is expected.
  This bug was fixed by implementing  bulk-insert handling into the
  federated storage engine. This will relieve the bug for most common
  situations by enabling the generation of a multi-row insert into the
  remote table and thus permitting the remote table to perform 
  statement rollback when neccessary.
  The multi-row insert is limited to the maximum packet size between 
  servers and should the size overflow, more than one insert statement 
  will be sent and this bug will reappear. Multi-row insert is disabled
  when an "INSERT...ON DUPLICATE KEY UPDATE" is being performed.
  The bulk-insert handling will offer a significant performance boost 
  when inserting a large number of small rows.
This patch builds on Bug29019 and Bug25511
2007-06-28 16:03:01 -07:00
antony@ppcg5.local
b0b0b0fbc4 Bug#25511
"Federated INSERT failures"
  Federated does not correctly handle "INSERT...ON DUPLICATE KEY UPDATE"
  However, implementing such support is not reasonably possible without
  increasing complexity of the storage engine: checking that constraints
  on remote server match local server and parsing error messages.
  This patch causes 'ON DUPLICATE KEY' to fail with ER_DUP_KEY message
  if a conflict occurs and not to fail silently.
2007-06-28 13:36:26 -07:00
anozdrin/alik@ibm.
6794da1159 Fix for BUG#10491: Server returns data as charset binary
SHOW CREATE TABLE or SELECT FROM I_S.

Actually, the bug discovers two problems:
  - the original query is not preserved properly. This is the problem
    of BUG#16291;
  - the resultset of SHOW CREATE TABLE statement is binary.

This patch fixes the second problem for the 5.0.

Both problems will be fixed in 5.1.
2007-06-28 13:24:52 +04:00
bar@mysql.com/bar.myoffice.izhnet.ru
d3f43c874e Bug#27345 Incorrect data returned when range-read from utf8_danish_ci indexes
Problem: like_range() returned wrong ranges for contractions (like 'ch' in Czech').
Fix: adding a special code to handle tricky cases:
- contraction head followed by a wild character
- full contraction
- contraction part followed by another contraction part,
  but they are not a contraction together.
2007-06-28 13:34:44 +05:00
antony@ppcg5.local
b3e29fbd1d Bug#29019
"REPLACE/INSERT IGNORE/UPDATE IGNORE doesn't work"
  Federated does not record neccessary HA_EXTRA flags in order to
  support REPLACE/INSERT IGNORE/UPDATE IGNORE.
  Implement ::extra() to capture flags neccessary for functionality.
New function append_ident() to better escape identifiers consistantly.
2007-06-28 00:23:14 -07:00
gkodinov/kgeorge@magare.gmz
49a52fe55a Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B26642-5.0-opt
2007-06-28 09:27:27 +03:00
malff/marcsql@weblab.(none)
483bc2031b Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base
into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
2007-06-27 09:13:01 -06:00
svoj@mysql.com/june.mysql.com
ff9aeb560c BUG#29299 - repeatable myisam fulltext index corruption
Fulltext index may get corrupt by certain gbk characters.

The problem was that when skipping leading non-true-word-characters,
we assumed that these characters are always 1 byte long. This is not
the case with gbk character set, since non-true-word-characters may
be 2 bytes long.

Affects 5.0 only.
2007-06-27 18:10:19 +05:00
mhansson@dl145s.mysql.com
a90ff73738 Merge mhansson@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  dl145s.mysql.com:/dev/shm/mhansson/my50-bug28677
2007-06-27 14:02:32 +02:00
gkodinov/kgeorge@magare.gmz
0b421fad4a Bug #26642: create index corrupts table definition in .frm
Thanks to Martin Friebe for finding and submitting a fix for this bug!
  
  A table with maximum number of key segments and maximum length key name
  would have a corrupted .frm file, due to an incorrect calculation of the
  complete key length.  Now the key length is computed correctly (I hope) :-)
  
  MyISAM would reject a table with the maximum number of keys and the maximum
  number of key segments in all keys.  It would allow one less than this total
  maximum.  Now MyISAM accepts a table defined with the maximum.  (This is a
  very minor issue.)
2007-06-27 14:35:49 +03:00
svoj@mysql.com/june.mysql.com
6d4033e624 BUG#29207 - archive table reported as corrupt by check table (P1)
CHECK TABLE against ARCHIVE table may falsely report table corruption,
or cause server crash.

Fixed by using proper buffer for CHECK TABLE.

Affects both 5.0 and 5.1.
2007-06-27 13:19:34 +05:00
igor@olga.mysql.com
6a4b2343db Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29087
2007-06-26 16:37:02 -07:00