Problem:
When creating a temporary field for a temporary table in create_tmp_field_from_field(), a resulting field is created as an exact copy of an original one (in Field::new_field()). However, Field_enum and Field_set contain a pointer (typelib) to memory allocated in the parent table's MEM_ROOT, which under some circumstances may be deallocated later by the time a temporary table is used.
Solution:
Override the new_field() method for Field_enum and Field_set and create a separate copy of the typelib structure in there.
include/typelib.h:
Added copy_typelib() declaration
mysql-test/r/sp.result:
Added a testcase for bug #24117 "server crash on a FETCH with a cursor on a table which is not in the table cache"
mysql-test/t/sp.test:
Added a testcase for bug #24117 "server crash on a FETCH with a cursor on a table which is not in the table cache"
mysys/typelib.c:
Added copy_typelib() definition
sql/field.cc:
Create a copy of the internal 'typelib' structure when copying Field_enum of Field_set objects.
sql/field.h:
Override new_field method in Field_enum (and Field_set) to copy the typelib structure.
Problem:
When creating a temporary field for a temporary table in create_tmp_field_from_field(), a resulting field is created as an exact copy of an original one (in Field::new_field()). However, Field_enum and Field_set contain a pointer (typelib) to memory allocated in the parent table's MEM_ROOT, which under some circumstances may be deallocated later by the time a temporary table is used.
Solution:
Override the new_field() method for Field_enum and Field_set and create a separate copy of the typelib structure in there.
into mysql.com:/home/hf/work/22372/my51-22372
mysql-test/t/gis.test:
Auto merged
sql/field.cc:
Auto merged
sql/sql_load.cc:
Auto merged
mysql-test/r/gis.result:
SCCS merged
sql/field.h:
merging
The problem is that the GEOMETRY NOT NULL can't automatically set
any value as a default one. We always tried to complete LOAD DATA
command even if there's not enough data in file. That doesn't work
for GEOMETRY NOT NULL. Now Field_*::reset() returns an error sign
and it's checked in mysql_load()
mysql-test/r/gis.result:
test result
mysql-test/t/gis.test:
testcase
sql/field.cc:
reset() now returns error sign
sql/field.h:
Field_*::reset() now returns error sign if the field can't be reset
sql/sql_load.cc:
check if field can't be reset and return error if it's so
The problem is that the GEOMETRY NOT NULL can't automatically set
any value as a default one. We always tried to complete LOAD DATA
command even if there's not enough data in file. That doesn't work
for GEOMETRY NOT NULL. Now Field_*::reset() returns an error sign
and it's checked in mysql_load()
Field_bit::set_default() did not check the bit_len, hence used the undefined
bit_ptr, causing a crash. The patch adds a check that bit_len > 0 before
following the bit_ptr.
mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
Doing select using ORDER BY to prevent table-internal order from
affecting the result.
mysql-test/r/rpl_row_tabledefs_2myisam.result:
Result change
mysql-test/r/rpl_row_tabledefs_3innodb.result:
Result change
sql/field.cc:
Checking bit_len before following the bit_ptr, since bit_ptr has no
sensible value in the case that bit_len == 0.
sql/field.h:
Field_bit::set_default() used the bit_ptr, but it is undefined,
hence causing a crash. In reality, the hierarchy order is not correct
so added a TODO comment about refactoring.
sql/log_event.cc:
Code was manipulating bits for a FIELD_TYPE_BIT field without checking
if the bit_len was > 0, hence using an undefined bit_ptr when the
class was actually a Field_bit_as_char.
mysql-test/t/rpl_row_tabledefs_3innodb-slave.opt:
New BitKeeper file ``mysql-test/t/rpl_row_tabledefs_3innodb-slave.opt''
Field_bit::set_default() did not check the bit_len, hence used the undefined
bit_ptr, causing a crash. The patch adds a check that bit_len > 0 before
following the bit_ptr.
into bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
client/mysql.cc:
Auto merged
client/mysqldump.c:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/handler.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.h:
Auto merged
sql/item_sum.h:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/log_event.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
storage/innobase/handler/ha_innodb.cc:
Auto merged
client/mysql.cc:
Field update to MYSQL
client/mysqldump.c:
Field -> MySQL
include/mysql.h:
Field -> MySQL
server-tools/instance-manager/protocol.cc:
Field -> MySQL
sql/field.cc:
Field -> MySQL
sql/field.h:
Field -> MySQL
sql/field_conv.cc:
Field -> MySQL
sql/handler.cc:
Field -> MySQL
sql/item.cc:
Field -> MYSQL
sql/item_func.cc:
Field -> MySQL
sql/item_subselect.cc:
Field -> MySQL
sql/item_subselect.h:
Field -> MySQL
sql/item_sum.h:
Field -> MySQL
sql/item_timefunc.cc:
Field -> MySQL
sql/log_event.cc:
Field -> MySQL
sql/opt_range.cc:
Field -> MySQL
sql/sp.cc:
Field -> MySQL
sql/sql_acl.cc:
Field -> MYSQL
sql/sql_analyse.cc:
Field -> MYSQL
sql/sql_insert.cc:
Field -> MySQL
sql/sql_load.cc:
Field -> MySQL
sql/sql_parse.cc:
Field -> MySQL
sql/sql_select.cc:
Field -> MySQL
sql/sql_select.h:
Field -> MySQL
sql/sql_show.cc:
Field -> MySQL
sql/sql_table.cc:
Field -> MySQL
sql/sql_yacc.yy:
Field -> MySQL
sql/table.cc:
Field -> MySQL
sql/unireg.cc:
Field -> MySQL
storage/innobase/handler/ha_innodb.cc:
Field -> MySQL
storage/myisam/ha_myisam.cc:
Field -> MySQL
tests/mysql_client_test.c:
Field -> MySQL
into kahlann.erinye.com:/home/df/mysql/build/mysql-5.0-build
client/mysqltest.c:
Auto merged
libmysql/libmysql.c:
Auto merged
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
into kahlann.erinye.com:/home/df/mysql/build/mysql-5.1-build
client/mysqltest.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/table.cc:
Auto merged
into mysql.com:/home/my/mysql-5.1
configure.in:
Auto merged
include/my_pthread.h:
Auto merged
libmysql/libmysql.c:
Auto merged
server-tools/instance-manager/guardian.cc:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_cache.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_plugin.cc:
Auto merged
sql/sql_trigger.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/table.cc:
Auto merged
storage/archive/ha_archive.cc:
Auto merged
storage/csv/ha_tina.cc:
Auto merged
storage/federated/ha_federated.cc:
Auto merged
sql/item_create.cc:
manual merge
Fixed compiler warnings (detected by VC++):
- Removed not used variables
- Added casts
- Fixed wrong assignments to bool
- Fixed wrong calls with bool arguments
- Added missing argument to store(longlong), which caused wrong store method to be called.
client/mysqldump.c:
Removed compiler warning
heap/hp_clear.c:
Removed compiler warning
include/my_global.h:
Removed compiler warning
include/my_tree.h:
Changed memory limits from int to ulong
(Allowed me to get rid of some compiler warnings)
myisam/mi_create.c:
Removed compiler warning
myisam/myisampack.c:
Removed compiler warning
mysys/base64.c:
Removed compiler warning
mysys/my_thr_init.c:
Fixed portability issue (detected on windows)
Added DBUG_ASSERT to detect if we call my_thread_end() too many times
Don't wait if THR_thread_count == -1 (error condition)
mysys/tree.c:
Removed compiler warning
sql/field.cc:
Removed compiler warning
Fixed wrong parameter to check_date()
Added missing argument to store(longlong)
sql/ha_archive.cc:
Removed compiler warning
sql/ha_federated.cc:
Removed compiler warning
sql/ha_innodb.cc:
Removed not used variable
sql/handler.cc:
Removed not used variable
Fixed wrong if (we didn't detect if rollback or commit failed). Not critical as value is not yet used
sql/item.cc:
Removed compiler warning
sql/item_func.cc:
Removed compiler warning
sql/item_strfunc.cc:
Removed compiler warning
sql/item_timefunc.cc:
Removed compiler warning
sql/log.cc:
Removed compiler warning
sql/mysql_priv.h:
Removed compiler warning
sql/opt_range.cc:
Removed compiler warning
sql/password.c:
Removed compiler warning
sql/set_var.cc:
Removed compiler warning
sql/slave.cc:
Removed compiler warning
sql/sp.cc:
Removed compiler warning
sql/sp_cache.cc:
Removed compiler warning
sql/sp_head.cc:
Removed compiler warning
Adjusted argument to reserve() to not use up too much memory that we are probably not going to need
sql/sql_acl.cc:
Added missing argument to store(longlong)
sql/sql_base.cc:
Removed compiler warning
sql/sql_db.cc:
Removed compiler warning
sql/sql_delete.cc:
Removed compiler warning
sql/sql_handler.cc:
Removed not used variable
sql/sql_lex.h:
Removed not used variable
sql/sql_prepare.cc:
Removed not used variable
sql/sql_rename.cc:
Removed not used variable
sql/sql_select.cc:
Fixed that select_options are not 'cut'
Removed some not used variables
Removed compiler warnings by adding cast
sql/sql_show.cc:
Removed not used variables
Added missing argument to store(longlong)
Removed compiler warnings
sql/sql_trigger.cc:
Removed not used variables
Added cast to remove compiler warnings
sql/sql_update.cc:
Fixed wrong set of bool variable
sql/sql_view.cc:
Removed not used variables
Added cast to get rid of compiler warnings
sql-common/client.c:
Fixed compiler warning
sql-common/my_time.c:
Fixed wrong argument to check_date()
Added casts to get rid of compiler warnings
sql/sql_yacc.yy:
Removed not used variable
sql/uniques.cc:
Changes memory size from uint to ulong
Added casts to get rid of compiler warnings
strings/ctype-simple.c:
Fixed cast to get rid of compiler warnings
Fixed compiler warnings (detected by VC++):
- Removed not used variables
- Added casts
- Fixed wrong assignments to bool
- Fixed wrong calls with bool arguments
- Added missing argument to store(longlong), which caused wrong store method to be called.
into dl145s.mysql.com:/data0/bk/team_tree_merge/MERGE/mysql-5.1-opt
mysql-test/r/func_in.result:
Auto merged
mysql-test/r/ps.result:
Auto merged
mysql-test/t/ps.test:
Auto merged
sql/field.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/item_sum.cc:
Auto merged
- Removed not used variables
- Changed some ulong parameters/variables to ulonglong (possible serious bug)
- Added casts to get rid of safe assignment from longlong to long (and similar)
- Added casts to function parameters
- Fixed signed/unsigned compares
- Added some constructores to structures
- Removed some not portable constructs
Better fix for bug Bug #21428 "skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown"
(Added new parameter to net_clear() to define when we want the communication buffer to be emptied)
into bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
configure.in:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/mysql_priv.h:
Auto merged
into dl145s.mysql.com:/data0/bk/team_tree_merge/MERGE2/mysql-5.1-opt
mysql-test/r/func_gconcat.result:
Auto merged
mysql-test/r/func_group.result:
Auto merged
mysql-test/r/group_min_max.result:
Auto merged
mysql-test/r/type_varchar.result:
Auto merged
mysql-test/t/group_min_max.test:
Auto merged
mysql-test/t/type_varchar.test:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.h:
Auto merged
sql/item_subselect.h:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_string.h:
Auto merged
sql/field.cc:
SCCS merged
into bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
sql/field.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/set_var.cc:
Auto merged
storage/federated/ha_federated.cc:
Auto merged
storage/myisammrg/ha_myisammrg.cc:
Auto merged
plugin/fulltext/plugin_example.c:
e
C
sql/field.h:
e
into dl145s.mysql.com:/data0/bk/team_tree_merge/MERGE/mysql-5.1-opt
client/mysqltest.c:
Auto merged
libmysql/libmysql.c:
Auto merged
mysql-test/r/information_schema.result:
Auto merged
mysql-test/t/disabled.def:
Auto merged
mysql-test/t/information_schema.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
mysql-test/t/type_newdecimal.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/filesort.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/opt_range.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql-common/client.c:
Auto merged
sql-common/my_time.c:
Auto merged
sql/table.cc:
Auto merged
strings/decimal.c:
Auto merged
into rakia.gmz:/home/kgeorge/mysql/autopush/B11927-5.0-opt
mysql-test/r/func_gconcat.result:
Auto merged
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_func.h:
Auto merged
sql/item_subselect.h:
Auto merged
sql/item_sum.cc:
Auto merged
sql/item_sum.h:
Auto merged
sql/sql_string.h:
Auto merged
When implicitly converting string fields to numbers the
string-to-number conversion error was not sent to the client.
Added code to send the conversion error as warning.
We also need to prevent generation of warnings from the places
where val_xxx() methods are called for the sole purpose of updating
the Item::null_value flag.
To achieve that a special function is added (and called) :
update_null_value(). This function will set the no_errors flag and
will call val_xxx(). The warning generation in Field_string::val_xxx()
will use the flag when generating the conversion warnings.
mysql-test/r/compare.result:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- non-convertible strings in arithmetic operations
mysql-test/r/func_gconcat.result:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- non-convertible strings in arithmetic operations
mysql-test/r/func_group.result:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- non-convertible strings in arithmetic operations
mysql-test/r/type_varchar.result:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- test case
mysql-test/t/type_varchar.test:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- test case
sql/field.cc:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- send conversion warning to the client
sql/item.cc:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- send conversion warning to the client
sql/item.h:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- added a special function to explicitly update the null_value
sql/item_func.h:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- added a special function to explicitly update the null_value
sql/item_subselect.h:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- added a special function to explicitly update the null_value
sql/item_sum.cc:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- added a special function to explicitly update the null_value
sql/item_sum.h:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- added a special function to explicitly update the null_value
sql/sql_string.h:
BUG#11927: Warnings shown for CAST( chr as signed) but not (chr + 0)
- send conversion warning to the client
When implicitly converting string fields to numbers the
string-to-number conversion error was not sent to the client.
Added code to send the conversion error as warning.
We also need to prevent generation of warnings from the places
where val_xxx() methods are called for the sole purpose of updating
the Item::null_value flag.
To achieve that a special function is added (and called) :
update_null_value(). This function will set the no_errors flag and
will call val_xxx(). The warning generation in Field_string::val_xxx()
will use the flag when generating the conversion warnings.
Added missing DBUG_RETURN statements (in mysqldump.c)
Added missing enums
Fixed a lot of wrong DBUG_PRINT() statements, some of which could cause crashes
Removed usage of %lld and %p in printf strings as these are not portable or produces different results on different systems.
into bk-internal.mysql.com:/data0/bk/mysql-5.1-arch
configure.in:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
storage/federated/ha_federated.cc:
Auto merged
into mysql.com:/home/my/mysql-5.1
client/mysql.cc:
Auto merged
client/mysqlbinlog.cc:
Auto merged
mysql-test/mysql-test-run-shell.sh:
Auto merged
mysql-test/lib/mtr_report.pl:
Auto merged
mysql-test/r/connect.result:
Auto merged
mysql-test/r/drop.result:
Auto merged
mysql-test/r/information_schema.result:
Auto merged
mysql-test/r/rpl_ndb_dd_advance.result:
Auto merged
mysql-test/r/show_check.result:
Auto merged
mysql-test/t/information_schema.test:
Auto merged
mysql-test/t/mysqldump.test:
Auto merged
mysql-test/t/rpl_ndb_dd_advance.test:
Auto merged
mysql-test/t/system_mysql_db_fix.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/item_sum.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/table.cc:
Auto merged
storage/federated/ha_federated.cc:
Auto merged
storage/myisam/ha_myisam.cc:
Auto merged
client/mysql_upgrade.c:
Manual merge
client/mysqltest.c:
Manual merge
mysql-test/mysql-test-run.pl:
Manual merge
storage/innobase/handler/ha_innodb.cc:
Manual merge