Backport from mysql-pe (of those parts which have not been upmerged from 5.1)
sql/field.cc:
Local scope variable or method argument same as class attribute.
sql/item.cc:
Rename auto variable to avoid name clash.
sql/item.h:
Item_ref::basic_const_item had wrong signature (missing const)
and was thus never called.
sql/partition_info.cc:
Rename, to avoid name clashes.
sql/sql_load.cc:
Rename, to avoid name clashes.
The problem is that if a NULL is stored in an Item_cache_decimal object,
the associated my_decimal object is not initialized. However, it is still
accessed when val_int() is called. The fix is to check for null_value
within val_int(), and return without accessing the my_decimal object when
the cached value is NULL.
Bug#52122 reports the same issue for val_real(), and this patch also includes
fixes for val_real() and val_str() and corresponding test cases from that
bug report.
Also, NULL is returned from val_decimal() when value is null. This will
avoid that callers access an uninitialized my_decimal object.
Made similar changes to all other Item_cache classes. Now all val_*
methods should return a well defined value when actual value is NULL.
mysql-test/r/type_decimal.result:
Updated result file with test cases for Bug#52168 and Bug#52122.
mysql-test/t/type_decimal.test:
Added test cases for Bug#52168 and Bug#52122.
sql/item.cc:
In Item_cache_*::val_* methods, return a well defined value
when actual value is NULL.
This is especially important for Item_cache_decimal since
otherwise one risk accessing an uninitialized my_decimal object.
sql/item.h:
Added method Item_cache::has_value() which returns TRUE if cache
object contains a non-null value.
is not needed any more with current versions of FreeBSD.
(Entries 52410 and 52412 in the Bug DB)
That change is based on Dan Nelson replying on the
FreeBSD mailing list, freebsd-questions@freebsd.org
in a thread running from 2010-Apr-29 to 2010-May-1 titled
"Need info about FreeBSD and interrupted system
calls for MySQL code"
Also, ensure the cmake settings correspond to the autotools
ones: Add "HAVE_BROKEN_REALPATH" to cmake.
cmake/os/FreeBSD.cmake:
With current versions of FreeBSD, threading is not done on
the user-level any more, so the huge "net retry count"
is not needed any more.
However, it is still being kept as a comment for now,
so that it can be re-activated should the need arise.
In addition, set "HAVE_BROKEN_REALPATH" to completely
mirror the autotools path.
configure.in:
With current versions of FreeBSD, threading is not done on
the user-level any more, so the huge "net retry count"
is not needed any more.
This definitely holds for FreeBSD version 6 and up.
Adapt the informational messages to the path taken.
For BINARY(N) strip trailing zeroes to make the error message nice-looking
mysql-test/r/errors.result:
test case
mysql-test/r/type_binary.result:
result fix
mysql-test/t/errors.test:
test case
sql/key.cc:
For BINARY(N) strip trailing zeroes to make the error message nice-looking
We should avoid any SHARE fields assignments as
this is shared structure and assignments may
affect other therads. To avoid this
copy of SHARE struct is created and
stored into TABLE struct which is
used in get_schema_coulumns_record later.
mysql-test/r/mdl_sync.result:
test case
mysql-test/t/mdl_sync.test:
test case
sql/sql_show.cc:
We should avoid any SHARE fields assignments as
this is shared structure and assignments may
affect other therads. To avoid this
copy of SHARE struct is created and
stored into TABLE struct which is
used in get_schema_coulumns_record later.
The thd->variables.option_bits & OPTION_BIN_LOG is currently abused:
it's both a system variable and an implementation switch. The current
approach to this option bit breaks the session variable encapsulation.
Besides it is allowed to change @@session.sql_bin_log within a
transaction what may lead to not correctly logging a transaction.
To fix the problems, we created a thd->variables variable to represent
the "sql_log_bin" and prohibited its update inside a transaction or
sub-statement.
mysql-test/suite/binlog/r/binlog_stm_unsafe_warning.result:
Updated result file. The reason the warnings are removed is
related to BUG#50312.
mysql-test/suite/binlog/r/binlog_switch_inside_trans.result:
Checks when is possible to change the option @@session.sql_log_bin.
mysql-test/suite/binlog/t/binlog_switch_inside_trans.test:
Checks when is possible to change the option @@session.sql_log_bin.
mysql-test/suite/rpl/r/rpl_non_direct_stm_mixing_engines.result:
Updated the result file with warnings that were being printed
due to the wrong use of the thd->variables.option_bits and
sql_log_bin_top_level variables.
mysql-test/suite/rpl/r/rpl_stm_mixing_engines.result:
Updated the result file with warnings that were being printed
due to the wrong use of the thd->variables.option_bits and
sql_log_bin_top_level variables.
sql/share/errmsg-utf8.txt:
Introduces two error messages to notify that the @@session.sql_log_bin
cannot be changed inside a sub-statement or transaction.
sql/sql_base.cc:
Removes the variable sql_log_bin_toplevel and uses
the session variable sql_log_bin.
sql/sql_class.cc:
Replaces the variable sql_log_bin_toplevel by the
(variables.option_bits & OPTION_BIN_LOG).
sql/sql_class.h:
Removes the variable sql_log_bin_toplevel and creates
a session variable sql_log_bin.
sql/sys_vars.cc:
Checks when the sql_log_bin can be correctly updated.
dict_index_t structure to NULL in dict_load_index(), we could
enter SYS_INDEXES and got table id value comparision failure
for system tables such as SYS_TABLES. In addition, remove
dict_sys mutex assertion when fill I_S table, as we no longer
hold mutex accross the fill operation.
rb://367 approved by Marko.
Post-push fix: -Wall implies -Wunused on some platforms,
which will generate thousands of warnings about unused parameters.
configure.cmake:
Do not warn about unused parameters in C++
Add -Wall to gcc/g++
Fix most warnings reported in dbg and opt mode.
cmd-line-utils/libedit/filecomplete.c:
Remove unused auto variables.
configure.cmake:
Add -Wall to gcc.
extra/comp_err.c:
Cast to correct type.
extra/perror.c:
Fix segfault (but warnings about deprecated features remain)
extra/yassl/taocrypt/include/runtime.hpp:
Comparing two literals was reported as undefined behaviour.
include/my_global.h:
Add a template for aligning character buffers.
mysys/lf_alloc-pin.c:
Initialize pointer.
sql/mysqld.cc:
Use UNINIT_VAR rather than LINT_INIT.
sql/partition_info.cc:
Use UNINIT_VAR rather than LINT_INIT.
sql/rpl_handler.cc:
Use char[] rather than unsigned long[] array for placement buffer.
sql/spatial.cc:
Use char[] rather than unsigned void*[] array for placement buffer.
sql/spatial.h:
Use char[] rather than unsigned void*[] array for placement buffer.
sql/sql_partition.cc:
Initialize auto variable.
sql/sql_table.cc:
Initialize auto variables.
Add parens around assignment within if()
sql/sys_vars.cc:
Use UNINIT_VAR.
storage/innobase/os/os0file.c:
Init first slot in auto variable.
storage/myisam/mi_create.c:
Use UNINIT_VAR rather than LINT_INIT.
storage/myisam/mi_open.c:
Remove (wrong) casting.
storage/myisam/mi_page.c:
Remove (wrong) casting.
storage/myisam/mi_search.c:
Cast to uchar* rather than char*.
strings/ctype-ucs2.c:
Use UNINIT_VAR rather than LINT_INIT.
Add (uchar*) casting.
can now view the content of InnoDB System Tables through following
information schema tables:
information_schema.INNODB_SYS_TABLES
information_schema.INNODB_SYS_INDEXES
information_schema.INNODB_SYS_COUMNS
information_schema.INNODB_SYS_FIELDS
information_schema.INNODB_SYS_FOREIGN
information_schema.INNODB_SYS_FOREIGN_COLS
information_schema.INNODB_SYS_TABLESTATS
rb://330 Approved by Marko
------------------------------------------------------------
revno: 3116
revision-id: vasil.dimov@oracle.com-20100524182209-sk114oipf1vhjbv5
parent: vasil.dimov@oracle.com-20100524175802-twmwb29vvaehe6b8
committer: Vasil Dimov <vasil.dimov@oracle.com>
branch nick: mysql-trunk-innodb
timestamp: Mon 2010-05-24 21:22:09 +0300
message:
Disable the tests on embedded windows that fail due to
Bug #53947 InnoDB: Assertion failure in thread 4224 in file
.\sync\sync0sync.c line 324
This changeset should be reverted once the bug is fixed.
in mysql-trunk-merge).
There were two problems:
- a mistake during merge of a patch for Bug 52629 from 5.1;
- MTR treated auxilary output of newer valgrind as an error.
The fixes are:
- Fix merge error;
- Teach MTR to skip 'HEAP summary' section of valgrind output.
------------------------------------------------------------
revno: 3477
revision-id: vasil.dimov@oracle.com-20100520132735-a120y85kqmhp7hxi
parent: vasil.dimov@oracle.com-20100520125403-3u9ydcfu8vz8spls
committer: Vasil Dimov <vasil.dimov@oracle.com>
branch nick: mysql-5.1-innodb
timestamp: Thu 2010-05-20 16:27:35 +0300
message:
Disable main.ps_3innodb for valgrind tests since it results in known
failures, that are described in
Bug#38999 valgrind warnings for update statement in function compare_record()
At the time I am adding this the failures are:
main.ps_3innodb [ fail ] Found warnings/errors in server log file!
Test ended at 2010-05-20 01:17:34
line
==31559== Thread 11:
==31559== Conditional jump or move depends on uninitialised value(s)
==31559== at 0x75C5BD: compare_record(st_table*) (sql_update.cc:35)
==31559== by 0x744732: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1486)
==31559== by 0x74A0D7: mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool) (sql_insert.cc:835)
==31559== by 0x6A79B4: mysql_execute_command(THD*) (sql_parse.cc:3198)
==31559== by 0x754998: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3583)
==31559== by 0x754C4F: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3258)
==31559== by 0x754F33: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2529)
==31559== by 0x6A5028: mysql_execute_command(THD*) (sql_parse.cc:2272)
==31559== by 0x6ADAE8: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5986)
==31559== by 0x6AF3A4: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1233)
==31559== by 0x6B0800: do_command(THD*) (sql_parse.cc:874)
==31559== by 0x69CB46: handle_one_connection (sql_connect.cc:1134)
==31559== by 0x33EDA062F6: start_thread (in /lib64/libpthread-2.5.so)
==31559== by 0x33ECED1B6C: clone (in /lib64/libc-2.5.so)
==31559== Conditional jump or move depends on uninitialised value(s)
==31559== at 0x75C5D0: compare_record(st_table*) (sql_update.cc:35)
==31559== by 0x744732: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1486)
==31559== by 0x74A0D7: mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool) (sql_insert.cc:835)
==31559== by 0x6A79B4: mysql_execute_command(THD*) (sql_parse.cc:3198)
==31559== by 0x754998: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3583)
==31559== by 0x754C4F: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3258)
==31559== by 0x754F33: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2529)
==31559== by 0x6A5028: mysql_execute_command(THD*) (sql_parse.cc:2272)
==31559== by 0x6ADAE8: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5986)
==31559== by 0x6AF3A4: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1233)
==31559== by 0x6B0800: do_command(THD*) (sql_parse.cc:874)
==31559== by 0x69CB46: handle_one_connection (sql_connect.cc:1134)
==31559== by 0x33EDA062F6: start_thread (in /lib64/libpthread-2.5.so)
==31559== by 0x33ECED1B6C: clone (in /lib64/libc-2.5.so)
^ Found warnings in /export/home4/pb2/test/sb_3-1827397-1274300957.87/mysql-5.1.48-linux-x86_64-test/mysql-test/var-n_mix/log/mysqld.1.err
------------------------------------------------------------
revno: 3479
revision-id: marko.makela@oracle.com-20100524110439-fazi70rlmt07tzd9
parent: vasil.dimov@oracle.com-20100520133157-42uk5q3pp0vsinac
committer: Marko Mäkelä <marko.makela@oracle.com>
branch nick: 5.1-innodb
timestamp: Mon 2010-05-24 14:04:39 +0300
message:
Bug#53578: assert on invalid page access, in fil_io()
Store the max_space_id in the data dictionary header in order to avoid
space_id reuse.
DICT_HDR_MIX_ID: Renamed to DICT_HDR_MAX_SPACE_ID, DICT_HDR_MIX_ID_LOW.
dict_hdr_get_new_id(): Return table_id, index_id, space_id or a subset of them.
fil_system_t: Add ibool space_id_reuse_warned.
fil_create_new_single_table_tablespace(): Get the space_id from the caller.
fil_space_create(): Issue a warning if the fil_system->max_assigned_id
is exceeded.
fil_assign_new_space_id(): Return TRUE/FALSE and take a pointer to the
space_id as a parameter. Make the function public.
fil_init(): Initialize all fil_system fields by mem_zalloc(). Remove
explicit initializations of certain fields to 0 or NULL.