a temporary table.
The result string of the Item_func_group_concat wasn't initialized in the
copying constructor of the Item_func_group_concat class. This led to a
wrong charset of GROUP_CONCAT result when the select employs a temporary
table.
The copying constructor of the Item_func_group_concat class now correctly
initializes the charset of the result string.
mysql-test/t/func_gconcat.test:
Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
when the select employs a temporary table.
mysql-test/r/func_gconcat.result:
Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
when the select employs a temporary table.
sql/item_sum.cc:
Bug#29850: Wrong charset of GROUP_CONCAT result when the select employs
a temporary table.
The copying constructor of the Item_func_group_concat class now correctly
initializes the charset of the result string.
into bodhi.(none):/opt/local/work/mysql-5.1-runtime
mysql-test/r/sp-prelocking.result:
Auto merged
mysql-test/r/trigger.result:
Auto merged
mysql-test/t/create.test:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/sp-prelocking.test:
Auto merged
mysql-test/t/trigger.test:
Auto merged
sql/sql_class.h:
Auto merged
mysql-test/r/create.result:
Use local.
mysql-test/r/innodb.result:
Manual merge.
No test case, since the bug requires a stress case with 30 INSERT DELAYED
threads and 1 killer thread to repeat. The patch is verified
manually.
Review fixes.
The server that is running DELAYED inserts would deadlock itself
or crash under high load if some of the delayed threads were KILLed
in the meanwhile.
The fix is to change internal lock acquisition order of delayed inserts
subsystem and to ensure that
Delayed_insert::table_list::db does not point to volatile memory in some
cases.
For details, please see a comment for sql_insert.cc.
sql/sql_insert.cc:
A fix for Bug#29431 killing an insert delayed thread causes crash
1) The deadlock was caused by different lock acquisition order
between delayed_get_table and handle_delayed_insert.
delayed_get_table would:
- acquire LOCK_delayed_create
- create a new Delayed_insert instance
- acquire instance mutex (di->mutex)
- "lock the instance in memory" by
increasing di->locked_in_memory variable
- start the delayed thread
- release di->mutex
- let the delayed thread open the delayed table
- discover that the delayed thread was killed
- try to unlock() the delayed insert instance in memory
- in Delayed_insert::unlock() do
* lock LOCK_delayed_insert
* decrease locks_in_memory and discover it's 0
* attempt to lock di->mutex to broadcast di->cond condition <-- deadlock
here
Meanwhile, the delayed thread would
* lock di->mutex
* open the table
* get killed
* not notice that and attempt to lock LOCK_delayed_insert
to register itself in the delayed insert list <-- deadlock here.
Simply put, delayed_get_table used to lock LOCK_delayed_insert and then
di->mutex, and handle_delayed_insert would lock di->mutex and then
LOCK_delayed_insert.
Fixed by moving registration in the list of delayed insert threads from
handle_delayed_insert to delayed_get_table - so that now
handle_delayed_insert doesn't need to acquire LOCK_delayed_insert mutex.
2) di->table_list.db was copied by-pointer from table_list.db of the first
producer -- the one who initiated creation of the delayed insert thread.
This producer might be long gone when the member is needed
(handle_delayed_insert:open_ltable),
e.g. by having been killed with KILL CONNECTION statement.
Fixed by using a pointer to the consumer's deep copy of THD::db.
3) In find_handler, we shouldn't assume that Delayed_insert object
already (or still) has a table opened all the time it is
present in the delayed insert list. E.g. it's not the case
when Delayed_insert decided to terminate, closed the table, but haven't
yet unregistered from the list (see the end of handle_delayed_insert).
into gleb.loc:/home/uchum/work/bk/5.1-opt
client/mysqldump.c:
Auto merged
include/my_base.h:
Auto merged
mysql-test/include/mix1.inc:
Auto merged
mysql-test/r/innodb_mysql.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_update.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
Optimization of queries with DETERMINISTIC functions in the
WHERE clause was not effective: sequential scan was always
used.
Now a SF with the DETERMINISTIC flags is treated as constant
when it's arguments are constants (or a SF doesn't has arguments).
sql/item_func.h:
Fixed bug #29338.
The Item_func_sp::used_tables has been removed
(virtual Item_func::used_tables function is enough).
The virtual Item_func_sp::update_used_tables function
has been added.
sql/item_func.cc:
Fixed bug #29338.
The Item_func_sp::update_used_tables and the
Item_func_sp::fix_field functions have been modified
to take into account the DETERMINISTIC flag of SF definition.
mysql-test/r/sp.result:
Updated test case for bug #29338.
mysql-test/t/sp.test:
Updated test case for bug #29338.
into trift-lap.none:/MySQL/M51/bug14151-5.1
BitKeeper/deleted/.del-MySQL-Source.icc~edded3c3a5cf83b1:
Auto merged
BitKeeper/deleted/.del-mysqlmanager-pwgen.c~d8f5f91ec54432b9:
Auto merged
BitKeeper/deleted/.del-mysqlmanager.c~e97636d71145a0b:
Auto merged
include/Makefile.am:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/table.cc:
Auto merged
into mysql.com:/home/svoj/devel/mysql/BUG26325/mysql-5.1-engines
mysql-test/r/check.result:
Auto merged
mysql-test/t/check.test:
Auto merged
sql/handler.cc:
Auto merged
into gleb.loc:/home/uchum/work/bk/5.1-opt
client/mysqldump.c:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/r/mysqldump.result:
Merge with 5.0-opt.
to CHECK TABLE
CHECK/REPAIR TABLE reports "File not found" error when issued
against temporary table.
Fixed by disabling a brunch of code (in case it gets temporary table)
that is responsible for updating frm version as it is not needed
for temporary tables.
mysql-test/r/check.result:
A test case for BUG#26325.
mysql-test/t/check.test:
A test case for BUG#26325.
sql/handler.cc:
No need to update frm version in case table was created or checked
by server with the same version. This also ensures that we do not
update frm version for temporary tables as this code doesn't support
temporary tables.
Don't run test with embedded server; requires external client connections
mysql-test/t/ddl_i18n_koi8r.test:
Don't run test with embedded server; requires external client connections
mysql-test/t/ddl_i18n_utf8.test:
Don't run test with embedded server; requires external client connections
For each view the mysqldump utility creates a temporary table
with the same name and the same columns as the view
in order to satisfy views that depend on this view.
After the creation of all tables, mysqldump drops all
temporary tables and creates actual views.
However, --skip-add-drop-table and --compact flags disable
DROP TABLE statements for those temporary tables. Thus, it was
impossible to create the views because of existence of the
temporary tables with the same names.
client/mysqldump.c:
Fixed bug #28524.
The mysqldump utility has been modified to unconditionally drop
temporary tables before the creation of views.
mysql-test/t/mysqldump.test:
Updated test case for bug #28524 and updated result of previous tests.
mysql-test/r/mysqldump.result:
Updated test case for bug #28524 and updated result of previous tests.
into mysql.com:/home/kent/bk/tmp3/mysql-5.1-build
BitKeeper/deleted/.del-CMakeLists.txt~3:
Auto merged
BitKeeper/deleted/.del-configure.js:
Auto merged
function results in inconsistent behavior.
The bug itself was fixed by the patch for bug 20662.
mysql-test/r/sp-prelocking.result:
Update results (Bug#22427)
mysql-test/t/sp-prelocking.test:
Add a test case for Bug#22427 create table if not exists + stored
function results in inconsistent behavior
into magare.gmz:/home/kgeorge/mysql/work/merge-5.0-5.1-opt
mysql-test/r/type_time.result:
Auto merged
sql/field.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
BitKeeper/deleted/.del-index_merge.result:
Auto merged
mysql-test/include/index_merge1.inc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/opt_range.cc:
Auto merged
storage/heap/ha_heap.cc:
Auto merged
storage/heap/ha_heap.h:
Auto merged
table (datadir)
Set errno when retunring an error in my_create_with_symlink.
mysys/my_symlink2.c:
Bug #29325: set errno when retunring
an error in my_create_with_symlink
Fix the typo in the constructor. Cover a semantic check that previously
never worked with a test.
mysql-test/r/create.result:
Update results (Bug#26104)
mysql-test/r/innodb.result:
Update results.
mysql-test/t/create.test:
Add a test case for Bug#26104 Bug on foreign key class constructor
mysql-test/t/innodb.test:
Return a new error number (MySQL error instead of internal InnoDB error).
sql/sql_class.h:
A fix for Bug#26104 Bug on foreign key class constructor -- fix
the typo in the constructor
table.
The bug itself is yet another manifestation of Bug 26141.
mysql-test/r/trigger.result:
Update results.
mysql-test/t/trigger.test:
Add a test case for Bug#27248 Triggers: error if insert affects temporary
table
Removed duplicate call to handler::external_lock() when
ALTER TABLE that doesn't need to copy a table (quick
ALTER TABLE) was executed.
Also quick ALTER TABLE doesn't hold LOCK_open anymore when
it enables/disables indexes.
sql/sql_table.cc:
Do not call handler::external_lock() as table is already locked
by open_ltable().
Also do not hold LOCK_open mutex for alter_table_manage_keys() as
this function doesn't require LOCK_open (LOCK_open is required by
wait_while_table_is_used() only).
the internal data dictiona
- re-enabled lowercase_table3 test;
- added a rule to throw away expected warning to mtr_report.pl;
- fixed a test case to produce unique warning.
mysql-test/lib/mtr_report.pl:
Throw away a warning produced by BUG#29839 test.
mysql-test/r/lowercase_table3.result:
Modified a test case to throw away expected warning.
mysql-test/t/disabled.def:
Re-enabled lowercase_table3.test.
mysql-test/t/lowercase_table3.test:
Modified a test case to throw away expected warning.