Commit graph

32195 commits

Author SHA1 Message Date
Nirbhay Choubey
8e476e6cbe MDEV#5534: mysql_tzinfo_to_sql generates wrong query
mysql_tzinfo_to_sql tries to set wsrep_replicate_myisam
as SESSION variable, while its a GLOBAL-only system variable,
and thus the resulting sql would fail to load.

Fixed by changing the scope to GLOBAL in the SET command.

Also added following include files to facilitate testing :
* include/have_wsrep.inc
* include/not_wsrep.inc
* include/have_wsrep_enabled.inc
2014-02-14 11:38:46 -05:00
Nirbhay Choubey
e0f0f5f6d0 Reverting the change erroneously got introduced during merge. 2014-02-10 23:54:18 -05:00
Nirbhay Choubey
4cb029b38b * Merged the missing revision 3934 from
codership-mysql/5.5 (missed in the last merge).
* Merged changes from Innodb to xtradb.
* Updated WSREP_PATCH_REVNO
2014-02-05 00:28:11 -05:00
Nirbhay Choubey
7ca53d9479 Merging revisions 3934..3944 from codership-mysql/5.5. 2014-02-03 22:55:46 -05:00
Nirbhay Choubey
ecc2c96c9d Merge of maria/5.5 into maria-5.5-galera.
bzr merge -r tag:mariadb-5.5.35 maria/5.5
2014-01-29 19:00:43 -05:00
Sergey Vojtovich
e1e5ce0da2 MDEV-5345 - Deadlock between mysql_change_user(), SHOW VARIABLES and
INSTALL PLUGIN

There was mixed lock order between LOCK_plugin, LOCK_global_system_variables
and LOCK_system_variables_hash. This patch ensures that write-lock on
LOCK_system_variables_hash doesn't intersect with LOCK_plugin.

Fixed by moving initialization/deinitialization of plugin options from
plugin_add()/plugin_del() to plugin_initialize()/plugin_deinitalize().
So that plugin options are handled without protection of LOCK_plugin.
2014-01-28 11:12:43 +04:00
Alexander Barkov
94868914b8 merge 5.3 -> 5.5 2014-01-28 13:00:50 +04:00
Alexander Barkov
f189ed5009 MDEV-5506 safe_mutex: Trying to lock unitialized mutex at safemalloc.c
on server shutdown after SELECT with CONVERT_TZ

It's wrong to return my_empty_string from val_str().
Removing my_empty_string. Using make_empty_result() instead.
2014-01-28 12:25:29 +04:00
Sergei Golubchik
4bf002d6a0 MDEV-5576 ALTER TABLE progress report > 100% 2014-01-27 20:50:32 +01:00
Alexander Barkov
7ea9d1e692 MDEV-5458 RQG hits 'sql/tztime.cc:799: my_time_t sec_since_epoch(...):
Assertion `mon > 0 && mon < 13' failed.'
2014-01-27 13:15:40 +04:00
Sergei Golubchik
90e2240869 MDEV-5461 Assertion `length <= column->length' fails in write_block_record with functions in select list, GROUP BY, ORDER BY
Old code in create_tmp_table(), that created an extra one-byte field (recinfo)
before every NULL-able grouping field (Field) in the tmp table, did not actually work.
Because the matching code in end_update(), that was supposed to update this byte,
was using a wrong offset, updating the first byte of the Field, not a byte before it.
Normally this wasn't an issue, because the Field value (written later in end_update)
was overwriting this byte anyway. But in this bug the Field was Field_null, with zero
length, so end_update() was overwriting the first byte of the following field.
And the following field was not-nullable constant, which was stored only once in
create_tmp_table and never updated later.

Fixed by removing the code that didn't do any useful work anyway.
2014-01-26 21:49:19 +01:00
Michael Widenius
680288873c Fix for MDEV-5168: MariaDB returns warnings for INSERT IGNORE
Added variable "OLD_MODE" that can be used to turn off the new behavior

mysql-test/r/insert.result:
  Added test case
mysql-test/r/mysqld--help.result:
  Added old_mode
mysql-test/suite/sys_vars/r/old_mode_basic.result:
  Added testing of new variable
mysql-test/suite/sys_vars/t/old_mode_basic.test:
  Added testing of new variable
mysql-test/t/insert.test:
  Added test case
sql/sql_class.h:
  Added bit flags for OLD_MODE
sql/sql_insert.cc:
  Disable duplicate key warnings for INSERT IGNORE of OLD_MODE NO_DUP_KEY_WARNINGS_WITH_IGNORE is used
sql/sql_show.cc:
  Don't show progress reporting on SHOW PROCESSLIST if OLD_MODE NO_PROGRESS_INFO is used
sql/sys_vars.cc:
  Added OLD_MODE
2014-01-26 21:48:42 +01:00
Michael Widenius
fb018850dc Fixed that setup_natural_join_row_types can safely be called twice
sql/item.h:
  Added cache for setup_natural_join_row_types
sql/sql_base.cc:
  Cache old value of first_name_resolution_table for next call.
  (It's not safe to try to recalculate the value as the join structure may have been changed by the optimizer)
2014-01-26 21:48:23 +01:00
Michael Widenius
6e699eb409 Fixed bug that I accidently introduced in mysql_tzinfo_to_sql
Added test cases

mysql-test/r/mysql_tzinfo_to_sql_symlink.result:
  Updated results
mysql-test/std_data/zoneinfo/garbage:
  test file
mysql-test/std_data/zoneinfo/ignored.tab:
  test file
mysql-test/t/mysql_tzinfo_to_sql_symlink.test:
  Added test cases for all options
sql/tztime.cc:
  Better error messages.
  Fixed wrong place for 'continue'
2014-01-26 21:47:31 +01:00
Alexander Barkov
0ad8eaeb56 Merge 5.3 -> 5.5 2014-01-27 15:05:23 +04:00
unknown
31249744fe merge 5.3->5.5 2014-01-26 16:41:15 +02:00
Sergey Petrunya
669c6620af [Backport to 5.3]
MDEV-5337: Wrong result in mariadb 5.5.32 with ORDER BY + LIMIT when 
index_condition_pushdown=on
- in test_if_skip_sort_order(), correct the condition under which
  we have the code that restores the previously pushed index condition.
2014-01-25 00:26:40 +04:00
Sergey Petrunya
c6de45584a Merge 2014-01-24 23:44:52 +04:00
Sergey Petrunya
e1f94a6985 MDEV-5337: Wrong result in mariadb 5.5.32 with ORDER BY + LIMIT when index_condition_pushdown=on
- in test_if_skip_sort_order(), correct the condition under which
  we have the code that restores the previously pushed index condition.
2014-01-24 23:40:48 +04:00
Michael Widenius
4d83f579da Fixed Mageia Bug 12355: mariadb produces warning messages while loading timezone information
- Warnings about wrong symlink messages or non-timezone files with '.tab' are now only given if run with --verbose
- Added long option handling
- Added --help, --verbose and --version options


sql/tztime.cc:
  Add usage of my_getopt, to get long options
2014-01-24 19:44:13 +02:00
Alexander Barkov
d106dc0597 MDEV-5504 Server crashes in String::length on SELECT with MONTHNAME, GROUP BY, ROLLUP
The crash happened because Item_func_monthname was derived from
Item_func_month, so Item_func_monthname::is_null() did not work fine.
Backporting a change from 5.5: Item_func_monthname is now derived from
Item_str_func.
2014-01-24 16:50:39 +04:00
Michael Widenius
d15b3386db Fix for MDEV-5531: double call procedure in one session - hard shutdown the server
Main fix was to not cache derivied tables as they may be temporary tables that are deleted before the next query.
This was a bit tricky as Item_field::fix_fields depended on cached_tables to be set to resolve some columns.



mysql-test/r/sp-bugs.result:
  Added test case
mysql-test/t/sp-bugs.test:
  Added test case
sql/item.cc:
  Fixed fix_outer_field to handle case where found field did not have in cached_table
  Idea is that if cached_table is not avaliable, use from_field->table->pos_in_table_list instead
sql/records.cc:
  Also accept INTERNAL_TMP_TABLE for memmap
sql/sql_base.cc:
  More DBUG_PRINT
  Fixed that setup_natural_join_row_types() is not run twice.
  Original code modified context->first_name_resolution_table also for second executions.
  This was wrong as this could give wrong results if some joins had been optimized away between calls.
sql/sql_derived.cc:
  Mark derived tables as internal temporary tables (INTERNAL_TMP_TABLE), not as NON_TRANSACTIONAL_TMP_TABLE.
  This is more correct as the tables are not visible by the end user.
sql/sql_insert.cc:
  Reset pos_in_table_list before calling fix_fields.
  One of the consequences of the change of not caching all generated tables in Item_ident is that
  pos_in_table_list needs to be correct in calls to fix_fields.
sql/sql_lex.cc:
  More DBUG_PRINT
sql/sql_parse.cc:
  Don't cache derivied tables as they may be temporary tables that are deleted before the next query
sql/sql_select.cc:
  Reset table_vector. This was required as some code checked the vector to see if temporary tables had already been created.
sql/table.cc:
  Mark tables with field translations as cacheable (as these will not disapper between stmt executions.
2014-01-24 14:50:18 +02:00
Alexey Botchkov
8f3e1bfc92 MDEV-5419 no audit events for warnings converted to errors in the strict mode.
Plugins get error notifications only when my_message_sql() is called.
        But errors are launched with THD::raise_condition() calls in other
        places. These are push_warning(), implementations of SIGNAL and
        RESIGNAL commands.
        So it makes sence to notify plugins there in THD::raise_condition().
2014-01-23 22:21:02 +04:00
Sergey Petrunya
519c7305ac MDEV-5368: Server crashes in Item_in_subselect::optimize on ...
- convert_subq_to_sj() must connect child select's tables into 
  parent select's TABLE_LIST::next_local chain.  
- The problem was that it took child's leaf_tables.head() which
  is different. This could cause certain tables (in this bug's case,
  child select's non-merged semi-join) not to be present in 
  TABLE_LIST::next_local chain.  Which would cause non-merged semi-join
  not to be initialized in setup_tables(), which would lead to 
  NULL pointer dereference.
2014-01-23 21:26:04 +04:00
Sergey Petrunya
eb88c905e6 Merge 2014-01-23 21:12:37 +04:00
Sergey Petrunya
f0fa66a26d MDEV-5368: Server crashes in Item_in_subselect::optimize on ...
- convert_subq_to_sj() must connect child select's tables into 
  parent select's TABLE_LIST::next_local chain.  
- The problem was that it took child's leaf_tables.head() which
  is different. This could cause certain tables (in this bug's case,
  child select's non-merged semi-join) not to be present in 
  TABLE_LIST::next_local chain.  Which would cause non-merged semi-join
  not to be initialized in setup_tables(), which would lead to 
  NULL pointer dereference.
2014-01-23 15:41:51 +04:00
unknown
d9cb1352c8 merge of MDEV-5356 5.1->5.3 (with more fixes and test suite).
THD::thd->activate_stmt_arena_if_needed() should be used to temporary activating statement arena instead of direct usage of THD::set_n_backup_active_arena() because possible such scenario:
  1) func1 saves current arena and activates copy1 of statement arena
  2) func2 saves copy1 of statement arena setup by func1 and activates copy2
  3) some changes made for copy 2
  4) func2 stores changed copy2 back to statenet arena and activates copy1
  5) func1 store unchanged copy1 back to statemnt arena (rewrite changed copy 2 so changes become lost) and activates arena which was before.
2014-01-23 12:05:10 +02:00
Sergei Golubchik
2ff76f6750 MDEV-5406 add index to an innodb table with a uniqueness violation crashes mysqld
After table->file->add_index() in mysql_alter_table() the table in the engine
has the intermediate temporary structure, it's neither the original nor the
final table structure (it'll be final after successful table->file->drop_index()
call). So, when add_index() fails with a unique key violation, we cannot simply
get the failed key number and easily map it to the key name and key structure via
table->key_info[key_no].

For now we'll create this "intermediate temporary structure", emulating InnoDB
internal rules.

This bug and the fix will go away in 10.0 that uses completely different online
alter table code.

mysql-test/t/alter_table_trans.test:
  mdev:5406
2014-01-23 11:04:59 +01:00
unknown
5f5f7befe3 MDEV-5356: Server crashes in Item_equal::contains on 2nd execution of a PS
THD::thd->activate_stmt_arena_if_needed() should be used to temporary activating statement arena instead of direct usage of THD::set_n_backup_active_arena() because possible such scenario:
  1) func1 saves current arena and activates copy1 of statement arena
  2) func2 saves copy1 of statement arena setup by func1 and activates copy2
  3) some changes made for copy 2
  4) func2 stores changed copy2 back to statenet arena and activates copy1
  5) func1 store unchanged copy1 back to statemnt arena (rewrite changed copy 2 so changes become lost) and activates arena which was before.
2014-01-23 11:11:01 +02:00
Sergei Golubchik
0cdf1573b6 MDEV-5421 Assertion `! is_set()' fails on INSERT IGNORE when a table has no partition for a value
make print_no_partition_found() to respect MYF(errflag)

mysql-test/suite/parts/t/insert_ignore-5421.test:
  mdev:5421
2014-01-23 00:03:05 +01:00
Sergei Golubchik
37d240ecf9 MySQL-5.5.35 merge 2014-01-22 15:29:36 +01:00
Sergei Golubchik
e3d9076910 remove an unused error message 2014-01-21 17:20:44 +01:00
Michael Widenius
04bee0af2e Fix for MDEV-5547: Bad error message when moving very old .frm files to MariaDB 5.5.
mysql_upgrade --help now also prints out --default options and variable values.
mysql_upgrade now prints permission errors.
mysql_upgrade doesn't print some non essential info if --silent is used.
Added handler error message about incompatible versions
Fixed that mysqlbug and mysql_install_db have the executable flag set.
Removed executable flag for some non executable files.
Changed in mysql_install_db askmonty.org to mariadb.com.
Ensured that all client executables prints --default options the same way.
Allow REPAIR ... USE_FRM for old .frm files if the are still compatible.
Extended shown error for storage engine messages.


client/mysql.cc:
  print_defaults() should be first (as in all other programs)
client/mysql_upgrade.c:
  --help now also prints out --default options and variable values
  Print out error if wrong permissions
  Don't print info if --silent
client/mysqladmin.cc:
  print_defaults() should be first (as in all other programs)
client/mysqlbinlog.cc:
  Added print_defaults() to --help
client/mysqlcheck.c:
  Added empty line in --help
client/mysqlimport.c:
  Added empty line in --help
client/mysqlshow.c:
  Made --help compatible
client/mysqlslap.c:
  Made --help compatible
client/mysqltest.cc:
  Added print_defaults() to --help
include/handler_ername.h:
  Added handler error message
include/my_base.h:
  Added handler error message
mysql-test/r/mysql_upgrade.result:
  Updated results
mysql-test/r/repair.result:
  Added test case for better error messages
mysql-test/std_data/host_old.MYD:
  Added test case for better error messages
mysql-test/std_data/host_old.MYI:
  Added test case for better error messages
mysql-test/std_data/host_old.frm:
  Added test case for better error messages
mysql-test/t/repair.test:
  Added test case for better error messages
mysys/my_handler_errors.h:
  Added handler error message
scripts/CMakeLists.txt:
  Fixed that mysqlbug and mysql_install_db have the executable flag set
scripts/mysql_install_db.sh:
  askmonty.org -> mariadb.com
sql/ha_partition.cc:
  Sometimes table_type() can be called for errors even if partition didn't manage to open any files
sql/handler.cc:
  Write clear text for not handled, but defined error messages.
sql/share/errmsg-utf8.txt:
  Extended shown error for storage engine messages
sql/sql_admin.cc:
  Allow REPAIR ... USE_FRM for old .frm files if the are still compatible
storage/myisam/ha_myisam.cc:
  Use new error message
2014-01-22 15:16:57 +02:00
Sergey Petrunya
5e02635eb8 MDEV-4974: memory leak in 5.5.32-MariaDB-1~wheezy-log
- When a JOIN has both "optimization tabs" (JOIN_TABs used to 
  read the base tables and do the join operation) and also
  has "execution tabs" (a JOIN_TAB that is to produce result set 
  that is sent to the client), do not forget to call JOIN_TAB::cleanup()
  for the execution JOIN_TAB.
2014-01-21 17:27:36 +04:00
unknown
b0aaf5c6f5 Merge 5.3->5.5 2014-01-15 16:07:50 +02:00
unknown
3aa370bb69 MDEV-5515: 2nd execution of a prepared statement returns wrong results
update_used_tables() should be called after handling derived tables in any case.
2014-01-13 21:30:42 +02:00
Nirbhay Choubey
9d5c3731be Fixes for some compiler warnings. 2014-01-09 23:22:10 -05:00
Nirbhay Choubey
31eaa90a6e Merging revision 3839..3932 from codership-mysql/5.5. 2014-01-09 14:54:57 -05:00
Michael Widenius
4e9a2d5469 Don't writing entries to slave log about binlog_checksum not existing on master if log_warnings is <=1.
This solves the issue of getting a lot of unnecessary errors logged on the slave when connecting to MySQL or an old MariaDB version.


sql/slave.cc:
  Don't write that binlog_checksum doesn't exists on the master if log_warnings <= 1
2014-01-05 15:21:58 +02:00
Michael Widenius
c050b5fdf9 Fixed MDEV-5424: SELECT using ORDER BY DESC and LIMIT produces unexpected results (InnoDB/XtraDB)
This only happend when using an ORDER BY on a primary key part, where all other key parts where constant.
Remove of duplicated expressions in ORDER BY (as the old code did this in some strange cases)


mysql-test/r/group_by.result:
  Fixed results to take into account that duplicate order by parts are now deleted
mysql-test/r/group_by_innodb.result:
  Ensure extended keys are on
mysql-test/r/innodb_ext_key.result:
  More tests
mysql-test/r/order_by.result:
  More tests
mysql-test/t/group_by.test:
  Fixed results to take into account that duplicate order by parts are now deleted
mysql-test/t/group_by_innodb.test:
  Ensure extended keys are on
mysql-test/t/innodb_ext_key.test:
  More tests
mysql-test/t/order_by.test:
  More tests
sql/sql_select.cc:
  Fixed bug where we looked at extended key parts when we shouldn't
  Remove of duplicated expressions in ORDER BY
sql/table.cc:
  Indentation fixes
2014-01-02 15:51:02 +02:00
unknown
1555f1801d make 5.1 compiling with modern gcc. 2013-12-20 12:35:47 +02:00
unknown
57400ee681 MDEV-5414: RAND() in a subselect : different behavior in MariaDB and MySQL
Materialization forced in case if rand() used in view or derived table to avoud several calls of rand for gting value of a field.

Fixed set variable uncachable flag from - it shouldbe a side effect not a random value.
2013-12-18 15:59:51 +02:00
Sergei Golubchik
50808b30d2 MDEV-5396 Assertion `Handlerton: r==0 ' failed (errno=0) on EXPLAIN with TokuDB tables
Fix EXPLAIN and CREATE SELECT to join_free() (and, thus, ha_index_end())
before ha_commit_trans().
2013-12-17 17:26:54 +01:00
Sergei Golubchik
e68bccc743 5.3 merge 2013-12-13 13:00:38 +01:00
Igor Babaev
3ec4296ec4 Fixed bug mdev-5410.
The fix for bug #27937 was incomplete: it did not handle correctly the queries
containing UNION with global ORDER BY in subselects.
2013-12-12 13:55:33 -08:00
Sergei Golubchik
c47dd98f90 backport from 10.0: "bugfix: MYSQL_THDVAR_STR plugins with PLUGIN_VAR_MEMALLOC didn't work
(PLUGIN_VAR_MEMALLOC is 0x8000 and cannot be saved in a char as such)"
2013-12-12 18:14:08 +01:00
Igor Babaev
fde2777b27 Another attempt to fix the memory leak of mdev-5400. 2013-12-11 10:13:08 -08:00
Nirbhay Choubey
48e83ba6f7 * Updated auto_increment_xxx_func.result to reflect the changes
made by https://bugs.launchpad.net/codership-mysql/+bug/587170

* Fix for some compiler errors/warnings.
2013-12-10 22:11:42 -05:00
Nirbhay Choubey
e1ed3dcebf MDEV#5407, MDEV#5386, MVED#4222
Problem: As, wsrep_provider is dynamic and can accept
a valid provider while server is running. Patch for
#4222 wrongly skips the initialization of binlog plugin
during server start, when wsrep provider is not specified.

In wsrep build, if opt_log_bin is not provided, we still
init binlog with wsrep_emulate_bin_log ON.

Fix: This patch fixes #4222 by adding a check to return
from binlog_savepoint_set without proceeding further if
wsrep_on is OFF/false.

This patch also fixes MDEV#5407 and reverts changes pushed
for MDEV#5386 (no longer valid).
2013-12-10 11:30:23 -05:00
Jan Lindström
ded756c90d MDEV-5408: Crash in mariadb-wsrep during plugin load at startup
Analysis: If wsrep_provider is not specified ("none") the wsrep is not
initialized.

Fix: Add additional guard not to call wsrep->post_rollback if 
wsrep_provider is not specified.
2013-12-10 10:14:43 +02:00