Commit graph

11051 commits

Author SHA1 Message Date
kostja@bodhi.(none)
675a4e8f7b Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  bodhi.(none):/opt/local/work/mysql-5.0-26141-final
2007-07-12 22:28:13 +04:00
kostja@bodhi.(none)
5ab4b6f1ac A fix and a test case for Bug#26141 mixing table types in trigger
causes full table lock on innodb table.
Also fixes Bug#28502 Triggers that update another innodb table 
will block on X lock unnecessarily (duplciate).
Code review fixes.

Both bugs' synopses are misleading: InnoDB table is
not X locked. The statements, however, cannot proceed concurrently, 
but this happens due to lock conflicts for tables used in triggers,
not for the InnoDB table. 

If a user had an InnoDB table, and two triggers, AFTER UPDATE and 
AFTER INSERT, competing for different resources (e.g. two distinct
MyISAM tables), then these two triggers would not be able to execute
concurrently. Moreover, INSERTS/UPDATES of the InnoDB table would
not be able to run concurrently. 
The problem had other side-effects (see respective bug reports).

This behavior was a consequence of a shortcoming of the pre-locking
algorithm, which would not distinguish between different DML operations
(e.g. INSERT and DELETE) and pre-lock all the tables
that are used by any trigger defined on the subject table.

The idea of the fix is to extend the pre-locking algorithm to keep track,
for each table, what DML operation it is used for and not
load triggers that are known to never be fired.
2007-07-12 22:26:41 +04:00
thek@adventure.(none)
825b5096ad Merge kpettersson@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
2007-07-12 15:38:23 +02:00
thek@adventure.(none)
2a5e7fe592 Merge adventure.(none):/home/thek/Development/cpp/bug28249/my50-bug28249
into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
2007-07-12 15:30:34 +02:00
gkodinov/kgeorge@magare.gmz
c118fe53a6 Bug 29325: test suite is not applicable on windows 2007-07-12 15:12:56 +03:00
thek@adventure.(none)
8ee7e48de8 Bug#28249 Query Cache returns wrong result with concurrent insert / certain lock
A race condition in the integration between MyISAM and the query cache code 
caused the query cache to fail to invalidate itself on concurrently inserted
data.

This patch fix this problem by using the existing handler interface which, upon
each statement cache attempt, compare the size of the table as viewed from the 
cache writing thread and with any snap shot of the global table state. If the
two sizes are different the global table size is unknown and the current
statement can't be cached.
2007-07-12 13:29:51 +02:00
igor@olga.mysql.com
5fea580f07 Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29604
2007-07-11 21:05:09 -07:00
igor@olga.mysql.com
7f64144bf0 Fixed bug .
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
kostja@bodhi.(none)
3364066e29 A fix and a test case for Bug#25859 ALTER DATABASE works w/o parameters.
Fix the parser to make the database options not optional.
2007-07-12 01:10:29 +04:00
evgen@moonbone.local
6c985ff921 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  moonbone.local:/mnt/gentoo64/work/29555-bug-5.0-opt-mysql
2007-07-11 23:37:02 +04:00
evgen@moonbone.local
df9c376e72 Bug#29555: Comparing time values as strings may lead to a wrong result.
Time values were compared as strings. This led to a wrong comparison
result when comparing values one of which is under 100 hours and another is
over 100 hours.

Now when the Arg_comparator::set_cmp_func function sees that both items to
compare are of the TIME type it sets the comparator to the
Arg_comparator::compare_e_int or the Arg_comparator::compare_int_unsigned
functions.
2007-07-11 23:18:02 +04:00
gshchepa/uchum@gleb.loc
13513be628 Merge gleb.loc:/home/uchum/work/bk/5.0-opt-29360
into  gleb.loc:/home/uchum/work/bk/5.0-opt
2007-07-12 00:15:01 +05:00
gshchepa/uchum@gleb.loc
13844b2533 Fixed bug .
The special `zero' enum value was coerced to the normal
empty string enum value during a field-to-field copy.
This bug affected CREATE ... SELECT statements and
SELECT aggregate GROUP BY enum field statements.

Also this bug made unnecessary warnings during
the execution of CREATE ... SELECT statements:
Warning       1265    Data truncated for column...
2007-07-12 00:03:08 +05:00
gkodinov/kgeorge@magare.gmz
b5aa55e107 Addendum to bug 29325:
test if TRUNCATE TABLE works with keep_files_on_create
2007-07-11 18:02:47 +03:00
gkodinov/kgeorge@magare.gmz
1f7a28bda1 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B29325-5.0-opt
2007-07-11 11:59:46 +03:00
gkodinov/kgeorge@magare.gmz
015e1290a1 Bug :
By default MyISAM overwrites .MYD and .MYI files no 
DATA DIRECTORY option is used. This can lead to two tables
using the same .MYD and .MYI files (that can't be dropped).

To prevent CREATE TABLE from overwriting a file a new option
is introduced : keep_files_on_create
When this is on the CREATE TABLE throws an error if either
the .MYD or .MYI exists for a MyISAM table.
The option is off by default (resulting in compatible behavior).
2007-07-11 10:49:54 +03:00
tnurnberg@sin.intern.azundris.com
9b4c3d0db4 Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/tnurnberg/22540/50-22540
2007-07-10 18:33:20 +02:00
gkodinov/kgeorge@magare.gmz
ea9825d67b Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into  magare.gmz:/home/kgeorge/mysql/autopush/B29070-5.0-opt
2007-07-10 10:40:49 +03:00
tsmith@sita.local
4b1da38b13 rpl_misc_functions.result, rpl_misc_functions.test:
Backport from 5.1 a fix to make this test deterministic
2007-07-09 13:18:27 -06:00
gkodinov/kgeorge@magare.gmz
3e9679e1fa Bug : Error in spatial index
1. Threat MBR for a key as double[] and convert it only
when about to store it on disk.
2. Remove the redundant function get_double().
2007-07-09 17:41:24 +03:00
tsmith@sita.local
7b2b10e462 Merge sita.local:/Users/tsmith/m/bk/50
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-09 01:22:54 -06:00
tsmith@sita.local
1106dddfa2 Merge sita.local:/Users/tsmith/m/bk/41
into  sita.local:/Users/tsmith/m/bk/maint/41
2007-07-09 01:21:22 -06:00
tsmith@sita.local
75810fbc22 Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-09 01:14:33 -06:00
tnurnberg@mysql.com/sin.intern.azundris.com
3dfc83f1a1 Bug#22540: Incorrect value in column End_log_pos of SHOW BINLOG EVENTS using InnoDB
dollin' it up for Guilhem ;) -- test streamlined,
better comments, faster code, add'l assert.
2007-07-09 08:11:38 +02:00
ramil/ram@ramil.myoffice.izhnet.ru
a10759d070 Merge mysql.com:/home/ram/work/mysql-5.0-maint
into  mysql.com:/home/ram/work/b28808/b28808.5.0
2007-07-09 10:17:04 +05:00
tsmith@sita.local
c2092ee91b Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-08 19:39:54 -06: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 .
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 .
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
tsmith@sita.local
165c947e0f Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.0-engines
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-06 17:55:46 -06:00
tsmith@sita.local
91e406ebed Merge sita.local:/Users/tsmith/m/bk/50
into  sita.local:/Users/tsmith/m/bk/maint/50
2007-07-06 17:50:01 -06: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 .
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 :
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
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
fca06fbc68 Fix for bug : log_queries_not_using_indexes variable dynamic change is ignored
Problem: logging queries not using indexes we check a special flag which 
is set only at the server startup and is not changing with a corresponding
server variable together.

Fix: check the variable value instead of the flag.
2007-07-05 15:34:12 +05:00
bar@bar.myoffice.izhnet.ru
84eb79856e Merge mysql.com:/home/bar/mysql-work/mysql-5.0.b29333
into  mysql.com:/home/bar/mysql-work/mysql-5.0-rpl
2007-07-05 14:55:02 +05:00
ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
483bd10de8 Fix for bug : crash with show and purge binlogs
Problem: in case of failed 'show binlog events...' we don't inform that 
the log is not in use anymore. That may confuse following 'purge logs...'
command as it takes into account logs in use.

Fix: always notify that the log is not in use anymore.
2007-07-05 13:09:56 +05:00
kostja@bodhi.(none)
a7b05cb786 A fix and a test case for Bug#29050 Creation of a legal stored procedure
fails if a database is not selected prior.

The problem manifested itself when a user tried to
create a routine that had non-fully-qualified identifiers in its bodies
and there was no current database selected.

This is a regression introduced by the fix for Bug 19022:

The patch for Bug 19022 changes the code to always produce a warning
if we can't resolve the current database in the parser. 
In this case this was not necessary, since even though the produced
parsed tree was incorrect, we never re-use sphead
that was obtained at first parsing of CREATE PROCEDURE.
The sphead that is anyhow used is always obtained through db_load_routine,
and there we change the current database to sphead->m_db before
calling yyparse.

The idea of the fix is to resolve the current database directly using 
lex->sphead->m_db member when parsing a stored routine body, when
such is present.

This patch removes the need to reset the current database
when loading a trigger or routine definition into SP cache.
The redundant code will be removed in 5.1.
2007-07-05 11:34:04 +04:00
igor@olga.mysql.com
4c02004da9 Fixed bug .
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