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).
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
- Add printout of current time when mysqld is killed by an
unhandled signal
sql/mysqld.cc:
Add printout of current time before the "mysqld got signal %d" message
Hopefully we don't crash in the calls to 'time' or 'localtime_r'
but if that should start to happen we can move the printout of
time further down. At least it's now below the check for segfault
inside of segfault handler.
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/t/rpl_temporary.test:
Auto merged
sql/mysqld.cc:
Auto merged
- Avoid overflow in sec_since_epoch by shifting the time
back 2 days for times close to the maximum range of my_time_t
- Improve comment about why we need my_time_t
- Patch will also fix timezone2.test
include/my_time.h:
Improve comment for my_time_t, especially that we require
it to be at least a 32bit unsigned type
sql/tztime.cc:
- Add assert in sec_since_epoch to guard it against broken down time
values that would cause overflow in my_time_t on systems with 32 bit
my_time_t
- Avoid overflow in sec_since_epoch by "shifting" the broken down
time back 2 days for times that are near the max value.c
- Return empty string also if count is unsigned and value is 0
mysql-test/r/func_str.result:
Update test result
mysql-test/t/func_str.test:
Add test case for using an unsigned value as count parameter
for REPEAT
sql/item_strfunc.cc:
The repeat function should return the emptystring if
count is unsigned and equal to zero or
count is signed and less than or equal to zero
- Add check of format specifiers in error message strings
- Update error message text accordingly to be equal between all translations
extra/Makefile.am:
comp_err uses my_cheksum, link with zlib
extra/comp_err.c:
Add check of format specifiers in error message strings
sql/share/errmsg.txt:
Update error messages after checks
---
Remove the newly added space in error message, should not be there
into polly.local:/home/kaa/src/maint/mysql-5.0-maint
mysql-test/r/sp.result:
Auto merged
mysql-test/t/innodb.test:
Auto merged
mysql-test/t/mysql.test:
Auto merged
mysql-test/t/mysqlbinlog.test:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/mysqld.cc:
Auto merged
mysql-test/r/mysqlbinlog.result:
SCCS merged
- Part 2, add @@hostname system variable
mysql-test/r/variables.result:
Add testcase for @@hostname
mysql-test/t/variables.test:
Add testcase for @@hostname
sql/log.cc:
Use pidfile_name as base when generating the default log name
sql/mysqld.cc:
Init "glob_hostname" to that of hostname, fallback to "localhost"
if 'gethostname' should fail.
Init "pidfile_name" to hostname.pid and fallback to "mysql.pid" if
'gethostname' should fail
sql/set_var.cc:
Add new system variable "hostname"
- Add test of bootstrap mode
- Make mysqld return error if bootstrap failed
mysql-test/mysql-test-run.pl:
Remove options --skip-grant-tables as that is always
turned on by --bootstrap
Remove options --console as that does not affect --bootstrap mode
at all
Add environment variable MYSQLD_BOOTSTRAP_CMD containing path
to mysqld and the arguments used for bootstrap
sql/sql_parse.cc:
Abort bootstrap if execution fails
Report error to stderr/log
mysql-test/r/bootstrap.result:
New BitKeeper file ``mysql-test/r/bootstrap.result''
mysql-test/t/bootstrap.test:
New BitKeeper file ``mysql-test/t/bootstrap.test''
The problem happened because those tests were using "cp932" and "ucs2" without checking whether these character sets are available. This fix moves test parts to make character set specific parts be tested only if they are:
- some parts were moved to "ctype_ucs.test" and "ctype_cp932.test"
- some parts were moved to the newly added tests "innodb-ucs2.test", "mysqlbinglog-cp932.test" and "sp-ucs2.test"
mysql-test/r/ctype_cp932.result:
Moved cp932-specific test case from mysql.test
mysql-test/r/innodb.result:
Moved ucs2-specific test cases to innodb-ucs2.test
mysql-test/r/mysql.result:
Move cp932-specific test cases to ctype_cp932.test
mysql-test/r/mysqlbinlog.result:
Moved cp932-specific test case to mysqlbinlog-cp932.test
mysql-test/r/sp.result:
Moved ucs2-specific test case to sp-ucs2.test
mysql-test/t/ctype_cp932.test:
Moved cp932-specific test case from mysql.test
mysql-test/t/ctype_ucs2_def-master.opt:
Use the comma-separated list of character sets to avoid mysql-test errors when ucs2 is not available in the server
mysql-test/t/ctype_ucs2_def.test:
Added requirement for ucs2 in the server
mysql-test/t/innodb.test:
Moved ucs2-specific test cases to innodb-ucs2.test
mysql-test/t/mysql.test:
Move cp932-specific test cases to ctype_cp932.test
mysql-test/t/mysqlbinlog.test:
Moved cp932-specific test case to mysqlbinlog-cp932.test
mysql-test/t/sp.test:
Moved ucs2-specific test case to sp-ucs2.test
sql/mysqld.cc:
Allow specifying several character sets for test purposes, to make "mysqld" start even if the character set being tested is not compiled:
mysqld --default-character-set=ucs2,latin1
The first available character set will be chosen.
mysql-test/r/innodb-ucs2.result:
New BitKeeper file ``mysql-test/r/innodb-ucs2.result''
mysql-test/r/mysqlbinlog-cp932.result:
New BitKeeper file ``mysql-test/r/mysqlbinlog-cp932.result''
mysql-test/r/sp-ucs2.result:
New BitKeeper file ``mysql-test/r/sp-ucs2.result''
mysql-test/t/innodb-ucs2.test:
New BitKeeper file ``mysql-test/t/innodb-ucs2.test''
mysql-test/t/mysqlbinlog-cp932.test:
New BitKeeper file ``mysql-test/t/mysqlbinlog-cp932.test''
mysql-test/t/sp-ucs2.test:
New BitKeeper file ``mysql-test/t/sp-ucs2.test''
Update error message text accordingly to be equal between all translations
extra/comp_err.c:
Add check of format specifiers in error message strings
sql/share/errmsg.txt:
Update error messages after checks
into pilot.mysql.com:/home/msvensson/mysql/mysql-5.0-maint
mysql-test/mysql-test-run.pl:
Auto merged
sql/item_strfunc.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
- Implement --secure-file-priv=<dir> option that limits
"load_file", "LOAD DATA" and "SELECT .. INTO OUTFILE" to work
with files in specified dir.
- Use above option for mysqld in mysql-test-run.pl
mysql-test/mysql-test-run.pl:
Add usage of --secure-file-priv=vardir when starting mysqld
mysql-test/r/loaddata.result:
Update test result after adding test to check that secure-file-priv
works for "load data" and "load_file"
mysql-test/r/outfile.result:
Update result
mysql-test/r/query_cache.result:
Can't load from outside of vardir anymore
mysql-test/r/type_blob.result:
Can't load from outside of vardir anymore
mysql-test/t/loaddata.test:
Update test result after adding test to check that secure-file-priv
works for "load data" and "load_file"
mysql-test/t/outfile.test:
Update test result after adding test to check that secure-file-priv
works for "SELECT .. INTO OUTFILE"
mysql-test/t/query_cache.test:
Can't load from outside of vardir anymore
mysql-test/t/type_blob.test:
Can't load from outside of vardir anymore
sql/item_strfunc.cc:
Check that the path "load_file" uses for the file is within
what's specified with --secure-file-priv
sql/mysql_priv.h:
Add secure_file_priv
sql/mysqld.cc:
Add "--secure_file_priv"
sql/set_var.cc:
Add variable "secure_file_priv" to "show variables"
sql/sql_class.cc:
Check that the path "load_file" uses for the file is within
what's specified with --secure-file-priv
sql/sql_class.h:
Fix spelling error
sql/sql_load.cc:
Check that the path "load_file" uses for the file is within
what's specified with --secure-file-priv
sql/share/errmsg.txt:
Fix swedish error message for ER_OPTION_PREVENTS_STATMENT wich was hardcoded
to --skip-grant-tables
into bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
BitKeeper/etc/gone:
auto-union
mysys/my_getopt.c:
Auto merged
sql/field.h:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/select.result:
Manual merge
mysql-test/t/select.test:
Manual merge
into zippy.cornsilk.net:/home/cmiller/work/mysql/mysql-4.1-maint
sql/item.cc:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/sql_select.cc:
Auto merged
into pilot.mysql.com:/home/msvensson/mysql/mysql-5.0-maint
BitKeeper/etc/gone:
auto-union
mysys/my_getopt.c:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/table.cc:
Auto merged
ENUMs weren't allowed to have character 0xff, a perfectly good character in some locales.
This was circumvented by mapping 0xff in ENUMs to ',', thereby prevent actual commas from
being used. Now if 0xff makes an appearance, we find a character not used in the enum and
use that as a separator. If no such character exists, we throw an error.
Any solution would have broken some sort of existing behaviour. This solution should
serve both fractions (those with 0xff and those with ',' in their enums), but
WILL REQUIRE A DUMP/RESTORE CYCLE FROM THOSE WITH 0xff IN THEIR ENUMS. :-/
That is, mysqldump with their current server, and restore when upgrading to one with
this patch.
mysql-test/r/type_enum.result:
Bug#24660: "enum" field type definition problem
Show that enums can now contain NAMES_SEP_CHAR (0xff, which is a perfectly respectable
char in some locales), or ',', or both.
mysql-test/t/type_enum.test:
Bug#24660: "enum" field type definition problem
Show that enums can now contain NAMES_SEP_CHAR (0xff, which is a perfectly respectable
char in some locales), or ',', or both.
sql/table.cc:
Bug#24660: "enum" field type definition problem
Revert fix for Bug#20922.
sql/unireg.cc:
Bug#24660: "enum" field type definition problem
Use a field-separator for ENUM-values that is not part of those values. If impossible,
throw error.
The crash happens because second filling of the same I_S table happens in
case of subselect with order by. table->sort.io_cache previously allocated
in create_sort_index() is deleted during second filling
(function get_schema_tables_result). There are two places where
I_S table can be filled: JOIN::exec and create_sort_index().
To fix the bug we should check if the table was already filled
in one of these places and skip processing of the table in second.
mysql-test/r/information_schema.result:
test case
mysql-test/t/information_schema.test:
test case
sql/mysql_priv.h:
added new parameter 'executed_place' to function get_schema_tables_result()
sql/sql_select.cc:
added new parameter 'executed_place' to function get_schema_tables_result()
sql/sql_show.cc:
added more accurate check for cases when we need to refresh I_S table
sql/table.cc:
added more accurate check for cases when we need to refresh I_S table
sql/table.h:
added more accurate check for cases when we need to refresh I_S table
Some fields (GEOMETRY first of all) can't be handled properly in this
case at all. So we return an error in this case
mysql-test/r/default.result:
result fixed
mysql-test/r/gis.result:
result fixed
mysql-test/t/default.test:
VIEW test added
mysql-test/t/gis.test:
testcase added
sql/item.cc:
set_defaults() changed with the 'reset()'
The function make_unireg_sortorder ignored the fact that any
view field is represented by a 'ref' object.
This could lead to wrong results for the queries containing
both GROUP BY and ORDER BY clauses.
mysql-test/r/view.result:
Added a test case for bug #26209.
mysql-test/t/view.test:
Added a test case for bug #26209.
Post fix for bug#12122.
information_schema.result:
Corrected test case after fixing bug#12122.
sql/sql_view.cc:
Post fix for bug#12122.
mysql-test/r/information_schema.result:
Corrected test case after fixing bug#12122.
A wrong order of statements in QUICK_GROUP_MIN_MAX_SELECT::reset
caused a crash when a query with DISTINCT was executed by a loose scan
for an InnoDB table that had been emptied.
mysql-test/r/innodb_mysql.result:
Added a test case for bug #26159.
mysql-test/t/innodb_mysql.test:
Added a test case for bug #26159.
sql/opt_range.cc:
Fixed bug #26159.
A wrong order of statements in QUICK_GROUP_MIN_MAX_SELECT::reset
caused a crash when a query with DISTINCT was executed by a loose scan
for an InnoDB table that had been emptied.
For an empty table quick_prefix_select->reset() was not called at all
and thus some important initialization steps were missing.
present.
A view created with CREATE VIEW ... ORDER BY ... cannot be resolved with
the MERGE algorithm, even when no other part of the CREATE VIEW statement
would require the view to be resolved using the TEMPTABLE algorithm.
The check for presence of the ORDER BY clause in the underlying select is
removed from the st_lex::can_be_merged() function.
The ORDER BY list of the underlying select is appended to the ORDER BY list
mysql-test/t/view.test:
Added a test case for bug#12122: Views with ORDER BY can't be resolved using MERGE algorithm.
mysql-test/r/view.result:
Added a test case for bug#12122: Views with ORDER BY can't be resolved using MERGE algorithm.
sql/sql_lex.cc:
Bug#12122: Views with ORDER BY can't be resolved using MERGE algorithm.
The st_lex::can_be_merged() function now allows views with the ORDER BY
clause to be resolved using MERGE algorithm. The ORDER BY list of the view
is appended to the ORDER BY list of the embedding select.
Objects of the class Item_equal contain an auxiliary member
eval_item of the type cmp_item that is used only for direct
evaluation of multiple equalities. Currently a multiple equality
is evaluated directly only in the cases when the equality holds
at most for one row in the result set.
The compare collation of eval_item was determined incorectly.
It could lead to returning incorrect results for some queries.
mysql-test/r/join_outer.result:
Added a test case for bug #26017.
mysql-test/t/join_outer.test:
Added a test case for bug #26017.
sql/item_cmpfunc.cc:
Fixed bug #26017.
Objects of the class Item_equal contain an auxiliary member
eval_item of the type cmp_item that is used only for direct
evaluation of multiple equalities. Currently a multiple equality
is evaluated directly only in the cases when the equality holds
at most for one row in the result set.
The compare collation of eval_item was determined incorrectly.
It could lead to returning incorrect results for some queries.
sql/item_cmpfunc.h:
Fixed bug #26017.
Removed the cmp_collation member from the Item_equal class as useless
for the current implementation of the class.
inserted.
The select_insert::send_eof() function now resets LAST_INSERT_ID variable if
no rows were inserted.
mysql-test/t/insert_select.test:
Added a test case for bug#23170: LAST_INSERT_ID isn't reset to 0 in INSERT .. SELECT when no rows were inserted.
mysql-test/r/insert_select.result:
Added a test case for bug#23170: LAST_INSERT_ID isn't reset to 0 in INSERT .. SELECT when no rows were inserted.
sql/sql_insert.cc:
Bug#23170: LAST_INSERT_ID isn't reset to 0 in INSERT .. SELECT when no rows were
inserted.The select_insert::send_eof() function now resets LAST_INSERT_ID variable if
no rows were inserted.