Commit graph

30884 commits

Author SHA1 Message Date
kroki/tomash@mysql.com/moonlight.intranet
a81c1b27e5 Bug#19207: Final parenthesis omitted for CREATE INDEX in Stored Procedure
Wrong criteria was used to distinguish the case when there was no
lookahead performed in the parser.  Bug affected only statements
ending in one-character token without any optional tail, like CREATE
INDEX and CALL.
2006-07-07 21:24:54 +04:00
kroki@mysql.com
73eb784b67 Merge mysql.com:/home/tomash/src/mysql_ab/mysql-5.0
into  mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-bug17203
2006-06-27 21:31:26 +04:00
kroki@mysql.com
08f192f81b Bug#17203: "sql_no_cache sql_cache" in views created from prepared statement
The problem was that we restored SQL_CACHE, SQL_NO_CACHE flags in SELECT
statement from internal structures based on value set later at runtime, not
the original value set by the user.

The solution is to remember that original value.
2006-06-27 21:28:32 +04:00
konstantin@mysql.com
e29ea3f2ef Fix yet another place that used uint32 instead of uint. 2006-06-27 17:34:14 +04:00
konstantin@mysql.com
36fdaa7d16 Fix yet another place with an obsolete explicit cast to byte *. 2006-06-27 15:39:43 +04:00
konstantin@mysql.com
3cf181bb64 Fix compilation failures on Windows caused by the patch for Bug#17199.
Fix a minor issue with Bug#16206 (bdb.test failed if the tree is compiled 
without blackhole).
2006-06-27 14:56:24 +04:00
konstantin@mysql.com
5576ef27c6 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/opt/local/work/mysql-5.0-17199
2006-06-27 03:34:12 +04:00
kent@mysql.com
ca3e020b3d Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
2006-06-27 00:55:30 +02:00
kent@mysql.com
b1d3bd5a7a Merge mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
2006-06-27 00:13:45 +02:00
kent@mysql.com
748b287cad Merge mysql.com:/Users/kent/mysql/bk/mysql-4.0
into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
2006-06-26 23:47:14 +02:00
kent@mysql.com
c36dd28676 make_sharedlib_distribution.sh:
For compatibility, don't use {..,..} in pattern matching
make_binary_distribution.sh:
  Added .dylib and .sl as shared library extensions
2006-06-26 23:44:17 +02:00
konstantin@mysql.com
4d25d2154c Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/opt/local/work/mysql-5.0-17199
2006-06-27 00:52:56 +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
ingo@mysql.com
50477229b4 Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/nfstmp1/ingo/autopush-75/mysql-5.0
2006-06-26 22:23:04 +02:00
anozdrin@mysql.com
8f4582db27 Merge mysql.com:/home/alik/MySQL/devel/5.0-tree
into  mysql.com:/home/alik/MySQL/devel/5.0-rt
2006-06-26 21:58:55 +04:00
ingo@mysql.com
0acdd0f773 Merge istruewing@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/mydev/mysql-5.0-bug16986-main
2006-06-26 19:43:28 +02:00
ingo@mysql.com
d011ac7202 Merge mysql.com:/home/mydev/mysql-5.0--main
into  mysql.com:/home/mydev/mysql-5.0-bug16986-main
2006-06-26 19:19:12 +02:00
ingo@mysql.com
d27a15a81c Bug#16986 - Deadlock condition with MyISAM tables
Addendum fixes after changing the condition variable
for the global read lock.

The stress test suite revealed some deadlocks. Some were
related to the new condition variable (COND_global_read_lock)
and some were general problems with the global read lock.

It is now necessary to signal COND_global_read_lock whenever 
COND_refresh is signalled.

We need to wait for the release of a global read lock if one 
is set before every operation that requires a write lock.
But we must not wait if we have locked tables by LOCK TABLES.
After setting a global read lock a thread waits until all
write locks are released.
2006-06-26 19:14:35 +02:00
tnurnberg@mysql.com
d5ff4f6882 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/tnurnberg/mysql-5.0-maint-18462
2006-06-26 16:15:41 +02:00
elliot@mysql.com
374495ffd1 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/data0/bk/mysql-5.0-maint
2006-06-26 04:48:16 +02:00
knielsen@mysql.com
13a67a9fea Merge knielsen@10.100.52.19:/usr/local/mysql/tmp-5.0
into  mysql.com:/data0/knielsen/tmp-5.0
2006-06-24 16:44:41 +02:00
knielsen@mysql.com
34cf139bd9 Fix race condition in test case wait_timeout.
Sometimes the helper connection (that is watching for the main connection
to time out) would itself time out first, causing the test to fail.
2006-06-24 13:11:09 +02:00
iggy@mysql.com
55bd222b10 Merge mysql.com:/mnt/storeage/mysql-5.0-maint
into  mysql.com:/mnt/storeage/mysql-5.0-maint_bug20616
2006-06-23 15:38:50 -04:00
iggy@mysql.com
f68b01e347 Bug#20616: drop_temp_table test fails on Windows platform 2006-06-23 12:15:39 -04:00
evgen@moonbone.local
c74cc18789 key.result:
After merge fix
2006-06-23 19:36:54 +04:00
elliot@mysql.com
d11c890bf1 BUG#20528 Added missing parenthesis to DBUG_PRINT statement 2006-06-23 11:21:57 -04:00
knielsen@mysql.com
d74a0457b6 Merge mysql.com:/usr/local/mysql/mysql-5.0-bug20622
into  mysql.com:/usr/local/mysql/tmp-5.0
2006-06-23 14:52:04 +02:00
knielsen@mysql.com
98a5cdfe4c BUG#20622: Fix one-byte buffer overrun in IM directory string handling.
The problem was a call to convert_dirname() with a destination buffer
that did not have room for the trailing slash added by that function.
This could cause the instance manager to crash in some cases.
2006-06-23 14:50:02 +02:00
evgen@moonbone.local
e74c47fb04 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-23 16:09:33 +04:00
evgen@moonbone.local
9a9224da68 Merge moonbone.local:/work/tmp_merge-4.1-opt-mysql
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-23 14:53:41 +04:00
bar@mysql.com
cfb08851f7 Bug#11228: DESC shows arbitrary column as "PRI"
An UNIQUE KEY consisting of NOT NULL columns
  was displayed as PRIMARY KEY in "DESC t1".
  According to the code, that was intentional
  behaviour for some reasons unknown to me.
  This code was written before bitkeeper time,
  so I cannot check who and why made this.
  After discussing on dev-public, a decision
  was made to remove this code
2006-06-23 13:19:30 +05:00
kent@mysql.com
ef2860e8ff mysql.spec.sh:
Disable the simplistic auto dependency scan for test/bench (bug#20078)
2006-06-23 00:37:31 +02:00
tnurnberg@mysql.com
1a79cb56f5 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/home/tnurnberg/mysql-5.0-maint-19409
2006-06-22 22:21:43 +02:00
konstantin@mysql.com
40a1c179e6 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/opt/local/work/mysql-5.0-runtime
2006-06-23 00:01:30 +04:00
pekka@clam.ndb.mysql.com
04b178f451 Merge clam.ndb.mysql.com:/space/pekka/ndb/version/my50
into  clam.ndb.mysql.com:/space/pekka/ndb/version/my50-bug18781
2006-06-22 20:59:03 +02:00
tnurnberg@mysql.com
08e5b005b0 #19409: Test 'func_timestamp' fails on Windows x64
- The setting of "ENV{'TZ'}" doesn't affect the timezone
  used by MySQL Server on Windows.
- Explicitly set timezone in test cases before doing UTC/localtime
  conversions so tests produce deterministic results
2006-06-22 20:50:38 +02:00
tnurnberg@mysql.com
8fd6830478 Bug#19408 Test 'func_time' fails on Windows x64
- The setting of "ENV{'TZ'}" doesn't affect the timezone
  used by MySQL Server on Windows.
- Explicitly set timezone to "+03:00" in test case before
  doing the calculatiosn to check that there is three hours
  difference between utc and local time.
(Magnus' fix)
2006-06-22 20:23:22 +02:00
kroki@mysql.com
2811ce2a20 Merge mysql.com:/home/tomash/src/mysql_ab/mysql-5.0
into  mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-bug15811
2006-06-22 21:54:06 +04:00
konstantin@mysql.com
8a2bf1cc7d Merge mysql.com:/opt/local/work/mysql-5.0-root
into  mysql.com:/opt/local/work/mysql-5.0-runtime
2006-06-22 21:06:09 +04:00
kroki@mysql.com
b7d8d6f402 Merge mysql.com:/home/tomash/src/mysql_ab/mysql-5.0
into  mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-bug15811
2006-06-22 19:48:44 +04:00
konstantin@mysql.com
e20898a507 A fix and a test case for Bug#15217 "Using a SP cursor on a table created
with PREPARE fails with weird error".
More generally, re-executing a stored procedure with a complex SP cursor query
could lead to a crash.

The cause of the problem was that SP cursor queries were not optimized 
properly at first execution: their parse tree belongs to sp_instr_cpush,
not sp_instr_copen, and thus the tree was tagged "EXECUTED" when the
cursor was declared, not when it was opened. This led to loss of optimization
transformations performed at first execution, as sp_instr_copen saw that the
query is already "EXECUTED" and therefore either not ran first-execution 
related blocks or wrongly rolled back the transformations caused by 
first-execution code.
The fix is to update the state of the parsed tree only when the tree is
executed, as opposed to when the instruction containing the tree is executed.
Assignment if i->state is moved to reset_lex_and_exec_core.
2006-06-22 19:29:48 +04:00
kroki@mysql.com
3b58c95d6e Bug#15811: extremely long time for mysql client to execute long INSERT
The problem was in redundant calls to strlen() in string functions,
where we may then return after checking only the small number of characters.

No test case is provided since it's a performance fix.
2006-06-22 19:15:03 +04:00
evgen@moonbone.local
3ef768b763 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-22 18:59:44 +04:00
cmiller@zippy.(none)
0f4e09a81a Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  zippy.(none):/home/cmiller/work/mysql/mysql-5.0__bug19904
2006-06-22 08:58:37 -04:00
evgen@moonbone.local
c948256692 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-22 01:16:57 +04:00
jani@a193-229-222-105.elisa-laajakaista.fi
fa98891ee7 Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.0
into  a193-229-222-105.elisa-laajakaista.fi:/home/jani/mysql-5.0
2006-06-21 23:54:06 +03:00
evgen@moonbone.local
e39e665390 Manual merge 2006-06-22 00:49:17 +04:00
evgen@moonbone.local
36a436adae Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-06-22 00:45:42 +04:00
evgen@moonbone.local
6439337bb1 Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1
into moonbone.local:/work/tmp_merge-4.1-opt-mysql
2006-06-22 00:29:47 +04:00
evgen@moonbone.local
8d4a910a1f Fixed bug #14896.
This bug in Field_string::cmp resulted in a wrong comparison 
with keys in partial indexes over multi-byte character fields.
Given field a is declared as a varchar(16) collate utf8_unicode_ci
INDEX(a(4)) gives us an example of such an index.
  
Wrong key comparisons could lead to wrong result sets if 
the selected query execution plan used a range scan by 
a partial index over a utf8 character field.
This also caused wrong results in many other cases.
2006-06-22 00:29:04 +04:00