Commit graph

2027 commits

Author SHA1 Message Date
gkodinov/kgeorge@macbook.gmz
16d2d68257 BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
Two problems here:

 Problem 1:

 While constructing the join columns list the optimizer does as follows:
  1. Sets the join_using_fields/natural_join members of the right JOIN 
   operand.
  2. Makes a "table reference" (TABLE_LIST) to parent the two tables.
  3. Assigns the join_using_fields/is_natural_join of the wrapper table
   using join_using_fields/natural_join of the rightmost table
  4. Sets join_using_fields to NULL for the right JOIN operand.
  5. Passes the parent table up to the same procedure on the upper 
   level.

 Step 1 overrides the the join_using_fields that are set for a nested 
 join wrapping table in step 4.
 Fixed by making a designated variable SELECT_LEX::prev_join_using to 
 pass the data from step 1 to step 4 without destroying the wrapping 
 table data.

 Problem 2:

 The optimizer checks for ambiguous columns while transforming 
 NATURAL JOIN/JOIN USING to JOIN ON. While doing that there was no
 distinction between columns that are used in the generated join
 condition (where ambiguity can be checked) and the other columns
 (where ambiguity can be checked only when resolving references
 coming from outside the JOIN construct itself).
 Fixed by allowing the non-USING columns to be present in multiple 
 copies in both sides of the join and moving the ambiguity check 
 to the place where unqualified references to the join columns are
 resolved (find_field_in_natural_join()).
2007-01-31 16:04:38 +02:00
msvensson@pilot.mysql.com
5c717b080f Merge pilot.mysql.com:/home/msvensson/mysql/bug22943/my41-bug22943
into  pilot.mysql.com:/home/msvensson/mysql/mysql-4.1-maint
2007-01-29 16:19:59 +01:00
msvensson@pilot.mysql.com
007d170ad2 Merge pilot.mysql.com:/home/msvensson/mysql/bug22943/my41-bug22943
into  pilot.mysql.com:/home/msvensson/mysql/bug22943/my50-bug22943
2007-01-29 14:33:53 +01:00
msvensson@pilot.mysql.com
7eaa82ea38 Bug#22943 syscall pruning in libmysql
- Set the timeout values only where needed
2007-01-29 14:31:48 +01:00
monty@mysql.com/narttu.mysql.fi
a04157fbb3 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/my/mysql-5.0
2007-01-22 14:04:40 +02:00
tsmith@siva.hindu.god
244b2004ee Merge siva.hindu.god:/home/tsmith/m/bk/mrg-jan17/50
into  siva.hindu.god:/home/tsmith/m/bk/mrg-jan17/maint/50
2007-01-18 10:06:36 -07:00
tsmith@siva.hindu.god
6fd02a439f Merge siva.hindu.god:/home/tsmith/m/bk/mrg-jan17/41
into  siva.hindu.god:/home/tsmith/m/bk/mrg-jan17/maint/41
2007-01-18 09:53:30 -07:00
lars/lthalmann@mysql.com/dl145j.mysql.com
b25079d61a Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
2007-01-17 19:30:05 +01:00
lars/lthalmann@mysql.com/dl145j.mysql.com
bbaf32754f Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-4.1-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge
2007-01-17 19:28:55 +01:00
kostja@bodhi.local
a9590803fc Merge bodhi.local:/opt/local/work/mysql-4.1-runtime
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-debug-max
2007-01-17 16:00:33 +03:00
kostja@bodhi.local
6399db740e Fix a failure of lowercase_tables2 test on powermacg5, introduced
by the patch for Bug#4968
2007-01-17 15:46:30 +03:00
msvensson@pilot.mysql.com
8154355a07 Merge pilot.mysql.com:/home/msvensson/mysql/mysql-4.1
into  pilot.mysql.com:/home/msvensson/mysql/mysql-4.1-maint
2007-01-17 11:13:03 +01:00
kostja@bodhi.local
6e16458487 Merge bodhi.local:/opt/local/work/mysql-4.1-runtime
into  bodhi.local:/opt/local/work/mysql-5.0-runtime
2007-01-15 23:29:02 +03:00
kostja@bodhi.local
d49ac4fbb7 A post-merge fix. 2007-01-15 23:25:16 +03:00
kostja@bodhi.local
d7a63c0f6a Manual merge. 2007-01-15 13:10:07 +03:00
lars/lthalmann@mysql.com/dl145j.mysql.com
c380de50ef Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
2007-01-12 12:22:54 +01:00
lars/lthalmann@mysql.com/dl145j.mysql.com
22398faa91 Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-4.1-rpl
into  mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge
2007-01-12 12:21:44 +01:00
tsmith/tim@siva.hindu.god
682596d7ce Merge siva.hindu.god:/usr/home/tim/m/bk/g50
into  siva.hindu.god:/usr/home/tim/m/bk/50
2006-12-26 22:28:28 -07:00
acurtis/antony@xiphis.org/ltamd64.xiphis.org
82b03f29ac Merge xiphis.org:/home/antony/work2/mysql-5.0-engines
into  xiphis.org:/home/antony/work2/mysql-5.0-engines-merge
2006-12-26 16:23:05 -08:00
kent@mysql.com/kent-amd64.(none)
226a5c833f Many files:
Changed header to GPL version 2 only
2006-12-23 20:17:15 +01:00
monty@mysql.com/narttu.mysql.fi
a6481aa4c7 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/my/mysql-5.0
2006-12-15 01:01:52 +02:00
monty@mysql.com/narttu.mysql.fi
88dd873de0 Fixed compiler warnings detected by option -Wshadow and -Wunused:
- Removed not used variables and functions
- Added #ifdef around code that is not used
- Renamed variables and functions to avoid conflicts
- Removed some not used arguments

Fixed some class/struct warnings in ndb
Added define IS_LONGDATA() to simplify code in libmysql.c

I did run gcov on the changes and added 'purecov' comments on almost all lines that was not just variable name changes
2006-12-15 00:51:37 +02:00
svoj@mysql.com/april.(none)
db88cf3df7 Merge mysql.com:/home/svoj/devel/mysql/BUG23404/mysql-4.1-engines
into  mysql.com:/home/svoj/devel/mysql/BUG23404/mysql-5.0-engines
2006-12-13 16:29:33 +04:00
kostja@bodhi.local
92f1c76236 Post-merge fixes for Bug#4968 "Stored procedure crash if cursor opened
on altered table" and Bug#19733 "Repeated alter, or repeated 
create/drop, fails"
2006-12-12 01:50:12 +03:00
kostja@bodhi.local
758404b238 Merge bodhi.local:/opt/local/work/mysql-4.1-4968
into  bodhi.local:/opt/local/work/mysql-5.0-4968-pull-from-4.1
2006-12-12 01:23:30 +03:00
Kristofer.Pettersson@naruto.
0d7f94da7b Merge naruto.:C:/cpp/bug17489/my50-bug17489
into  naruto.:C:/cpp/mysql-5.0-maint
2006-12-11 13:13:05 +01:00
Kristofer.Pettersson@naruto.
57abd1dc1e Merge naruto.:C:/cpp/bug17489/my41-bug17489
into  naruto.:C:/cpp/bug17489/my50-bug17489
2006-12-10 16:40:15 +01:00
lars@mysql.com/black.(none)
e2e3f0e5c3 Merge mysql.com:/home/bkroot/mysql-5.0-rpl
into  mysql.com:/home/bk/MERGE/mysql-5.0-merge
2006-12-08 23:33:39 +01:00
rafal@quant.(none)
fe2d5c59c2 Merge quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl
into  quant.(none):/ext/mysql/bk/mysql-5.0-bug24507
2006-12-08 11:47:48 +01:00
kostja@bodhi.local
90072e69b3 A fix and test cases for
Bug#4968 "Stored procedure crash if cursor opened on altered table"
Bug#19733 "Repeated alter, or repeated create/drop, fails"
Bug#19182 "CREATE TABLE bar (m INT) SELECT n FROM foo; doesn't work from 
stored procedure."
Bug#6895 "Prepared Statements: ALTER TABLE DROP COLUMN does nothing"
Bug#22060 "ALTER TABLE x AUTO_INCREMENT=y in SP crashes server"

Test cases for bugs 4968, 19733, 6895 will be added in 5.0.

Re-execution of CREATE DATABASE, CREATE TABLE and ALTER TABLE 
statements in stored routines or as prepared statements caused
incorrect results (and crashes in versions prior to 5.0.25).
In 5.1 the problem occured only for CREATE DATABASE, CREATE TABLE
SELECT and CREATE TABLE with INDEX/DATA DIRECTOY options).

The problem of bugs 4968, 19733, 19282 and 6895 was that functions
mysql_prepare_table, mysql_create_table and mysql_alter_table were not
re-execution friendly: during their operation they used to modify contents
of LEX (members create_info, alter_info, key_list, create_list),
thus making the LEX unusable for the next execution.
In particular, these functions removed processed columns and keys from
create_list, key_list and drop_list. Search the code in sql_table.cc 
for drop_it.remove() and similar patterns to find evidence.

The fix is to supply to these functions a usable copy of each of the
above structures at every re-execution of an SQL statement. 

To simplify memory management, LEX::key_list and LEX::create_list
were added to LEX::alter_info, a fresh copy of which is created for
every execution.

The problem of crashing bug 22060 stemmed from the fact that the above 
metnioned functions were not only modifying HA_CREATE_INFO structure in 
LEX, but also were changing it to point to areas in volatile memory of 
the execution memory root.
 
The patch solves this problem by creating and using an on-stack
copy of HA_CREATE_INFO (note that code in 5.1 already creates and
uses a copy of this structure in mysql_create_table()/alter_table(),
but this approach didn't work well for CREATE TABLE SELECT statement).
2006-12-08 02:20:09 +03:00
Kristofer.Pettersson@naruto.
ecbb4eb987 Bug#17498 failed to put data file in custom directory use "data directory" option
- Using DATA/INDEX DIRECTORY option on Windows put data/index file into
  default directory because the OS doesn't support readlink().
- The procedure for changing data/index file directory is 
  different under Windows.
- With this fix we report a warning if DATA/INDEX option is used,
  but OS doesn't support readlink().
2006-12-07 17:01:00 +01:00
svoj@mysql.com/april.(none)
e17d7bce00 BUG#23404 - ROW_FORMAT=FIXED option is lost is an index is added to the
table

ROW_FORMAT option is lost during CREATE/DROP INDEX.

This fix forces CREATE/DROP INDEX to retain ROW_FORMAT by instructing
mysql_alter_table() that ROW_FORMAT is not used during creating/dropping
indexes.
2006-12-07 18:32:40 +04:00
bar@mysql.com/bar.intranet.mysql.r18.ru
58149eaf61 Merge mysql.com:/usr/home/bar/mysql-4.1.b22645
into  mysql.com:/usr/home/bar/mysql-5.0.b22645
2006-12-05 14:08:19 +04:00
bar@mysql.com/bar.intranet.mysql.r18.ru
224660d14a Bug#22645 LC_TIME_NAMES: Statement not replicated
Problem: replication of LC_TIME_NAMES didn't work.
Thus, INSERTS or UPDATES using date_format() always
worked with en_US on the slave side.
Fix: adding ONE_SHOT implementation for LC_TIME_NAMES.
2006-12-05 13:45:21 +04:00
Kristofer.Pettersson@naruto.
f91e48c762 Merge naruto.:C:/cpp/bug17733/my50-bug17733
into  naruto.:C:/cpp/mysql-5.0-maint
2006-12-04 14:43:34 +01:00
thek@kpdesk.mysql.com
94b48caf2e Merge kpdesk.mysql.com:/home/thek/dev/bug22043/my50-bug22043
into  kpdesk.mysql.com:/home/thek/dev/mysql-5.0-maint
2006-12-01 18:00:45 +01:00
thek@kpdesk.mysql.com
b201d4ef93 Bug#22043 MySQL don't add "USE <DATABASE>" before "DROP PROCEDURE IF EXISTS"
- Refactoring of duplicate code
- Modified bad test cases
- Changed expected error when operating on information_schema.
2006-12-01 12:50:57 +01:00
Kristofer.Pettersson@naruto.
6c8d7ea894 Bug#17733 Flushing logs causes daily server crash
Server crashes if a flush commmand is issued and binlog is closed.
- added check to prevent binlog access when binlog file isn't opened.
2006-12-01 09:49:19 +01:00
thek@kpdesk.mysql.com
4debf85521 Merge kpdesk.mysql.com:/home/thek/dev/bug22043/my50-bug22043
into  kpdesk.mysql.com:/home/thek/dev/mysql-5.0-maint
2006-11-29 12:57:43 +01:00
msvensson@neptunus.(none)
04d5a42bbf Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
2006-11-28 20:59:57 +01:00
thek@kpdesk.mysql.com
294cb8432f Bug#22043 MySQL don't add "USE <DATABASE>" before "DROP PROCEDURE EXISTS"
- CREATE PROCEDURE stores database name based on query context instead
  of 'current database' as set by 'USE' according to manual.
  The bug reporter interpret the filtering statements as bug for
   DROP PROCEDURE based on this behavior.
- Removed the code which changes db context.
- Added code to check that a valid db was supplied.
2006-11-28 16:03:53 +01:00
gkodinov@dl145s.mysql.com
e74c9add47 Merge bk-internal:/home/bk/mysql-5.0
into  dl145s.mysql.com:/data0/bk/team_tree_merge/MERGE/mysql-5.0-opt
2006-11-27 16:25:52 +01:00
kaa@polly.local
699898c82c Merge polly.local:/tmp/maint/bug22077/my50-bug22077
into  polly.local:/home/kaa/src/maint/mysql-5.0-maint
2006-11-24 17:01:43 +03:00
monty@mysql.com/nosik.monty.fi
306b871d52 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/my/mysql-5.0
2006-11-20 22:46:52 +02:00
monty@mysql.com/nosik.monty.fi
e825879800 Remove compiler warnings
(Mostly in DBUG_PRINT() and unused arguments)
Fixed bug in query cache when used with traceing (--with-debug)
Fixed memory leak in mysqldump
Removed warnings from mysqltest scripts (replaced -- with #)
2006-11-20 22:42:06 +02:00
kaa@polly.local
346033a5da Fix for bug #22077 "DROP TEMPORARY TABLE fails with wrong error if read_only is set"
Do not issue a 'read-only' error in case of DROP TEMPORARY TABLE on a non-existing temporary table.
Instead produce the correct "Unknown table" error or warning (in cases when the IF EXISTS clause was specified).

To a documentor: the part of the manual describing the 'read_only' system variable should be clarified to state the following:
"When the read_only variable is set to ON, all operations which create/update/drop tables are rejected with the exceptions for:
1. Any operation performed by the replication thread on a slave server
2. Any operation performed by a user that have the SUPER privilege
3. Any operation that creates/updates/drops only temporary tables"
2006-11-20 17:35:23 +03:00
holyfoot/hf@mysql.com/deer.(none)
e95e23b0f3 Merge bk@192.168.21.1:mysql-5.0-opt
into  mysql.com:/home/hf/work/mysql-5.0-0mrg
2006-11-17 10:30:16 +04:00
andrey@example.com
d1e5cfd66f Merge ahristov@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  example.com:/work/bug23760/my50
2006-11-14 20:48:48 +01:00
andrey@example.com
9299fd6715 Fix for bug#23760 ROW_COUNT() and store procedure not owrking together
The problem was that THD::row_count_func was zeroed too. It was zeroed
as a fix for bug 4905 "Stored procedure doesn't clear for "Rows affected"
However, the proper solution is not to zero, because THD::row_count_func has
been set to -1 already in mysql_execute_command(), a later fix, which obsoletes
the incorrect fix of #4095
2006-11-14 18:40:11 +01:00
evgen@moonbone.local
5198354584 Bug#20045: Server crash on INSERT ... SELECT ... FROM non-mergeable view
The regression is caused by the fix for bug 14767. When INSERT ... SELECT
used a view in the SELECT list that was not inlined, and there was an 
active transaction, the server could crash in Query_cache::invalidate.

On INSERT ... SELECT only the table being inserted into is invalidated.
Thus views that can't be inlined are skipped from invalidation.

The bug manifests itself in two ways so there is 2 test cases.
One checks that the only the table being inserted into is invalidated.
And the second one checks that there is no crash on INSERT ... SELECT.
2006-11-14 19:50:44 +03:00
lars/lthalmann@mysql.com/dl145h.mysql.com
aea1e14ef8 Merge mysql.com:/users/lthalmann/bkroot/mysql-5.0-rpl
into  mysql.com:/users/lthalmann/bk/MERGE/mysql-5.0-merge
2006-11-07 12:02:53 +01:00
cmiller@zippy.cornsilk.net
af5acac047 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint
2006-11-02 17:39:52 -05:00
bar@mysql.com/bar.intranet.mysql.r18.ru
c378d3a1ec Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl
into  mysql.com:/usr/home/bar/mysql-5.0.b22877
2006-11-01 12:34:42 +04:00
bar@mysql.com/bar.intranet.mysql.r18.ru
ac9e3db9a7 Bug#22877 replication character sets get out of
sync using replicate-wild-ignore-table
Problem: changes in character set variables
before an action on an replication-ignored table
makes slave to forget new variable values.
Fix: initialize one_shot variables only when
4.1 -> 5.x replication is running.
2006-11-01 12:30:01 +04:00
bar@mysql.com/bar.intranet.mysql.r18.ru
d18fcb3a0f Bug#20404: SHOW CREATE TABLE fails with Turkish I
Problem: SHOW CREATE TABLE printed garbage in table
  name for tables having TURKISH I
  (i.e. LATIN CAPITABLE LETTER I WITH DOT ABOVE)
  when lower-case-table-name=1.
  
  Reason: In some cases during lower/upper conversion in utf8,
  the result string can be shorter the original string
  (including the above letter). Old implementation of caseup_str()
  and casedn_str() didn't handle the result length properly,
  assuming that length cannot change.
  
  This fix changes the result type of cs->cset->casedn_str()
  and cs->cset->caseup_str() from VOID to UINT, to return
  the result length, as well as put '\0' terminator on a 
  proper place.
  
  Also, my_caseup_str_utf8() and my_casedn_str_utf8() were 
  rewritten not to use strlen() for performance purposes.
  It was done with help of adding of new functions - my_utf8_uni_no_range()
  and my_uni_utf8_no_range() - for null terminated strings.
2006-10-30 14:40:15 +04:00
kostja@bodhi.local
dfc4dd423c A cleanup. 2006-10-30 12:03:42 +03:00
kroki/tomash@moonlight.intranet
0e0f7a0423 BUG#22584: last_insert_id not updated after inserting a record through
a updatable view.

When there's a VIEW on a base table that have AUTO_INCREMENT column, and
this VIEW doesn't provide an access such column, after INSERT to such
VIEW LAST_INSERT_ID() did not return the value just generated.

This behaviour is intended and correct, because if the VIEW doesn't list
some columns then these columns are effectively hidden from the user,
and so any side effects of inserting default values to them.

However, there was a bug that such statement inserting into a view would
reset LAST_INSERT_ID() instead of leaving it unchanged.

This patch restores the original value of LAST_INSERT_ID() instead of
resetting it to zero.
2006-10-27 13:32:41 +04:00
ramil/ram@mysql.com/myoffice.izhnet.ru
7b90a45425 Fix for bug #22158: Errors in init_connect terminate connections silently
When executing the init_connect statement, thd->net.vio is set to 0, to         
forbid sending any results to the client. As a side effect we don't log         
possible errors, either.                                                        
                                                                                
Now we write warnings to the error log if an init_connect query                
fails.
2006-10-26 14:51:34 +05:00
kroki/tomash@moonlight.intranet
dea0028cd9 Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug21856
2006-10-19 14:53:50 +04:00
kroki/tomash@moonlight.intranet
00b2fc6aff BUG#21856: Prepared Statements: crash if bad create
When statement to be prepared contained CREATE PROCEDURE, CREATE FUNCTION
or CREATE TRIGGER statements with a syntax error in it, the preparation
would fail with syntax error message, but the memory could be corrupted.

The problem occurred because we switch memroot when parse stored
routine or trigger definitions, and on parse error we restored the
original memroot only after performing some memory operations.  In more
detail:
 - prepared statement would activate its own memory root to parse
   the definition of the stored procedure.
 - SP would reset this memory root with its own memory root to
   parse SP statements
 - a syntax error would happen
 - prepared statement would restore the original memory root
 - stored procedure would restore what it thinks was the original
   memory root, but actually was the statement memory root.
That led to double free - in destruction of the statement and in
a next call to mysql_parse().

The solution is to restore memroot right after the failed parsing.
2006-10-19 14:43:52 +04:00
cmiller@zippy.cornsilk.net
7714fea9a2 Merge zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint
into  zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-5.0-maint_20061016
2006-10-17 12:31:52 -04:00
cmiller@zippy.cornsilk.net
3a709f50b2 Fix previous bad patch for Bug#14262.
Remove table engine qualification where it's unnecessary.
2006-10-17 11:06:11 -04:00
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
cmiller@zippy.cornsilk.net
87ba07e832 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  zippy.cornsilk.net:/home/cmiller/work/mysql/bug14262/my50-bug14262
2006-10-13 08:57:15 -04: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
tsmith/tim@siva.hindu.god
360540e891 Revert patch for bug #19764, which did not work with prepared statements. 2006-10-11 23:35:52 -06:00
kroki/tomash@moonlight.intranet
ee0cebf9a7 BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID.
Note: bug#21726 does not directly apply to 4.1, as it doesn't have stored
procedures.  However, 4.1 had some bugs that were fixed in 5.0 by the
patch for bug#21726, and this patch is a backport of those fixes.
Namely, in 4.1 it fixes:

  - LAST_INSERT_ID(expr) didn't return value of expr (4.1 specific).

  - LAST_INSERT_ID() could return the value generated by current
    statement if the call happens after the generation, like in

      CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
      INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());

  - Redundant binary log LAST_INSERT_ID_EVENTs could be generated.
2006-10-06 13:34:07 +04:00
tsmith/tim@siva.hindu.god
f5c4d75e8f Bug #19764: SHOW commands end up in the slow log as table scans
Set a flag when a SHOW command is parsed, and check it in log_slow_statement().  SHOW commands are not counted as slow queries, even if they use table scans.
2006-10-03 21:26:55 -06:00
cmiller@zippy.cornsilk.net
5512100c6a Bug #14262: SP: DROP PROCEDURE|VIEW (maybe more) write to binlog too late \
(race cond)

It was possible for one thread to interrupt a Data Definition Language 
statement and thereby get messages to the binlog out of order.  Consider:

Connection 1: Drop Foo x
Connection 2: Create or replace Foo x
Connection 2: Log "Create or replace Foo x"
Connection 1: Log "Drop Foo x"

Local end would have Foo x, but the replicated slaves would not.

The fix for this is to wrap all DDL and logging of a kind in the same mutex.  
Since we already use mutexes for the various parts of altering the server, 
this only entails moving the logging events down close to the action, inside 
the mutex protection.
2006-10-03 13:38:25 -04:00
kroki/tomash@moonlight.intranet
8798b462b5 Fix for the patch for bug#21726: Incorrect result with multiple
invocations of LAST_INSERT_ID.

Reding of LAST_INSERT_ID inside stored function wasn't noted by caller,
and no LAST_INSERT_ID_EVENT was issued for binary log.

The solution is to add THD::last_insert_id_used_bin_log, which is much
like THD::last_insert_id_used, but is reset only for upper-level
statements.  This new variable is used to issue LAST_INSERT_ID_EVENT.
2006-10-03 13:38:16 +04:00
kroki/tomash@moonlight.intranet
5ea8adfae7 BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID
Non-upper-level INSERTs (the ones in the body of stored procedure,
stored function, or trigger) into a table that have AUTO_INCREMENT
column didn't affected the result of LAST_INSERT_ID() on this level.

The problem was introduced with the fix of bug 6880, which in turn was
introduced with the fix of bug 3117, where current insert_id value was
remembered on the first call to LAST_INSERT_ID() (bug 3117) and was
returned from that function until it was reset before the next
_upper-level_ statement (bug 6880).

The fix for bug#21726 brings back the behaviour of version 4.0, and
implements the following: remember insert_id value at the beginning
of the statement or expression (which at that point equals to
the first insert_id value generated by the previous statement), and
return that remembered value from LAST_INSERT_ID() or @@LAST_INSERT_ID.

Thus, the value returned by LAST_INSERT_ID() is not affected by values
generated by current statement, nor by LAST_INSERT_ID(expr) calls in
this statement.

Version 5.1 does not have this bug (it was fixed by WL 3146).
2006-10-02 14:28:23 +04:00
gluh@mysql.com/gluh.(none)
4aaf7e34ff additional 'after merge' fix 2006-09-27 20:11:11 +05:00
gluh@mysql.com/gluh.(none)
c3d63bef2b after merge fix 2006-09-27 19:21:29 +05:00
gluh@mysql.com/gluh.(none)
437c94317b Merge mysql.com:/home/gluh/MySQL/Merge/4.1
into  mysql.com:/home/gluh/MySQL/Merge/5.0
2006-09-27 18:06:46 +05:00
gluh@mysql.com/gluh.(none)
a039376c43 Patch for bug#21432 is reverted 2006-09-27 17:49:16 +05:00
lars/lthalmann@mysql.com/dl145j.mysql.com
d20e326504 Merge mysql.com:/users/lthalmann/bkroot/mysql-5.0-rpl
into  mysql.com:/users/lthalmann/bk/MERGE/mysql-5.0-merge
2006-09-21 00:05:56 +02:00
aivanov/alexi@mysql.com/mysqld.localdomain
e2d15b16d2 BUG#19419: VIEW: View that the column name is different
by master and slave is made.
2006-09-18 03:21:00 +04:00
gkodinov@dl145s.mysql.com
b1e087a717 Merge dl145s.mysql.com:/data/bk/team_tree_merge/CLEAN/mysql-5.0
into  dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-5.0-opt
2006-09-15 11:52:49 +02:00
gkodinov@dl145s.mysql.com
148cb4e98a Merge dl145s.mysql.com:/data/bk/team_tree_merge/CLEAN/mysql-5.0
into  dl145s.mysql.com:/data/bk/team_tree_merge/MERGE/mysql-5.0-opt
2006-09-15 11:47:23 +02:00
timour/timka@lamia.home
c8ebf3761e Merge lamia.home:/home/timka/mysql/src/5.0-bug-21774-sm
into  lamia.home:/home/timka/mysql/src/5.0-dbg
2006-09-13 15:24:06 +03:00
timour/timka@lamia.home
38a450b44a Fix for BUG#21774: Column count doesn't match value count at row x
The cause of the bug was an incomplete fix for bug 18080.
The problem was that setup_tables() unconditionally reset the
name resolution context to its 'tables' argument, which pointed
to the first table of an SQL statement.

The bug fix limits resetting of the name resolution context in
setup_tables() only in the cases when the context was not set
by earlier parser/optimizer phases.
2006-09-12 17:50:24 +03:00
gluh@mysql.com/gluh.(none)
a3300c3983 after merge fix 2006-09-08 16:16:39 +05:00
gluh@mysql.com/gluh.(none)
e2684ad5d7 after merge fix 2006-09-07 18:09:49 +05:00
gluh@mysql.com/gluh.(none)
76b97433c2 Merge mysql.com:/home/gluh/MySQL/Merge/4.1-merge
into  mysql.com:/home/gluh/MySQL/Merge/5.0
2006-09-07 15:17:46 +05:00
gkodinov/kgeorge@rakia.(none)
68b9ae4d14 Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-4.1-opt
into  rakia.(none):/home/kgeorge/mysql/autopush/B21392-4.1-opt
2006-09-05 13:12:30 +03:00
gkodinov/kgeorge@macbook.gmz
4c1db01833 Merge macbook.gmz:/Users/kgeorge/mysql/work/B21392-4.1-opt
into  macbook.gmz:/Users/kgeorge/mysql/work/B21392-5.0-opt
2006-09-04 18:45:48 +03:00
gkodinov/kgeorge@macbook.gmz
3758b975f8 Bug #21392: multi-table delete with alias table name fails with
1003: Incorrect table name
in multi-table DELETE the set of tables to delete from actually 
references then tables in the other list, e.g:
DELETE alias_of_t1 FROM t1 alias_of_t1 WHERE ....
is a valid statement.
So we must turn off table name syntactical validity check for alias_of_t1 
because it's not a table name (even if it looks like one).
In order to do that we add a special flag (TL_OPTION_ALIAS) to 
disable the name checking for the aliases in multi-table DELETE.
2006-09-04 18:40:30 +03:00
gluh@mysql.com/gluh.(none)
af9895d4c2 Bug#20393 User name truncation in mysql client
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
2006-08-30 15:56:17 +05:00
kostja@bodhi.local
f8d34e1030 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-14897
2006-08-30 00:45:33 +04:00
andrey@example.com
f115ecf89f Fix for bug#21795: SP: sp_head::is_not_allowed_in_function() contains
erroneous check

Problem: Actually there were two problems in the server code. The check
for SQLCOM_FLUSH in SF/Triggers were not according to the existing
architecture which uses sp_get_flags_for_command() from sp_head.cc .
This function was also missing a check for SQLCOM_FLUSH which has a
problem combined with prelocking. This changeset fixes both of these
deficiencies as well as the erroneous check in
sp_head::is_not_allowed_in_function() which was a copy&paste error.
2006-08-25 15:51:29 +02:00
evgen@sunlight.local
1e9b5cead2 view.result, view.test:
Corrected test case for the bug#21261
sql_parse.cc:
  Corrected fix for bug#21261
2006-08-24 03:05:13 +04:00
anozdrin/alik@alik.
9af756efd3 Fix for BUG#16899: Possible buffer overflow in handling of DEFINER-clause
User name (host name) has limit on length. The server code relies on these
limits when storing the names. The problem was that sometimes these limits
were not checked properly, so that could lead to buffer overflow.

The fix is to check length of user/host name in parser and if string is too
long, throw an error.
2006-08-23 21:31:00 +04:00
malff/marcsql@weblab.(none)
b8a1ba1215 WL#3432 (Compile the Parser with a --debug --verbose option)
Corrected build issues : the build can not be conditional.
to keep a unique source .tar.gz distribution.
2006-08-18 19:16:07 -07:00
malff/marcsql@weblab.(none)
4a22b07ed5 WL#3432 (Compile the Parser with a --debug --verbose option)
Changed the automake build process :
- ./configure.in
- ./sql/Makefile.am
to compile an instrumented parser for debug=yes or debug=full builds

Changed the (primary) runtime invocation of the parser :
- sql/sql_parse.cc
to generate bison traces in stderr when the DBUG "parser_debug" flag is set.
2006-08-17 16:08:51 -07:00
kostja@bodhi.local
1b145118b9 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  bodhi.local:/opt/local/work/mysql-5.0-runtime-merge
2006-08-02 21:54:10 +04:00
evgen@moonbone.local
67c85a170a Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0
into  moonbone.local:/work/tmp_merge-5.0-opt-mysql
2006-08-02 16:44:56 +04:00
evgen@moonbone.local
40a1fbdffb Merge moonbone.local:/work/tmp_merge-4.1
into  moonbone.local:/work/tmp_merge-4.1-opt-mysql
2006-08-02 16:10:52 +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
kroki/tomash@moonlight.intranet
053c9af65b Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-release
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-main
2006-07-27 13:47:36 +04:00
sergefp@mysql.com
9024ed81c7 Merge mysql.com:/home/psergey/mysql-4.1-opt
into  mysql.com:/home/psergey/mysql-5.0-opt
2006-07-21 23:45:34 +04:00
sergefp@mysql.com
bffd438de3 BUG#20975: Incorrect query result for NOT (subquery):
Add implementations of Item_func_{nop,not}_all::neg_transformer
2006-07-21 03:04:04 +04:00
kostja@bodhi.local
f22a4ce1a1 A fix and a test case for Bug#21002 "Derived table not selecting from a
"real" table fails in JOINs".

This is a regression caused by the fix for Bug 18444. 
This fix removed the assignment of empty_c_string to table->db performed 
in add_table_to_list, as neither me nor anyone else knew what it was 
there for. Now we know it and it's covered with tests: the only case 
when a table database name can be empty is when the table is a derived 
table. The fix puts the assignment back but makes it a bit more explicit.

Additionally, finally drop sp.result.orig which was checked in by mistake.
2006-07-19 22:33:19 +04:00
holyfoot/hf@mysql.com/deer.(none)
00f56da9af merging 2006-07-18 16:43:39 +05:00
holyfoot/hf@mysql.com/deer.(none)
bed7b69243 Merge mysql.com:/home/hf/work/mysql-4.1.mrg
into  mysql.com:/home/hf/work/mysql-5.0.mrg
2006-07-18 14:52:29 +05:00
holyfoot/hf@mysql.com/deer.(none)
eddaafb12b Merge bk@192.168.21.1:mysql-4.1
into  mysql.com:/home/hf/work/mysql-4.1.16017
2006-07-13 22:32:18 +05:00
kroki/tomash@moonlight.intranet
a3ea06db41 Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0
into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug18630
2006-07-13 17:21:44 +04:00
kroki/tomash@moonlight.intranet
4272d1efc3 Bug#18630: Arguments of suid routine calculated in wrong security
context.

Routine arguments were evaluated in the security context of the routine
itself, not in the caller's context.

The bug is fixed the following way:

  - Item_func_sp::find_and_check_access() has been split into two
    functions: Item_func_sp::find_and_check_access() itself only
    finds the function and check that the caller have EXECUTE privilege
    on it.  New function set_routine_security_ctx() changes security
    context for SUID routines and checks that definer have EXECUTE
    privilege too.

  - new function sp_head::execute_trigger() is called from
    Table_triggers_list::process_triggers() instead of
    sp_head::execute_function(), and is effectively just as the
    sp_head::execute_function() is, with all non-trigger related code
    removed, and added trigger-specific security context switch.

  - call to Item_func_sp::find_and_check_access() stays outside
    of sp_head::execute_function(), and there is a code in
    sql_parse.cc before the call to sp_head::execute_procedure() that
    checks that the caller have EXECUTE privilege, but both
    sp_head::execute_function() and sp_head::execute_procedure() call
    set_routine_security_ctx() after evaluating their parameters,
    and restore the context after the body is executed.
2006-07-13 17:12:31 +04:00
kostja@bodhi.local
7bf73ac3e5 Merge bodhi.local:/opt/local/work/mysql-5.0-root
into  bodhi.local:/opt/local/work/mysql-5.0-runtime
2006-07-07 22:09:43 +04:00
dlenev@mysql.com
b429748fab Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime
into  mysql.com:/home/dlenev/mysql-5.0-bg18437-3
2006-07-06 14:31:32 +04:00
konstantin@mysql.com
b99e11c8bd A fix and a test case for Bug#17843 "Certain stored procedures fail to
run at startup"

The server returned an error when trying to execute init-file with a 
stored procedure that could return multiple result sets to the client. 
A stored procedure can return multiple result sets if it contains 
PREPARE, SELECT, SHOW and similar statements.
   
The fix is to set client_capabilites|=CLIENT_MULTI_RESULTS in
sql_parse.cc:handle_bootstrap(). There is no "client" really, so 
nothing is ever sent. This makes init-file feature behave consistently: 
the prepared statements that can be called directly in the init-file 
can be used in a stored procedure too.

Re-committed the patch originally submitted by Per-Erik after review.
2006-07-04 23:46:15 +04:00
konstantin@mysql.com
1781eee60f auxilliary -> auxiliary 2006-07-04 01:13:04 +04:00
gluh@mysql.com
d2b378d57f Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/gluh/MySQL/Merge/5.0-kt
2006-07-03 13:19:18 +05:00
dlenev@mysql.com
d4450e6696 Fix for bug#18437 "Wrong values inserted with a before update trigger on
NDB table".

SQL-layer was not marking fields which were used in triggers as such. As
result these fields were not always properly retrieved/stored by handler
layer. So one might got wrong values or lost changes in triggers for NDB,
Federated and possibly InnoDB tables.
This fix solves the problem by marking fields used in triggers
appropriately.

Also this patch contains the following cleanup of ha_ndbcluster code:

We no longer rely on reading LEX::sql_command value in handler in order
to determine if we can enable optimization which allows us to handle REPLACE
statement in more efficient way by doing replaces directly in write_row()
method without reporting error to SQL-layer.
Instead we rely on SQL-layer informing us whether this optimization
applicable by calling handler::extra() method with
HA_EXTRA_WRITE_CAN_REPLACE flag.
As result we no longer apply this optimzation in cases when it should not
be used (e.g. if we have on delete triggers on table) and use in some
additional cases when it is applicable (e.g. for LOAD DATA REPLACE).

Finally this patch includes fix for bug#20728 "REPLACE does not work
correctly for NDB table with PK and unique index".
  
This was yet another problem which was caused by improper field mark-up.
During row replacement fields which weren't explicity used in REPLACE
statement were not marked as fields to be saved (updated) so they have
retained values from old row version. The fix is to mark all table
fields as set for REPLACE statement. Note that in 5.1 we already solve
this problem by notifying handler that it should save values from all
fields only in case when real replacement happens.
2006-07-02 01:51:10 +04:00
konstantin@mysql.com
1c4dffc8ca Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/opt/local/work/mysql-5.0-runtime
2006-07-01 22:13:42 +04:00
konstantin@mysql.com
41fea3d763 Remove a couple of unused/barely used names. 2006-07-01 00:14:28 +04:00
evgen@moonbone.local
3cc6d95d18 Merge 2006-06-30 02:03:09 +04:00
gluh@eagle.intranet.mysql.r18.ru
9901efea1f Bug#15298 SHOW GRANTS FOR CURRENT_USER: Incorrect output in DEFINER context
user name is calculated on function execution stage instead of parse stage
2006-06-29 15:50:44 +05:00
gluh@mysql.com
e5dbc49bb0 Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/gluh/MySQL/Merge/5.0-kt
2006-06-28 14:23:33 +05:00
svoj@may.pils.ru
ffd8ed1716 BUG#1662 - ALTER TABLE LIKE ignores DATA/INDEX DIRECTPORY
Produce a warning if DATA/INDEX DIRECTORY is specified in
ALTER TABLE statement.

Ignoring of these options is documented in the symbolic links
section of the manual.
2006-06-27 22:22:43 +05: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
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
holyfoot@mysql.com
0a9a755419 merging 2006-06-26 22:32:02 +05: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
holyfoot@mysql.com
bb347299b1 Merge mysql.com:/home/hf/work/mysql-4.1.20318
into mysql.com:/home/hf/work/mysql-4.1.clean
2006-06-26 22:17:42 +05: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
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
gkodinov@mysql.com
bca6492927 Merge mysql.com:/home/kgeorge/mysql/5.0/teamclean
into  mysql.com:/home/kgeorge/mysql/5.0/B18080
2006-06-21 13:06:32 +03:00
gkodinov@mysql.com
bee985af35 Merge mysql.com:/home/kgeorge/mysql/5.0/teamclean
into  mysql.com:/home/kgeorge/mysql/5.0/B20482
2006-06-21 12:59:34 +03:00
gkodinov@mysql.com
75ca055493 Bug #20482: failure on Create join view with sources views/tables in different
schemas
The function check_one_table_access() called to check access to tables in 
SELECT/INSERT/UPDATE was doing additional checks/modifications that don't hold
in the context of setup_tables_and_check_access().
That's why the check_one_table() was split into two : the functionality needed by
setup_tables_and_check_access() into check_single_table_access() and the rest of 
the functionality stays in check_one_table_access() that is made to call the new
check_single_table_access() function.
2006-06-21 12:12:46 +03:00
dlenev@mysql.com
b75254e101 Fix for bug#19634 "Re-execution of multi-delete which involve trigger/stored
function crashes server".

Attempts to execute prepared multi-delete statement which involved trigger or
stored function caused server crashes (the same happened for such statements
included in stored procedures in cases when one tried to execute them more
than once).

The problem was caused by yet another incorrect usage of check_table_access()
routine (the latter assumes that table list which it gets as argument
corresponds to value LEX::query_tables_own_last). We solve this problem by
juggling with LEX::query_tables_own_last value when we call
check_table_access() for LEX::auxilliary_table_list (better solution is too
intrusive and should be done in 5.1).
2006-06-21 01:50:20 +04:00
holyfoot@deer.(none)
d8d42948b2 bug #20318 (ctype_ucs2_def test fails with embedded)
there was two problems about charsets in embedded server
1. mysys/charset.c - defined there default_charset_info variable is
modified by both server and client code (particularly when
--default-charset option is handled)
In embedded server we get two codelines modifying one variable.
I created separate default_client_charset_info for client code

2. mysql->charset and mysql->options.charset initialization isn't
properly done for embedded server - necessary calls added
2006-06-19 22:11:01 +05:00
gkodinov@mysql.com
5508df251f Bug #18080: INSERT ... SELECT ... JOIN results in ambiguous field list error
There was an incomplete reset of the name resolution context, that caused 
INSERT ... SELECT ... JOIN statements to resolve not by joint row type calculated
for the join.
Removed the redundant re-initialization of the context, because 
mysql_insert_select_prepare() now correctly saves/restores the context.
2006-06-19 17:34:12 +03:00
gkodinov@mysql.com
eb693dcc7b Bug #20363: Create view on just created view is now denied
There was a wrong determination of the DB name (witch is 
not always the one in TABLE_LIST because derived tables
may be calculated using temp tables that have their db name
set to "").
The fix determines the database name according to the type 
of table reference, and calls the function check_access() 
with the correct db name so the correct set of grants is found.
2006-06-12 18:15:08 +03:00
holyfoot@deer.(none)
bc35c50063 bug #16017 (memory leaks in embedded server)
There actually was 3 different problems -
hash_user_connections wasn't cleaned
one strdupped database name wasn't freed
and stmt->mem_root wasn't cleaned as it was
replased with mysql->field_alloc for result
For the last one - i made the library using stmt's
fields to store result if it's the case.
2006-06-01 17:06:42 +05:00
iggy@mysql.com
433c57d997 Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into  mysql.com:/mnt/storeage/mysql-5.0-maint_bug18669
2006-05-30 08:22:12 -04:00
evgen@moonbone.local
1f30bf5a33 Fixed bug#19225: unchecked error results in server crash
In multi-table delete a table for delete can't be used for selecting in
subselects. Appropriate error was raised but wasn't checked which leads to a
crash at the execution phase.

The mysql_execute_command() now checks for errors before executing select
for multi-delete.
2006-05-29 00:32:59 +04:00
gkodinov@mysql.com
a21a2b5bcd BUG#18681: View privileges are broken
The check for view security was lacking several points :
1. Check with the right set of permissions : for each table ref that
participates in a view there were the right credentials to use in it's
security_ctx member, but these weren't used for checking the credentials.
This makes hard enforcing the SQL SECURITY DEFINER|INVOKER property
consistently.
2. Because of the above the security checking for views was just ruled out
in explicit ways in several places.
3. The security was checked only for the columns of the tables that are
brought into the query from a view. So if there is no column reference
outside of the view definition it was not detecting the lack of access to
the tables in the view in SQL SECURITY INVOKER mode.

The fix below tries to fix the above 3 points.
2006-05-26 11:47:53 +03:00
iggy@mysql.com
3cc64cef9a BUG#18669: Session COM_STATISTICS breaks mysqladmin status.
Changed COM_STATISTICS to display the global status, instead of thead status, for slow queries and table opens.
2006-05-24 09:34:36 -04:00
konstantin@mysql.com
85c6883146 Merge mysql.com:/opt/local/work/mysql-5.0-root
into  mysql.com:/opt/local/work/mysql-5.0-runtime-merge
2006-05-15 00:51:12 +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
kroki@mysql.com
3ad0cac41b Reapply fix for bug#16372 (Server crashes when test 'conc_sys' is running)
after merge.

Concurrent read and update of privilege structures (like simultaneous
run of SHOW GRANTS and ADD USER) could result in server crash.

Ensure that proper locking of ACL structures is done.

No test case is provided because this bug can't be reproduced
deterministically.
2006-05-06 11:25:59 +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
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
msvensson@neptunus.(none)
98a7bbe109 Merge bk-internal:/home/bk/mysql-5.0
into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
2006-04-27 17:30:56 +02:00
serg@sergbook.mysql.com
ed3f3fa0c7 after merge 2006-04-25 22:39:59 -07:00
serg@sergbook.mysql.com
ab2820e80f Merge sergbook.mysql.com:/usr/home/serg/Abk/mysql-4.1
into sergbook.mysql.com:/usr/home/serg/Abk/mysql-5.0
2006-04-25 21:32:30 -07:00
serg@sergbook.mysql.com
54c97e6150 after merge fix 2006-04-25 17:12:06 -07:00
serg@sergbook.mysql.com
c97d923cfd merged 2006-04-25 14:06:04 -07:00