Commit graph

167090 commits

Author SHA1 Message Date
Vicentiu Ciorbaru
ac2b92c476 MDEV-7912 multitable delete with wrongly set sort_buffer_size crashes in merge_buffers
Fixed overflow error that caused fewer bites to be allocated than
necessary on Windows 64 bit. This is due to ulong being 32 bit on
64 bit Windows and 64 bit on 64 bit Linux.
2015-04-28 15:09:04 +03:00
Arun Kuruvila
c9a38e8698 Merge branch 'mysql-5.1' into mysql-5.5 2015-04-28 14:58:01 +05:30
Arun Kuruvila
fdae90dd11 Bug #20181776 :- ACCESS CONTROL DOESN'T MATCH MOST SPECIFIC
HOST WHEN IT CONTAINS WILDCARD

Description :- Incorrect access privileges are provided to a
user due to wrong sorting of users when wildcard characters
is present in the hostname.

Analysis :- Function "get_sorts()" is used to sort the
strings of user name, hostname, database name. It is used
to arrange the users in the access privilege matching order.
When a user connects, it checks in the sorted user access
privilege list and finds a corresponding matching entry for
the user. Algorithm used in "get_sort()" sorts the strings
inappropriately. As a result, when a user connects to the
server, it is mapped to incorrect user access privileges.
Algorithm used in "get_sort()" counts the number of
characters before the first occurence of any one of the
wildcard characters (single-wildcard character '_' or
multi-wildcard character '%') and sorts in that order.
As a result of inconnect sorting it treats hostname "%" and
"%.mysql.com" as equally-specific values and therefore
the order is indeterminate.

Fix:- The "get_sort()" algorithm has been modified to treat
"%" seperately. Now "get_sort()" returns a number which, if
sorted in descending order, puts strings in the following
order:-
* strings with no wildcards
* strings containg wildcards and non-wildcard characters
* single muilt-wildcard character('%')
* empty string.
2015-04-28 14:56:55 +05:30
Sergei Golubchik
fd39c56eff move to storage/xtradb/ 2015-04-27 23:37:51 +02:00
Sergei Golubchik
0f12ada6b6 Merge remote-tracking branch 'mysql/5.5' into 5.5 2015-04-27 21:04:06 +02:00
V S Murthy Sidagam
c3870e089a Bug #18592390 QUERY TO I_S.TABLES AND I_S.COLUMNS LEADS TO HUGE MEMORY USAGE
Description: On an example MySQL instance with 28k empty
InnoDB tables, a specific query to information_schema.tables
and information_schema.columns leads to memory consumption
over 38GB RSS.

Analysis: In get_all_tables() call, we fill the I_S tables
from frm files and storage engine. As part of that process
we call make_table_name_list() and allocate memory for all
the 28k frm file names in the THD mem_root through
make_lex_string_root(). Since it has been called around
28k * 28k times there is a huge memory getting hogged in
THD mem_root. This causes the RSS to grow to 38GB.

Fix: As part of fix we are creating a temporary mem_root
in get_all_tables and passing it to fill_fiels(). There we
replace the THD mem_root with the temporary mem_root and
allocates the file names in temporary mem_root and frees
it once we fill the I_S tables in get_all_tables and
re-assign the original mem_root back to THD mem_root.

Note: Checked the massif out put with the fix now the memory growth is just around 580MB at peak.
2015-04-27 23:50:13 +05:30
Sergei Golubchik
e4df6e5799 Merge commit 'tokudb-engine/tokudb-7.5.6' into 5.5 2015-04-27 16:19:54 +02:00
Sergei Golubchik
2f446f2559 Merge commit 'tokudb-ft-index/tokudb-7.5.6' into 5.5 2015-04-27 16:04:39 +02:00
Sergei Golubchik
939a233439 Merge remote-tracking branch 'openquery/MDEV-8060-shm-path' into 5.5 2015-04-27 15:56:39 +02:00
Sergei Golubchik
245cc73452 MDEV-7434 XtraDB does not build on Solaris 2015-04-27 15:42:12 +02:00
Sergei Golubchik
e26b2071be MDEV-7938 MariaDB Crashes Suddenly while writing binlogs
on disconnect THD must clean user_var_events array before
dropping temporary tables. Otherwise when binlogging a DROP,
it'll access user_var_events, but they were allocated
in the already freed memroot.
2015-04-27 15:42:12 +02:00
Sergei Golubchik
053143efe1 MDEV-7883 Segmentation failure when running mysqladmin -u root -p
take into account that argc can be 0
(if there were no commands on the command line)
2015-04-27 15:42:12 +02:00
Sergei Golubchik
18215dd9fa MDEV-7859 SSL hostname verification fails for long subject names
Don't use a fixed buffer for X509_NAME_oneline() in the client.
Do as the server does - allocate it dynamically.

For a test - regenerate certificates to have the server cert with
a long subject.
2015-04-27 15:42:12 +02:00
Sergei Golubchik
9fd65db329 MDEV-7585 Assertion `thd->is_error() || kill_errno || thd->killed == ABORT_QUERY' failed in ha_rows filesort
if we clear the error status (in THD::clear_error())
make sure to clear the thd->killed == KILL_BAD_DATA too,
because it was caused by the error that we're clearing.
2015-04-27 15:42:12 +02:00
Sergei Golubchik
8e781601f4 MDEV-6870 Not possible to use FIFO file as a general_log file
Remove the too restrictive bugfix for bug#67088.
FIFO can be used for general/slow logs, but lseek() and fsync() on
FIFO fail. And open() needs to be non-blocking, in case the other
end isn't reading.
2015-04-27 15:42:12 +02:00
Sergei Golubchik
c05d43100b bug: crash when sync() or close() of a log file fails on shutdown
because current_thd is NULL and ER() causes sigsegv
2015-04-27 15:42:12 +02:00
Sergei Golubchik
8f499c395c bug: debug assert crash when seek on log file fails 2015-04-27 15:42:11 +02:00
Oleksandr Byelkin
5fd0088356 MDEV-8058: funcs_1.innodb_views and funcs_1.memory_views fail
The double call of ref used tables fixed.
2015-04-27 15:31:56 +02:00
Daniel Black
574227c90c /run/shm is the general replacement for /dev/shm in newer distros 2015-04-27 21:15:23 +10:00
V S Murthy Sidagam
7797ef4dec Merge branch 'mysql-5.1' into mysql-5.5 2015-04-27 14:46:40 +05:30
V S Murthy Sidagam
c655515d1b Bug #20683237 BACKPORT 19817663 TO 5.1 and 5.5
Restrict when user table hashes can be viewed. Require SUPER privileges.
2015-04-27 14:33:25 +05:30
Sergei Golubchik
f8320210e7 MDEV-7126 replication slave - deadlock in terminate_slave_thread with stop slave and show variables of replication filters and show global status
Three-way deadlock:

  T1: SHOW GLOBAL STATUS
      -> acquire LOCK_status
  T2: STOP SLAVE
      -> acquire LOCK_active_mi
      -> terminate_slave_thread()
      -> -> cond_timedwait for handle_slave_sql to stop
  T3: sql slave thread (same applies to io thread)
      -> handle_slave_sql(), when exiting
      -> -> THD::add_status_to_global()
      -> -> -> wait for LOCK_status...
  T1: SHOW GLOBAL STATUS
      -> for "Slave_heartbeat_period" status variable
      -> -> show_heartbeat_period()
      -> -> -> wait for LOCK_active_mi

cherry-pick from 5.6:

  commit fc8b395898f40387b3468122bd0dae31e29a6fde
  Author: Venkatesh Duggirala <venkatesh.duggirala@oracle.com>
  Date:   Wed Jun 12 21:41:05 2013 +0530

    BUG#16904035-SHOW STATUS - EXCESSIVE LOCKING ON LOCK_ACTIVE_MI AND
    ACTIVE_MI->RLI->DATA_LOCK

    Problem: Excessive locking on lock_active_mi and rli->data_lock
    while executing any `show status like 'X'` command.

    Analysis: SHOW_FUNCs for Slave_running, Slave_retried_transactions,
    Slave_heartbeat_period, Slave_received_heartbeats,
    Slave_last_heartbeat are acquiring lock_active_mi and rli->data_lock
    to show their variable value. It is ok to show stale data while showing
    the status variables i.e., even if they miss one update, it will
    not cause any great trouble.

    Fix: Remove the locks from the above mentioned SHOW_FUNC functions.

Add a test case
2015-04-26 22:05:33 +02:00
Daniel Black
4d606cb955 c99 style for assigning structure members 2015-04-25 22:57:33 +10:00
Kristian Nielsen
2d6c0a5480 Merge pull request #39 from openquery/MDEV-7977-mutex-unlock_LOCK_log-in-MYSQL_BIN_LOG_write_incident
MDEV-7977 MYSQL_BIN_LOG::write_incident failing to release LOCK_log
2015-04-24 13:44:22 +02:00
Alexander Barkov
44d1e85fe5 MDEV-7649 wrong result when comparing utf8 column with an invalid literal 2015-04-24 11:00:34 +04:00
Arun Kuruvila
dbe6832c2e Merge branch 'mysql-5.1' into mysql-5.5 2015-04-24 11:31:59 +05:30
Arun Kuruvila
eb79ead4f0 Bug#20318154 : NEGATIVE ARRAY INDEX WRITE V2
Description:- There is a possibility of negative array index
write associated with the function "terminal_writec()". This
is due to the assumption that there is a possibility of
getting -1 return value from the function call
"ct_visual_char()".

Analysis:- The function "terminal_writec()" is called only
from "em_delete_or_list()" and "vi_list_or_eof()" and both
these functions deal with the "^D" (ctrl+D) signal. So the
"size_t len" and "Char c" passed to "ct_visual_char()" (when
called from "terminal_writec()") is always 8 (macro
VISUAL_WIDTH_MAX is passed whose value is 8) and 4 (ASCII
value for "^D"/"ctrl+D") respectively.
Since the value of "c" is 4, "ct_chr_class()" returns -1
(macro CHTYPE_ASCIICTL is associated with -1 value). And
since value of "len" is 8, "ct_visual_char()" will always
return 2 when it is called from "terminal_writec()".
So there is no possible case so that we encounter a negative
array index write in "terminal_writec()". But since there is
a rare posibility of using "terminal_writec()" in future
enhancements, it is good handle the error case as well.

Fix:- A condition is added in "terminal_writec()" to check
whether "ct_visual_char()" is returning -1 or not. If the
return value is -1, then value 0 is returned to its calling
function "em_delete_or_list()" or "vi_list_or_eof()", which
in turn will return CC_ERROR.

NOTE:- No testcase is added since currently there is no
possible scenario to encounter this error case.
2015-04-24 11:30:13 +05:30
Sergei Petrunia
f9b2704f3c Testcase for: MDEV-7893 table_elimination works wrong ... 2015-04-23 23:06:14 +03:00
Oleksandr Byelkin
20109712ae MDEV-6892: WHERE does not apply
Taking into account implicit dependence of constant view field from nullable table of left join added.

Fixed finding real table to check if it turned to NULL (materialized view & derived taken into account)

Removed incorrect uninitialization.
2015-04-23 15:56:10 +02:00
Oleksandr Byelkin
8cbaafd22b MDEV-8018: main.multi_update fails with --ps-protocol
save_prep_leaf_tables() made recursive to work with underlying view

Arena restoiring fixed in case of EOM.
2015-04-22 13:59:18 +02:00
Rik Prohaska
0665ec1db9 tokuftdump should print leaf entry index so that the dump is easier to work with 2015-04-22 07:14:52 -04:00
Sergei Petrunia
e428c809d7 MDEV-7911: crash in Item_cond::eval_not_null_tables
convert_subq_to_sj() must check the results of in_equality->fix_fields()
call. It can fail in a meaningful way when e.g. we're trying to compare
columns with incompatible collations.
2015-04-21 15:41:01 +03:00
V S Murthy Sidagam
6c11fedb5e Bug #16861371 SSL_OP_NO_COMPRESSION NOT DEFINED
post push change: fixing valgrind failures
2015-04-21 09:24:41 +05:30
V S Murthy Sidagam
f07d995799 Bug #16861371 SSL_OP_NO_COMPRESSION NOT DEFINED
post push change: missed the change in mysql-5.5
(Fixing compiler warning/error)
2015-04-20 19:41:50 +05:30
V S Murthy Sidagam
e7ad7f050e Bug #16861371 SSL_OP_NO_COMPRESSION NOT DEFINED
Description:
Can't build mysql-5.5 latest source with openssl 0.9.8e.

Analysis:
Older OpenSSL versions(prior to openssl 1.0) doesn't have 'SSL_OP_NO_COMPRESSION' defined.
Hence the build is failing with SSL_OP_NO_COMPRESSION undeclared.

Fix:
Added a conditonal compilation for 'SSL_OP_NO_COMPRESSION'.
i.e if 'SSL_OP_NO_COMPRESSION' is defined then have the SSL_set_options call for OpenSSL 1.0 versions.
Have sk_SSL_COMP_zero() call for OpenSSL 0.9.8 version
2015-04-20 16:46:36 +05:30
Sergei Golubchik
f1f8adf098 tokuftdump: Install to ${INSTALL_BINDIR} instead of bin
Cherry-picking fc4df41504
(it was a 10.1 pull request, we want it in 5.5)
2015-04-20 05:02:10 +02:00
Elena Stepanova
4cfb7f9db3 Increase the version number 2015-04-19 15:49:35 +03:00
Mauritz Sundell
30c14893c7 Bug#20814396 PB2 IS SECRET ABOUT WHAT UNIT TESTS IT RUN
One can not see in PB2 test logs which unit tests have been run
and passed.

This patchs adds an option --unit-tests-report to mtr which
include the ctest report in mtr output.  It will also turn on unit
testing if not explicitly turned off with --no-unit-tests or
equivalent.

In manual runs one can always look in the ctest.log file in mtr
vardir.

--unit-tests are replaced with --unit-tests-report in files under
mysql-test/collections/ to activate report in PB2.
2015-04-17 14:51:46 +02:00
Vicențiu-Marian Ciorbaru
1115a59d3f Merge pull request #41 from MariaDB/5.5-MDEV-7820
MDEV-7820 Server crashes in in my_strcasecmp_utf8 on subquery in ORDER B...
2015-04-15 19:14:20 +03:00
Vicențiu Ciorbaru
eb47b226d2 MDEV-7820 Server crashes in in my_strcasecmp_utf8 on subquery in ORDER BY clause of GROUP_CONCAT
It is possible for Item_field to have a NULL field_name. This is true if
the Item_field is created based on a field in a temporary table that has
no name. It is thus necessary to do a null check before attempting a
strcmp.
2015-04-15 16:23:43 +03:00
Tor Didriksen
51d04c4cd9 Bug#20872436 MAKE DIST BY MISTAKE COPIES FILES WITH VARIABLE EXPANSION
Fix typo: s/COPY_ONLY/COPYONLY/g

(cherry picked from commit 034046b4dfe3e6f83e0cf73310884334e0507f06)

Conflicts:
	cmake/make_dist.cmake.in
2015-04-15 13:17:43 +02:00
Alexander Barkov
59d847bd26 MDEV-7814 Assertion `args[0]->fixed' fails in Item_func_conv_charset::Item_func_conv_charset
Removing a wrong assertion.
2015-04-15 12:08:37 +04:00
Oleksandr Byelkin
b9a75862ea MDEV-7613: MariaDB 5.5.40 server crash on update table left join with a view
Multi-update do not need full list of leaf tables. It also do not use it on prepare (mysql_multi_update_prepare()).
2015-04-15 09:53:33 +02:00
Daniel Black
83ce3529b8 quote table name in mysql_check:is_view. increment version too 2015-04-14 13:26:55 +10:00
Daniel Black
4987080ddb Don't run upgrade-views if not mysql or --upgrade-system-tables 2015-04-14 13:26:22 +10:00
Daniel Black
97e0aeaf72 mysqlcheck fix-view-algorithm -> upgrade-views
Change mysqlcheck option to upgrade-views={NO,YES,FROM_MYSQL}

mysql_upgrade now runs upgrade-views=yes to perform a checksum of all
views and add mariadb-version by default. upgrade-views=from_mysql if
MySQL is detected as teh origin version.
2015-04-14 12:43:50 +10:00
Daniel Black
808608cb3f corrected mysql_upgrade to always list output for every phase 2015-04-14 11:26:13 +10:00
Daniel Black
c584058f8f Update tests for mysql_upgrade_view
Add bad checksum test
Validate REPAIR VIEW {table} add mariadb-version to the frm
Add tests for the binary logging of REPAIR VIEW
2015-04-14 11:01:31 +10:00
Daniel Black
76c18f7e76 sql_print_information corrected
as checksum/swap don't always occur
2015-04-13 23:25:23 +10:00
Daniel Black
622891c6e1 mariadb_fix_view to allow fixing of view->mariadb_version
Reverts the wrong_checksum part of
29721d7d5f
2015-04-13 22:58:45 +10:00