Commit graph

166974 commits

Author SHA1 Message Date
Sergey Vojtovich
392df76bc3 MDEV-4017 - GET_LOCK() with negative timeouts has strange behavior
GET_LOCK() silently accepted negative values and NULL for timeout.
Fixed GET_LOCK() to issue a warning and return NULL in such cases.
2015-07-29 15:59:56 +04:00
Monty
e40bc65933 Fixed memory loss detected on P8. This can happen when we call after_flush but never call after_rollback() or after_commit().
The old code used pthread_setspecific() to store temporary data used by the thread.
This is not safe when used with thread pool, as the thread may change for the transaction.

The fix is to save the data in THD, which is guaranteed to be properly freed.
I also fixed the code so that we don't do a malloc() for every transaction.
2015-07-25 15:15:52 +03:00
Monty
7115341473 Fixed warnings and errors found by buildbot
field.cc
- Fixed warning about overlapping memory copy (backport from 10.0)

Item_subselect.cc
- Fixed core dump in main.view
- Problem was that thd->lex->current_select->master_unit()->item was not set, which caused crash in maxr_as_dependent

sql/mysqld.cc
- Got error on shutdown as we where freeing mutex before all THD objects was freed
  (~THD uses some mutex). Fixed by during shutdown freeing THD inside mutex.

sql/log.cc
- log_space_lock and LOCK_log where locked in inconsistenly. Fixed by not having a log_space_lock around purge_logs.

sql/slave.cc
- Remove unnecessary log_space_lock
- Move cond_broadcast inside lock to ensure we don't miss the signal
2015-07-25 15:15:52 +03:00
Jan Lindström
7a9670218b MDEV-8474: InnoDB sets per-connection data unsafely
Analysis: At check_trx_exists function InnoDB allocates
a new trx if no trx is found from thd but this newly
allocated trx is not registered to thd. This is unsafe,
because nothing prevents InnoDB plugin from being uninstalled
while there's active transaction. This can cause crashes, hang
and any other odd behavior. It may also corrupt stack, as
functions pointers are not available after dlclose.

Fix: The fix is to use thd_set_ha_data() when
manipulating per-connection handler data. It does appropriate
plugin locking.
2015-07-21 12:12:58 +03:00
Monty
a63d873861 Merge branch '5.5' of github.com:MariaDB/server into 5.5 2015-07-17 00:07:01 +03:00
Monty
00d3b20fbb MDEV-8432 Slave cannot replicate signed integer-type values with high bit set to 1
The fix is that if the slave has a different integer size than
the master, then they will assume the master has the same signed/unsigned modifier
as the slave.

This means that one can safely change a coon the slave an int to a bigint
or an unsigned int to an unsigned int.  Changing an unsigned int to an
signed bigint will cause replication failures when the high bit of the
unsigned int is set.

We can't give an error if the signess is different on the master and slave
as the binary log doesn't contain the signess of the column on the master.
2015-07-17 00:06:27 +03:00
Monty
44de090a5f MDEV-8432 Slave cannot replicate signed integer-type values with high bit set to 1
The fix is that if the slave has a different integer size than
the master, then they will assume the master has the same signed/unsigned modifier
as the slave.

This means that one can safely change a coon the slave an int to a bigint
or an unsigned int to an unsigned int.  Changing an unsigned int to an
signed bigint will cause replication failures when the high bit of the
unsigned int is set.

We can't give an error if the signess is different on the master and slave
as the binary log doesn't contain the signess of the column on the master.
2015-07-17 00:02:25 +03:00
Monty
bc300464f1 Fix for MDEV-8301; Statistics for a thread could be counted twice in SHOW STATUS while thread was ending
Fixed by adding a marker if we have added the thread statistics to the global counters.
2015-06-26 14:48:22 +03:00
Monty
67c56ab1e4 Simple cleanups
- Removing use of calls to current_thd
- More DBUG_PRINT
- Code style changes
- Made some local functions static
Ensure that calls to print_keyuse are locked with mutex to get all lines in same debug packet
2015-06-25 23:34:54 +03:00
Monty
8c815751c9 Problem was that for cases like:
SELECT ... WHERE XX IN (SELECT YY)
this was transformed to something like:
SELECT ... WHERE IF_EXISTS(SELECT ... HAVING XX=YY)

The bug was that for normal execution XX was fixed in the original outer SELECT context while in PS it was fixed in the sub query context and this confused the optimizer.

Fixed by ensuring that XX is always fixed in the outer context.
2015-06-25 23:26:29 +03:00
Monty
2e941fe9fc Fixed crashing bug when using ONLY_FULL_GROUP_BY in a stored procedure/trigger that is repeatedly executed.
This is MDEV-7601, including it's sub tasks MDEV-7594, MDEV-7555, MDEV-7590, MDEV-7581, MDEV-7589

The problem was that select_lex->non_agg_fields was not properly reset for re-execution and this caused an overwrite of a random memory position.
The fix was move non_agg_fields from select_lext to JOIN, which is properly reset.
2015-06-25 23:18:48 +03:00
Sergei Golubchik
d199a0ffb0 more renames after tokudb merge 2015-06-11 17:47:52 +02:00
Sergei Golubchik
b96c196f1c Item_cache::safe_charset_converter() fixes
* take into account that example may be NULL
* use example->safe_charset_converter(), copy-paste from
  Item::safe_charset_converter() (example might have its own
  implementation)
* handle the case when the charset doesn't need conversion
  (and return this).
2015-06-11 16:48:10 +02:00
Sergei Golubchik
7c98e8a31b fix after the tokudb ft-index merge 2015-06-11 16:43:56 +02:00
Sergei Golubchik
5a44e1a402 tests for MDEV-7937: Enforce SSL when --ssl client option is used
* add a test when server certificate is verified successfully
* one test with two combinations (instead of two tests)
* verbose tets: make it print what it is doing
* fix the test to work with yassl and no-ssl builds
2015-06-09 22:16:26 +02:00
Sergey Vojtovich
80f6b22593 MDEV-3870 - Valgrind warnings on OPTIMIZE MyISAM or Aria TABLE with disabled
keys

Fixed that OPTIMIZE TABLE against MyISAM/Aria table may write uninitialized key
root position for disabled keys.
2015-06-09 23:24:03 +04:00
Sergey Vojtovich
3a50a8c9be MDEV-363 - Server crashes in intern_plugin_lock on concurrent installing
semisync plugin and setting rpl_semi_sync_master_enabled

There was race condition between INSTALL PLUGIN and SET. It was caused by a
gap in INSTALL PLUGIN when plugin variables were registered but not fully
initialized. Accessing such variables concurrently may reference uninitialized
memory, specifically sys_var_pluginvar::plugin.

Fixed by initializing sys_var_pluginvar::plugin early, before variable is
registered.
2015-06-09 23:24:02 +04:00
Sergey Vojtovich
49a3392441 MDEV-363 - Server crashes in intern_plugin_lock on concurrent installing
semisync plugin and setting rpl_semi_sync_master_enabled

Cleanup:
Removed my_intern_plugin_lock() and my_intern_plugin_lock_ci() wrappers. They
were obsoleted by revision f56dd32bf.
2015-06-09 23:24:02 +04:00
Sergei Golubchik
e5005cedd1 disable ssl for ssl-disabled tests
instead of running them only when ssl is not compiled in
2015-06-09 18:06:55 +02:00
Sergei Petrunia
992d782d78 MDEV-6735: Range checked for each record used with key (also MDEV-7786, MDEV-7923)
"Range Checked for Each Record" should be only employed when the other
option would be cross-product join (i.e. the other option is so bad that
we hardly risk anything).

Previous logic was: use RCfER if there are no possible quick selects, or
quick select would read > 100 rows. Also, it didn't always work as
expected due to range optimizer changing table->quick_keys and us
looking at sel->quick_keys.

Another angle is that recent versions have enabled use of Join Buffering
in e.g. outer joins. This further reduces the range of cases where RCfER
should be used.

We are still unable to estimate the cost of RCfER with any precision, so
now changing the condition of "no quick select or quick->records> 100"
to a hopefully better condition "no quick select or quick would cost more
than full table scan".
2015-06-09 18:56:51 +03:00
Vicențiu Ciorbaru
5d57e2d8cd Fix tests for 7937 2015-06-09 18:41:52 +03:00
Vicențiu Ciorbaru
be5035b4f4 Added tests for MDEV-7937 2015-06-09 16:08:14 +03:00
Vicențiu Ciorbaru
4ef7497996 MDEV-7937: Enforce SSL when --ssl client option is used
Using --ssl-verify-server-cert and --ssl[-*] implies that
the ssl connection is required. The mysql client will now print an error if ssl
is required, but the server can not handle a ssl connection.
2015-06-09 16:08:14 +03:00
Sergei Golubchik
56e2d8318b MDEV-7695 MariaDB - ssl - fips: can not connect with --ssl-cipher=DHE-RSA-AES256-SHA - handshake failure
Change 512bit DH key to 1024bit to meet FIPS requirements
2015-06-09 14:44:04 +02:00
Alexander Barkov
92b365981b MDEV-7268 Column of table cannot be converted from type 'decimal(0,?)' to type ' 'decimal(10,7)'
Changing the error message to:
 "...from type 'decimal(0,?)/*old*/' to type ' 'decimal(10,7)'..."
So it's now clear that the master data type is OLD decimal.
2015-06-09 12:05:06 +04:00
Alexander Barkov
b1e10399f4 MDEV-8286 Likely a redundant declaration of Item_cache::used_table_map
Removing Item_cache::used_table_map, Item_cache::used_tables() and
Item_cache::set_used_tables(). Using the same inherited from
Item_basic_constant implementations instead.
2015-06-09 07:36:24 +04:00
Sergei Golubchik
a4d93e07cc MDEV-8050 sphinx test cases cannot run with sphinxsearch-2.2.6
remove/replace deprecated options
2015-06-08 21:48:19 +02:00
Sergei Golubchik
b41ad55265 update tokudb version 2015-06-08 21:48:19 +02:00
Alexey Botchkov
1707cfc9ef MDEV-8211 plugins.server_audit fails sporadically in buildbot.
More fixes to assure the order of queries in the log.
2015-06-08 21:55:52 +05:00
Alexey Botchkov
87088b91f7 MDEV-8211 plugins.server_audit fails sporadically in buildbot.
This test also should be fixed - delay added so the connection
  event doesn't happen before the query.
2015-06-08 21:44:13 +05:00
Alexey Botchkov
96b37035e4 MDEV-8211 plugins.server_audit fails sporadically in buildbot.
Connection event can happen before the query ends. Added a delay to
   confirm the order.
2015-06-08 21:40:17 +05:00
Alexander Barkov
a765cca69f MDEV-8067 correct fix for MySQL Bug # 19699237: UNINITIALIZED VARIABLE IN ITEM_FIELD::STR_RESULT 2015-06-08 20:50:40 +04:00
Alexey Botchkov
b37b52a3a2 MDEV-4922 Stored Procedure - Geometry parameter not working.
Fhe GEOMETRY field should be handled just as the BLOB field. So that was fiexed in field_conv.
  One additional bug was found and fixed meanwhile - thet the geometry field subtypes
  should also be merged for UNION command.
2015-06-08 13:47:07 +05:00
Alexey Botchkov
69ed429aff MDEV-7500 thread_handling option in my.cnf is not passing "connect events" to audit plugin.
The MYSQL_AUDIT_NOTIFY_CONNECTION_CONNECT() call moved to the login_connection()
  function. So that it'll be invoked in any thread handling mode.
2015-06-08 12:09:13 +05:00
Alexey Botchkov
1ae05db49c MDEV-8078 Memory disclosure/buffer overread on audit plugin.
If the SET PASSWORD query doesn't have the password string,
        the parsing of it can fail. It manifested first in MySQL 5.6 as
        it started to hide password lines sent to the plugins.
        Fixed by checking for that case.
2015-06-07 15:40:42 +05:00
Alexey Botchkov
db0ecf2662 MDEV-8032 [PATCH] audit plugin - csv output broken.
Symbols like TAB or NEWLINE should be escaped, which was
        forgotten in one place.
2015-06-06 19:12:44 +05:00
Oleksandr Byelkin
6264451f25 MDEV-8114: server crash on updates with joins still on 10.0.18
Check that leaf table list is really built before storing it.
2015-06-06 16:13:51 +02:00
Sergei Golubchik
9a3b975da6 Merge branch '5.5' into bb-5.5-serg 2015-06-05 09:51:17 +02:00
Sergey Vojtovich
a2bb9d2639 MDEV-7505 - Too large scale in DECIMAL dynamic column getter crashes mysqld
Server may crash if sanity checks of COLUMN_GET() fail.

COLUMN_GET() description generator expects parent CAST item, which may not have
been created due to failure of sanity checks. Then further attempt to report
an error may crash the server.

Fixed COLUMN_GET() description generator to handle such case.
2015-06-05 10:44:11 +04:00
Sergey Vojtovich
b611ac06a7 MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
Factory timezone is supposed "For companies who don't want to put time zone
specification in their installation procedures. When users run date, they'll get
the message. Also useful for the "comp.sources" version."

This "message" is exposed as timezone abbreviation, which is supposed to be
short and thus may cause generated INSERT statements to fail.

Do not attempt to load Factory timezone.
2015-06-05 10:44:10 +04:00
Sergey Vojtovich
af2256ff72 MDEV-7207 - ALTER VIEW does not change ALGORITM
Fixed that ALTER VIEW ALGORITHM=UNDEFINED behaved as if algorithm was not
specified.
2015-06-05 10:44:10 +04:00
Sergei Golubchik
ae0c576d46 Merge branch 'merge/merge-xtradb-5.5' into bb-5.5-serg
update tests
2015-06-05 02:14:49 +02:00
Sergei Golubchik
f84f577aa1 Merge tag 'mysql-5.5.44' into bb-5.5-serg 2015-06-05 02:06:51 +02:00
Sergei Golubchik
f07b3463e7 do not re-populate I_S tables in subqueries 2015-06-05 02:04:32 +02:00
Alexander Barkov
1ff423dfc0 MDEV-8243 configure defines to empty string, not 1 2015-06-04 21:12:29 +04:00
Sergei Golubchik
750aa8b09d 5.5.43-37.2 2015-06-04 18:58:12 +02:00
Sergei Golubchik
980bdc3d64 followup: CREATE SERVER tests should not be run for embedded 2015-06-04 17:39:05 +02:00
Vicențiu Ciorbaru
a477cd1754 MDEV-6500: Stale data returned after TRUNCATE PARTITION operation
When truncating a table's partition, we also need to invalidate the
query cache for it.
2015-06-04 18:04:31 +03:00
Alexander Barkov
08fa02cf22 Some MYD files (e.g. in mysql-test/std_data) could erroneously be
treated by git as text files.

Marking all MyISAM files as binary in .gitattributes: (*.frm, *.MYD, *.MYI)
2015-06-04 18:51:30 +04:00
Alexander Barkov
9da8a8f946 MDEV-7269 mysqlbinlog Don't know how to handle column type=0 meta=0 (0000)#
MDEV-8267 Add /*old*/ comment into I_S.COLUMN_TYPE for old DECIMAL
2015-06-04 18:49:12 +04:00