Commit graph

255 commits

Author SHA1 Message Date
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
d00441e328 Bug#19815 - CREATE/RENAME/DROP DATABASE can deadlock on a global read lock
The order of acquiring LOCK_mysql_create_db
and wait_if_global_read_lock() was wrong. It could happen
that a thread held LOCK_mysql_create_db while waiting for
the global read lock to be released. The thread with the
global read lock could try to administrate a database too.
It would first try to lock LOCK_mysql_create_db and hang...

The check if the current thread has the global read lock
is done in wait_if_global_read_lock(), which could not be
reached because of the hang in LOCK_mysql_create_db.

Now I exchanged the order of acquiring LOCK_mysql_create_db
and wait_if_global_read_lock(). This makes 
wait_if_global_read_lock() fail with an error message for
the thread with the global read lock. No deadlock happens.
2006-05-29 15:26:23 +02:00
aivanov@mysql.com
d20ccef6e5 Merge aivanov@bk-internal.mysql.com:/home/bk/mysql-5.0
into  mysql.com:/home/alexi/bugs/mysql-5.0-merged
2006-03-01 17:43:55 +03:00
aivanov@mysql.com
a3ea894758 Fixed BUG #16175: Memory leak in rpl_trigger.test
Allocating/freeing memory for the db member of THD
  is wholy managed by slave thread.
2006-03-01 16:21:01 +03:00
monty@mysql.com
a7df038d16 Add back free that I accidently removed in last patch 2006-02-25 13:58:00 +02:00
monty@mysql.com
eff69e73a3 Fixed typo 2006-02-25 13:49:43 +02:00
monty@mysql.com
dd1d40f8f8 Fixed new introduced bug in binlog.test with --ps-protocol 2006-02-25 13:24:18 +02:00
msvensson@devsrv-b.mysql.com
b844f62614 Merge msvensson@msvensson.mysql.internal:/home/msvensson/mysql/bug15302/my50-bug15302
into  devsrv-b.mysql.com:/space/magnus/my50-bug15302
2006-01-31 15:14:46 +01:00
msvensson@neptunus.(none)
ba81b1dd52 Merge neptunus.(none):/home/msvensson/mysql/bug15302/my41-bug15302
into  neptunus.(none):/home/msvensson/mysql/bug15302/my50-bug15302
2006-01-31 12:52:25 +01:00
msvensson@neptunus.(none)
b758b690a1 Bug #15302 LOAD DATA FROM MASTER -> Packets out of order (Found: 2, expected 1)
- Change "mysql_create_db" to not call "send_ok" if in silent mode i.e. called from "load_master_data"
 - Change mysqltest to detect when there aren't as many warnings available as was reported.
2006-01-31 12:47:22 +01:00
serg@serg.mylan
30c09d6dc0 merged 2006-01-03 18:12:03 +01:00
serg@serg.mylan
14f94dc0ca many warnings (practically safe but annoying) corrected 2006-01-03 17:54:54 +01:00
aivanov@mysql.com
a61b810508 Fixed BUG #14614: Replication of tables with trigger generates
error message if database is changed.
2005-12-11 17:06:36 +03:00
SergeyV@selena.
dbb29d11ee Fixes bug #14569. When no db is selected as current and we do create procedure db.sp()...
we changing current db temporarily and restore it when sp is created. however thd->db
in this case becomes empty string rather than NULL and so all checks of thd->db == NULL 
will be false. So if after this we'll issue create procedure sp2()... without specifying
db it will succeed and create sp with db=NULL, which causes mysqldto crash on 
show procedure status statement.

This patch fixes the problem.
2005-11-11 21:01:48 +03:00
msvensson@neptunus.(none)
92b1d080c9 Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into  neptunus.(none):/home/msvensson/mysql/bug13231/my50-bug13231
2005-09-30 16:51:35 +02:00
msvensson@neptunus.(none)
0581a7f23c Bug #13231 mysqltest: fails to dectect when mysql_next_result fails
- Added functionality to check errors returned from mysql_next_result
 - Exit from mysqltest when and unexpected error occurs.
 - The above fixes reveal problems with rpl000009, sp-error and query_cache-
 - Fix sp-error by adding an expected error
 - Fix rpl000009 by not sending "ok" from mysql_create_db when called with silent flag from load_master_data
 - Fix query_cache in separate patch
2005-09-21 15:28:28 +02:00
bell@sanja.is.com.ua
c1b185f5ff WL#2787 (Add view definer/owner to the view definition (.frm) to check privileges on used tables and stored routines when using a VIEW.)
Part 2 postreview fixes.
2005-09-20 21:20:38 +03:00
bell@sanja.is.com.ua
aec371f910 WL#2787 (part 2, ver 3 (merged)) changed securety context switching 2005-09-15 22:29:07 +03:00
jani@a193-229-222-105.elisa-laajakaista.fi
01ce8a8aa9 Merge a193-229-222-105.elisa-laajakaista.fi:/home/my/bk/mysql-4.1
into  a193-229-222-105.elisa-laajakaista.fi:/home/my/bk/mysql-5.0
2005-09-12 20:18:49 +03:00
gluh@eagle.intranet.mysql.r18.ru
d9bd3c11e4 Fix for bug #6008: MySQL does not create warnings when creating database and using IF NOT EXISTS
produce warning for 'create database if not exists' if database exists
  do not update database options in this case  
  produce warning for 'create table if not exists' if table exists
2005-09-12 17:09:19 +05:00
serg@sergbook.mysql.com
78a0585cea after merge fix 2005-08-26 15:28:08 +04:00
serg@sergbook.mysql.com
d591705e69 merged 2005-08-26 13:24:59 +04:00
monty@mishka.local
f16c7b3c5c After merge fixes 2005-08-25 09:38:06 +03:00
monty@mishka.local
f384e08277 Merge mishka.local:/home/my/mysql-4.1
into  mishka.local:/home/my/mysql-5.0
2005-08-25 06:55:48 +03:00
serg@sergbook.mysql.com
714b27c71c merged 2005-08-25 00:08:02 +04:00
monty@mishka.local
8e6aa0e7ea Review fixes 2005-08-24 19:37:27 +03:00
serg@sergbook.mysql.com
eadb86d56f after pull cleanup 2005-08-22 13:20:02 +04:00
monty@mishka.local
1c1f26d5e2 Fixes during review of new pushed code
Fixed new bug when running a SP without a default database
2005-08-20 11:00:00 +03:00
sasha@asksasha.com
c594ab7921 updated patch for BUG#4680 (incomplete DROP DATABASE breaking replication).
We binlog the DROP TABLE for each table that was actually dropped. Per Sergei's 
suggestion a fixed buffer for the DROP TABLE query is pre-allocated from THD pool, and 
logging now is done in batches - new batch is started if the buffer becomes full.
Reduced memory usage by reusing the table list instead of accumulating a list of 
dropped table names. Also fixed the problem if the table was not actually dropped, eg
due to permissions. Extended the test case to make sure batched query 
logging does work.
2005-08-18 21:40:14 -06:00
jimw@mysql.com
3a815f45bd Avoid spurious error when restoring INFORMATION_SCHEMA as the current
database after failing to execute a stored procedure in an inaccessible
database. (Bug #12318)
2005-08-11 17:04:16 -07:00
sasha@asksasha.com
c44fe70d02 patch for BUG#4680 - drop database breaking replication if there were extra files
in the database directory on the master
2005-08-03 18:08:20 -06:00
reggie@mdk10.(none)
21133df02a fixed conflicts 2005-05-20 16:34:59 -05:00
reggie@mdk10.(none)
48c584537d BUG# 9148: Denial of service
The problem was that on Windows the access method indicates that access to file 
such as "com1" and "lpt1" is allowed (since they are device names) and
this causes mysql to attempt to open them as databases or tables.

The fix was to write our own my_access method that uses other Win32 functions
to determine if the given argument is indeed a file and has to requested
mode.
2005-05-20 16:04:10 -05:00
msvensson@neptunus.(none)
f1496eb6f7 BUG#9455 mysqladmin status crash the server
- Send error to client when mysql_change_db fails.
2005-04-14 11:56:13 +02:00
jimw@mysql.com
ee2b4ec959 Eliminate warnings noticed by VC7. This includes fixing my_mmap() on
Windows to call CreateFileMapping() with correct arguments, and
propogating the introduction of query_id_t to everywhere query ids are
passed around. (Bug #8826)
2005-03-18 16:12:25 -08:00
monty@mysql.com
3839e443a4 merge with 4.1 2005-02-28 12:18:39 +02:00
monty@mysql.com
7e5f74f8f2 Merge with global tree 2005-02-25 17:12:06 +02:00
monty@mysql.com
0a6b7aedb2 Remove compiler warnings and remove not used variables
(Found during build process)
2005-02-25 16:53:22 +02:00
bell@51.0.168.192.in-addr.arpa
a9b40a8c0b Merge 51.0.168.192.in-addr.arpa:/Users/bell/mysql/bk/mysql-5.0
into 51.0.168.192.in-addr.arpa:/Users/bell/mysql/bk/work-repl-5.0
2005-02-22 14:52:26 +02:00
bell@51.0.168.192.in-addr.arpa
a867465e88 changed return value to boolean 2005-02-22 14:46:21 +02:00
monty@mysql.com
cab35adf7e Review of new pushed code (XA & other)
Portability fixes and cleanups
Fixed setting of 'res' in mysql_execute_command()
2005-02-21 14:47:57 +02:00
ramil@mysql.com
8cf2b82f94 After review fixes 2005-02-02 15:52:19 +04:00
ramil@mysql.com
7f68f132fd Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/usr/home/ram/work/4.1.b4802
2005-02-02 15:06:36 +04:00
serg@serg.mylan
c76405a7ee merged 2005-01-24 19:41:42 +01:00
serg@serg.mylan
67ba2e367a fixes/cleanups according to Coverity report 2005-01-24 15:48:25 +01:00
monty@mysql.com
d35140a851 First stage of table definition cache
Split TABLE to TABLE and TABLE_SHARE (TABLE_SHARE is still allocated as part of table, will be fixed soon)
Created Field::make_field() and made Field_num::make_field() to call this
Added 'TABLE_SHARE->db' that points to database name; Changed all usage of table_cache_key as database name to use this instead
Changed field->table_name to point to pointer to alias. This allows us to change alias for a table by just updating one pointer.
Renamed TABLE_SHARE->real_name to table_name
Renamed TABLE->table_name to alias
Renamed TABLE_LIST->real_name to table_name
2005-01-06 13:00:13 +02:00
monty@mishka.local
4f4bbfc279 Merge with 4.1 2004-12-22 13:54:39 +02:00
gluh@gluh.mysql.r18.ru
2e912bbbe8 Don't display 'usage' privilege in TABLE_PRIVILEGES if we have columns privileges
mysqldump skips information_schema db
'use' now can use information_schema db
changed value of column 'Null' to 'NO' if column is not nullable
2004-12-10 12:07:11 +03:00
dlenev@mysql.com
611abb882b Merge bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/home/dlenev/src/mysql-4.1-bg6765
2004-12-09 14:14:03 +03:00