into gleb.loc:/home/uchum/work/bk/5.0-opt
mysql-test/t/create.test:
Auto merged
sql/field.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/create.result:
Merge with 5.0 (main).
Note datadict files do not include wrong is_updatable wrong value
as a result of bug 30020.
mysql-test/suite/funcs_1/datadict/datadict_master.inc:
Updated test file
mysql-test/suite/funcs_1/r/innodb__datadict.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_func_view.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_0102.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_08.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_09.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_views.result:
Updated test file
mysql-test/suite/funcs_1/r/memory__datadict.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_func_view.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_trig_0102.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_trig_08.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_trig_09.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_views.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam__datadict.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_func_view.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_0102.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_08.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_09.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_views.result:
Updated test file
mysql-test/suite/funcs_1/triggers/triggers_0102.inc:
Updated test file
mysql-test/suite/funcs_1/views/func_view.inc:
Updated test file
When the SQL_BIG_RESULT flag is specified SELECT should store items from the
select list in the filesort data and use them when sending to a client.
The get_addon_fields function is responsible for creating necessary structures
for that. But this function was allowed to do so only for SELECT and
INSERT .. SELECT queries. This makes the SQL_BIG_RESULT useless for
the CREATE .. SELECT queries.
Now the get_addon_fields allows storing select list items in the filesort
data for the CREATE .. SELECT queries.
mysql-test/t/create.test:
Added a test case for the bug#15130: CREATE .. SELECT was denied to use
advantages of the SQL_BIG_RESULT.
mysql-test/r/create.result:
Added a test case for the bug#15130: CREATE .. SELECT was denied to use
advantages of the SQL_BIG_RESULT.
sql/filesort.cc:
Bug#15130: CREATE .. SELECT was denied to use advantages of the SQL_BIG_RESULT.
Now the get_addon_fields allows storing select list items in the filesort
data for the CREATE .. SELECT queries.
into magare.gmz:/home/kgeorge/mysql/autopush/B29644-5.0-opt
sql/ha_innodb.cc:
Auto merged
sql/sql_base.cc:
Auto merged
mysql-test/r/innodb_mysql.result:
5.0-opt merge
mysql-test/t/innodb_mysql.test:
5.0-opt merge
Limit the fix for bug 28591 to InnoDB only
sql/sql_select.cc:
Limit the fix for bug 28591 to InnoDB only
sql/table.cc:
Limit the fix for bug 28591 to InnoDB only
If a primary key is defined over column c of enum type then
the EXPLAIN command for a look-up query of the form
SELECT * FROM t WHERE c=0
said that the query was with an impossible where condition though the
query correctly returned non-empty result set when the table indeed
contained rows with error empty strings for column c.
This kind of misbehavior was due to a bug in the function
Field_enum::store(longlong,bool) that erroneously returned 1 if
the the value to be stored was equal to 0.
Note that the method
Field_enum::store(const char *from,uint length,CHARSET_INFO *cs)
correctly returned 0 if a value of the error empty string
was stored.
mysql-test/r/type_enum.result:
Added a test case for bug #29661.
mysql-test/t/type_enum.test:
Added a test case for bug #29661.
sql/field.cc:
Fixed bug #29611.
If a primary key was defined over column c of enum type then
the EXPLAIN command for a look-up query of the form
SELECT * FROM t WHERE c=0
said that the query was with an impossible where condition though the
query correctly returned non-empty result set when the table indeed
contained rows with error empty strings for column c.
This kind of misbehavior was due to a bug in the function
Field_enum::store(longlong,bool) that erroneously returned 1 if
the the value to be stored was equal to 0.
Note that the method
Field_enum::store(const char *from,uint length,CHARSET_INFO *cs)
correctly returned 0 if a value of the error empty string
was stored.
into magare.gmz:/home/kgeorge/mysql/autopush/B28951-5.0-opt
mysql-test/t/innodb_mysql.test:
Auto merged
sql/sql_select.cc:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/innodb_mysql.result:
merge of 5.0-opt
Additional test case fix for bug #29338.
mysql-test/t/sp.test:
Additional test case fix for bug #29338.
mysql-test/r/sp.result:
Additional test case fix for bug #29338.
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29911
mysql-test/t/having.test:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/having.result:
SCCS merged
into bodhi.(none):/opt/local/work/mysql-5.0-runtime
mysql-test/r/create.result:
Auto merged
mysql-test/t/create.test:
Auto merged
sql/sql_class.h:
Auto merged
This bug manifested itself for join queries with GROUP BY and HAVING clauses
whose SELECT lists contained DISTINCT. It occurred when the optimizer could
deduce that the result set would have not more than one row.
The bug could lead to wrong result sets for queries of this type because
HAVING conditions were erroneously ignored in some cases in the function
remove_duplicates.
mysql-test/r/having.result:
Added a test case for bug #29911.
mysql-test/t/having.test:
Added a test case for bug #29911.
into mysql.com:/home/kent/bk/tmp3/mysql-5.0-build
libmysql/libmysql.c:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
sql/field.cc:
Auto merged
After dumping triggers mysqldump copied
the value of the OLD_SQL_MODE variable to the SQL_MODE
variable. If the --compact option of the mysqldump was
not set the OLD_SQL_MODE variable had the value
of the uninitialized SQL_MODE variable. So
usually the NO_AUTO_VALUE_ON_ZERO option of the
SQL_MODE variable was discarded.
This fix is for non-"--compact" mode of the mysqldump,
because mysqldump --compact never set SQL_MODE to the
value of NO_AUTO_VALUE_ON_ZERO.
The dump_triggers_for_table function has been modified
to restore previous value of the SQL_MODE variable after
dumping triggers using the SAVE_SQL_MODE temporary
variable.
client/mysqldump.c:
Fixed bug #29788.
The dump_triggers_for_table function has been modified
to restore previous value of the SQL_MODE variable after
dumping triggers using the SAVE_SQL_MODE temporary
variable.
mysql-test/r/mysqldump.result:
Updated test case for bug #29788.
mysql-test/t/mysqldump.test:
Updated test case for bug #29788.
ORDER BY primary_key on InnoDB table
Queries that use an InnoDB secondary index to retrieve
data don't need to sort in case of ORDER BY primary key
if the secondary index is compared to constant(s).
They can also skip sorting if ORDER BY contains both the
the secondary key parts and the primary key parts (in
that order).
This is because InnoDB returns the rows in order of the
primary key for rows with the same values of the secondary
key columns.
Fixed by preventing temp table sort for the qualifying
queries.
mysql-test/r/innodb_mysql.result:
Bug #28591: test case
mysql-test/t/innodb_mysql.test:
Bug #28591: test case
sql/sql_select.cc:
Bug #28591: Use the primary key as suffix when testing
if the key can be used for ORDER BY on supporting engines.
sql/table.cc:
Bug #28591: can use the primary key
as a suffix for the secondary keys
by long running transaction
On Windows opened files can't be deleted. There was a special
upgraded lock mode (TL_WRITE instead of TL_WRITE_ALLOW_READ)
in ALTER TABLE to make sure nobody has the table opened
when deleting the old table in ALTER TABLE. This special mode
was causing ALTER TABLE to hang waiting on a lock inside InnoDB.
This special lock is no longer necessary as the server is
closing the tables it needs to delete in ALTER TABLE.
Fixed by removing the special lock.
Note that this also reverses the fix for bug 17264 that deals with
another consequence of this special lock mode being used.
mysql-test/r/innodb_mysql.result:
Bug #29644: test case
mysql-test/t/innodb_mysql.test:
Bug #29644: test case
sql/ha_innodb.cc:
Bug #29644: reverse the (now excessive) fix
for bug 17264 (but leave the test case).
sql/sql_base.cc:
Bug #29644: don't need a special lock mode for Win32 anymore:
the table is closed before the drop.
unpack_fields() didn't expect NULL_LENGHT in the field's descriptions.
In this case we get NULL in the resulting string so cannot use
strdup_root to make a copy of it.
strdup_root changed with strmake_root as it's NULL-safe
sql-common/client.c:
Bug #29494 Field packet with NULL fields crashes libmysqlclient
strdup_root changed with strmake_root in unpack_fields()
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0-build
configure.in:
Auto merged
libmysql/libmysql.c:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
sql/field.cc:
Auto merged
into pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0.46
configure.in:
Auto merged
libmysql/libmysql.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
CMakeLists.txt:
BUG#20815 Set stack size. This value is really supposed to be the linker's default. I'm not quite sure why we have to specify it manually too.
The Item_date_typecast::val_int function doesn't reset null_value flag.
This makes all values that follows the first null value to be treated as nulls
and led to a wrong result.
Now the Item_date_typecast::val_int function correctly sets the null_value flag
for both null and non-null values.
mysql-test/t/cast.test:
Added a test case for the bug#29898: Item_date_typecast::val_int doesn't reset
the null_value flag.
mysql-test/r/cast.result:
Added a test case for the bug#29898: Item_date_typecast::val_int doesn't reset
the null_value flag.
sql/item_timefunc.cc:
Bug#29898: Item_date_typecast::val_int doesn't reset the null_value flag.
Now the Item_date_typecast::val_int function correctly sets the null_value flag
for both null and non-null values.
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.
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).
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.
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.