Commit graph

31775 commits

Author SHA1 Message Date
Sergei Golubchik
9675ddc9a2 MDEV-4670 THD::awake bug with my_sleep call 2013-07-01 12:03:10 +02:00
Sergei Golubchik
03c71ff2ba MDEV-4683 query start_time not reset when going to sleep 2013-07-01 12:02:44 +02:00
Alexander Barkov
f13236be86 Merge from 5.3
modified:
  mysql-test/r/type_date.result
  mysql-test/r/type_datetime.result
  mysql-test/r/type_time.result
  mysql-test/t/type_date.test
  mysql-test/t/type_datetime.test
  mysql-test/t/type_time.test
  sql/item_func.cc
  sql/item_timefunc.cc
  sql/sql_time.cc
  sql/sql_time.h
pending merges:
  Alexander Barkov 2013-06-28 MDEV-4634 Crash in CONVERT_TZ
2013-06-28 15:20:40 +04:00
Alexander Barkov
0e44faf27f MDEV-4634 Crash in CONVERT_TZ
Item_func_min_max::get_date() did not check the
returned value against the fuzzy_date flags, so
it could return a bad value to the caller that
expects a good date (e.h. CONVERT_TZ).


modified:
  mysql-test/r/type_date.result
  mysql-test/r/type_datetime.result
  mysql-test/r/type_time.result
  mysql-test/t/type_date.test
  mysql-test/t/type_datetime.test
  mysql-test/t/type_time.test
  sql/item_func.cc
  sql/item_timefunc.cc
  sql/mysql_priv.h
  sql/time.cc
2013-06-28 12:00:25 +04:00
Sergei Golubchik
7c61679c4e MDEV-4685 Compile error on LFS
fix the code to compile w/o perfomance schema
2013-06-22 14:02:03 +02:00
Alexander Barkov
7cc7710679 Merging MDEV-4635 from 5.3.
Also, fixing a bug in STR_TO_DATE(). It erroneously returned
error in strict mode for dates like '0000-01-01'
(zero year, but non-zero month and day).

According to the manual:
- NO_ZERO_DATE disallows 0000-00-00 (all date parts are zeros)
- NO_ZERO_IN_DATE disallows zero month (YYYY-00-DD) or day (YYYY-MM-00).

0000-01-01 is a valid date, even in strict mode.


modified:
  mysql-test/r/func_time.result
  mysql-test/r/strict.result
  mysql-test/t/func_time.test
  mysql-test/t/strict.test
  sql/item_timefunc.cc
  sql/sql_time.h
pending merges:
  Alexander Barkov 2013-06-17 MDEV-4635 Crash in UNIX_TIMESTAMP(STR_TO_DAT...
2013-06-18 13:14:46 +04:00
Alexander Barkov
4085836acf MDEV-4635 Crash in UNIX_TIMESTAMP(STR_TO_DATE('2020','%Y'))
modified:
  mysql-test/r/func_time.result
  mysql-test/t/func_time.test
  sql/item_timefunc.cc
  sql/mysql_priv.h
2013-06-17 19:25:55 +04:00
Alexander Barkov
fee78df313 MDEV-4651 Crash in my_decimal2decimal in a ORDER BY query
modified:
  mysql-test/r/ps_2myisam.result
  mysql-test/r/ps_3innodb.result
  mysql-test/r/ps_4heap.result
  mysql-test/r/ps_5merge.result
  mysql-test/r/type_datetime_hires.result
  mysql-test/suite/maria/r/ps_maria.result
  mysql-test/t/type_datetime_hires.test
  sql/item_timefunc.h
2013-06-17 17:04:51 +04:00
Vladislav Vaintroub
c61c1d7ce1 MDEV-4576 : Aria storage engine's temporary files might not be deleted (Errcode : 13)
See also MySQL Bug #39750  and similar ones.

Fix my_delete() on Windows, to safely remvoe files on Windows, including files  that are opened by another threads in the same process, antiviruses and  backup applications. If file to be deleted is  also  opened by another thread, the file is renamed to unique name prior to deletion - this makes it possible to create file with the same name right after deletion.
With this patch my_delete_allow_opened() becomes obsolete and is replaced with my_delete().

This patch is rework of the patch  http://lists.mysql.com/commits/59327  for MySQL bug#39750.
2013-06-16 22:13:26 +02:00
unknown
b54a4b7621 5.3 -> 5.5 Merge 2013-06-17 20:33:36 +03:00
Sergei Golubchik
10be9160c1 MDEV-4466 Partitioned Aria table created by a previous version is recognized as TEST_SQL_DISCOVERY
Partitioning didn't store the name of default storage engine for partitions
in the frm file - it only store the typecode. Typecodes aren't stable, and
might vary depending on the order in which storage engines are loaded (can
be changed even from my.cnf without recompilation).

As a temporary workaround for 5.5, we hard-code Aria's typecode, to make sure it
never changes.
2013-06-15 16:02:43 +02:00
Sergei Golubchik
85a8de31b1 MDEV-4578 information_schema.processlist reports incorrect value for Time (2147483647)
SHOW PROCESSLIST might see a thread that started executing a query *after*
processlist has started. Don't show a negative or huge wrapped-around query execution time.
2013-06-13 20:19:32 +02:00
Sergei Golubchik
1fb33e4a67 MDEV-4529 Assertion `tmp->state == 4' fails on mix of INSTALL SONAME / UNINSTALL PLUGIN
fix incorrect assert
2013-06-13 20:19:11 +02:00
Sergei Golubchik
36c7535198 MDEV-4519 SHOW EVENTS and SHOW PROCEDURE STATUS truncate long user names
fix I_S table definitions in sql_show.cc
2013-06-13 20:18:40 +02:00
Sergei Golubchik
2533313895 MDEV-4515 Long user names are truncated to 48 symbols in error messages 2013-06-13 15:33:02 +02:00
Sergei Golubchik
acad1cc03c MDEV-4573 UNINSTALL PLUGIN misleading error message for non-dynamic plugins
change WARN_PLUGIN_DELETE_BUILTIN to ER_PLUGIN_DELETE_BUILTIN
2013-06-13 14:14:47 +02:00
Sergei Golubchik
1098184c47 MDEV-4604 Wrong server status when sending out parameters
reset SERVER_MORE_RESULTS_EXISTS *after* sending the OUT packet to the client.
the next packet will be the last one.

patch by Georg Richter.
2013-06-12 22:12:09 +02:00
Sergei Golubchik
dacb3809a2 MDEV-4422 SHOW PROCESSLIST reference to THD::db not protected against simultaneous updates
protect THD::db with THD::LOCK_thd_data
2013-06-12 20:29:19 +02:00
Sergei Golubchik
742899e59d MDEV-4480 Assertion `inited == NONE' fails on closing a connection with open handler on temporary table 2013-06-07 15:34:59 +02:00
Sergei Golubchik
6625fad8ca MDEV-4564 ALTER on a temporary table generates an audit event 2013-06-07 10:02:50 +02:00
unknown
ad947563ac MDEV-4593: p_s: crash in simplify_joins with delete using subselect from view
mysql_derived_merge_for_insert() should not be called for views or derived tables which are not put (directly or via other views) in main SELECT_LEX "join list".
2013-06-06 23:33:40 +03:00
Michael Widenius
5730786041 Fixed some cache variables that could be set to higher value than what the code supported (size_t)
Fixed some cases that didn't work with > 4G buffers.
Fixed compiler warnings


include/mysql_com.h:
  Avoid compiler warning with strncmp()
sql-common/client.c:
  Fixed long comment; Added ()
sql/filesort.cc:
  Fix code to get filesort to work with big buffers
sql/sys_vars.cc:
  Fixed some cache variables that could be set to higher value than the size_t
  Limit query cache to ULONG_MAX as the query cache buffer variables are ulong
storage/federatedx/ha_federatedx.cc:
  Remove not used variable
storage/maria/ha_maria.cc:
  Fix that bulk_insert() works with big buffers
storage/maria/ma_write.c:
  Fix that bulk_insert() works with big buffers
storage/myisam/ha_myisam.cc:
  Fix that bulk_insert() works with big buffers
storage/myisam/mi_write.c:
  Fix that bulk_insert() works with big buffers
storage/sphinx/snippets_udf.cc:
  Fixed compiler warnings
2013-06-06 15:14:23 +03:00
Michael Widenius
bef95a4bbe -Run test suite with smaller aria keybuffer size (to make it possible to run more tests in parallel)
-Added test and extra code to ensure we don't leave keyread on for a handler table.
-Create on disk temporary files always with long data pointers if SQL_SMALL_RESULT is not used. This ensures that we can handle temporary files bigger than 4G.

mysql-test/include/default_mysqld.cnf:
  Run test suite with smaller aria keybuffer size
mysql-test/suite/maria/maria3.result:
  Run test suite with smaller aria keybuffer size
mysql-test/suite/sys_vars/r/aria_pagecache_buffer_size_basic.result:
  Run test suite with smaller aria keybuffer size
sql/handler.cc:
  Disable key read (extra safety if something went wrong)
sql/multi_range_read.cc:
  Ensure we have don't leave keyread on for secondary_file
sql/opt_range.cc:
  Simplify code with mark_columns_used_by_index_no_reset()
  Ensure that read_keys_and_merge() disableds keyread if it enables it
sql/opt_subselect.cc:
  Remove not anymore used argument for create_internal_tmp_table()
sql/sql_derived.cc:
  Remove not anymore used argument for create_internal_tmp_table()
sql/sql_select.cc:
  Use 'enable_keyread()' instead of calling HA_EXTRA_RESET. (Makes debugging easier)
  Create on disk temporary files always with long data pointers if SQL_SMALL_RESULT is not used. This ensures that we can handle temporary files bigger than 4G.
  Remove not anymore used argument for create_internal_tmp_table()
  More DBUG
sql/sql_select.h:
  Remove not anymore used argument for create_internal_tmp_table()
2013-06-05 23:53:35 +03:00
Vladislav Vaintroub
33ef993773 Fix a compile warning on NetBSD 2013-06-01 21:33:26 +02:00
unknown
22b60fa95c MDEV-4520: Assertion `0' fails in Query_cache::end_of_result on concurrent drop event and event executio
Fix for embedded library, where thd->net.vio is not set which efficently switched off QC in emmbedded server for previous patch.
2013-05-30 08:23:49 +03:00
unknown
b9ce8572d9 MDEV-4520: Assertion `0' fails in Query_cache::end_of_result on concurrent drop event and event execution
If there is no net.vio then query cache cant't get data via net_real_write() so it is better just do not try to cache such query.
2013-05-23 17:05:31 +03:00
Vladislav Vaintroub
ef1e767ae3 MDEV-4553 - Fixes for compilation under NetBSD. 2013-05-27 16:35:42 +02:00
Sergei Golubchik
7e4150d7cd increase MAX_HA (number of simultaneously installed storage engines) to 64 2013-05-20 13:41:03 +02:00
Sergei Golubchik
d7a6c801ac 5.3 merge.
change maria.distinct to use a function that doesn't require ssl-enabled  builds
2013-05-20 12:36:30 +02:00
Sergei Golubchik
639a766096 5.2 merge 2013-05-20 11:13:07 +02:00
Sergei Golubchik
4ee5ae3e7f 5.1 merge 2013-05-20 10:53:04 +02:00
Alexander Barkov
3ef880cb59 Bug#MDEV-4518 Server crashes in is_white_space when it's run
with query cache, charset ucs2 and collation ucs2_unicode_ci

  @ mysql-test/r/ctype_ucs2_query_cache.result
  @ mysql-test/t/ctype_ucs2_query_cache-master.opt
  @ mysql-test/t/ctype_ucs2_query_cache.test
    Adding tests

  @ sql/sql_cache.cc
    Fixing not to use default_character_set->state_map,
    which can point to a non-ASCII character set (utc2, utf16, utf32)
   and thus have state_map undefined.
2013-05-17 10:16:56 +04:00
Alexey Botchkov
c2ee0218ba MDEV-4521 MBRContains, MBRWithin no longer work with geometries of different type.
get_mm_leaf function can store all sorts of spatial features in
        one type of field it receives from an Item_field.
        So we just allow that by setting the type of this field to GEOMETRY.

per-file comments:
  mysql-test/r/gis-rtree.result
        result updated
  mysql-test/t/gis-rtree.test
        test case added.
  sql/opt_range.cc
        set geom_type=GEOMETRY if we got Field_geom.
2013-05-15 02:33:29 +05:00
Sergei Golubchik
66cc619609 MDEV-4514 After increasing user name length mysql.db is reported broken and event scheduler does not start 2013-05-13 16:11:39 +02:00
Sergei Golubchik
3aa50f64bb MDEV-4505 Buffer overrun when processing --log-bin parameter without file name
because --log-bin sets opt_bin_logname to ""
(same for any OPT_ARG GET_STR (or GET_STR_ALLOC) option)
2013-05-13 15:49:48 +02:00
Michael Widenius
0737932b90 Fixed that SHOW PROCESSLIST and information_schema.processlist uses the right length for user names.
Fixed some failing tests


mysql-test/mysql-test-run.pl:
  Removed warning from mysql-test-run
mysql-test/r/create.result:
  Updated result
mysql-test/r/log_slow.result:
  Fixed failing test
mysql-test/suite/funcs_1/r/is_columns_is.result:
  Updated result
mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result:
  Updated result
mysql-test/suite/funcs_1/r/processlist_val_no_prot.result:
  Updated result
mysql-test/t/log_slow.test:
  Ensure variables are properly reset at end of test
sql/sql_show.cc:
  Fixed max length for user names
2013-05-11 20:31:50 +03:00
Michael Widenius
4e9bf37f1f MDEV-4280: Assertion `empty_size == empty_size_on_page' failure in ma_blockrec.c or ER_NOT_KEYFILE on query with DISTINCT and GROUP BY
This could happen when using Aria for internal temporary files (default case) and using DISTINCT.
_ma_scan_restore_block_record() didn't work correctly if there was rows inserted, updated or deleted on the handler
between calls to _ma_scan_remember_block_record() and _ma_scan_restore_block_record().
The effect was that some DISTINCT queries that used remove_dup_with_compare() could fail.

.bzrignore:
  Ignore sql_yacc.hh
mysql-test/suite/maria/r/distinct.result:
  Test case for MDEV-4280
mysql-test/suite/maria/t/distinct.test:
  Test case for MDEV-4280
mysql-test/t/mysql.test:
  Fixed test suite (we could get error -1 in some cases)
sql/sql_select.cc:
  Break loop if restart_rnd_next() gives an error
storage/maria/ha_maria.cc:
  scan_restore_pos() can return disk fault error.
storage/maria/ma_blockrec.c:
  _ma_scan_remember_block_record() did incorrectly update scan.dir instead of scan_save.dir .
  _ma_scan_restore_block_record() didn't work correctly if there was rows inserted,updated or deleted on the handler
  between calls to _ma_scan_remember_block_record() and _ma_scan_restore_block_record().
  Fixed by adding counters for row changes and reading the current scan page if changes had been made.
storage/maria/ma_blockrec.h:
  scan_restore_pos() can return disk fault error.
storage/maria/ma_delete.c:
  Increment row_changes
storage/maria/ma_scan.c:
  scan_restore_pos() can return disk fault error.
storage/maria/ma_update.c:
  Increment row_changes
storage/maria/ma_write.c:
  Increment row_changes
storage/maria/maria_def.h:
  scan_restore_pos() can return disk fault error.
2013-05-11 15:55:11 +03:00
Vladislav Vaintroub
55b3c84492 Small mysql_install_db.exe fixes
- Use lc-messages-dir instead of deprecated --language when running mysqld in bootstrap mode.
- Add some verbosity to mysql_install_db.exe when it runs in course of MSI installation.
2013-05-09 22:21:07 +02:00
Vladislav Vaintroub
f33178b99a MDEV-4206 : log all slow statements (do not use filters), if log_slow_filter is empty. 2013-05-08 20:37:17 +02:00
Sergei Golubchik
4a0f2563d3 MDEV-4462 mysqld gets SIGFPE when mysql.user table is empty
avoid divison by zero
2013-05-08 14:32:32 +02:00
Alexander Barkov
e013bf9f0e The bug
MDEV-4489 "Replication of big5, cp932, gbk, sjis strings makes wrong values on slave"
has been fixed.

Problem:
String constants of some Asian charsets (big5,cp932,gbk,sjis)
can have backslash '\' (0x5C) in the second byte of multi-byte characters.
Replicating of such constants using the standard '\'-escaping is dangerous.
Therefore, constants of these charsets are replicated using hex notation:
INSERT INTO t1 (a) VALUES (0x815C);

However, 0xHHHH constants do not work well in some cases,
because they can behave as strings and as numbers, depending on context
(for example, depending on the data type of the column in an INSERT statement).

This SQL script was not replicated correctly with statement-based replication:

SET NAMES gbk;
PREPARE STMT FROM 'INSERT INTO t1 (a) VALUES (?)';
SET @a = '1';
EXECUTE STMT USING @a;

The INSERT statement was replicated as:
INSERT INTO t1 (a) VALUES (0x31);

'1' was correctly converted to the number 1 on master.
But the 0x31 constant was treated as number 49 on slave.

Fix:

1. Binary log now uses X'HHHH' instead of 0xHHHH constants.
2. The X'HHHH' constants now work always as strings, in all contexts.
This is the SQL standard compliant behaviour.

After the fix, the above statement is replicated as:
INSERT INTO t1 (a) VALUES (X'31');
X'31' is treated as string '1' on slave, and is correctly converted to 1.


modified:
  @ mysql-test/r/ctype_cp932_binlog_stm.result
  @ mysql-test/r/select.result
  @ mysql-test/r/select_jcl6.result
  @ mysql-test/r/select_pkeycache.result
  @ mysql-test/r/user_var-binlog.result
  @ mysql-test/r/varbinary.result
  @ mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result
  @ mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result
  @ mysql-test/suite/rpl/r/rpl_charset_sjis.result
  @ mysql-test/suite/rpl/r/rpl_mdev382.result
  @ mysql-test/suite/rpl/t/rpl_charset_sjis.test
  @ mysql-test/t/ctype_cp932_binlog_stm.test
  @ mysql-test/t/select.test
  @ mysql-test/t/varbinary.test
    Adding and updating tests

  @ sql/item.cc
  @ sql/item.h
  @ sql/sql_yacc.yy
  @ sql/sql_lex.cc
    Splitting the implementations of X'HH' and 0xHH constants into two
    separate classes. Fixing the parser to distinguish the two syntaxes.

  @ sql/log_event.cc
    Using X'HH' instead of 0xHH for binary logging for string constants
    of the "dangerous" charsets.

  @ sql/sql_string.h
    Adding a helped method String::append_hex().
2013-05-08 13:36:17 +04:00
Sergei Golubchik
b381cf843c mysql-5.5.31 merge 2013-05-07 13:05:09 +02:00
Michael Widenius
d4be9e7bc0 If one declared several continue handler for the same condition on different level of stored procedures, all of them where executed.
Now we only execute the innermost of them (the most relevant).

The solution was to add a 'handled' marker to MYSQL_ERROR and mark all elements for which we have executed a condition handler.
When searching for new conditions, we will ignore any marked element.




.bzrignore:
  Ignore error message file
mysql-test/r/sp.result:
  Added testcase for continue handlers.
mysql-test/t/sp.test:
  Added testcase for continue handlers.
sql/sp_head.cc:
  Mark errors for which we will excute a handler as 'handled'
  Ignore already handled warnings/errors
sql/sql_error.cc:
  Add 'handled' argument to MYSQL_ERROR, so that we can mark the errors/warnings we have handled.
sql/sql_error.h:
  Add 'handled' argument to MYSQL_ERROR, so that we can mark the errors/warnings we have handled.
2013-05-06 16:51:41 +03:00
Igor Babaev
75befe7526 Merge 5.3->5.5 2013-05-04 21:56:45 -07:00
Sergey Petrunya
ddd341b71a MDEV-4071: Valgrind warnings 'Invalid read' in subselect_engine::calc_const_tables with ...
- Call tmp_having->update_used_tables() *before* we have call JOIN::cleanup().
  Making the call after join::cleanup() is not allowed, because subquery 
  predicate items walk parent join's JOIN_TAB structures. Which can be 
  invalidated by JOIN::cleanup().
2013-05-04 20:42:43 +04:00
Igor Babaev
920c479c6e Fixed bug mdev-4336.
When iterating over a list of conditions using List_iterator
the function remove_eq_conds should skip all predicates that
replace a condition from the list. Otherwise it can come to
an infinite recursion.
2013-05-03 22:46:45 -07:00
Igor Babaev
b249680fd1 Made consistent handling of the predicates of the form
<non-nullable datatime field> IS NULL in outer joins with
that in inner joins.
Previously such condition was transformed into the condition
<non-nullable datatime field> = 0 unless the field belonged
to an inner table of an outer join. In this case the predicate
was interpreted as for any other field.
Now if the field in the predicate <non-nullable datatime field> IS NULL
belongs to an inner table of an outer join the predicate is 
transformed into the disjunction
<non-nullable datatime field> = 0 OR <non-nullable datatime field> IS NULL.
This is fully compatible with the semantics of such predicates in 5.5.
2013-05-03 18:45:20 -07:00
Sergey Petrunya
b3720ff755 MDEV-621: LP:693329 - Assertion `!is_interleave_error' failed on low optimizer_search_depth
- When restore_prev_nj_state() is called for the table that is 
  the last remaining child of a nested join, do not leave that
  nested join's bit in join->cur_embedding_map.
2013-05-04 00:56:50 +04:00
unknown
682c8a36ca MDEV-4290:
Fix agregate function resolution in derived tables (no name resolution over a derived table border)
2013-05-03 16:07:13 +03:00
Sergey Petrunya
6ed00c4d8a MDEV-4465: Reproducible crash (mysqld got signal 11) in multi_delete::initialize_tables...
- make multi_delete::initialize_tables() take into account that the JOIN structure may have
  semi-join nests (which are not fully initialized when this function is called, they have 
  tab->table=NULL which caused the crash)
- Also checked multi_update::initialize_tables(): it has a different logic and needed no fixing.
2013-05-03 00:10:43 +04:00