The problem was that the grammar allows to create a function with an optional
definer clause, and define it as a UDF with the SONAME keyword.
Such combination should be reported as an error.
The solution is to not change the grammar itself, and to introduce a
specific check in the yacc actions in 'create_function_tail' for UDF,
that now reports ER_WRONG_USAGE when using both DEFINER and SONAME.
mysql-test/r/udf.result:
Added tests for Bug#21269 (DEFINER-clause is allowed for UDF-functions)
mysql-test/t/udf.test:
Added tests for Bug#21269 (DEFINER-clause is allowed for UDF-functions)
sql/sql_yacc.yy:
Creating a UDF function with a DEFINER clause is now a syntax error.
into rakia.(none):/home/kgeorge/mysql/autopush/B11551-5.0-opt
mysql-test/r/view.result:
Auto merged
mysql-test/t/view.test:
Auto merged
sql/sql_view.cc:
Auto merged
made DROP VIEW to continue on error and report an aggregated error
at its end. This makes it similar to DROP TABLE.
mysql-test/r/view.result:
Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
- test case
- changed error message
mysql-test/t/view.test:
Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
- test case
sql/sql_view.cc:
Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
- made DROP VIEW to continue on error and report an aggregated error
When executing ALTER TABLE all the attributes of the view were overwritten.
This is contrary to the user's expectations.
So some of the view attributes are preserved now : namely security and
algorithm. This means that if they are not specified in ALTER VIEW
their values are preserved from CREATE VIEW instead of being defaulted.
mysql-test/r/view.result:
Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
- test suite
mysql-test/t/view.test:
Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
- test suite
sql/sql_lex.h:
Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
- must make create_view_suid a tristate : on/off/unspecified
sql/sql_view.cc:
Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
- open the view to get it's attributes and put then as defaults
for ALTER VIEW
sql/sql_yacc.yy:
Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
- must make create_view_suid a tristate : on/off/unspecified
sql/table.h:
Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
- must make create_view_suid a tristate : on/off/unspecified
- Use strmake, that will both protect the buffer and make sure it's terminated by a zero
- Add test case
client/mysql.cc:
Use strmake instead of strxnmov as that function will make sure the string is terminated by 0
mysql-test/r/mysql.result:
Update test result
mysql-test/t/mysql.test:
Add test case
Move that perror test to ndb_basic so it's only run when there is support for --ndb
mysql-test/r/ndb_basic.result:
Move test of "perror --ndb" to this file
mysql-test/r/perror.result:
Move test of "perror --ndb" to ndb_basic
mysql-test/t/ndb_basic.test:
Move test of "perror --ndb" to this file
mysql-test/t/perror.test:
Move test of "perror --ndb" to ndb_basic
By default lowercase_table_names are 1 on windows, and that makes the initialization of lower_case_filesystem variable to be skipped.
Add an else bracnh that does the initialization.
sql/mysqld.cc:
Intialize the "lowercase_filesystem" variable also when "lowercase_table_names" is 1
into moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-merge
configure.in:
Auto merged
man/Makefile.am:
Auto merged
mysys/my_bitmap.c:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
sql/field.cc:
Auto merged
sql/sql_locale.cc:
Auto merged
support-files/mysql.spec.sh:
Auto merged
mysql-test/t/mysqlbinlog.test:
Manual merge.
sql/sql_select.cc:
Manual merge.
difference between timestamp in values of months and quarters.)
Problem: when requesting timestamp diff in months or quarters, it
would only examine the date (and not the time) for the comparison.
Solution: increased precision of comparison.
mysql-test/r/func_time.result:
Additional test results
mysql-test/t/func_time.test:
Additional tests
sql/item_timefunc.cc:
Fix for timestamp diff issue. Added microsecond precision when
comparing months or quarters; previously only examined date for
these comparisons.
Converted "udf_example.cc" to C, avoids C++ runtime lib dependency (bug#21336)
sql/Makefile.am:
"udf_example.cc" converted to C, avoids C++ runtime lib dependency (bug#21336)
mysql-test/t/udf.test:
"udf_example.cc" converted to C, avoids C++ runtime lib dependency (bug#21336)
sql/udf_example.c:
Changes to be strict ansi, except long long
into mysql.com:/Users/kent/mysql/bk/mysql-4.1
configure.in:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
support-files/mysql.spec.sh:
SCCS merged
Man page for mysqld command move to section 8 (bug#21220)
configure.in:
Man page for mysqld command move to section 8 (bug#21220)
man/Makefile.am:
Man page for mysqld command move to section 8 (bug#21220)
Man page for "mysqld" command move to section 8 (bug#21220)
scripts/make_binary_distribution.sh:
Man page for "mysqld" command move to section 8 (bug#21220)
into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
netware/BUILD/mwasmnlm:
Auto merged
netware/BUILD/mwccnlm:
Auto merged
netware/BUILD/mwldnlm:
Auto merged
Renamed variable, to avoid name clash with macro "rem_size"
on AIX 5.3 and "/usr/include/sys/xmem.h" (bug#17648)
asn.cpp, asn.hpp:
Avoid name clash with NAME_MAX
sql/sql_select.cc:
Renamed variable, to avoid name clash with macro "rem_size"
on AIX 5.3 and "/usr/include/sys/xmem.h" (bug#17648)
extra/yassl/taocrypt/src/asn.cpp:
Avoid name clash with NAME_MAX
extra/yassl/taocrypt/include/asn.hpp:
Avoid name clash with NAME_MAX
into rama.(none):/home/jimw/my/mysql-5.0-16881
client/mysql.cc:
Auto merged
mysql-test/r/date_formats.result:
Auto merged
mysql-test/r/mysql.result:
Auto merged
mysql-test/r/type_ranges.result:
Auto merged
mysql-test/t/mysql.test:
Auto merged
sql/item_strfunc.cc:
Auto merged
sql/item_strfunc.h:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_yacc.yy:
Auto merged
'conc_sys' test
Concurrent execution of SELECT involing at least two INFORMATION_SCHEMA
tables, DROP DATABASE statement and DROP TABLE statement could have
resulted in stalled connection for this SELECT statement.
The problem was that for the first query of a join there was a race
between select from I_S.TABLES and DROP DATABASE, and the error (no
such database) was prepared to be send to the client, but the join
processing was continued. On second query to I_S.COLUMNS there was a
race with DROP TABLE, but this error (no such table) was downgraded to
warning, and thd->net.report_error was reset. And so neither result
nor error was sent to the client.
The solution is to stop join processing once it is clear we are going
to report a error, and also to downgrade to warnings file system errors
like 'no such database' (unless we are in the 'SHOW' command), because
I_S is designed not to use locks and the query to I_S should not abort
if something is dropped in the middle.
No test case is provided since this bug is a result of a race, and is
timing dependant. But we test that plain SHOW TABLES and SHOW COLUMNS
give a error if there is no such database or a table respectively.
mysql-test/r/show_check.result:
Add result for the test that SHOW TABLES and SHOW COLUMNS give a error
if there is no such database or a table respectively.
mysql-test/t/show_check.test:
Add test case that SHOW TABLES and SHOW COLUMNS give a error
if there is no such database or a table respectively.
sql/mysql_priv.h:
Remove prototype of mysql_find_files(), which is made static under
find_files() name.
sql/sql_show.cc:
Rename mysql_find_files() to find_files() and make it static.
Return FIND_FILES_OK for success, FIND_FILES_OOM for out of memory,
and FIND_FILES_DIR for directory reading error.
Downgrade error to warning in get_all_tables() if it is a
FIND_FILES_DIR error, and we are not in the 'SHOW' command.
Once 'result' is set to 1 in get_schema_tables_result(), there's no
need in continuing iterations, as we are about to return a error.
can be not replicable.
Now CREATE statements for writing in the binlog are created as follows:
- the beginning of the statement is re-created;
- the rest of the statement is copied from the original query.
The problem appears when there is a version-specific comment (produced by
mysqldump), started in the re-created part of the statement and closed in the
copied part -- there is closing comment-parenthesis, but there is no opening
one.
The proper fix could be to re-create original statement, but we can not
implement it in 5.0. So, for 5.0 the fix is just to cut closing
comment-parenthesis. This technique is also used for SHOW CREATE PROCEDURE
statement (so we are able to reuse existing code).
mysql-test/r/rpl_sp.result:
Updated result file.
mysql-test/r/rpl_trigger.result:
Updated result file.
mysql-test/r/rpl_view.result:
Updated result file.
mysql-test/t/rpl_sp.test:
Added test case for BUG#20438.
mysql-test/t/rpl_trigger.test:
Added test case for BUG#20438.
mysql-test/t/rpl_view.test:
Added test case for BUG#20438.
sql/sp.cc:
Trim comments at the end.
sql/sp_head.cc:
Moved this code to the separate function to be re-used.
sql/sql_lex.cc:
Added a new function.
sql/sql_lex.h:
Added a new function.
sql/sql_trigger.cc:
Trim comments at the end.
sql/sql_view.cc:
Trim comments at the end.
Fix for BUG#16676: Database CHARSET not used for stored procedures
The problem in BUG#16211 is that CHARSET-clause of the return type for
stored functions is just ignored.
The problem in BUG#16676 is that if character set is not explicitly
specified for sp-variable, the server character set is used instead
of the database one.
The fix has two parts:
- always store CHARSET-clause of the return type along with the
type definition in mysql.proc.returns column. "Always" means that
CHARSET-clause is appended even if it has not been explicitly
specified in CREATE FUNCTION statement (this affects BUG#16211 only).
Storing CHARSET-clause if it is not specified is essential to avoid
changing character set if the database character set is altered in
the future.
NOTE: this change is not backward compatible with the previous releases.
- use database default character set if CHARSET-clause is not explicitly
specified (this affects both BUG#16211 and BUG#16676).
NOTE: this also breaks backward compatibility.
mysql-test/r/mysqldump.result:
Updated result file.
mysql-test/r/sp.result:
Updated result file.
mysql-test/t/sp.test:
Provided test cases for BUG#16211, BUG#16676.
sql/mysql_priv.h:
Added two convenient functions for work with databases.
sql/sp.cc:
1. Add CHARSET-clause to CREATE-statement if it has been explicitly specified.
2. Polishing -- provided some comments.
sql/sp_head.cc:
Use database charset as default charset of sp-variable.
sql/sp_head.h:
Move init_sp_name() out of init_strings().
sql/sql_db.cc:
Two new functions created:
- load_db_opt_by_name();
- check_db_dir_existence();
sql/sql_show.cc:
Eliminate duplicated code by using
check_db_dir_existence() and load_db_opt_by_name()
sql/sql_table.cc:
Eliminate duplicated code by using
check_db_dir_existence() and load_db_opt_by_name()
sql/sql_yacc.yy:
Call sp_head::init_sp_name() to initialize stored routine name.
Too many cursors (more than 1024) could lead to memory corruption.
This affects both, stored routines and C API cursors, and the
threshold is per-server, not per-connection. Similarly, the
corruption could happen when the server was under heavy load
(executing more than 1024 simultaneous complex queries), and this is
the reason why this bug is fixed in 4.1, which doesn't support
cursors.
The corruption was caused by a bug in the temporary tables code, when
an attempt to create a table could lead to a write beyond allocated
space. Note, that only internal tables were affected (the tables
created internally by the server to resolve the query), not tables
created with CREATE TEMPORARY TABLE. Another pre-condition for the
bug is TRUE value of --temp-pool startup option, which, however, is a
default.
The cause of a bug was that random memory was overwritten in
bitmap_set_next() due to out-of-bound memory access.
mysys/my_bitmap.c:
Local 'bitmap_size' is measured in bytes, no need to multiply it by 8.
sql/sql_select.cc:
Clear the temp_pool_slot bit only if we have set it previously.
tests/mysql_client_test.c:
Add test case for bug#21206: memory corruption when too many cursors
are opened at once.
into moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-main
VC++Files/sql/mysqld.vcproj:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/sp.result:
Auto merged
mysql-test/r/warnings.result:
Auto merged
mysql-test/t/warnings-master.opt:
Auto merged
mysql-test/t/warnings.test:
Auto merged
sql/handler.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_parse.cc:
Auto merged