Commit graph

41 commits

Author SHA1 Message Date
davi@buzz.(none)
141e12b155 Fix lock_multi test case failure related to
concurrent inserts.
2008-02-22 10:35:08 -02:00
davi@mysql.com/endora.local
bd4e875448 Bug#34311 main.lock_multi.test fails
Re-enable the test case for Bug 30331.
2008-02-06 09:40:59 -02:00
anozdrin/alik@quad.
a951fb2cb8 Disabling test case.
Bug 34311: main.lock_multi.test fails.
2008-02-05 18:08:02 +03:00
davi@mysql.com/endora.local
9c6c3aca5e Fix test case of Bug 30331 2008-01-29 10:37:44 -02:00
davi@mysql.com/endora.local
bfb3069f19 Remove spurious commented out test line. 2008-01-28 11:21:39 -02:00
davi@mysql.com/endora.local
ef3200f776 Bug#30331 Table_locks_waited shows inaccurate values
The problem is that the Table_locks_waited was incremented only
when the lock request succeed. If a thread waiting for the lock
gets killed or the lock request is aborted, the variable would
not be incremented, leading to inaccurate values in the variable.

The solution is to increment the Table_locks_waited whenever the
lock request is queued. This reflects better the intended behavior
of the variable -- show how many times a lock was waited.
2008-01-28 10:52:41 -02:00
davi@mysql.com/endora.local
137e90ed55 Bug#32395 Alter table under a impending global read lock causes a server crash
The problem is that some DDL statements (ALTER TABLE, CREATE
TRIGGER, FLUSH TABLES, ...) when under LOCK TABLES need to
momentarily drop the lock, reopen the table and grab the write
lock again (using reopen_tables). When grabbing the lock again,
reopen_tables doesn't pass a flag to mysql_lock_tables in
order to ignore the impending global read lock, which causes a
assertion because LOCK_open is being hold. Also dropping the
lock must not signal to any threads that the table has been
relinquished (related to the locking/flushing protocol).

The solution is to correct the way the table is reopenned
and the locks grabbed. When reopening the table and under
LOCK TABLES, the table version should be set to 0 so other
threads have to wait for the table. When grabbing the lock,
any other flush should be ignored because it's theoretically
a atomic operation. The chosen solution also fixes a potential
discrepancy between binlog and GRL (global read lock) because
table placeholders were being ignored, now a FLUSH TABLES WITH
READ LOCK will properly for table with open placeholders.

It's also important to mention that this patch doesn't fix
a potential deadlock if one uses two GRLs under LOCK TABLES
concurrently.
2007-12-12 19:44:14 -02:00
davi@moksha.local
a63738db6c Bug#25856 (HANDLER table OPEN in one connection lock DROP TABLE in another one)
mysql_ha_open calls mysql_ha_close on the error path (unsupported) to close the (opened) table before inserting it into the tables hash list handler_tables_hash) but mysql_ha_close only closes tables which are on the hash list, causing the table to be left open and locked.

This change moves the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close (mysql_ha_close).
2007-08-17 11:34:12 -03:00
kostja@bodhi.(none)
9c72c3dfdb A fix for Bug#29049 lock_multi fails in rare case.
The patch changes the test case only.
The fix is to replace all 'sleep's with wait_condition. This makes
the test deterministic and also ~300 times faster.
2007-08-11 14:07:49 +04:00
dlenev@mockturtle.local
c3e3a5e188 Added test for bug #21281 "Pending write lock is incorrectly removed
when its statement being KILLed". The bug itself was fixed by separate
patch in 5.0 tree.
2007-08-05 13:55:37 +04:00
msvensson@pilot.blaudden
846e5ad8d3 Bug#20166 mysql-test-run.pl does not test system privilege tables creation
- Updates for 5.1
2007-02-27 11:39:29 +01:00
holyfoot/hf@hfmain.(none)
52e716971f Merge hf@192.168.21.12:work/embt/my50-embt
into  mysql.com:/d2/hf/my51-embt
2006-12-26 20:22:17 +04:00
holyfoot/hf@mysql.com/deer.(none)
7254ed10e8 lock_multi disabled 2006-12-26 20:22:16 +04:00
holyfoot/hf@deer.(none)
dd0b81885d Merge mysql.com:/home/hf/work/mysql-5.0-mrg
into  mysql.com:/home/hf/work/mysql-5.1-mrg
2006-11-17 18:27:28 +04:00
holyfoot/hf@mysql.com/deer.(none)
497ccd6b87 Merge mysql.com:/home/hf/work/mysql-4.1-mrg
into  mysql.com:/home/hf/work/mysql-5.0-mrg
2006-11-16 23:16:44 +04:00
holyfoot/hf@mysql.com/deer.(none)
4d23559806 WL#3475 (Threads for the embedded server in mysqltest)
Necessary code added to mysqltest.c.
Disabled tests are available now.
2006-10-23 15:02:51 +05:00
tsmith/tim@siva.hindu.god
d5d1404d4b Merge siva.hindu.god:/usr/home/tim/m/bk/50
into  siva.hindu.god:/usr/home/tim/m/bk/51
2006-10-20 13:53:39 -06:00
msvensson@neptunus.(none)
485772e308 Bug#22436 Four tests require "innodb" to be configured, fail in "classic" build
- Disable warnings when creating the "innodb" tables if it works anyway.
 - Move test that are really innodb dependent to innodb_mysql
2006-09-28 15:13:40 +02:00
ingo@mysql.com
b2f58e94b1 After merge fix 2006-07-04 12:34:23 +02:00
ingo@mysql.com
d8546d07f8 Merge mysql.com:/home/mydev/mysql-5.0-tmp_merge
into  mysql.com:/home/mydev/mysql-5.1-amerge
2006-07-04 10:02:11 +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
elliot@mysql.com
d4796d9df6 Merge mysql.com:/home/emurphy/src/bk-clean/tmp_merge
into  mysql.com:/home/emurphy/src/bk-clean/mysql-5.1
2006-06-23 17:27:54 -04:00
elliot@mysql.com
37e5ec9f50 Applying patch from SergeyV
Fixes bug#17264, for alter table on win32 for successfull operation completion
it is used TL_WRITE(=10) lock instead of TL_WRITE_ALLOW_READ(=6), however here
in innodb handler TL_WRTIE is lifted to TL_WRITE_ALLOW_WRITE, which causes
race condition when several clients do alter table simultaneously.
2006-06-20 13:43:13 -04:00
ingo@mysql.com
2b6b5b6360 Merge mysql.com:/home/mydev/mysql-5.0-amerge
into  mysql.com:/home/mydev/mysql-5.1-amerge
2006-06-15 10:58:02 +02:00
acurtis@xiphis.org
32fbbbb9b6 Merge acurtis@bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into  xiphis.org:/home/antony/work2/p2-bug20168.2
2006-06-12 06:53:31 -07:00
ingo@mysql.com
76f066aa32 Merge mysql.com:/home/mydev/mysql-5.0
into  mysql.com:/home/mydev/mysql-5.0-amerge
2006-06-10 12:24:44 +02:00
jani@a193-229-222-105.elisa-laajakaista.fi
c81b4c01bf Merge a193-229-222-105.elisa-laajakaista.fi:/home/my/bk/mysql-5.0
into  a193-229-222-105.elisa-laajakaista.fi:/home/my/bk/mysql-5.1-new
2006-05-30 16:07:49 +03:00
ingo@mysql.com
ed2e475548 Merge mysql.com:/home/mydev/mysql-5.0-bug19815
into  mysql.com:/home/mydev/mysql-5.1-bug19815
2006-05-29 15:30:13 +02: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
monty@mysql.com
9e9ca8b6eb More DBUG statements
Replaced COND_refresh with COND_global_read_lock becasue of a bug in NTPL threads when using different mutexes as arguments to pthread_cond_wait()
The original code caused a hang in FLUSH TABLES WITH READ LOCK in some circumstances because pthread_cond_broadcast() was not delivered to other threads.
This fixes:
Bug#16986: Deadlock condition with MyISAM tables
Bug#20048: FLUSH TABLES WITH READ LOCK causes a deadlock
2006-05-24 17:21:35 +03:00
monty@mysql.com
1994ed49ec Fixed compiler and valgrind warnings
Added missing DBUG_xxx_RETURN statements
Fixed some usage of not initialized variables (as found by valgrind)
Ensure that we don't remove locked tables used as name locks from open table cache until unlock_table_names() are called.
This was fixed by having drop_locked_name() returning any table used as a name lock so that we can free it in unlock_table_names()
This will allow Tomas to continue with his work to use namelocks to syncronize things.

Note: valgrind still produces a lot of warnings about using not initialized code and shows memory loss errors when running the ndb tests
2006-03-29 14:27:36 +03: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
msvensson@neptunus.(none)
8c0f0c7b2b BUG#9998 MySQL client hangs on "USE database"
Use open_normal_and_derived_tables instead of open_and_lock_tables when reading metadata for a table.
 Add two test cases, one for "USE database" and one for "SHOW COLUMNS FROM table"
2005-06-03 15:29:05 +02:00
monty@mysql.com
62f3cd6a31 Merge with 4.0 for 4.1 release
Noteworthy:
- New HANDLER code
- New multi-update-grant-check code
- Table lock code in ha_innodb.cc was not applied
2004-10-06 19:14:33 +03:00
antony@ltantony.rdg.cyberkinetica.homeunix.net
2973a047ea Bug#4118: multi-table UPDATE takes WRITE lock on read table
Ensures that WRITE lock is not obtained on all tables referenced.
2004-10-03 00:20:47 +01:00
monty@narttu.mysql.fi
a434bca704 Merge with 4.0 2003-03-16 19:17:54 +02:00
monty@narttu.mysql.fi
2a7dfa172c Fixed bug in LOCK TABLE + DROP TABLE when other thread was waiting for a table that was locked bug not droped 2003-03-04 12:22:35 +02:00
monty@mashka.mysql.fi
1f6ecc0cd3 Changed mysql-test to print warnings for not existing table to DROP TABLE
Cleaned up test; Removed wrong DROP TABLE commands and use standard table and database names.
changed store_warning() -> push_warning_print()
2003-01-06 01:48:59 +02:00
bell@sanja.is.com.ua
463c59e1e9 fixed tests to be independed from environment 2002-08-30 21:32:59 +03:00
monty@hundin.mysql.fi
88aff4bf85 Updated manual about embedded version.
Speed up column-completion in 'mysql'
Don't use ISAM if HAVE_ISAM is not defined
A lot of fixes for the embedded version.  All libraries are now included in libmysqld.a
Changed arguments to convert_dirname() to make it more general.
Renamed files in the 'merge' directory to all use a common prefix.
Don't compile both assembler and C functions on x86
2001-10-08 04:58:07 +03:00