available and reduce the chance of failure. This should fix bug#28585
which is caused by the script being quite random in how it finds files it
requires and not giving very good feedback to the user about what went
wrong.
Also update make_binary_distribution so that it provides the correct path
to the required SQL scripts when generating mysql_install_db. The script
only previously worked because of the permissive behaviour which looked
around the current working directory before the "correct" location. This
could lead to severe problems if the user happened to run the script from
a location which contained older or even broken copies of the SQL scripts.
We now require either a complete binary release (and the mysql_install_db
script ran from inside the extracted archive), or an installed compiled
tree, as this is the only way we can be sure everything that we need is
available and ready to run.
While working on this fix, also clean up the mysql_install_db script a lot
to make it simpler, easier to read, and hopefully less prone to bugs in
the future.
scripts/make_binary_distribution.sh:
SQL files live in ./share not ./support-files in binary distribution.
scripts/mysql_install_db.sh:
Use a consistent shell indentation style.
to 150 or 107 characters for those messages which are generated
by the embedded server during release builds.
This fixes bug#16635:
Error messages wrong: absolute path names, "%s" format code
See the bug report or the changelog for "sql/share/english/errmsg.txt"
for instructions how to do that with other languages,
even at the customer site, and for the restrictions to keep.
sql/share/english/errmsg.txt:
The embedded server uses absolute path names in its error messages,
in the release build environment these exceed the 64 character limit
which the format strings for the error messages impose (bug#16635).
But when the messages are output, the server does the "printf()"
internally in a 256 character buffer; the constant text and the
expanded variables (strings, error number) must fit into this.
(If the buffer would overflow, a format specification will not be
expanded but just copied with its code, and the message output
will just contain '%s' or '%d' where a value is expected.)
So the string lengths are increased to 150 characters in those messages
which are issued by the embedded server during release tests
and contain 1 (one) path name,
but only to 107 in the "rename" message which contains 2 (two).
This solves bug#16635 for the release builds.
For other languages used by OEM customers, similar fixes may be needed,
but we cannot test them.
These fixes can be done even in a binary installation at the customer site
by following these steps:
cd <<install-root>>/share
$EDITOR <<lang>>/errmsg.txt
../../bin/comp_err -C./charsets/ <<lang>>/errmsg.txt <<lang>>/errmsg.sys
and then restarting the server.
the master but on the slave
MySQL can decide to "downgrade" a INSERT DELAYED statement
to normal insert in certain situations.
One such situation is when the slave is replaying a
replication feed.
However INSERT DELAYED is logged even if there're no updates
whereas the NORMAL INSERT is not logged in such cases.
Fixed by always logging a "downgraded" INSERT DELAYED: even
if there were no updates.
mysql-test/r/rpl_insert_delayed.result:
Bug #29571: test case
mysql-test/t/rpl_insert_delayed.test:
Bug #29571: test case
sql/sql_insert.cc:
Bug #29571: log INSERT DELAYED even if it was
"downgraded" to INSERT (and there were no updates)
sql/ha_federated.cc:
remote_error_number is set to -1 when an error was already reported
with my_error(). ER(-1) will also cause a crash on 64bit arch and only
worked on 32bit arch by luck
into gleb.loc:/home/uchum/work/bk/5.0-opt
mysql-test/t/create.test:
Auto merged
sql/field.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/create.result:
Merge with 5.0 (main).
internal ones (like those of GROUP BY): fixing the --help text.
sql/mysqld.cc:
tmp_table_size is not about user-created temporary tables, only
internal ones (like those of GROUP BY)
"Federated Denial of Service"
Federated storage engine used to attempt to open connections within
the ::create() and ::open() methods which are invoked while LOCK_open
mutex is being held by mysqld. As a result, no other client sessions
can open tables while Federated is attempting to open a connection.
Long DNS lookup times would stall mysqld's operation and a rogue
connection string which connects to a remote server which simply
stalls during handshake can stall mysqld for a much longer period of
time.
This patch moves the opening of the connection much later, when the
federated actually issues queries, by which time the LOCK_open mutex is
no longer being held.
mysql-test/r/federated.result:
change of test/results due to patch for bug25679
mysql-test/t/federated.test:
change of test/results due to patch for bug25679
sql/ha_federated.cc:
bug25679
remove function check_foreign_fata_source()
ha_federated::open() no longer opens the federated connection.
ha_federated::create() no longer opens and tests connection.
ha_federated::real_connect() opens connection and tests presence of table.
ha_federated::real_query() sends query, calling real_connect() if neccessary.
sql/ha_federated.h:
bug25679
new methods real_query() and real_connect()
- Sign executables with MySQL AB security certificate.
BitKeeper/etc/ignore:
Bug#24732 Executables do not include Vista manifests
- Ignore security catalog descriptions
CMakeLists.txt:
Bug#24732 Executables do not include Vista manifests
- Search for additional tools necessary to embed, catalog and sign
targets.
win/README:
Bug#24732 Executables do not include Vista manifests
- Add internal only note to EMBED_MANIFESTS option.
win/create_manifest.js:
Bug#24732 Executables do not include Vista manifests
- Added publicKeyToken attribute to manifest.
win/mysql_manifest.cmake:
Bug#24732 Executables do not include Vista manifests
- Add additional commands to create security catalog and sign
targets.
- Add parameters to add appropiate hash attribute to manifest
and create security content description of the security catalog.
binary SHOW CREATE TABLE or SELECT FROM I_S.
The problem is that mysqldump generates incorrect dump for a table
with non-ASCII column name if the mysqldump's character set is
ASCII.
The fix is to:
1. Switch character_set_client for the mysqldump's connection
to binary before issuing SHOW CREATE TABLE statement in order
to avoid conversion.
2. Dump switch character_set_client statements to UTF8 and back
for CREATE TABLE statement.
client/mysqldump.c:
1. Switch character_set_client for the mysqldump's connection
to binary before issuing SHOW CREATE TABLE statement in order
to avoid conversion.
2. Dump switch character_set_client statements to UTF8 and back
for CREATE TABLE statement.
mysql-test/r/mysqldump-max.result:
Update result file.
mysql-test/r/mysqldump.result:
Update result file.
mysql-test/r/openssl_1.result:
Update result file.
mysql-test/r/show_check.result:
Update result file.
mysql-test/t/show_check.test:
Test case:
- create a table with non-ASCII column name;
- dump the database by mysqldump using ASCII character set;
- drop the database;
- load the dump;
- check that the table has been re-created properly.
Note datadict files do not include wrong is_updatable wrong value
as a result of bug 30020.
mysql-test/suite/funcs_1/datadict/datadict_master.inc:
Updated test file
mysql-test/suite/funcs_1/r/innodb__datadict.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_func_view.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_0102.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_08.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_trig_09.result:
Updated test file
mysql-test/suite/funcs_1/r/innodb_views.result:
Updated test file
mysql-test/suite/funcs_1/r/memory__datadict.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_func_view.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_trig_0102.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_trig_08.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_trig_09.result:
Updated test file
mysql-test/suite/funcs_1/r/memory_views.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam__datadict.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_func_view.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_0102.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_08.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_trig_09.result:
Updated test file
mysql-test/suite/funcs_1/r/myisam_views.result:
Updated test file
mysql-test/suite/funcs_1/triggers/triggers_0102.inc:
Updated test file
mysql-test/suite/funcs_1/views/func_view.inc:
Updated test file
When the SQL_BIG_RESULT flag is specified SELECT should store items from the
select list in the filesort data and use them when sending to a client.
The get_addon_fields function is responsible for creating necessary structures
for that. But this function was allowed to do so only for SELECT and
INSERT .. SELECT queries. This makes the SQL_BIG_RESULT useless for
the CREATE .. SELECT queries.
Now the get_addon_fields allows storing select list items in the filesort
data for the CREATE .. SELECT queries.
mysql-test/t/create.test:
Added a test case for the bug#15130: CREATE .. SELECT was denied to use
advantages of the SQL_BIG_RESULT.
mysql-test/r/create.result:
Added a test case for the bug#15130: CREATE .. SELECT was denied to use
advantages of the SQL_BIG_RESULT.
sql/filesort.cc:
Bug#15130: CREATE .. SELECT was denied to use advantages of the SQL_BIG_RESULT.
Now the get_addon_fields allows storing select list items in the filesort
data for the CREATE .. SELECT queries.
"getGeneratedKeys() does not work with FEDERATED table"
mysql_insert() expected the storage engine to update the row data
during the write_row() operation with the value of the new auto-
increment field. The field must be updated when only one row has
been inserted as mysql_insert() would ignore the thd->last_insert.
This patch implements HA_STATUS_AUTO support in ha_federated::info()
and ensures that ha_federated::write_row() does update the row's
auto-increment value.
The test case was written in C as the protocol's 'id' value is
accessible through libmysqlclient and not via SQL statements.
mysql-test-run.pl was extended to enable running the test binary.
mysql-test/mysql-test-run.pl:
bug25714
implement support to run C test for bug25714
sql/ha_federated.cc:
bug25714
The storage engine instance property auto_increment_value was not
being set.
mysql_insert() requires that the storage engine updates the row with
the auto-increment value, especially when only inserting one row.
Implement support for ha_federated::info(HA_STATUS_AUTO)
tests/Makefile.am:
bug25714
build C test for bug
mysql-test/include/have_bug25714.inc:
New BitKeeper file ``mysql-test/include/have_bug25714.inc''
mysql-test/r/federated_bug_25714.result:
New BitKeeper file ``mysql-test/r/federated_bug_25714.result''
mysql-test/r/have_bug25714.require:
New BitKeeper file ``mysql-test/r/have_bug25714.require''
mysql-test/t/federated_bug_25714.test:
New BitKeeper file ``mysql-test/t/federated_bug_25714.test''
tests/bug25714.c:
New BitKeeper file ``tests/bug25714.c''
In sql/sql_yacc.yy, use the %prec construct at the end of rule join_table
sql/sql_yacc.yy:
In sql/sql_yacc.yy, use the %prec construct at the end of rule join_table
into magare.gmz:/home/kgeorge/mysql/autopush/B29644-5.0-opt
sql/ha_innodb.cc:
Auto merged
sql/sql_base.cc:
Auto merged
mysql-test/r/innodb_mysql.result:
5.0-opt merge
mysql-test/t/innodb_mysql.test:
5.0-opt merge
Limit the fix for bug 28591 to InnoDB only
sql/sql_select.cc:
Limit the fix for bug 28591 to InnoDB only
sql/table.cc:
Limit the fix for bug 28591 to InnoDB only
If a primary key is defined over column c of enum type then
the EXPLAIN command for a look-up query of the form
SELECT * FROM t WHERE c=0
said that the query was with an impossible where condition though the
query correctly returned non-empty result set when the table indeed
contained rows with error empty strings for column c.
This kind of misbehavior was due to a bug in the function
Field_enum::store(longlong,bool) that erroneously returned 1 if
the the value to be stored was equal to 0.
Note that the method
Field_enum::store(const char *from,uint length,CHARSET_INFO *cs)
correctly returned 0 if a value of the error empty string
was stored.
mysql-test/r/type_enum.result:
Added a test case for bug #29661.
mysql-test/t/type_enum.test:
Added a test case for bug #29661.
sql/field.cc:
Fixed bug #29611.
If a primary key was defined over column c of enum type then
the EXPLAIN command for a look-up query of the form
SELECT * FROM t WHERE c=0
said that the query was with an impossible where condition though the
query correctly returned non-empty result set when the table indeed
contained rows with error empty strings for column c.
This kind of misbehavior was due to a bug in the function
Field_enum::store(longlong,bool) that erroneously returned 1 if
the the value to be stored was equal to 0.
Note that the method
Field_enum::store(const char *from,uint length,CHARSET_INFO *cs)
correctly returned 0 if a value of the error empty string
was stored.
into magare.gmz:/home/kgeorge/mysql/autopush/B28951-5.0-opt
mysql-test/t/innodb_mysql.test:
Auto merged
sql/sql_select.cc:
Auto merged
sql/table.cc:
Auto merged
mysql-test/r/innodb_mysql.result:
merge of 5.0-opt
Additional test case fix for bug #29338.
mysql-test/t/sp.test:
Additional test case fix for bug #29338.
mysql-test/r/sp.result:
Additional test case fix for bug #29338.
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29911
mysql-test/t/having.test:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/having.result:
SCCS merged
into bodhi.(none):/opt/local/work/mysql-5.0-runtime
mysql-test/r/create.result:
Auto merged
mysql-test/t/create.test:
Auto merged
sql/sql_class.h:
Auto merged
This bug manifested itself for join queries with GROUP BY and HAVING clauses
whose SELECT lists contained DISTINCT. It occurred when the optimizer could
deduce that the result set would have not more than one row.
The bug could lead to wrong result sets for queries of this type because
HAVING conditions were erroneously ignored in some cases in the function
remove_duplicates.
mysql-test/r/having.result:
Added a test case for bug #29911.
mysql-test/t/having.test:
Added a test case for bug #29911.
into mysql.com:/home/kent/bk/tmp3/mysql-5.0-build
libmysql/libmysql.c:
Auto merged
scripts/make_binary_distribution.sh:
Auto merged
sql/field.cc:
Auto merged
After dumping triggers mysqldump copied
the value of the OLD_SQL_MODE variable to the SQL_MODE
variable. If the --compact option of the mysqldump was
not set the OLD_SQL_MODE variable had the value
of the uninitialized SQL_MODE variable. So
usually the NO_AUTO_VALUE_ON_ZERO option of the
SQL_MODE variable was discarded.
This fix is for non-"--compact" mode of the mysqldump,
because mysqldump --compact never set SQL_MODE to the
value of NO_AUTO_VALUE_ON_ZERO.
The dump_triggers_for_table function has been modified
to restore previous value of the SQL_MODE variable after
dumping triggers using the SAVE_SQL_MODE temporary
variable.
client/mysqldump.c:
Fixed bug #29788.
The dump_triggers_for_table function has been modified
to restore previous value of the SQL_MODE variable after
dumping triggers using the SAVE_SQL_MODE temporary
variable.
mysql-test/r/mysqldump.result:
Updated test case for bug #29788.
mysql-test/t/mysqldump.test:
Updated test case for bug #29788.
ORDER BY primary_key on InnoDB table
Queries that use an InnoDB secondary index to retrieve
data don't need to sort in case of ORDER BY primary key
if the secondary index is compared to constant(s).
They can also skip sorting if ORDER BY contains both the
the secondary key parts and the primary key parts (in
that order).
This is because InnoDB returns the rows in order of the
primary key for rows with the same values of the secondary
key columns.
Fixed by preventing temp table sort for the qualifying
queries.
mysql-test/r/innodb_mysql.result:
Bug #28591: test case
mysql-test/t/innodb_mysql.test:
Bug #28591: test case
sql/sql_select.cc:
Bug #28591: Use the primary key as suffix when testing
if the key can be used for ORDER BY on supporting engines.
sql/table.cc:
Bug #28591: can use the primary key
as a suffix for the secondary keys