Remove changes made by bug fix#8147. They strips list of insert_table_list to
only insert table, which results in error reported in bug #9728.
Added flag to Item to resolve ambigous fields reported in bug #8147.
sql/item.h:
Fix bug#9728 decreased functionality in "on duplicate key update".
sql/item.cc:
Fix bug#9728 decreased functionality in "on duplicate key update"
sql/sql_parse.cc:
Fix bug#9728 decreased functionality in "on duplicate key update"
sql/sql_base.cc:
Fix bug#9728 decreased functionality in "on duplicate key update".
sql/sql_yacc.yy:
Fix bug#9728 decreased functionality in "on duplicate key update"
mysql-test/t/insert_select.test:
Test case for bug#9728 Decreased functionality in "on duplicate key update".
mysql-test/r/insert_select.result:
Test case for bug#9728 Decreased functionality in "on duplicate key update".
mysql-test/r/rpl_multi_update3.result:
Changes from code review
mysql-test/t/rpl_multi_update3.test:
Changes from code review
sql/sql_parse.cc:
Changes from code review
Temporary field wasn't restored to default values after ON DUPLICATE KEY
UPDATE event, which results in wrong data being inserted in new record.
sql/sql_insert.cc:
Fix bug #10886 - INSERT ... SELECT ... ON DUPLICATE KEY UPDATE produces bad results
mysql-test/t/insert_select.test:
Test case for bug #10886 - INSERT ... SELECT ... ON DUPLICATE KEY
UPDATE produces bad results
mysql-test/r/insert_select.result:
Test case for bug #10886 - INSERT ... SELECT ... ON DUPLICATE KEY UPDATE
produces bad results
Added a test case for bug #11295.
item_buff.cc:
Fixed bug #11295.
This a correction for the patch of bug #11088 that takes into
account a possible NULL values of the BLOB column.
sql/item_buff.cc:
Fixed bug #11295.
This a correction for the patch of bug #11088 that takes into
account a possible NULL values of the BLOB column.
mysql-test/t/group_by.test:
Added a test case for bug #11295.
mysql-test/r/group_by.result:
Added a test case for bug #11295.
Added a test case for bug #11385.
group_by.test:
Added a test case for bug #11385.
field.h:
Fixed bug #11385.
The bug was due to not defined method decimals for the class
Field_datetime.
sql/field.h:
Fixed bug #11385.
The bug was due to not defined method decimals for the class
Field_datetime.
mysql-test/t/group_by.test:
Added atest case for bug #11385.
mysql-test/r/group_by.result:
Added a test case for bug #11385.
Corrected dependency for "lex_hash.h", to avoid occasional make failure
sql/Makefile.am:
Corrected dependency for "lex_hash.h", to avoid occasional make failure
INSERT ... SELECT with UNION" (reviewed version).
Altough bug manifest itself only starting from 5.0 it is better to
apply fix to 4.1 to keep some assumptions true and make code more
future-proof.
mysql-test/r/ps.result:
Added test case for bug #11060 "Server crashes on re-execution of
prepared INSERT ... SELECT with UNION".
mysql-test/t/ps.test:
Added test case for bug #11060 "Server crashes on re-execution of
prepared INSERT ... SELECT with UNION".
sql/sql_insert.cc:
select_insert::prepare():
Item::fix_fields() methods operate assuming that LEX::current_select
points to the select to which current item belongs. Thus
during check_insert_fields() routine execution LEX::current_select
should point ot the first select in query since this is the
select with which items in insert list is associated.
But if we have INSERT SELECT UNION SELECT type of query
LEX::current_select will point to the fake_select_lex instead
since select_insert::prepare() is called during processing of JOIN
which corresponds to this select_lex.
So we have set LEX::current_select before calling check_insert_fields()
and restore it afterwards.
Bug#8367 "low log doesn't gives complete information about prepared
statements"
Implement status variables for prepared statements commands (a port of
the patch by Andrey Hristov).
See details in comments to the changed files.
No test case as there is no way to test slow log/general log in
mysqltest.
mysql-test/r/ps_grant.result:
Now execute is logged with tag 'Execute' (changed result file).
sql/mysql_priv.h:
- remove obsolete macro.
- add declarations for new status variables.
- export function log_slow_statement, which now is used in sql_prepare.cc
sql/mysqld.cc:
Add status variables for prepared statements API: now we record
mysql_stmt_close, mysql_stmt_reset, mysql_stmt_prepare, mysql_stmt_execute
mysql_stmt_send_long_data, PREPARE, EXECUTE, DEALLOCATE.
sql/sql_parse.cc:
- account DEALLOCATE prepare as a Com_stmt_close command (close of a
prepared statement).
sql/sql_prepare.cc:
- fix a bug in SQL syntax for prepared statements + logging:
if we use --log and EXECUTE stmt USING @no_such_variable;, the
server crashed because the old code assumed that the variable
returned by get_var_with_binlog is never NULL.
- account statistics for
mysql_stmt_{prepare,execute,close,reset,send_long_data} in
Com_stmt_{prepare,execute,close,reset,send_long_data} correspondingly.
- log slow statements into the slow log early, when thd->query
points to a valid (with expanded placeholder values) query.
The previous version was logging it in sql_parse, when thd->query
is empty. Prevent the server from logging the statement twice by
setting thd->enable_slow_log= FALSE.
- now in case of EXECUTE stmt in SQL syntax for prepared statements the
general log gets two queries, e.g.
Query EXECUTE stmt USING @a, @b, @c
Execute INSERT INTO t1 VALUES (1, 2, 3)
This makes the behavior consistent with PREPARE command, which
also logs the statement twice.
ALTER, OPTIMIZE and ANALYZE statements".
In 4.1 we disabled logging of slow admin statements. The fix adds an
option to enable it back.
No test case (slow log is not tested in the test suite), but tested
manually.
+ post-review fixes (word police mainly).
sql/mysql_priv.h:
- declaration for a new option
sql/mysqld.cc:
Add server option '--log-slow-admin-statements' to log slow
optimize/alter/etc statements to the slow log if it's enabled.
Add warnings that this option works only if the slow log is open.
sql/sql_class.h:
Rename 'thd->slow_command' to thd->enable_slow_log (negates
the meaning of this variable, and so resolves the need to negate
value opt_log_slow_admin_statements when setting it).
sql/sql_parse.cc:
Implement optional logging of administrative statements in the slow log.
Added a test case for bug #8614.
sql_select.cc:
Fixed bug #8614.
SELECT DISTINCT ... GROUP BY 'const' must be equivalent to
SELECT ... GROUP BY 'const'.
sql/sql_select.cc:
Fixed bug #8614.
SELECT DISTINCT ... GROUP BY 'const' must be equivalent to
SELECT ... GROUP BY 'const'.
mysql-test/t/group_by.test:
Added a test case for bug #8614.
mysql-test/r/group_by.result:
Added a test case for bug #8614.
Added a test case for bug #11142.
item_cmpfunc.cc:
Fixed bug #11142.
Implementation of Item_func_nullif::is_null was corrected.
sql/item_cmpfunc.cc:
Fixed bug #11142.
Implementation of Item_func_nullif::is_null was corrected.
mysql-test/t/func_if.test:
Added a test case for bug #11142.
mysql-test/r/func_if.result:
Added a test case for bug #11142.
Added a test case for bug #11167.
sql_select.cc:
Fixed bug #11167.
In 4.1 char/varchar fields are limited by 255 characters in
length that make them longer than 255 bytes in size for such
character sets as UTF8. The functions store_record_in_cache
and read_cached_records did not take into account this
Moreover the code did not take into account that the size
of the varchar fields in 5.0 can be up to 65535 bytes
sql/sql_select.cc:
Fixed bug #11167.
In 4.1 char/varchar fields are limited by 255 characters in
length that make them longer than 255 bytes in size for such
character sets as UTF8. The functions store_record_in_cache
and read_cached_records did not take into account this
Moreover the code did not take into account that the size
of the varchar fields in 5.0 can be up to 65535 bytes
mysql-test/r/ctype_utf8.result:
Added a test case for bug #11167.
mysql-test/t/ctype_utf8.test:
Added a test case for bug #11167.
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Report error instead of crashing
mysql-test/r/create.result:
Test for bug 11028
mysql-test/t/create.test:
Test for bug 11028
sql/sql_table.cc:
fix for null db name
the case in the FROM and WHERE clauses didn't agree. (Bug #9500)
mysql-test/r/lowercase_table2.result:
Update results
mysql-test/t/lowercase_table2.test:
Fix 'DROP TABLE' to not drop tables with the same name.
sql/mysqld.cc:
Move initialization of table_alias_charset to after we
have decided what lower_case_table_names should be.
Fixed bug #9899: erronious NOT_NULL flag for some attributes
in the EXPLAIN table.
sql/sql_class.cc:
Fixed bug #9899: erronious NOT_NULL flag for some attributes
in the EXPLAIN table.
mysql-test/r/ps_1general.result:
Fixed bug #9899: erronious NOT_NULL flag for some attributes
in the EXPLAIN table.
mysql-test/r/ps_2myisam.result:
Fixed bug #9899: erronious NOT_NULL flag for some attributes
in the EXPLAIN table.
mysql-test/r/ps_3innodb.result:
Fixed bug #9899: erronious NOT_NULL flag for some attributes
in the EXPLAIN table.
mysql-test/r/ps_4heap.result:
Fixed bug #9899: erronious NOT_NULL flag for some attributes
in the EXPLAIN table.
mysql-test/r/ps_5merge.result:
Fixed bug #9899: erronious NOT_NULL flag for some attributes
in the EXPLAIN table.
Fixed bug #11088: a crash for queries with GROUP BY a BLOB column
+ COUNT(DISTINCT...) due to an attempt to allocate a too large
buffer for the BLOB field.
Now the size of the buffer is limited by max_sort_length.
group_by.test, group_by.result:
Added a test case for bug #11088.
mysql-test/r/group_by.result:
Added a test case for bug #11088.
mysql-test/t/group_by.test:
Added a test case for bug #11088.
sql/item.h:
Fixed bug #11088: a crash for queries with GROUP BY a BLOB column
+ COUNT(DISTINCT...) due to an attempt to allocate a too large
buffer for the BLOB fields.
Now the size of the buffer is limited by max_sort_length.
sql/item_buff.cc:
Fixed bug #11088: a crash for queries with GROUP BY a BLOB column
+ COUNT(DISTINCT...) due to an attempt to allocate a too large
buffer for the BLOB fields.
Now the size of the buffer is limited by max_sort_length.
sql/sql_select.cc:
Fixed bug #11088: a crash for queries with GROUP BY a BLOB column
+ COUNT(DISTINCT...) due to an attempt to allocate a too large
buffer for the BLOB fields.
Now the size of the buffer is limited by max_sort_length.