Commit graph

30003 commits

Author SHA1 Message Date
anozdrin@mysql.com
65b87b86a3 Fix for BUG#18587: Function that accepts and returns TEXT
garbles data if longer than 766 chars.

The problem is that a stored routine returns BLOBs to the previous
caller, BLOBs are shallow-copied (i.e. only pointers to the data are
copied). The fix is to also copy data of BLOBs.
2006-05-10 23:16:30 +04:00
anozdrin@mysql.com
247be7d4a9 Make it compilable on Windows. 2006-05-10 18:53:28 +04:00
dlenev@mysql.com
1c0c33ab69 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg12472
2006-05-10 14:40:07 +04:00
anozdrin@mysql.com
b6969719c6 Commit forgotten changes for BUG#14106. 2006-05-10 14:34:03 +04:00
dlenev@mysql.com
b74fdc85f2 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg12472
2006-05-10 14:21:59 +04:00
dlenev@mysql.com
02d692eb3b Follow-up for the patch for bugs #12472/#15137 "CREATE TABLE ... SELECT ...
which explicitly or implicitly uses stored function gives 'Table not locked'
error"

Test case for these bugs crashed in --ps-protocol mode. The crash was caused
by incorrect usage of check_grant() routine from create_table_precheck()
routine. The former assumes that either number of tables to be inspected by
it is limited explicitly (i.e. is is not UINT_MAX) or table list used and
thd->lex->query_tables_own_last value correspond to each other.
create_table_precheck() was not fulfilling this condition and crash happened.
The fix simply sets number of tables to be inspected by check_grant() to 1.
2006-05-10 14:12:32 +04:00
anozdrin@mysql.com
284d80c1b4 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/mnt/raid/MySQL/devel/5.0-bug14106
2006-05-10 13:39:38 +04:00
dlenev@mysql.com
b9d49ee894 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg12472
2006-05-09 16:48:23 +04:00
dlenev@mysql.com
589daad10f Fix for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which explicitly
or implicitly uses stored function gives "Table not locked" error'

CREATE TABLE ... SELECT ... statement which was explicitly or implicitly
(through view) using stored function gave "Table not locked" error.

The actual bug resides in the current locking scheme of CREATE TABLE SELECT
code, which first opens and locks tables of the SELECT statement itself,
and then, having SELECT tables locked, creates the .FRM, opens the .FRM and
acquires lock on it. This scheme opens a possibility for a deadlock, which
was present and ignored since version 3.23 or earlier. This scheme also
conflicts with the invariant of the prelocking algorithm -- no table can
be open and locked while there are tables locked in prelocked mode.

The patch makes an exception for this invariant when doing CREATE TABLE ...
SELECT, thus extending the possibility of a deadlock to the prelocked mode.
We can't supply a better fix in 5.0.
2006-05-09 16:39:11 +04:00
anozdrin@mysql.com
3b74668bfa Partial fix for BUG#14106: IM: im_life_cycle and im_utils
tests fail on FreeBSD.

The patch contains of the following:
  - make Instance Manager, running in the daemon mode, dump
    the pid of angel-process in the special file;
  - default value of angel-pid-file-name is 'mysqlmanager.angel.pid';
  - if ordinary (IM) pid-file-name is specified in the configuration,
    angel-pid-file-name is updated according to the following
    rule: extension of the basename of pid-file-name is replaced by
    '.angel.pid.
    For example:
    - pid-file-name: /tmp/im.pid
      => angel-pid-file-name: /tmp/im.angel.pid
    - pid-file-name: /tmp/im.txt
      => angel-pid-file-name: /tmp/im.angel.pid
    - pid-file-name: /tmp/5.0/im
      => angel-pid-file-name: /tmp/5.0/im.angel.pid
  - add support for configuration option to customize angel
    pid file name;
  - fix test suite to use angel pid to kill Instance Manager
    by all means if something went wrong.

Background
----------

The problem is that on some OSes (FreeBSD for one) Instance
Manager does not get SIGTERM, so can not shutdown gracefully.
Test suite wasn't able to cope with it, so this leads to the
mess in test results.

The problem should be split into two:
  - fix signal handling;
  - fix test suite.

This patch fixes test suite so that it will be able to kill
uncooperative Instance Manager. In order to achieve this,
test suite needs to know PID of IM Angel process.
2006-05-06 13:57:56 +04:00
dlenev@mysql.com
d8bc635ee2 Fix for bug #17260 "Multiple invocations of triggers or stored functions
hog memory".

During each invocation of stored function or trigger some objects which
lifetime is one function call (e.g. sp_rcontext) were allocated on
arena/memroot of calling statement. This led to consumption of fixed amount
of memory for each function/trigger invocation and so statements which
involve lot of them were hogging memory. This in its return led to OOM
crashes or freezes.

This fix introduces new memroot and arena for objects which lifetime is
whole duration of function call. So all memory consumed by such objects
is freed at the end of function call.
2006-05-06 13:51:35 +04:00
kroki@mysql.com
aeb75a2e41 Fix race condition of concurrent RENAME and SHOW TABLES which caused
random test failures.
2006-05-06 09:41:24 +04:00
kroki@mysql.com
a86d1c082f Merge mysql.com:/home/tomash/src/mysql_ab/mysql-5.0
into  mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-bug6951
2006-05-04 15:09:40 +04:00
kroki@mysql.com
22389b9982 Merge mysql.com:/home/tomash/src/mysql_ab/mysql-5.0
into  mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-bug6951
2006-05-04 15:05:16 +04:00
kroki@mysql.com
96f0aa3cfb Bug#15463: EXPLAIN SELECT..INTO hangs the client (QB, command line)
There were two distict bugs: parse error was returned for valid
statement and that error wasn't reported to the client.

The fix ensures that EXPLAIN SELECT..INTO is accepted by parser and any
other parse error will be reported to the client.
2006-05-03 18:02:43 +04:00
dlenev@mysql.com
c40f8557dc Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/dlenev/mysql-5.0-bg11081
2006-05-02 17:07:23 +04:00
knielsen@mysql.com
f0341ac431 Fix a bunch of non-Linux compile failures. 2006-05-02 09:19:54 +02:00
holyfoot@mysql.com
aaf2c26e01 Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/hf/work/mysql-5.0.clean
2006-05-02 09:01:13 +05:00
holyfoot@deer.(none)
aab0e9c24e Win build fix 2006-05-02 08:59:49 +05:00
cmiller@zippy.(none)
1205ae8276 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  zippy.(none):/home/cmiller/work/mysql/mysql-5.0__bug17667
2006-05-01 22:50:36 -04:00
cmiller@zippy.(none)
85ffd9640e SECURITY FIX
Bug#17667: An attacker has the opportunity to bypass query logging.

This adds a new, local-only printf format specifier to our *printf functions
that allows us to print known-size buffers that must not be interpreted as 
NUL-terminated "strings."

It uses this format-specifier to print to the log, thus fixing this 
problem.
2006-05-01 22:10:50 -04:00
kent@mysql.com
715833dbb7 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
2006-05-01 20:23:36 +02:00
kent@mysql.com
e8fb05845b Merge 2006-05-01 20:16:19 +02:00
jimw@mysql.com
c571f6ff57 Merge bk-internal:/home/bk/mysql-5.0
into  mysql.com:/home/jimw/my/mysql-5.0-clean
2006-05-01 10:59:14 -07:00
kent@mysql.com
f45d6d3cc6 mysql.spec.sh:
Use "./libtool --mode=execute" to find real path to executables
2006-05-01 19:48:31 +02:00
holyfoot@mysql.com
22fc7774d0 Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/hf/work/mysql-5.0.clean
2006-05-01 22:21:28 +05:00
holyfoot@deer.(none)
9b832153f9 Fix for Win build 2006-05-01 22:16:08 +05:00
jimw@mysql.com
189241b03e Merge mysql.com:/home/jimw/my/mysql-5.0-18607
into  mysql.com:/home/jimw/my/mysql-5.0-clean
2006-05-01 09:12:36 -07:00
jimw@mysql.com
9ab852bb35 Merge mysql.com:/home/jimw/my/mysql-5.0-18312
into  mysql.com:/home/jimw/my/mysql-5.0-clean
2006-05-01 09:11:57 -07:00
cmiller@zippy.(none)
6af3f88f07 Merge zippy.(none):/home/cmiller/work/mysql/merge/tmp_merge
into  zippy.(none):/home/cmiller/work/mysql/merge/mysql-5.0
2006-05-01 09:46:00 -04:00
kent@mysql.com
39bd702756 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
2006-04-29 22:48:22 +02:00
kent@mysql.com
5e717959d0 config-win.h:
Fix strange "double" define for popen.
  Avoid warnings about sprintf() etc. being unsafe.
  Corrected typo "#endfif"
2006-04-29 15:58:02 +02:00
kent@mysql.com
a14f1250d6 configure.in:
Changed version to 4.1.20
2006-04-29 07:32:12 +02:00
kent@mysql.com
b714a0cec4 mysql.spec.sh:
Backport of changes in 5.0 (bug#18294)
2006-04-29 01:28:04 +02:00
kent@mysql.com
cc6ad16b16 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
2006-04-29 00:52:30 +02:00
elliot@mysql.com
604b5836bb BUG#19145: mysqld crashes if you set the default value of an enum field to NULL
Now test for NULLness the pointers returned from objects created from the
default value. Pushing patch on behalf of cmiller.
2006-04-28 12:15:29 -04:00
msvensson@devsrv-b.mysql.com
bad7e32a94 Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-5.0
into  devsrv-b.mysql.com:/users/msvensson/mysql-5.0
2006-04-28 17:48:50 +02:00
kent@mysql.com
0222a31358 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
2006-04-28 17:23:14 +02:00
kent@mysql.com
50e8ba04cf mysql.spec.sh:
Include and run mysql_upgrade if needed (bug#19353)
2006-04-28 17:03:11 +02:00
kent@mysql.com
18b3a2c902 Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
2006-04-28 16:27:39 +02:00
msvensson@devsrv-b.mysql.com
580111eab2 Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-5.0
into  devsrv-b.mysql.com:/users/msvensson/mysql-5.0
2006-04-28 16:05:05 +02:00
msvensson@devsrv-b.mysql.com
5297a546ec Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-4.1
into  devsrv-b.mysql.com:/users/msvensson/mysql-4.1
2006-04-28 15:15:13 +02:00
msvensson@neptunus.(none)
50c920ffab Bug#18818 configure: No longer finds OpenSSL on Mac OS X
- Eval shrext_cmds variable before using it
 - Moved from acinclude.m4 to openssl.m4 and zlib.m4 when merging 4.1 -> 5.0
2006-04-28 13:55:40 +02:00
msvensson@neptunus.(none)
e44d4e3e2b Merge neptunus.(none):/home/msvensson/mysql/mysql-4.1
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
2006-04-28 13:53:32 +02:00
msvensson@devsrv-b.mysql.com
84c83c9196 Merge msvensson@bk-internal.mysql.com:/home/bk/mysql-4.1
into  devsrv-b.mysql.com:/users/msvensson/mysql-4.1
2006-04-28 13:43:26 +02:00
gkodinov@lsmy3.wdf.sap.corp
6e5cf86f4d Merge lsmy3.wdf.sap.corp:/data/users/gkodinov/mysql-4.1-B18492
into  lsmy3.wdf.sap.corp:/data/users/gkodinov/mysql-5.0-B18492
2006-04-28 12:06:54 +02:00
gkodinov@lsmy3.wdf.sap.corp
ca79343359 BUG#18492: mysqld reports ER_ILLEGAL_REFERENCE in --ps-protocol
In the code that converts IN predicates to EXISTS predicates it is changing
the select list elements to constant 1. Example :
SELECT ... FROM ...  WHERE a IN (SELECT c FROM ...)
is transformed to :
SELECT ... FROM ... WHERE EXISTS (SELECT 1 FROM ...  HAVING a = c)
However there can be no FROM clause in the IN subquery and it may not be
a simple select : SELECT ... FROM ... WHERE a IN (SELECT f(..) AS
c UNION SELECT ...) This query is transformed to : SELECT ... FROM ...
WHERE EXISTS (SELECT 1 FROM (SELECT f(..) AS c UNION SELECT ...)
x HAVING a = c) In the above query c in the HAVING clause is made to be
an Item_null_helper (a subclass of Item_ref) pointing to the real
Item_field (which is not referenced anywhere else in the query anymore).
This is done because Item_ref_null_helper collects information whether
there are NULL values in the result.  This is OK for directly executed
statements, because the Item_field pointed by the Item_null_helper is
already fixed when the transformation is done.  But when executed as
a prepared statement all the Item instances are "un-fixed" before the
recompilation of the prepared statement. So when the Item_null_helper
gets fixed it discovers that the Item_field it points to is not fixed
and issues an error.  The remedy is to keep the original select list
references when there are no tables in the FROM clause. So the above
becomes : SELECT ... FROM ...  WHERE EXISTS (SELECT c FROM (SELECT f(..)
AS c UNION SELECT ...) x HAVING a = c) In this way c is referenced
directly in the select list as well as by reference in the HAVING
clause. So it gets correctly fixed even with prepared statements.  And
since the Item_null_helper subclass of Item_ref_null_helper is not used
anywhere else it's taken out.
2006-04-28 11:23:31 +02:00
msvensson@neptunus.(none)
44322185b5 Merge bk-internal:/home/bk/mysql-5.0
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
2006-04-28 08:30:49 +02:00
holyfoot@mysql.com
059e2f7005 Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/hf/work/mysql-5.0.upgd
2006-04-28 09:19:53 +05:00
holyfoot@deer.(none)
5a75f865c2 bug #18115 (mysql_upgrade on Windows)
pushed in 5.0
2006-04-28 09:07:25 +05:00