- 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''
into pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
client/mysqltest.c:
Auto merged
mysql-test/t/mysqltest.test:
Auto merged
mysql-test/r/mysqltest.result:
SCCS merged
- Starting time of a query sent by bootstrapping wasn't initialized
and starting time defaulted to 0. This later used value by NOW-
item and was translated to 1970-01-01 11:00:00.
- Marketing the time with thd->set_time() before the call to
mysql_parse resolves this issue.
- set_time was refactored to be part of the thd->init_for_queries-
process.
mysql-test/r/init_file.result:
Manual merge from 4.1
mysql-test/std_data/init_file.dat:
Manual merge from 4.1
sql/sql_class.cc:
- Moved set_time into init_for_queries process.
into rakia.gmz:/home/kgeorge/mysql/autopush/B25831-5.0-opt
sql/item.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
Several problems fixed:
1. There was a "catch-all" context initialization in setup_tables()
that was causing the table that we insert into to be visible in the
SELECT part of an INSERT .. SELECT .. statement with no tables in
its FROM clause. This was making sure all the under-initialized
contexts in various parts of the code are not left uninitialized.
Fixed by removing the "catch-all" statement and initializing the
context in the parser.
2. Incomplete name resolution context when resolving the right-hand
values in the ON DUPLICATE KEY UPDATE ... part of an INSERT ... SELECT ...
caused columns from NATURAL JOIN/JOIN USING table references in the
FROM clause of the select to be unavailable.
Fixed by establishing a proper name resolution context.
3. When setting up the special name resolution context for problem 2
there was no check for cases where an aggregate function without a
GROUP BY effectively takes the column from the SELECT part of an
INSERT ... SELECT unavailable for ON DUPLICATE KEY UPDATE.
Fixed by checking for that condition when setting up the name
resolution context.
mysql-test/r/insert_update.result:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- test case
mysql-test/t/insert_update.test:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- test case
sql/item.h:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- save_next_local is not referenced any more outside class methods
sql/sql_base.cc:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- removed a "catch-all" code to cater for correct context initialization
sql/sql_help.cc:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- fixed the name resolution context initialization
sql/sql_insert.cc:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- Fixed the context of resolving the values in INSERT SELECT ON UPDATE
sql/sql_prepare.cc:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- Correct context for name resolution of prepared INSERT .. SELECT
sql/sql_union.cc:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- fixed the name resolution context initialization
sql/sql_yacc.yy:
Bug #25831: Deficiencies in INSERT ... SELECT ... field name resolving.
- Set the context here instead of setup_tables()
mysql-test/r/mysqltest.result:
Update result file after removing one test
mysql-test/t/mysqltest.test:
Remove use of "ls" in system
Rewrite "system echo" which introduces CR/LF problems
with "write_file"
Remove test for end of line junk for "write_file" - it has mismatching number of "'s
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''
into kpdesk.mysql.com:/home/thek/dev/bug23240/my50-bug23240
mysql-test/t/init_file.test:
Auto merged
BitKeeper/deleted/.del-init_file.result:
Auto merged
mysql-test/std_data/init_file.dat:
Null merge
sql/sql_parse.cc:
Null merge
- Starting time of a query sent by file bootstrapping wasn't initialized
and starting time defaulted to 0. This later used value by the Now-
item and is translated to 1970-01-01 11:00:00.
- marking the time with thd->set_time() before the call to
mysql_parse resolves this issue.
mysql-test/r/init_file.result:
Appended test case
mysql-test/std_data/init_file.dat:
Appended test case
mysql-test/t/init_file.test:
Appended test case
UPDATE contains wrong data if the SELECT employs a temporary table.
If the UPDATE values of the INSERT .. SELECT .. ON DUPLICATE KEY UPDATE
statement contains fields from the SELECT part and the select employs a
temporary table then those fields will contain wrong values because they
aren't corrected to get data from the temporary table.
The solution is to add these fields to the selects all_fields list,
to store pointers to those fields in the selects ref_pointer_array and
to access them via Item_ref objects.
The substitution for Item_ref objects is done in the new function called
Item_field::update_value_transformer(). It is called through the
item->transform() mechanism at the end of the select_insert::prepare()
function.
sql/item.cc:
Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
UPDATE contains wrong data if the SELECT employs a temporary table.
The new method Item_field::update_value_transformer() is added. It
substitutes fields in the update values list for references
(Item_ref objects) to them.
sql/item.h:
Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
UPDATE contains wrong data if the SELECT employs a temporary table.
The update_value_transformer() method is added to the Item and to the
Item_field classes.
sql/sql_insert.cc:
Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
UPDATE contains wrong data if the SELECT employs a temporary table.
Traverse update values and substitute fields from the select for
references (Item_ref objects) to them.
sql/sql_select.cc:
Bug#16630: The update fields of the INSERT .. SELECT .. ON DUPLICATE KEY
UPDATE contains wrong data if the SELECT employs a temporary table.
Traverse update values and substitute fields from the select for
references (Item_ref objects) to them.
mysql-test/r/insert_select.result:
Added a test case for bug#16630: The update fields of the INSERT .. SELECT ..
ON DUPLICATE KEY UPDATE contains wrong data if the SELECT employs a
temporary table.
mysql-test/t/insert_select.test:
Added a test case for bug#16630: The update fields of the INSERT .. SELECT ..
ON DUPLICATE KEY UPDATE contains wrong data if the SELECT employs a
temporary table.
into weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
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/sql_lex.cc:
Auto merged
sql/sql_lex.h:
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/lib/mtr_misc.pl:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mainly occurs on win2003 64bit.
- Execute "exec" commands directly with cmd.exe and replace "--exec echo ..." with "--exec .\echo.exe ..."
client/mysqltest.c:
Workaround the problem with "echo" in windows not behaving like "echo" in Unix.
- Replace "--exec echo ..." with "--exec <path to mysqltest>\echo.exe" thus forcing
use of our own echo implementation which baheves like on Unix.
- The above change makes it possible to remove the need to execute all --exec's
inside cygwin. Add ifdefs to only use use cygwin's bash conditionally
mysql-test/lib/mtr_misc.pl:
Add function for converting to the OS's native format
mysql-test/mysql-test-run.pl:
Convert path to executables to "windows native" (c:\<path>\) instead of "mixed"(c:/<path>) mode
necessary for pipes and redirects to work properly in cmd.exe
client/echo.c:
New BitKeeper file ``client/echo.c''
duplicate key entries on slave" (two concurrrent connections doing
multi-row INSERT DELAYED to insert into an auto_increment column,
caused replication slave to stop with "duplicate key error" (and
binlog was wrong)), and BUG#26116 "If multi-row INSERT
DELAYED has errors, statement-based binlogging breaks" (the binlog
was not accounting for all rows inserted, or slave could stop).
The fix is that: if (statement-based) binlogging is on, a multi-row
INSERT DELAYED is silently converted to a non-delayed INSERT.
Note: it is not possible to test BUG#25507 in 5.0 (requires mysqlslap),
so it is tested only in the changeset for 5.1. However, BUG#26116
is tested here, and the fix for BUG#25507 is the same code change.
mysql-test/r/innodb-replace.result:
result update
mysql-test/t/innodb-replace.test:
now that multi-row delayed inserts are converted to normal inserts
if the statement-based binlog is enabled,
no error is issued even if this engine does not support INSERT DELAYED,
as the insert does not go through the INSERT DELAYED code.
To preserve the goal of this test, we change the statements to single-
row inserts.
sql/sql_insert.cc:
A multi-row INSERT DELAYED cannot be recorded to a statement-based
binlog in a way that describes the insertions actually done;
in that case we fallback to a non-delayed INSERT.
mysql-test/r/rpl_insert_delayed.result:
result. Master and slave match.
mysql-test/t/rpl_insert_delayed.test:
Test for BUG#26116 (see if one error at first row on master makes the
slave's data incorrect, see if one error at second row on master
makes slave stop).
were evaluated.
According to the new rules for string comparison partial indexes on text
columns can be used in the same cases when partial indexes on varchar
columns can be used.
mysql-test/r/endspace.result:
Adjusted results after the fix for bug #25971.
mysql-test/r/innodb.result:
Adjusted results after the fix for bug #25971.
mysql-test/r/myisam.result:
Adjusted results after the fix for bug #25971.
mysql-test/r/select.result:
Added a test case for bug #25971.
mysql-test/r/type_blob.result:
Adjusted results after the fix for bug #25971.
mysql-test/t/select.test:
Added a test case for bug #25971.
index_read(), whereas it must return HA_ERR_END_OF_FILE
instead (as there are by definition no rows in a table of
that engine.
mysql-test/r/blackhole.result:
Bug#19717: test case
mysql-test/t/blackhole.test:
Bug#19717: test case
sql/ha_blackhole.cc:
Bug#19717: return no rows instead of success.
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