Using INSERT DELAYED on MERGE tables could lead to table
corruptions.
The manual lists a couple of storage engines, which can be
used with INSERT DELAYED. MERGE is not in this list.
The attempt to try it anyway has not been rejected yet.
This bug was not detected earlier as it can work under
special circumstances. Most notable is low concurrency.
To be safe, this patch rejects any attempt to use INSERT
DELAYED on MERGE tables.
mysql-test/r/merge.result:
Bug#26464 - insert delayed + update + merge = corruption
Added test result.
mysql-test/t/merge.test:
Bug#26464 - insert delayed + update + merge = corruption
Added test.
sql/ha_myisammrg.h:
Bug#26464 - insert delayed + update + merge = corruption
Removed HA_CAN_INSERT_DELAYED flag from table_flags().
The insert delayed thread upgrades the lock from the first
entry in MYSQL_LOCK::locks only. Hence it is incapable to
handle MERGE tables, which have as many entries in this
array as they have MyISAM sub-tables.
- Add test case that shows how slave server hangs in "STOP SLAVE"
when run on MySQL version 5.0.33 compiled with OpenSSL.
Works fine with latest version of MySQL since that problem
has been fixed by patch for bug#24148. The fix has been noted in
the changelog for MySQL 5.0.36
mysql-test/r/rpl_ssl.result:
New BitKeeper file ``mysql-test/r/rpl_ssl.result''
mysql-test/t/rpl_ssl.test:
New BitKeeper file ``mysql-test/t/rpl_ssl.test''
- Add --debugger=dbx
- Fix --debugger=devenv, --debugger=DevEnv and --debugger=/path/devenv
mysql-test/mysql-test-run.pl:
Add support for --debugger=dbx to mysql-test-run.pl
Fix case senitive match for vc, vcexpress or deven
Make it possible to use full path to debugger for
--debugger=/path/vcexpress
into mysql.com:/home/ram/work/b23616/b23616.5.0
mysql-test/r/func_time.result:
Auto merged
mysql-test/t/func_time.test:
Auto merged
sql-common/my_time.c:
Auto merged
The flag alias_name_used was not set on for the outer references
in subqueries. It resulted in replacement of any outer reference
resolved against an alias for a full field name when the frm
representation of a view with a subquery was generated.
If the subquery and the outer query referenced the same table in
their from lists this replacement effectively changed the meaning
of the view and led to wrong results for selects from this view.
Modified several functions to ensure setting the right value of
the alias_name_used flag for outer references resolved against
aliases.
mysql-test/r/view.result:
Added a test case for bug #26560.
mysql-test/t/view.test:
Added a test case for bug #26560.
sql/item.cc:
Fixed bug #26560.
Made the function resolve_ref_in_select_and_group analyze the return
value of the last parameter with the type of the name resolution for
the submitted reference. If the reference has been resolved against
an alias name from select list then its flag alias_name_used is set on.
Now this value is used in Item_field::fix_outer_field to initialize the flag
when the item_ref object is created for an outer reference.
Added a parameter for the second Item_ref::Item_ref constructor to initialize
properly the flag alias_name_used. The default value of the parameter is FALSE.
If this flag is set on at the creation of an object by this constructor it
will never be changed. Corrected appropriately the Item_ref::set_properties
function.
The function Item_ref::print now prints alias name for an outer reference
if the flag alias_name_used is set on.
sql/item.h:
Fixed bug #26560.
Added a parameter for the second Item_ref::Item_ref constructor to initialize
properly the flag alias_name_used. The default value of the parameter is FALSE.
A similar change has been applied to the first Item_direct_ref::Item_direct_ref
constructor.
sql/mysql_priv.h:
Fixed bug #26560.
Added an an enumeration type enum_resolution_type to return info on
how the function find_item_in_list has resolved the submitted item.
The type is used only for this function.
sql/sql_base.cc:
Fixed bug #26560.
Made the last parameter of the function find_field_in_tables return
more detailed information on how the submitted item has been resolved.
Now it says whether the item has been resolved
against an alias name,
or as a field name without alias,
or as a field name hidden by alias,
or was resolved ignoring alias.
sql/sql_select.cc:
Fixed bug #26560.
Took into account the new type of the last parameter of the function
find_item_in_list.
When the ORDER BY clause gets fixed it's allowed to search in the current
item_list in order to find aliased fields and expressions. This is ok for a
SELECT but wrong for an UPDATE statement. If the ORDER BY clause will
contain a non-existing field which is mentioned in the UPDATE set list
then the server will crash due to using of non-existing (0x0) field.
When an Item_field is getting fixed it's allowed to search item list for
aliased expressions and fields only for selects.
sql/sql_base.cc:
Bug#25126: Wrongly resolved field leads to a crash.
When an Item_field is getting fixed it's allowed to search item list for
aliased expressions and fields only for selects.
sql/sql_select.cc:
Bug#25126: Wrongly resolved field leads to a crash.
When an Item_field is getting fixed it's allowed to search item list for
aliased expressions and fields only for selects.
mysql-test/r/update.result:
Added a test case for bug#25126: Wrongly resolved field leads to a crash.
mysql-test/t/update.test:
Added a test case for bug#25126: Wrongly resolved field leads to a crash.
Several problems here :
1. The conversion to double of an hex string const item
was not taking into account the unsigned flag.
2. IN was not behaving in the same was way as comparisons
when performed over an INT/DATE/DATETIME/TIMESTAMP column
and a constant. The ordinary comparisons in that case
convert the constant to an INTEGER value and do int
comparisons. Fixed the IN to do the same.
3. IN is not taking into account the unsigned flag when
calculating <expr> IN (<int_const1>, <int_const2>, ...).
Extended the implementation of IN to store and process
the unsigned flag for its arguments.
mysql-test/r/func_in.result:
Bug #19342: test case
mysql-test/t/func_in.test:
Bug #19342: test case
sql/item.h:
Bug #19342: correct handling of sign in conersion to real.
sql/item_cmpfunc.cc:
Bug #19342: exteneded the IN values list
to support unsigned longlong values.
Correct comparison of integers in IN with
regard of signedness.
Compare DATE/DATETIME/TIMESTAMP values as
integers in IN.
sql/item_cmpfunc.h:
Bug #19342: exteneded the IN values list
to support unsigned longlong values.
Correct comparison of integers in IN with
regard of signedness.
If we compare two items A and B, with B being (a constant) of a
larger type, then A gets promoted to B's type for comparison if
it's a constant, function, or CAST() column, but B gets demoted
to A's type if A is a (not explicitly CAST()) column. This is
counter-intuitive and not mandated by the standard.
Disabling optimisation where it would be lossy so field value
will properly get promoted and compared as binary string (rather
than as integers).
mysql-test/include/ps_conv.inc:
Bug #21103: DATE column not compared as DATE
When comparing a DATE field with a DATETIME constant, we now compare
as DATETIMEs, not as DATEs. Fix certain queries to still work.
mysql-test/r/func_time.result:
Bug #21103: DATE column not compared as DATE
When comparing a DATE field with a DATETIME constant, we now compare
as DATETIMEs, not as DATEs. Show that everything works as expected.
mysql-test/r/ps_2myisam.result:
Bug #21103: DATE column not compared as DATE
When comparing a DATE field with a DATETIME constant, we now compare
as DATETIMEs, not as DATEs. Fix certain queries to still work.
mysql-test/r/ps_3innodb.result:
Bug #21103: DATE column not compared as DATE
When comparing a DATE field with a DATETIME constant, we now compare
as DATETIMEs, not as DATEs. Fix certain queries to still work.
mysql-test/r/ps_4heap.result:
Bug #21103: DATE column not compared as DATE
When comparing a DATE field with a DATETIME constant, we now compare
as DATETIMEs, not as DATEs. Fix certain queries to still work.
mysql-test/r/ps_5merge.result:
Bug #21103: DATE column not compared as DATE
When comparing a DATE field with a DATETIME constant, we now compare
as DATETIMEs, not as DATEs. Fix certain queries to still work.
mysql-test/r/ps_7ndb.result:
Bug #21103: DATE column not compared as DATE
When comparing a DATE field with a DATETIME constant, we now compare
as DATETIMEs, not as DATEs. Fix certain queries to still work.
mysql-test/t/func_time.test:
Bug #21103: DATE column not compared as DATE
When comparing a DATE field with a DATETIME constant, we now compare
as DATETIMEs, not as DATEs. Show that everything works as expected.
sql/field.cc:
Bug #21103: DATE column not compared as DATE
#0 stores the date only as a 3-byte integer; save_in_field() in
#1 saves 'this' in field's format (DATE), #2 "converts a constant
item to an int and replaces the original item" -- consequently,
this replaces the Item_string "2006-11-06 04:08:36.0" with the
Item_int_with_ref 20061106.
#0 Field_newdate::store (this=0x8d26880, from=0x8d5e658 "2006-11-06
04:08:36.0", len=21, cs=0x88022c0) at field.cc:5344
#1 0x0817e3b0 in Item_string::save_in_field (this=0x8d5e670, field=0x8d26880, no_conversions=true) at item.cc:4340
#2 0x081b22ae in convert_constant_item (thd=0x8d25240, field=0x8d26880, item=0x8d5e74c) at item_cmpfunc.cc:245
#3 0x081b8a36 in Item_bool_func2::fix_length_and_dec (this=0x8d5e6f8) at item_cmpfunc.cc:309
#4 0x081a3427 in Item_func::fix_fields (this=0x8d5e6f8, thd=0x8d25240, ref=0x8d5f5fc) at item_func.cc:190
#5 0x0825bc2d in setup_conds (thd=0x8d25240, tables=0x8d5e410, leaves=0x8d5e410, conds=0x8d5f5fc) at sql_base.cc:4941
...
Disabling optimisation where it would be lossy so field value will
properly get promoted and compared as binary string (rather than as
integers).
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.
mysql-test/include/gis_generic.inc:
after merge fix
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.
mysql-test/r/archive_gis.result:
after merge fix
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.
mysql-test/r/gis.result:
after merge fix
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.
mysql-test/r/innodb_gis.result:
after merge fix
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.
mysql-test/r/ndb_gis.result:
after merge fix
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.
mysql-test/t/gis.test:
after merge fix
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.
sql/item_geofunc.cc:
after merge fix
Item_func_geometry_from_text::val_str() should set null_value
in case of wrong data.
into mysql.com:/home/ram/work/b23616/b23616.5.0
mysql-test/r/func_sapdb.result:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/t/func_time.test:
Auto merged
sql-common/my_time.c:
Auto merged
to return NULL for non-NULL arguments.
This is not the case as it can return NULL
for invalid hexidecimal strings.
Fixed by setting the maybe_null flag.
mysql-test/r/func_str.result:
Bug #26537: test case
mysql-test/t/func_str.test:
Bug #26537: test case
sql/item_strfunc.h:
Bug #26537: item_unhex() can return NULLs
even for guaranteed non-null arguments.
results)
Before this fix, the function BENCHMARK() would fail to evaluate expressions
like "(select avg(a) from t1)" in debug builds (with an assert),
or would report a time of zero in non debug builds.
The root cause is that evaluation of DECIMAL_RESULT expressions was not
supported in Item_func_benchmark::val_int().
This has been fixed by this change.
mysql-test/r/func_misc.result:
Added support for DECIMAL_RESULT in Item_func_benchmark::val_int()
mysql-test/t/func_misc.test:
Added support for DECIMAL_RESULT in Item_func_benchmark::val_int()
sql/item_func.cc:
Added support for DECIMAL_RESULT in Item_func_benchmark::val_int()
into weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/disabled.def:
Auto merged
server-tools/instance-manager/instance_options.cc:
Auto merged
server-tools/instance-manager/mysqlmanager.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_subselect.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
client/mysqltest.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/lib/mtr_misc.pl:
Auto merged
sql/mysqld.cc:
Auto merged
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
BitKeeper/etc/ignore:
auto-union
client/mysqltest.c:
Auto merged
extra/comp_err.c:
Auto merged
include/my_time.h:
Auto merged
mysql-test/r/innodb.result:
Auto merged
mysql-test/r/mysqltest.result:
Auto merged
mysql-test/r/type_blob.result:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/tztime.cc:
Auto merged
client/mysql_upgrade.c:
Manual merge
mysql-test/mysql-test-run.pl:
Manual merge
mysql-test/r/ctype_cp932.result:
Manual merge
mysql-test/r/mysqlbinlog.result:
Manual merge
mysql-test/t/ctype_cp932.test:
Manual merge
mysql-test/t/mysql.test:
Manual merge
mysql-test/t/mysqlbinlog.test:
Manual merge
- Try to copy the autoincrement value when altering the table
mysql-test/r/alter_table.result:
Update test result
mysql-test/t/alter_table.test:
Add test case as described in bug report
sql/sql_table.cc:
Try to copy the autoincrement value when altering the table
Replacing local directory.
mysql-test/r/mysqlbinlog.result:
Additional fix for bug N 15126
mysql-test/t/mysqlbinlog.test:
Additional fix for bug N 15126
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
BitKeeper/etc/ignore:
auto-union
BitKeeper/deleted/.del-init_db.sql:
Auto merged
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
Auto merged
client/mysqltest.c:
Auto merged
mysql-test/Makefile.am:
Auto merged
mysql-test/lib/mtr_process.pl:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/mysqld.cc:
Auto merged
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
BitKeeper/etc/ignore:
auto-union
mysql-test/Makefile.am:
Auto merged
sql/mysqld.cc:
Auto merged
BitKeeper/deleted/.del-init_db.sql:
Auto merged
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
Auto merged
INSERT DELAYED inserts garbage for BIT columns.
When delayed thread clones TABLE object, it didn't adjusted bit_ptr
to newly created record (though it correctly adjusts ptr and null_ptr).
This is fixed by correctly adjusting bit_ptr when performing a clone.
With this fix BIT values are stored correctly by INSERT DELAYED.
mysql-test/r/delayed.result:
A test case for BUG#26238.
mysql-test/t/delayed.test:
A test case for BUG#26238.
sql/field.h:
Added move_field() to Field_bit class. When moving a field, adjust
bit_ptr also, which is specific to Field_bit class.
Bug N 15126 character_set_database is not replicated (LOAD DATA INFILE need it)
Positions of some binlog events were changed because of
additional logging of @@collation_database.
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint-bug20166
BitKeeper/etc/ignore:
auto-union
BitKeeper/deleted/.del-init_db.sql:
Auto merged
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
Auto merged
client/mysqltest.c:
Auto merged
mysql-test/Makefile.am:
Auto merged
mysql-test/lib/mtr_process.pl:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
- Build lib/init-db.sql from the output of mysql_create_system_tables
- Remove mysql-test/init_db.sql and mysql-test/lib/init_db.sql
- Leave netware/init_db.sql until 5.0 where we should soon have possibility
to test with mysql-test-run.pl
BitKeeper/deleted/.del-init_db.sql:
Delete: mysql-test/init_db.sql
BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
Delete: mysql-test/lib/init_db.sql
BitKeeper/etc/ignore:
Added mysql-test/lib/init_db.sql to the ignore list
mysql-test/Makefile.am:
Build lib/init_db.sql from the output of mysql_create_system_tables
- Split out initial data in mysql_system_tables.sql to it's own file
- Use file from mysql_install_db and mysql-test-run
scripts/mysql_system_tables_fix.sql:
Rename: scripts/mysql_fix_privilege_tables.sql.in -> scripts/mysql_system_tables_fix.sql
mysql-test/mysql-test-run.pl:
- Add mysql_system_tables_data.sql as part of the bootstrap
- Remove the addition of pid to end of bootstrap.sql, now
to file used for bootstrap will be $opt_vardir/tmp/bootstrap.sql
- Improve error message descibing how to find cause of a
failed bootstrap
scripts/Makefile.am:
- Rename mysql_fix_privileg_tables.sql.in to mysql_system_tables_fix.sql
- Build mysql_fix_privilege_tables from mysql_system_tables.sql and
mysql_system_tables_fix.sql
- Add mysql_system_tables_fix.sql to EXTRA_DIST
scripts/mysql_install_db.sh:
- Use mysql_system_tables_data.sql file when bootstrapping
mysql, it will contain initial data for MysQL system tables
scripts/mysql_system_tables.sql:
Move initial data for system tables to it's own file
scripts/mysql_system_tables_data.sql:
Move initial data for system tables to it's own file
into mysql.com:/home/bar/mysql-5.0.b15126
sql/log_event.cc:
Auto merged
sql/log_event.h:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_load.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
mysql-test/r/mysqlbinlog.result:
After merge fix
mysql-test/t/mysqlbinlog.test:
After merge fix
This patch fixes problem that LOAD DATA could use different
character sets when loading files on master and on slave sides:
- Adding replication of thd->variables.collation_database
- Adding optional character set clause into LOAD DATA
Note, the second way, with explicit CHARACTER SET clause
should be the recommended way to load data using an alternative
character set.
The old way, using "SET @@character_set_database=xxx" should be
gradually depricated.
mysql-test/r/mysqlbinlog.result:
Adding test case
mysql-test/t/mysqlbinlog.test:
Adding test case
sql/log_event.cc:
Adding logging of thd->variables.collation_database
sql/log_event.h:
Adding declarations
sql/sql_class.cc:
Exchange character set is null by default
sql/sql_class.h:
Adding character set into sql_exchange
sql/sql_load.cc:
- Using exchange character set (if it was specified in LOAD DATA syntax)
- Using thd->variables.collation_database by default
sql/sql_yacc.yy:
Adding optional character set clause into LOAD DATA syntax
mysql-test/r/rpl_loaddata2.result:
New BitKeeper file ``mysql-test/r/rpl_loaddata2.result''
mysql-test/std_data/loaddata6.dat:
New BitKeeper file ``mysql-test/std_data/loaddata6.dat''
mysql-test/t/rpl_loaddata2.test:
New BitKeeper file ``mysql-test/t/rpl_loaddata2.test''