- 23 May, 2007 1 commit
-
-
dlenev@mockturtle.local authored
Bug #23667 "CREATE TABLE LIKE is not isolated from alteration by other connections" Bug #18950 "CREATE TABLE LIKE does not obtain LOCK_open" As well as: Bug #25578 "CREATE TABLE LIKE does not require any privileges on source table". The first and the second bugs resulted in various errors and wrong binary log order when one tried to execute concurrently CREATE TABLE LIKE statement and DDL statements on source table or DML/DDL statements on its target table. The problem was caused by incomplete protection/table-locking against concurrent statements implemented in mysql_create_like_table() routine. We solve it by simply implementing such protection in proper way. Most of actual work for 5.1 was already done by fix for bug 20662 and preliminary patch changing locking in ALTER TABLE. The third bug allowed user who didn't have any privileges on table create its copy and therefore circumvent privilege check for SHOW CREATE TABLE. This patch solves this problem by adding privilege check, which was missing. Finally it also removes some duplicated code from mysql_create_like_table() and thus fixes bug #26869 "TABLE_LIST::table_name_length inconsistent with TABLE_LIST::table_name".
-
- 19 May, 2007 2 commits
-
-
dlenev@mockturtle.local authored
into mockturtle.local:/home/dlenev/src/mysql-5.1-alter
-
dlenev@mockturtle.local authored
and invalidation in the most general case (non-temporary table and not simple RENAME or ENABLE/DISABLE KEYS or partitioning command). See comment for sql/sql_table.cc for more information. These changes are prerequisite for 5.1 version of fix for bug #23667 "CREATE TABLE LIKE is not isolated from alteration by other connections"
-
- 18 May, 2007 4 commits
-
-
thek@adventure.(none) authored
into adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
-
thek@adventure.(none) authored
- Adding variable m_cached_result_type to keep the variable type consistent during the execution of a statement. - Before each result set is returned to the client the description of each column is sent as meta data. Previously the result type for a column could change if the hash variable entry changed between statements. This caused the result set of the query to alternate column types in certain cases which is not supported by MySQL client-server protocol. Example: Previously this sequence: SET @A:=1; SELECT @A:="text", @A; would return "text", "text"; After the change the SELECT returns "text", 0 The reson for this is that previously the result set from 'SELECT @A;' would always be of the type STRING, whereas now the type of the variable is taken from the last SET statement. However, 'SELECT @A:="text"' will return type of STRING since the right side of the assignment is used.
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.1-runtime
-
kostja@vajra.(none) authored
Adjust the check that defines the error message to be returned.
-
- 16 May, 2007 14 commits
-
-
kostja@vajra.(none) authored
-
thek@adventure.(none) authored
into adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
-
thek@adventure.(none) authored
into adventure.(none):/home/thek/Development/cpp/mysql-5.1-runtime
-
thek@adventure.(none) authored
into adventure.(none):/home/thek/Development/cpp/bug27415/my51-bug27415
-
thek@adventure.(none) authored
- Problem was reported as a SP variable using itself as right value inside SUBSTR caused corruption of data. - This bug could not be verified in either 5.0bk or 5.1bk - Added test case to prevent future regressions.
-
kostja@vajra.(none) authored
-
kostja@vajra.(none) authored
(Bug#26338 "events_bugs.test fail on Debian")
-
kostja@vajra.(none) authored
open bug report, reproduced in the runtime team tree).
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.1-21483
-
kostja@vajra.(none) authored
-
kostja@vajra.(none) authored
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.1-21483
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.0-21483
-
kostja@vajra.(none) authored
Bug#21483 "Server abort or deadlock on INSERT DELAYED with another implicit insert" Also fixes and adds test cases for bugs: 20497 "Trigger with INSERT DELAYED causes Error 1165" 21714 "Wrong NEW.value and server abort on INSERT DELAYED to a table with a trigger". Post-review fixes. Problem: In MySQL INSERT DELAYED is a way to pipe all inserts into a given table through a dedicated thread. This is necessary for simplistic storage engines like MyISAM, which do not have internal concurrency control or threading and thus can not achieve efficient INSERT throughput without support from SQL layer. DELAYED INSERT works as follows: For every distinct table, which can accept DELAYED inserts and has pending data to insert, a dedicated thread is created to write data to disk. All user connection threads that attempt to delayed-insert into this table interact with the dedicated thread in producer/consumer fashion: all records to-be inserted are pushed into a queue of the dedicated thread, which fetches the records and writes them. In this design, client connection threads never open or lock the delayed insert table. This functionality was introduced in version 3.23 and does not take into account existence of triggers, views, or pre-locking. E.g. if INSERT DELAYED is called from a stored function, which, in turn, is called from another stored function that uses the delayed table, a deadlock can occur, because delayed locking by-passes pre-locking. Besides: * the delayed thread works directly with the subject table through the storage engine API and does not invoke triggers * even if it was patched to invoke triggers, if triggers, in turn, used other tables, the delayed thread would have to open and lock involved tables (use pre-locking). * even if it was patched to use pre-locking, without deadlock detection the delayed thread could easily lock out user connection threads in case when the same table is used both in a trigger and on the right side of the insert query: the delayed thread would not release locks until all inserts are complete, and user connection can not complete inserts without having locks on the tables used on the right side of the query. Solution: These considerations suggest two general alternatives for the future of INSERT DELAYED: * it is considered a full-fledged alternative to normal INSERT * it is regarded as an optimisation that is only relevant for simplistic engines. Since we missed our chance to provide complete support of new features when 5.0 was in development, the first alternative currently renders infeasible. However, even the second alternative, which is to detect new features and convert DELAYED insert into a normal insert, is not easy to implement. The catch-22 is that we don't know if the subject table has triggers or is a view before we open it, and we only open it in the delayed thread. We don't know if the query involves pre-locking until we have opened all tables, and we always first create the delayed thread, and only then open the remaining tables. This patch detects the problematic scenarios and converts DELAYED INSERT to a normal INSERT using the following approach: * if the statement is executed under pre-locking (e.g. from within a stored function or trigger) or the right side may require pre-locking, we detect the situation before creating a delayed insert thread and convert the statement to a conventional INSERT. * if the subject table is a view or has triggers, we shutdown the delayed thread and convert the statement to a conventional INSERT.
-
- 15 May, 2007 6 commits
-
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.1-runtime
-
kostja@vajra.(none) authored
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.1-runtime
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.0-runtime
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.0-runtime
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-4.1-runtime
-
- 14 May, 2007 9 commits
-
-
dlenev@mockturtle.local authored
into mockturtle.local:/home/dlenev/src/mysql-5.1-cts-3
-
dlenev@mockturtle.local authored
TABLES" and failures of alter_table.test on Windows which occured after pushing fix for bugs #20662, #20903, #24508, #24738 (various problems with CREATE TABLE SELECT). ALTER TABLE statements which were handled using "fast" alter table optimization were not properly working under LOCK TABLES if table was transactional (for all table types under Windows). Code implementing "fast" version of ALTER TABLE tried to open and lock table using open_ltable() after renaming .FRM files (which corresponds to renaming tables in normal case) in some cases (for transactional tables or on Windows). This caused problems under LOCK TABLES and conflicted with name-lock taken by ALTER TABLE RENAME on target tables. This patch solves this issue by using reopen_name_locked_table() instead of open_ltable().
-
anozdrin/alik@ibm. authored
-
anozdrin/alik@ibm. authored
-
anozdrin/alik@ibm. authored
-
anozdrin/alik@ibm. authored
-
anozdrin/alik@ibm. authored
-
kostja@vajra.(none) authored
into vajra.(none):/opt/local/work/mysql-5.1-runtime
-
kostja@vajra.(none) authored
-
- 12 May, 2007 4 commits
-
-
ibabaev@bk-internal.mysql.com authored
into bk-internal.mysql.com:/data0/bk/mysql-5.1-opt
-
ibabaev@bk-internal.mysql.com authored
into bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
-
igor@olga.mysql.com authored
into olga.mysql.com:/home/igor/mysql-5.1-opt
-
igor@olga.mysql.com authored
-