There was possible stack overrun in an edge case which handles invalid body of
a SP in mysql.proc . That should be case when mysql.proc has been changed
manually. Though, due to bug 21513, it can be exploited without having access
to mysql.proc only being able to create a stored routine.
mysql-test/r/sp.result:
update result
mysql-test/t/sp.test:
add a test case for the bug
sql/sp.cc:
Fix stack overrun. This happen mostly when mysql.proc is damaged, though
it's possible due to another bug which creates invalid SP body in mysql.proc
(leading quote from a label being cut) to create stack overrun even without
having direct access to mysql.proc
into moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug21414
mysql-test/r/sp.result:
Auto merged
mysql-test/t/sp.test:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
The problem was that if after FLUSH TABLES WITH READ LOCK the user
issued DROP/ALTER PROCEDURE/FUNCTION the operation would fail (as
expected), but after UNLOCK TABLE any attempt to execute the same
operation would lead to the error 1305 "PROCEDURE/FUNCTION does not
exist", and an attempt to execute any stored function will also fail.
This happened because under FLUSH TABLES WITH READ LOCK we couldn't open
and lock mysql.proc table for update, and this fact was erroneously
remembered by setting mysql_proc_table_exists to false, so subsequent
statements believed that mysql.proc doesn't exist, and thus that there
are no functions and procedures in the database.
As a solution, we remove mysql_proc_table_exists flag completely. The
reason is that this optimization didn't work most of the time anyway.
Even if open of mysql.proc failed for some reason when we were trying to
call a function or a procedure, we were setting mysql_proc_table_exists
back to true to force table reopen for the sake of producing the same
error message (the open can fail for number of reasons). The solution
could have been to remember the reason why open failed, but that's a lot
of code for optimization of a rare case. Hence we simply remove this
optimization.
mysql-test/r/sp.result:
Add result for bug#21414: SP: Procedure undroppable, to some extent.
mysql-test/t/sp.test:
Remove no longer relevant comment.
Add test case for bug#21414: SP: Procedure undroppable, to some extent.
sql/mysql_priv.h:
Remove declaration of mysql_proc_table_exists.
sql/sp.cc:
Remove references to mysql_proc_table_exists.
sql/sql_acl.cc:
Remove reference to mysql_proc_table_exists.
include/mysql_com.h:
USERNAME_LENGTH is changed to USERNAME_BYTE_LENGTH
mysql-test/r/ctype_utf8.result:
result fix
mysql-test/t/ctype_utf8.test:
test fix
sql/sp.cc:
NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
sql/sp_head.cc:
NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
sql/sql_acl.cc:
NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
sql/sql_class.h:
NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
sql/sql_parse.cc:
NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
Function check_string_length() is fixed, now it check string lenght in symbols
sql/sql_repl.h:
NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
into mysql.com:/home/gluh/MySQL/Merge/5.0
include/mysql_com.h:
Auto merged
mysql-test/t/ctype_utf8.test:
Auto merged
sql/item_func.h:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_strfunc.h:
Auto merged
sql/slave.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql-common/client.c:
Auto merged
sql/sql_select.cc:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/ctype_utf8.result:
manual merge
sql/sql_acl.cc:
manual merge
In 5.0 we made LOAD DATA INFILE autocommit in all engines, while
only NDB wanted that. Users and trainers complained that it affected
InnoDB and was a change compared to 4.1 where only NDB autocommitted.
To revert to the behaviour of 4.1, we move the autocommit logic out of mysql_load() into
ha_ndbcluster::external_lock().
The result is that LOAD DATA INFILE commits all uncommitted changes
of NDB if this is an NDB table, its own changes if this is an NDB
table, but does not affect other engines.
Note: even though there is no "commit the full transaction at end"
anymore, LOAD DATA INFILE stays disabled in routines (re-entrency
problems per a comment of Pem).
Note: ha_ndbcluster::has_transactions() does not give reliable results
because it says "yes" even if transactions are disabled in this engine...
sql/ha_ndbcluster.cc:
NDB wants to do autocommit if this is LOAD DATA INFILE.
For this to not affect all other engines, we move the logic
inside ha_ndbcluster.
sql/sql_load.cc:
This ha_enable_transaction() in mysql_load() forced an autocommit
in all engines, while only NDB wants to do that.
So we move the logic inside ha_ndbcluster.cc.
mysql-test/include/loaddata_autocom.inc:
test for engines to see if they autocommit or not in LOAD DATA INFILE
mysql-test/r/loaddata_autocom_innodb.result:
result for InnoDB (no autocommit)
mysql-test/r/loaddata_autocom_ndb.result:
result for NDB (autocommit)
mysql-test/r/rpl_ndb_innodb_trans.result:
result for InnoDB+NDB transactions. Observe that when ROLLBACK
cannot rollback the LOAD DATA INFILE in NDB it issues warning 1196
as appropriate.
mysql-test/t/loaddata_autocom_innodb.test:
test that InnoDB does not autocommit in LOAD DATA INFILE.
mysql-test/t/loaddata_autocom_ndb.test:
test that NDB does autocommit in LOAD DATA INFIL
mysql-test/t/rpl_ndb_innodb_trans-slave.opt:
need to tell the slave to use innodb
mysql-test/t/rpl_ndb_innodb_trans.test:
test of transactions mixing NDB and InnoDB. To see if ROLLBACK
rolls back in both engines, with the exception of LOAD DATA INFILE
which does not roll back NDB: we see that a LOAD DATA INFILE in NDB
commits all what has been done in NDB so far, commits its changes,
but does not commit in other engines.
into salvation.intern.azundris.com:/home/tnurnberg/21913/my50-21913
21913: DATE_FORMAT() Crashes mysql server if I use it through mysql-connector-j driver.
Variable character_set_results can legally be NULL (for "no conversion.")
This could result in a NULL deref that crashed the server. Fixed.
(Although ran some additional precursory tests to see whether I could break
anything else, but no breakage so far.)
mysql-test/r/func_time.result:
Bug#21913: DATE_FORMAT() Crashes mysql server if I use it through mysql-connector-j driver.
Prove DATE_FORMAT() no longer crashes the server when character_set_results is
NULL (which is a legal value and means, "no conversion").
mysql-test/t/func_time.test:
Bug#21913: DATE_FORMAT() Crashes mysql server if I use it through mysql-connector-j driver.
Prove DATE_FORMAT() no longer crashes the server when character_set_results is
NULL (which is a legal value and means, "no conversion").
sql/sql_string.cc:
Bug#21913: DATE_FORMAT() Crashes mysql server if I use it through mysql-connector-j driver.
Avoid NULL deref in my_charset_same() -- if !to_cs, we won't need to compare
because it is magic for, "no conversion."
Variable character_set_results can legally be NULL (for "no conversion.")
This could result in a NULL deref that crashed the server. Fixed.
(Although ran some additional precursory tests to see whether I could break
anything else, but no breakage so far.)
mysql-test/r/func_time.result:
Bug#21913: DATE_FORMAT() Crashes mysql server if I use it through mysql-connector-j driver.
Prove DATE_FORMAT() no longer crashes the server when character_set_results is
NULL (which is a legal value and means, "no conversion").
mysql-test/t/func_time.test:
Bug#21913: DATE_FORMAT() Crashes mysql server if I use it through mysql-connector-j driver.
Prove DATE_FORMAT() no longer crashes the server when character_set_results is
NULL (which is a legal value and means, "no conversion").
sql/sql_string.cc:
Bug#21913: DATE_FORMAT() Crashes mysql server if I use it through mysql-connector-j driver.
Avoid NULL deref in my_charset_same() -- if !to_cs, we won't need to compare
because it is magic for, "no conversion."
start instance; kill mysqlmanager; show ...
The problem was that Instance Manager didn't close client
sockets (sockets for client connections) on execing mysqld
instance. So, mysqld-instance inherits these descriptors.
The fix is to set close-on-exec flag for each client socket.
mysql-test/r/im_daemon_life_cycle.result:
Updated result file.
mysql-test/t/im_daemon_life_cycle.imtest:
Test for BUG#12751.
server-tools/instance-manager/listener.cc:
Set close-on-exec flag for each client socket.
scripts/make_win_bin_dist:
BitKeeper file /home/georg/work/mysql/prod/mysql-5.0-win/scripts/make_win_bin_dist
client/mysqlbinlog.cc:
Fix for cmake build: Cmake doesn't use the VC++ files
extra/comp_err.c:
fixed windows crash (debug): We can't call DBUG_RETURN after my_end.
include/my_dbug.h:
added missing empty define for DBUG_LEAVE to prevent precompiler errors when
compiling in non_debug mode
mysql-test/mysql-test-run.pl:
Added support for new cmake release and debug paths.
mysql-test/t/system_mysql_db_fix.test:
This test requires unix shell script mysql_fix_previleges_tables -> skip under windows
mysys/my_seek.c:
Fix for windows debug crash. However this solution is bad: we should never
call lseek with an invalid file pointer.
sql/ha_archive.cc:
Fixed windows crash: We need dup in gzdopen to keep the filehandle open,
otherwise subsequent calls to mysql_close will fail/crash.
into dl145s.mysql.com:/data/tkatchaounov/5.0-bug-21787
mysql-test/r/limit.result:
Auto merged
mysql-test/t/limit.test:
Auto merged
sql/sql_select.cc:
Adjust the fix for BUG#21787 for 5.0
The problem was due to a prior fix for BUG 9676, which limited
the rows stored in a temporary table to the LIMIT clause. This
optimization is not applicable to non-group queries with aggregate
functions. The fix disables the optimization in this case.
mysql-test/r/limit.result:
Test case for BUG#21787
mysql-test/t/limit.test:
Test case for BUG#21787
sql/sql_select.cc:
If there is an aggregate function in a non-group query,
materialize all rows in the temporary table no matter if
there is a LIMIT clause. This is necessary, since the
aggregate functions must be computed over all result rows,
not just the first LIMIT rows.
into maint2.mysql.com:/data/localhome/tsmith/bk/50
mysql-test/r/ctype_utf8.result:
Auto merged
mysql-test/t/ctype_utf8.test:
Auto merged
sql/net_serv.cc:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
vio/viosocket.c:
Auto merged
client/mysql.cc:
Manual merge.
mysql-test/t/ctype_recoding.test:
Manual merge.
sql/sql_lex.h:
SCCS merged
sql/sql_table.cc:
Manual merge.
mysql-test/r/ctype_recoding.result:
Manual merge
so that 4.1 and 5.0 tests are all in the right place and no tests are duplicated.
client/mysqldump.c:
Restore fix for bug 21215 accidently removed during merge
mysql-test/r/mysqldump.result:
Update results
mysql-test/t/mysqldump.test:
Fix order of tests so that all the tests new to the 5.0 tree come after
"End of 4.1 tests", and so that each leaves things in the state it found
them (particularly by returning to the 'test' database. Also remove some
tests that were duplicated.
into maint2.mysql.com:/data/localhome/tsmith/bk/50
mysql-test/r/heap_btree.result:
Auto merged
sql/set_var.cc:
Auto merged
mysql-test/t/heap_btree.test:
Manual merge.
when a range condition use an invalid DATETIME constant.
Now we do not use invalid DATETIME constants to form end keys for
range intervals: range analysis just ignores predicates with such
constants.
mysql-test/r/query_cache.result:
Adjusted result warnings when adding a fix for bug #16249.
mysql-test/r/range.result:
Added a test case for bug #16249.
mysql-test/t/range.test:
Added a test case for bug #16249.
into shellback.(none):/home/msvensson/mysql/mysql-5.0-maint
configure.in:
Auto merged
include/mysql.h:
Auto merged
include/mysql_com.h:
Auto merged
sql-common/client.c:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_strfunc.h:
Auto merged
sql/sql_acl.cc:
Auto merged
mysql-test/r/ctype_ucs.result:
Update result file
mysql-test/t/ctype_ucs.test:
Disable testing of "encrypt" function in this file. That test has to be guarded by "have_crypt.inc"
into maint2.mysql.com:/data/localhome/tsmith/bk/bfx/50
BUILD/SETUP.sh:
Auto merged
mysql-test/r/ctype_ucs.result:
Auto merged
mysql-test/t/ctype_ucs.test:
Auto merged
BUILD/check-cpu:
Manual merge.
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
include/mysql_com.h:
Bug#20393 User name truncation in mysql client
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
added new constants NAME_BYTE_LEN, USERNAME_BYTE_LENGTH, SYSTEM_CHARSET_MBMAXLEN
mysql-test/r/ctype_utf8.result:
Bug#20393 User name truncation in mysql client
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
test case
mysql-test/t/ctype_utf8.test:
Bug#20393 User name truncation in mysql client
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
test case
sql-common/client.c:
Bug#20393 User name truncation in mysql client
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
increased buffers for user name & db
sql/sql_acl.cc:
Bug#20393 User name truncation in mysql client
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
check that user name is not longer than USERNAME_LENGTH symbols
sql/sql_parse.cc:
Bug#20393 User name truncation in mysql client
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
increased buffers for user name & db
sql/table.cc:
Bug#20393 User name truncation in mysql client
Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
check that db name is not longer than NAME_LEN symbols
length limit", it's superseded by the fix for Bug#16899 "Possible buffer
overflow in handling of DEFINER-clause". Update test results.
mysql-test/r/grant.result:
A post-merge fix.
mysql-test/t/grant.test:
A new error is returned, use the default database after drop database.
sql/sql_acl.cc:
Remove an unneeded check.
into bodhi.local:/opt/local/work/mysql-5.0-14897
configure.in:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/im_life_cycle.result:
Auto merged
mysql-test/t/im_life_cycle.imtest:
Auto merged
sql/field.cc:
Auto merged
sql/item.cc:
Auto merged
sql/item.h:
Auto merged
sql/item_cmpfunc.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_strfunc.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
sql/share/errmsg.txt:
Auto merged
mysql-test/r/grant.result:
Manual merge.
mysql-test/r/view.result:
Manual merge.
mysql-test/t/grant.test:
Manual merge.
mysql-test/t/view.test:
Manual merge.
doesn't find the column"
When a user was using 4.1 tables with VARCHAR column and 5.0 server
and a query that used a temporary table to resolve itself, the
table metadata for the varchar column sent to client was incorrect:
MYSQL_FIELD::table member was empty.
The bug was caused by implicit "upgrade" from old VARCHAR to new
VARCHAR hard-coded in Field::new_field, which did not preserve
the information about the original table. Thus, the field metadata
of the "upgraded" field pointed to an auxiliary temporary table
created for query execution.
The fix is to copy the pointer to the original table to the new field.
mysql-test/r/type_varchar.result:
Update test results (Bug#14897)
mysql-test/t/type_varchar.test:
Add a test case for Bug#14897 "ResultSet.getString("table.column")
sometimes doesn't find the column"
sql/field.cc:
Preserve the original table name when converting fields from
old VARCHAR to new VARCHAR.
mysql-test/std_data/14897.frm:
New BitKeeper file ``mysql-test/std_data/14897.frm''
- BUG#15934: Instance manager fails to work;
- BUG#18020: IM connect problem;
- BUG#18027: IM: Server_ID differs;
- BUG#18033: IM: Server_ID not reported;
- BUG#21331: Instance Manager: Connect problems in tests;
The only test suite has been changed
(server codebase has not been modified).
BitKeeper/deleted/.del-im_check_os.inc:
Rename: mysql-test/include/im_check_os.inc -> BitKeeper/deleted/.del-im_check_os.inc
mysql-test/include/im_check_env.inc:
Include only this file from all IM-tests.
mysql-test/lib/mtr_io.pl:
Update mtr_get_pid_from_file() to workaround race,
described in BUG#21884.
mysql-test/lib/mtr_process.pl:
Refactor im_start()/im_stop() so that they will be more
reliable. There are the following user-visible changes:
- if one of these functions fails, the test suite
is aborted;
- mtr_im_stop() now determines whether the component is
alive or not not only by checking PID, but also by trying
to connect to the component;
- after starting IM, the test suite waits for it to start
accepting client connections and to start all its guarded
mysqld instances;
- a lot of debug-logs have been added in order to simplify
investigation of future failures.
mysql-test/mysql-test-run.pl:
1. Get rid of kill_and_cleanup();
2. Move im_start()/im_stop() to mtr_process.pl;
3. Change default IM port to 9311 so that it does not interfere
with default slave port;
mysql-test/r/im_daemon_life_cycle.result:
Updated result file.
mysql-test/r/im_life_cycle.result:
Updated result file.
mysql-test/r/im_options_set.result:
Updated result file.
mysql-test/r/im_options_unset.result:
Updated result file.
mysql-test/r/im_utils.result:
Updated result file.
mysql-test/t/im_daemon_life_cycle.imtest:
Updated IM-test.
mysql-test/t/im_life_cycle.imtest:
Updated IM-test.
mysql-test/t/im_options_set.imtest:
Updated IM-test.
mysql-test/t/im_options_unset.imtest:
Updated IM-test.
mysql-test/t/im_utils.imtest:
Updated IM-test.
When a view was used inside a trigger or a function, lock type for
tables used in a view was always set to READ (thus making the view
non-updatable), even if we were trying to update the view.
The solution is to set lock type properly.
mysql-test/r/view.result:
Add result for bug#17591: Updatable view not possible with trigger
or stored function.
mysql-test/t/view.test:
Add test case for bug#17591: Updatable view not possible with trigger
or stored function.
sql/sql_view.cc:
Move the code that sets requested lock type before the point where
we exit from mysql_make_view() when we process a placeholder for
prelocked table.
init_dumping now accepts a function pointer to the table or view specific init_dumping function. This allows both tables and views to use the init_dumping function.
client/mysqldump.c:
Added functions for table and view specific dumping initalization.
mysql-test/r/mysqldump.result:
Added Result.
mysql-test/t/mysqldump.test:
Added test case.