Commit graph

107 commits

Author SHA1 Message Date
tsmith/tim@siva.hindu.god
df200bd018 Merge siva.hindu.god:/usr/home/tim/m/bk/b19764/50
into  siva.hindu.god:/usr/home/tim/m/bk/tmp/mrgOct16/50
2006-10-16 20:15:14 -06:00
tsmith/tim@siva.hindu.god
0e3cfe02ec Bug #19764: SHOW commands end up in the slow log as table scans
Do not consider SHOW commands slow queries, just because they don't use proper indexes.

This bug fix is not needed in 5.1, and the code changes will be null merged.  However, the test cases will be propogated up to 5.1.
2006-10-12 17:10:34 -06:00
msvensson@neptunus.(none)
5a15eeca7c Merge neptunus.(none):/home/msvensson/mysql/same_tools/my50-same_tools
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
2006-10-06 13:16:57 +02:00
msvensson@shellback.(none)
de8bc06266 Merge shellback.(none):/home/msvensson/mysql/same_tools/my41-same_tools
into  shellback.(none):/home/msvensson/mysql/same_tools/my50-same_tools
2006-10-03 16:14:23 +02:00
msvensson@shellback.(none)
2cea0e6b13 Update mysqltest to latest version
- ie. backport from 5.1
 - also update testcase error dected by new version
2006-10-03 15:33:44 +02:00
dlenev@mockturtle.local
8eb4401c59 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mockturtle.local:/home/dlenev/src/mysql-5.0-rt-merge
2006-10-02 22:53:10 +04:00
kroki/tomash@moonlight.intranet
0bdc597b52 BUG#21081: SELECT inside stored procedure returns wrong results
Re-execution of a parametrized prepared statement or a stored routine
with a SELECT that use LEFT JOIN with second table having only one row
could yield incorrect result.

The problem appeared only for left joins with second table having only
one row (aka const table) and equation conditions in ON or WHERE clauses
that depend on the argument passed.  Once the condition was false for
second const table, a NULL row was created for it, and any field involved
got NULL-value flag, which then was never reset.

The cause of the problem was that Item_field::null_value could be set
without being reset for re-execution.  The solution is to reset
Item_field::null_value in Item_field::cleanup().
2006-09-27 23:11:45 +04:00
igor@rurik.mysql.com
0279c91d99 Post-merge corrections. 2006-09-19 12:18:24 -07:00
igor@rurik.mysql.com
25368c359e Merge rurik.mysql.com:/home/igor/mysql-4.1-opt
into  rurik.mysql.com:/home/igor/mysql-5.0-opt
2006-09-19 10:09:02 -07:00
igor@rurik.mysql.com
dd3b8e4f9a Fixed bug #22085: Crash on the execution of a prepared
statement that uses an aggregating IN subquery with 
HAVING clause.
A wrong order of the call of split_sum_func2 for the HAVING
clause of the subquery and the transformation for the 
subquery resulted in the creation of a andor structure
that could not be restored at an execution of the prepared
statement.
2006-09-16 11:50:00 -07:00
kroki/tomash@moonlight.intranet
b6bee0a394 BUG#21166: Prepared statement causes signal 11 on second execution
Changes in an item tree done by optimizer weren't properly
registered and went unnoticed, which resulted in preliminary freeing
of used memory.
2006-08-24 15:49:12 +04:00
kostja@bodhi.local
4bfc67fc3c Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge
2006-08-02 14:13:01 +04:00
igreenhoe/greenman@anubis.greendragongames.com
abb75129f8 4.1 -> 5.0 merge 2006-07-13 16:35:25 -07:00
kostja@bodhi.local
15a76619c7 Post-merge fixes for Bug#19399 "Stored Procedures 'Lost Connection'
when dropping/creating tables"
2006-07-11 23:39:51 +04:00
kostja@bodhi.local
e4598dae1f Merge bodhi.local:/opt/local/work/tmp_merge
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge-41
2006-07-11 21:19:57 +04:00
konstantin@bodhi.netgear
8e735d2c11 A fix and a test case for Bug#19399 "res 'Lost Connection' when
dropping/creating tables".

The bug could lead to a crash when multi-delete statements were
prepared and used with temporary tables.

The bug was caused by lack of clean-up of multi-delete tables before
re-execution of a prepared statement. In a statement like
DELETE t1 FROM t1, t2 WHERE ... the first table list (t1) is
moved to lex->auxilliary_table_list and excluded from lex->query_tables
or select_lex->tables. Thus it was unaccessible to reinit_stmt_before_use
and not cleaned up before re-execution of a prepared statement.
2006-07-06 23:59:04 +04:00
konstantin@mysql.com
117b76a562 A fix and a test case for
Bug#19022 "Memory bug when switching db during trigger execution"
 Bug#17199 "Problem when view calls function from another database."
 Bug#18444 "Fully qualified stored function names don't work correctly in
            SELECT statements"

 Documentation note: this patch introduces a change in behaviour of prepared
 statements.

 This patch adds a few new invariants with regard to how THD::db should
 be used. These invariants should be preserved in future:

  - one should never refer to THD::db by pointer and always make a deep copy
    (strmake, strdup)
  - one should never compare two databases by pointer, but use strncmp or
    my_strncasecmp
  - TABLE_LIST object table->db should be always initialized in the parser or
    by creator of the object.

    For prepared statements it means that if the current database is changed
    after a statement is prepared, the database that was current at prepare
    remains active. This also means that you can not prepare a statement that
    implicitly refers to the current database if the latter is not set.
    This is not documented, and therefore needs documentation. This is NOT a
    change in behavior for almost all SQL statements except:
     - ALTER TABLE t1 RENAME t2 
     - OPTIMIZE TABLE t1
     - ANALYZE TABLE t1
     - TRUNCATE TABLE t1 --
     until this patch t1 or t2 could be evaluated at the first execution of
     prepared statement. 

     CURRENT_DATABASE() still works OK and is evaluated at every execution
     of prepared statement.

     Note, that in stored routines this is not an issue as the default
     database is the database of the stored procedure and "use" statement
     is prohibited in stored routines.

  This patch makes obsolete the use of check_db_used (it was never used in the
  old code too) and all other places that check for table->db and assign it
  from THD::db if it's NULL, except the parser.

 How this patch was created: THD::{db,db_length} were replaced with a
 LEX_STRING, THD::db. All the places that refer to THD::{db,db_length} were
 manually checked and:
  - if the place uses thd->db by pointer, it was fixed to make a deep copy
  - if a place compared two db pointers, it was fixed to compare them by value
    (via strcmp/my_strcasecmp, whatever was approproate)
 Then this intermediate patch was used to write a smaller patch that does the
 same thing but without a rename.

 TODO in 5.1:
   - remove check_db_used
   - deploy THD::set_db in mysql_change_db

 See also comments to individual files.
2006-06-27 00:47:52 +04:00
msvensson@shellback.(none)
4693d06a49 Add missing drop table 2006-05-29 16:27:45 +02:00
konstantin@mysql.com
f912a26b4a A fix and a test case for Bug#19308 "REPAIR/OPTIMIZE/ANALYZE
supported in SP but not in PS": just enable them in prepared
statements, the supporting functionality was implemented when
they were enabled in stored procedures.
2006-04-25 04:27:23 +04:00
konstantin@mysql.com
c49e6f8869 Post-merge fixes. Add a new error message for max_prepared_stmt_count
limit.
2006-04-13 01:46:44 +04:00
konstantin@mysql.com
75792fc0dc Merge mysql.com:/opt/local/work/mysql-4.1-16365
into  mysql.com:/opt/local/work/mysql-5.0-merge
2006-04-12 18:30:54 +04:00
konstantin@mysql.com
a81ea4a830 Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into  mysql.com:/opt/local/work/mysql-4.1-16365
2006-04-07 23:50:45 +04:00
konstantin@mysql.com
518993312c A fix and a test case for Bug#16365 "Prepared Statements: DoS with
too many open statements". The patch adds a new global variable
@@max_prepared_stmt_count. This variable limits the total number
of prepared statements in the server. The default value of
@@max_prepared_stmt_count is 16382. 16382 small statements
(a select against 3 tables with GROUP, ORDER and LIMIT) consume 
100MB of RAM. Once this limit has been reached, the server will 
refuse to prepare a new statement and return ER_UNKNOWN_ERROR 
(unfortunately, we can't add new errors to 4.1 without breaking 5.0). The limit is changeable after startup
and can accept any value from 0 to 1 million. In case
the new value of the limit is less than the current
statement count, no new statements can be added, while the old
still can be used. Additionally, the current count of prepared 
statements is now available through a global read-only variable 
@@prepared_stmt_count.
2006-04-07 23:37:06 +04:00
konstantin@mysql.com
15b591561f A fix and a test case for Bug#16248 "WHERE (col1,col2) IN ((?,?))
gives wrong results". Implement previously missing 
Item_row::cleanup. The bug is not repeatable in 5.0, probably 
due to a coincidence: the problem is present in 5.0 as well.
2006-04-07 22:26:25 +04:00
pem@mysql.com
b310d4fb4d Post review fixes for BUG#16474: SP crashed MySQL. 2006-03-28 14:16:21 +02:00
konstantin@mysql.com
af62c4a959 Merge mysql.com:/opt/local/work/mysql-4.1-13134
into  mysql.com:/opt/local/work/mysql-5.0-runtime
2006-02-24 00:00:15 +03:00
konstantin@mysql.com
7178f247f5 Remove 'delayed' to make the test deterministic (already
fixed in 5.0).
A post-review fix (Bug#13134)
2006-02-23 23:41:15 +03:00
konstantin@mysql.com
442c2ba8af A fix and a test case for Bug#13134 "Length of VARCHAR() utf8
column is increasing when table is recreated with PS/SP":
make use of create_field::char_length more consistent in the code.
Reinit create_field::length from create_field::char_length
for every execution of a prepared statement (actually fixes the 
bug).
2006-02-21 19:52:20 +03:00
konstantin@mysql.com
739ba76d64 A fix for Bug#13337 "ps test fails if configure wo/ usc2" 2006-01-17 01:03:03 +03:00
konstantin@mysql.com
0a64381cee Merge mysql.com:/opt/local/work/mysql-4.1-12734
into  mysql.com:/opt/local/work/mysql-5.0-root
2006-01-14 19:12:07 +03:00
konstantin@mysql.com
48d48bc936 A fix and a test case for Bug#12734 " prepared statement may
return incorrect result set for a select SQL request"
2006-01-14 04:55:07 +03:00
jimw@mysql.com
9df4951acb Merge mysql.com:/home/jimw/my/mysql-5.0-14956
into  mysql.com:/home/jimw/my/mysql-5.0-clean
2005-11-28 10:51:54 -08:00
konstantin@mysql.com
9fd6204ad1 Merge mysql.com:/opt/local/work/mysql-4.1-root
into  mysql.com:/opt/local/work/mysql-5.0-root
2005-11-25 13:57:13 +03:00
konstantin@mysql.com
f57dffe453 A fix and a test case for Bug#14410 "Crash in Enum or Set type in
CREATE TABLE and PS/SP": make sure that 'typelib' object for
ENUM values and 'Item_string' object for DEFAULT clause are 
created in the statement memory root.
2005-11-25 13:25:31 +03:00
jimw@mysql.com
86beb208aa Fix result of ROW_COUNT() after 'EXECUTE prepstmt'. (Bug #14956) 2005-11-23 14:57:26 -08:00
andrey@lmy004.
1a46ea1057 fix for bug #12651 (item of a prepared query allocated on non-permanent
are thus dangling later)
2005-09-08 21:30:05 +02:00
bell@sanja.is.com.ua
352c7b9cbc Merge sanja.is.com.ua:/home/bell/mysql/bk/work-4.1
into  sanja.is.com.ua:/home/bell/mysql/bk/work-mrg-5.0
2005-09-06 20:51:15 +03:00
gluh@eagle.intranet.mysql.r18.ru
a5bd5e9af2 Bug #6172 RAND(a) should only accept constant values as arguments(2nd version)
Argument of RAND function can be constant value only
2005-09-06 16:19:59 +05:00
monty@mysql.com
15d48525af Merge mysql.com:/home/my/mysql-4.1
into  mysql.com:/home/my/mysql-5.0
2005-07-28 17:09:54 +03:00
monty@mysql.com
3c12d0ae54 Added end marker for tests to make future merges easier 2005-07-28 03:22:47 +03:00
konstantin@mysql.com
8e72214d74 Merge mysql.com:/opt/local/work/mysql-4.1-root
into  mysql.com:/media/sda1/mysql/mysql-5.0-merge
2005-07-16 13:45:32 +04:00
konstantin@mysql.com
e08caeeee2 A fix and a test case for Bug#9359 "Prepared statements take snapshot
of system vars at PREPARE time": implement a special Item
to handle system variables. This item substitutes itself with 
a basic constant containing variable value at fix_fields.
2005-07-16 03:29:13 +04:00
tomas@poseidon.ndb.mysql.com
d6e2fae0ae Bug#9442, moved ps ucs2 test from ps.test to ctype_ucs.test 2005-07-15 19:46:42 +02:00
konstantin@mysql.com
fbf35e0e37 Merge mysql.com:/opt/local/work/mysql-4.1-root
into  mysql.com:/opt/local/work/mysql-5.0-root
2005-07-15 02:13:08 +04:00
konstantin@mysql.com
a4a5bc42a6 Fix ps.test in --ps-protocol 2005-07-15 02:11:07 +04:00
konstantin@mysql.com
60e7d6ff37 Post-merge fixes. 2005-07-15 00:41:58 +04:00
konstantin@mysql.com
3274b050bc Merge mysql.com:/opt/local/work/mysql-4.1-root
into  mysql.com:/opt/local/work/mysql-5.0-root
2005-07-15 00:31:09 +04:00
konstantin@mysql.com
a2b11ff266 A fix and a test case for Bug#11299 "prepared statement makes wrong SQL
syntax in binlog which stops replication":
disallow the use of parameter markers which can lead to generation
of malformed binlog queries.
2005-07-15 00:01:49 +04:00
konstantin@mysql.com
7b507e8bb0 Merge mysql.com:/opt/local/work/mysql-4.1-9379
into  mysql.com:/opt/local/work/mysql-5.0-root
2005-07-14 00:52:57 +04:00
konstantin@mysql.com
ef1e748ef1 A test case for Bug#9442 "Set parameter make query fail if column
character set is UCS2".
The bug is no longer repeatable.
2005-07-14 00:15:23 +04:00