"alter table from MyISAM to MERGE lost data without errors and warnings"
Add new handlerton flag which prevent user from altering table storage
engine to storage engines which would lose data. Both 'blackhole' and
'merge' are marked with the new flag.
Tests included.
mysql-test/r/blackhole.result:
test for bug#10952
mysql-test/r/merge.result:
test for bug#10952
mysql-test/t/blackhole.test:
test for bug#10952
mysql-test/t/merge.test:
test for bug#10952
sql/ha_blackhole.cc:
Bug#10952
shouldn't be able to alter a table into a blackhole
sql/ha_myisammrg.cc:
Bug#10952
shouldn't be able to alter a table into a merge
sql/handler.h:
Bug#10952
new handlerton flag
sql/sql_table.cc:
Bug#10952
If alter is changing engine, check if new engine allows creating table
via ALTER statement.
Binlog lacks encoding info about DROPped temporary table.
Idea of the fix is to switch temporary to system_charset_info when a temporary table
is DROPped for binlog. Since that is the server, that automatically, but not the client, who generates the query
the binlog should be updated on the server's encoding for the coming DROP.
The `write_binlog_with_system_charset()' is introduced to replace similar problematic places in the code.
mysql-test/r/drop_temp_table.result:
results changed
mysql-test/r/mix_innodb_myisam_binlog.result:
results changed
mysql-test/r/mysqlbinlog.result:
results changed
mysql-test/r/rpl_temporary.result:
results changed
mysql-test/t/mysqlbinlog.test:
Check roll-forward recovery from binlog where there are DROP temporary tables created
in koi8r.
mysql-test/t/rpl_temporary.test:
Check slave digests binlog with DROP temporary tables created in koi8r.
sql/mysql_priv.h:
`write_binlog_with_system_charset()' is added to be called when a binlog event
is created "implicitly" like DROP temporary table is case of closing connection.
sql/sql_base.cc:
Idea of the fix is to switch temporary to system_charset_info when a temporary table
is DROPped for binlog. Since that is the server, not the client, who generates the query
the binlog should be updated on server's encoding for the coming DROP.
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.1-new
BitKeeper/deleted/.del-changelog-4.0.xml~8f56ee8a913e848b:
Auto merged
BitKeeper/deleted/.del-changelog-4.1.xml~8aa496ebed09d868:
Auto merged
BitKeeper/deleted/.del-changelog-5.0.xml~f4c50926ccdd7434:
Auto merged
BitKeeper/deleted/.del-client-req.pem~efd482e1d290d4d8:
Auto merged
BitKeeper/deleted/.del-server-req.pem~16301893cacf1be4:
Auto merged
client/mysql.cc:
Auto merged
configure.in:
Auto merged
BitKeeper/deleted/.del-Makefile.am~de166d6fcac3b9b6:
Auto merged
BitKeeper/deleted/.del-NOTES~e926d3e6929ac052:
Auto merged
client/mysqldump.c:
Auto merged
client/mysqlimport.c:
Auto merged
client/mysqltest.c:
Auto merged
include/mysql.h:
Auto merged
libmysql/libmysql.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/r/auto_increment.result:
Auto merged
mysql-test/r/date_formats.result:
Auto merged
mysql-test/r/func_misc.result:
Auto merged
mysql-test/r/gis-rtree.result:
Auto merged
mysql-test/r/information_schema.result:
Auto merged
mysql-test/r/ndb_condition_pushdown.result:
Auto merged
mysql-test/r/symlink.result:
Auto merged
mysql-test/std_data/cacert.pem:
Auto merged
mysql-test/std_data/client-cert.pem:
Auto merged
mysql-test/std_data/client-key.pem:
Auto merged
mysql-test/std_data/server-cert.pem:
Auto merged
mysql-test/std_data/server-key.pem:
Auto merged
mysql-test/t/date_formats.test:
Auto merged
mysql-test/t/having.test:
Auto merged
mysql-test/t/information_schema.test:
Auto merged
mysql-test/t/ndb_condition_pushdown.test:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_timefunc.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/set_var.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_acl.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql-common/client.c:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_show.cc:
Auto merged
storage/ndb/include/ndbapi/NdbOperation.hpp:
Auto merged
storage/ndb/include/util/NdbSqlUtil.hpp:
Auto merged
storage/ndb/src/common/util/NdbSqlUtil.cpp:
Auto merged
storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp:
Auto merged
vio/vio.c:
Auto merged
client/client_priv.h:
manual merge
include/violite.h:
Automatic
mysql-test/Makefile.am:
manual merge
mysql-test/r/mysqldump.result:
Automatic
mysql-test/r/rpl_user_variables.result:
Manual merge (diff is because lars removed displaying of binlog)
mysql-test/t/disabled.def:
manual merge
mysql-test/t/mysqldump.test:
manual merge
mysql-test/t/rpl_user_variables.test:
manual merge (Changes becasue of lars removed binlog logging)
sql/mysqld.cc:
manual merge
vio/viossl.c:
manual merge
vio/viosslfactories.c:
manual merge
client/client_priv.h.rej:
merge 5.0 -> 5.1
When converting DISTINCT to GROUP BY where the columns are from the covering
index and they are quoted twice in the SELECT list the optimizer is creating
improper processing sequence. This is because of the fact that the columns
of the covering index are not recognized as such and treated as non-index
columns.
Generally speaking duplicate columns can safely be removed from the GROUP
BY/DISTINCT list because this will not add or remove new rows in the
resulting set. Duplicates can be removed even if they are not consecutive
(as is the case for ORDER BY, where the duplicate columns can be removed
only if they are consecutive).
So we can safely transform "SELECT DISTINCT a,a FROM ... ORDER BY a" to
"SELECT a,a FROM ... GROUP BY a ORDER BY a" instead of
"SELECT a,a FROM .. GROUP BY a,a ORDER BY a". We can even transform
"SELECT DISTINCT a,b,a FROM ... ORDER BY a,b" to
"SELECT a,b,a FROM ... GROUP BY a,b ORDER BY a,b".
The fix to this bug consists of checking for duplicate columns in the SELECT
list when constructing the GROUP BY list in transforming DISTINCT to GROUP
BY and skipping the ones that are already in.
mysql-test/r/distinct.result:
test case for the bug without loose index scan
mysql-test/r/group_min_max.result:
test case for the bug
mysql-test/t/distinct.test:
test case for the bug without loose index scan
mysql-test/t/group_min_max.test:
test case for the bug
sql/sql_select.cc:
duplicates check and removal
into mysql.com:/home/dlenev/mysql-5.0-bg12472
sql/mysql_priv.h:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_insert.cc:
Auto merged
sql/sql_table.cc:
Auto merged
mysql-test/r/sp.result:
Manual merge.
mysql-test/t/sp.test:
Manual merge.
or implicitly uses stored function gives "Table not locked" error'
CREATE TABLE ... SELECT ... statement which was explicitly or implicitly
(through view) using stored function gave "Table not locked" error.
The actual bug resides in the current locking scheme of CREATE TABLE SELECT
code, which first opens and locks tables of the SELECT statement itself,
and then, having SELECT tables locked, creates the .FRM, opens the .FRM and
acquires lock on it. This scheme opens a possibility for a deadlock, which
was present and ignored since version 3.23 or earlier. This scheme also
conflicts with the invariant of the prelocking algorithm -- no table can
be open and locked while there are tables locked in prelocked mode.
The patch makes an exception for this invariant when doing CREATE TABLE ...
SELECT, thus extending the possibility of a deadlock to the prelocked mode.
We can't supply a better fix in 5.0.
mysql-test/r/sp.result:
Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which
explicitly or implicitly uses stored function gives "Table not locked" error'
mysql-test/t/sp.test:
Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which
explicitly or implicitly uses stored function gives "Table not locked" error'
sql/mysql_priv.h:
Added flag which can be passed to open_table() routine in order to ignore
set of locked tables and prelocked mode.
We don't need declaration of create_table_from_items() any longer as it was
moved into sql_insert.cc and made static.
sql/sql_base.cc:
open_table():
Added flag which allows open table ignoring set of locked tables and
prelocked mode.
sql/sql_insert.cc:
Moved create_table_from_items() from sql_table.cc to sql_insert.cc as it was
not used outside of sql_insert.cc and contains code which is specific for
CREATE TABLE ... SELECT.
Also now when we are executing CREATE TABLE ... SELECT ... statement which
SELECT part requires execution in prelocked mode we ignore set of locked
tables in order to get access to the table we just have created.
We probably don't want to do this if we are under real LOCK TABLES since
it will widen window for deadlock too much.
sql/sql_table.cc:
Moved create_table_from_items() routine into sql_insert.cc, since it was not
used anywhere outside of this file and contains logic which is specific for
CREATE TABLE ... SELECT statement.
into neptunus.(none):/home/msvensson/mysql/mysql-5.0-maint
client/mysqltest.c:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
sql/mysql_priv.h:
Auto merged
mysql-test/r/ndb_partition_key.result:
New test case to ensure path in code is tested
mysql-test/r/partition.result:
New test case for bug
mysql-test/t/ndb_partition_key.test:
New test case to ensure path in code is tested
mysql-test/t/partition.test:
New test case for bug
sql/sql_partition.cc:
Use stack variable, not variable on lex object, caused havoc when doing a create index.
sql/sql_table.cc:
Editorial changes + added a comment to a path in code I didn't remember myself what it was good for.
Bug #19606: ssl variables are not displayed in show variables
Bug #19616: log_queries_not_using_indexes is not listed in show variables
Make basedir, datadir, tmpdir, log_queries_not_using_indexes, ssl_ca,
ssl_capath, ssl_cert, ssl_cipher, and ssl_key all available both from
SHOW VARIABLES and as @@variables.
As a side-effect of this change, log_queries_not_using_indexes can
be changed at runtime (but only globally, not per-connection).
include/sslopt-longopts.h:
Put options in alphabetical order
include/sslopt-vars.h:
Allow define of SSL_VARS_NOT_STATIC to prevent variables from not being
made static.
mysql-test/r/variables.result:
Add new results
mysql-test/t/variables.test:
Add new regression tests
sql/mysql_priv.h:
Add extern for opt_log_queries_not_using_indexes
sql/mysqld.cc:
Handle opt_log_queries_not_using_indexes as extern, and define
SSL_VARS_NO_STATIC so they can be accessed outside of mysqld.cc
sql/set_var.cc:
Handle basedir, datadir, tmpdir, log_queries_not_using_indexes, and
various ssl settings so that they are accessible as server variables
and listed in SHOW VARIABLES.
sql/set_var.h:
Add new sys_var_constr_str_ptr class, for when we have a system variable
that is only set via the command-line that is a pointer to a string.
into zim.(none):/home/brian/mysql/dep-5.1
sql/lex.h:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sp_head.cc:
Auto merged
sql/sql_lex.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_yacc.yy:
Auto merged
Added support for UPDATE.
Some minor fixes.
mysql-test/t/rpl_row_tabledefs_2myisam.test:
Rename: mysql-test/t/rpl_row_tabledefs.test -> mysql-test/t/rpl_row_tabledefs_2myisam.test
mysql-test/extra/rpl_tests/rpl_row_tabledefs.test:
Extending test to ensure that there is one more null byte on slave than
it is on the master.
Some cleanup.
sql/field.cc:
Added support to find the last null byte for a field.
sql/field.h:
Added support to find the last null byte for a field.
sql/log_event.cc:
unpack_row() will now deduce the number of null bytes on the slave
and use that when copying the null bytes from the row.
Factored out code to copy "extra" record fields into separate function.
Used that function to copy the "extra" fields when updating a row as well.
mysql-test/r/rpl_row_tabledefs_2myisam.result:
Result change
mysql-test/r/rpl_row_tabledefs_3innodb.result:
New BitKeeper file ``mysql-test/r/rpl_row_tabledefs_3innodb.result''
mysql-test/r/rpl_row_tabledefs_7ndb.result:
New BitKeeper file ``mysql-test/r/rpl_row_tabledefs_7ndb.result''
mysql-test/t/rpl_row_tabledefs_3innodb.test:
New BitKeeper file ``mysql-test/t/rpl_row_tabledefs_3innodb.test''
mysql-test/r/ndb_alter_table.result:
bug#14509, part 1
move cached autoincr range from Ndb object to local dict cache (Ndb_local_table_info)
remove private methods get/read/setTupleId by table name or table id
mysql-test/t/ndb_alter_table.test:
bug#14509, part 1
move cached autoincr range from Ndb object to local dict cache (Ndb_local_table_info)
remove private methods get/read/setTupleId by table name or table id
ndb/include/ndbapi/Ndb.hpp:
bug#14509, part 1
move cached autoincr range from Ndb object to local dict cache (Ndb_local_table_info)
remove private methods get/read/setTupleId by table name or table id
ndb/src/ndbapi/DictCache.cpp:
bug#14509, part 1
move cached autoincr range from Ndb object to local dict cache (Ndb_local_table_info)
remove private methods get/read/setTupleId by table name or table id
ndb/src/ndbapi/DictCache.hpp:
bug#14509, part 1
move cached autoincr range from Ndb object to local dict cache (Ndb_local_table_info)
remove private methods get/read/setTupleId by table name or table id
ndb/src/ndbapi/Ndb.cpp:
bug#14509, part 1
move cached autoincr range from Ndb object to local dict cache (Ndb_local_table_info)
remove private methods get/read/setTupleId by table name or table id
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
bug#14509, part 1
move cached autoincr range from Ndb object to local dict cache (Ndb_local_table_info)
remove private methods get/read/setTupleId by table name or table id
ndb/src/ndbapi/Ndbinit.cpp:
bug#14509, part 1
move cached autoincr range from Ndb object to local dict cache (Ndb_local_table_info)
remove private methods get/read/setTupleId by table name or table id
save global server variables before fiddling with them and restore them later
BitKeeper/deleted/.del-variables-master.opt~8a6cb6459b54545:
Delete: mysql-test/t/variables-master.opt
mysql-test/r/variables.result:
save and restore globals
mysql-test/t/variables.test:
save and restore globals
load_file() string-function should return NULL rather than throw an error if
the file doesn't exist, as per the manual.
mysql-test/t/outfile.test:
expect NULL rather than error if file given to load_file() doesn't exist
mysql-test/t/func_str.test:
show that load_file() will return NULL rather than throw an error
if file doesn't exist
mysql-test/r/outfile.result:
expect NULL rather than error if file given to load_file() doesn't exist
mysql-test/r/func_str.result:
expect NULL rather than error if file given to load_file() doesn't exist
sql/item_strfunc.cc:
load_file() should return NULL as per the docs if file not found,
rather than throw an error
into mysql.com:/usr_rh9/home/elkin.rh9/MySQL/Merge/5.0-bug19136
sql/item_func.cc:
Auto merged
sql/sql_select.cc:
Auto merged
mysql-test/r/rpl_user_variables.result:
manual merge use local
mysql-test/t/rpl_user_variables.test:
manual merge use version 5.0's "show binlog events from 98"
A query with a group by and having clauses could return a wrong
result set if the having condition contained a constant conjunct
evaluated to FALSE.
It happened because the pushdown condition for table with
grouping columns lost its constant conjuncts.
Pushdown conditions are always built by the function make_cond_for_table
that ignores constant conjuncts. This is apparently not correct when
constant false conjuncts are present.
mysql-test/r/having.result:
Added a test case for bug #14927.
mysql-test/t/having.test:
Added a test case for bug #14927.
sql/sql_lex.cc:
Fixed bug #14927.
Initialized fields for having conditions in st_select_lex::init_query().
sql/sql_lex.h:
Fixed bug #14927.
Added a field to restore having condititions for execution in SP and PS.
sql/sql_prepare.cc:
Fixed bug #14927.
Added code to restore havinf conditions for execution in SP and PS.
sql/sql_select.cc:
Fixed bug #14927.
Performed evaluation of constant expressions in having clauses.
If the having condition contains a constant conjunct that is always false
an empty result set is returned after the optimization phase.
In this case the corresponding EXPLAIN command now returns
"Impossible HAVING" in the last column.
The bug was as follows: When merge_key_fields() encounters "t.key=X OR t.key=Y" it will
try to join them into ref_or_null access via "t.key=X OR NULL". In order to make this
inference it checks if Y<=>NULL, ignoring the fact that value of Y may be not yet known.
The fix is that the check if Y<=>NULL is made only if value of Y is known (i.e. it is a
constant).
TODO: When merging to 5.0, replace used_tables() with const_item() everywhere in merge_key_fields().
mysql-test/r/innodb_mysql.result:
Testcase for BUG16798
mysql-test/t/innodb_mysql.test:
Testcase for BUG16798
sql/sql_select.cc:
BUG#16798: Inapplicable ref_or_null query plan and bad query result on random occasions
In merge_key_fields() don't call val->is_null() if the value of val is not known.
into mysql.com:/home/tomash/src/mysql_ab/mysql-5.0-merge
mysql-test/r/func_misc.result:
Manual merge of the fix for bug#16501.
mysql-test/t/func_misc.test:
Manual merge of the fix for bug#16501.
sql/item_func.cc:
Manual merge of the fix for bug#16501.
sql/sql_acl.cc:
For the fix of bug#16372, use local version, since the fix for 5.0 is
different, and will go in separate ChangeSet.
(Fixes core dump in rpl_failed_optimize.test)
Ensure we end active transcations if we do an admin command (like optimize, repair etc)
mysql-test/extra/rpl_tests/rpl_failed_optimize.test:
Added extra test + drop of table at end of test
mysql-test/lib/mtr_report.pl:
Fail if mysqld asserts or prints stack
mysql-test/mysql-test-run.sh:
Fail if mysqld asserts or prints stack
mysql-test/r/exampledb.result:
Cleanup of events_tests (as this caused a lot of problems if it didn't work)
mysql-test/r/innodb.result:
Extra test to see that we can do an optimize table on an active transaction
mysql-test/r/rpl_failed_optimize.result:
Added extra test + drop of table at end of test
mysql-test/t/exampledb.test:
Cleanup of events_tests (as this caused a lot of problems if it didn't work)
mysql-test/t/innodb.test:
Extra test to see that we can do an optimize table on an active transaction
sql/handler.cc:
Don't use row level logging on optimize or repair table.
sql/log.cc:
Simplify code (no logic changes)
sql/mysql_priv.h:
Added prototype
sql/sql_base.cc:
Better name for define
sql/sql_class.cc:
Indentation fix
sql/sql_parse.cc:
Make end_active_trans() global
sql/sql_table.cc:
Ensure we end active transcations if we do an admin command (like optimize, repair etc)
The reason of the bug is in that `get_var_with_binlog' performs missed
assingment of
the variables as side-effect. Doing that it eventually calls
`free_underlaid_joins' to pass as an argument `thd->lex->select_lex' of the lex
which belongs to the user query, not
to one which is emulated i.e SET @var1:=NULL.
`get_var_with_binlog' is refined to supply a temporary lex to sql_set_variables's stack.
mysql-test/r/rpl_user_variables.result:
results changed
mysql-test/t/rpl_user_variables.test:
a problematic query to be binlogged is added
sql/item_func.cc:
BUG#19136: Crashing log-bin and uninitialized user variables
The reason of the bug is in that how `get_var_with_binlog' performs missed
assingment of the variables: `free_underlaid_joins' gets as an argument `thd->lex->select_lex'
which belongs to the user query, not to one which is emulated i.e SET @var1:=NULL.
`get_var_with_binlog' is refined to supply a temporary lex to sql_set_variables's stack.
mysql-test/r/ndb_condition_pushdown.result:
bug#17421, changes NDB API pushdown LIKE arg to plain char
mysql-test/t/ndb_condition_pushdown.test:
bug#17421, changes NDB API pushdown LIKE arg to plain char
ndb/include/ndbapi/NdbOperation.hpp:
bug#17421, changes NDB API pushdown LIKE arg to plain char
ndb/include/util/NdbSqlUtil.hpp:
bug#17421, changes NDB API pushdown LIKE arg to plain char
ndb/src/common/util/NdbSqlUtil.cpp:
bug#17421, changes NDB API pushdown LIKE arg to plain char
into ua141d10.elisa.omakaista.fi:/home/my/bk/mysql-5.0
mysql-test/r/date_formats.result:
Auto merged
mysql-test/t/date_formats.test:
Auto merged
sql/item_timefunc.cc:
Merged from 4.1
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.1-new-ndb
mysql-test/t/disabled.def:
Auto merged
sql/ha_ndbcluster.cc:
Auto merged
sql/ha_ndbcluster_binlog.cc:
Auto merged
support-files/mysql.spec.sh:
Auto merged
into mysql.com:/home/my/mysql-5.1
mysql-test/lib/mtr_report.pl:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/r/subselect.result:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_test.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/sql_lex.cc:
manual merge