Commit graph

182975 commits

Author SHA1 Message Date
Marko Mäkelä
1b4ac075bf Merge 10.1 into 10.2 2018-06-26 15:39:23 +03:00
Thirunarayanan Balathandayuthapani
fe76e68e0e MDEV-16365 Setting a column NOT NULL fails to return error for
NULL values when there is no DEFAULT

- Fixed the test failure, assigned number of rows read to new table.
2018-06-26 14:10:58 +05:30
Marko Mäkelä
c4eb4bcef6 MDEV-16515 InnoDB: Failing assertion: ++retries < 10000 in file
dict0dict.cc

buf_LRU_drop_page_hash_for_tablespace(): Return whether any adaptive
hash index entries existed. If yes, the caller should keep retrying to
drop the adaptive hash index.

row_import_for_mysql(), row_truncate_table_for_mysql(),
row_drop_table_for_mysql(): Ensure that the adaptive hash index was
entirely dropped for the table.
2018-06-26 11:34:51 +03:00
Eugene Kosov
ff8b3c8df8 MDEV-15953 Alter InnoDB Partitioned Table Moves Files (which were originally not in the datadir) to the datadir
ha_innobase::prepare_inplace_alter_table: preserve DATA DICTIONARY for table
2018-06-26 11:11:15 +03:00
Igor Babaev
7d0d934ca6 MDEV-16473 WITH statement throws 'no database selected' error
Before this patch if no default database was set the server threw
an error for any table name reference that was not fully qualified by
database name. In particular it happened for table names referenced
CTE tables. This was incorrect.
The error message was thrown at the parser stage when the names referencing
different tables were not resolved yet.
Now if no default database is set and  a with clause is used in the
processed statement  any table reference is just supplied with a dummy
database name "*none*" at the parser stage. Later after a call
of check_dependencies_in_with_clauses() when the names for CTE tables
can be resolved error messages are thrown only for those names that
refer to non-CTE tables. This is done in open_and_process_table().
2018-06-26 00:02:48 -07:00
Oleksandr Byelkin
31e52b1632 Optimize charset tracking a bit. 2018-06-25 19:01:41 +02:00
Oleksandr Byelkin
517d718201 MDEV-15477: SESSION_SYSVARS_TRACKER does not track last_gtid
register changes of last_gtid
2018-06-25 19:01:41 +02:00
Oleksandr Byelkin
73de63e898 Session tracking info support in mysqltest (port from mysql) 2018-06-25 18:49:14 +02:00
Oleksandr Byelkin
a8e1eef899 Reset connection support in mysqltest (port from mysql) 2018-06-25 18:49:14 +02:00
Alexander Barkov
f5b60857f4 A cleanup for 84c55a5668 (that implemented cursor FOR loops earlier):
MDEV-10581 sql_mode=ORACLE: Explicit cursor FOR LOOP
  MDEV-12098 sql_mode=ORACLE: Implicit cursor FOR loop

Cleanup changes:
- Removing sp_lex_cursor::m_cursor_name
- Adding sp_instr_cursor_copy_struct::m_cursor (the cursor global index)
- Fixing sp_instr_cursor_copy_struct::print() to access to the cursor
  name using m_ctx and m_cursor (like other cursor related instructions do)
  instead of m_cursor_name.

This change is needed to unify sp_assignment_lex and sp_cursor_lex later,
to fix this problem easier:
 MDEV-16558 Parenthesized expression does not work as a lower FOR loop bound
2018-06-25 19:20:36 +04:00
Thirunarayanan Balathandayuthapani
1ba5b38bfa MDEV-16365 Setting a column NOT NULL fails to return error for
NULL values when there is no DEFAULT

- Fixed typecasting failure for log->n_rows in row0log.cc
2018-06-25 20:49:22 +05:30
Andrei Elkin
28e1f1453f MDEV-15242 Poor RBR update performance with partitioned tables
Observed and described
partitioned engine execution time difference
between master and slave was caused by excessive invocation
of base_engine::rnd_init which was done also for partitions
uninvolved into Rows-event operation.
The bug's slave slowdown therefore scales with the number of partitions.

Fixed with applying an upstream patch.

References:
----------
https://bugs.mysql.com/bug.php?id=73648
Bug#25687813 REPLICATION REGRESSION WITH RBR AND PARTITIONED TABLES
2018-06-25 16:45:00 +03:00
Oleksandr Byelkin
1ace3b3fad Mark embedded library as deinited. 2018-06-25 14:50:36 +02:00
Thirunarayanan Balathandayuthapani
69b9ed063b MDEV-16365 Setting a column NOT NULL fails to return error for
NULL values when there is no DEFAULT

- Post push fix for adding n_rows in row_log_t.
2018-06-25 18:16:29 +05:30
Oleksandr Byelkin
46fc864b90 MDEV-16478: mysql_real_connect() from libmariadbd.so always crash
Returned accidentally removed undefinition of MYSQL_SERVER in net_serv.cc inside embedded server
(embedded server uses real_net_read/write only as a client)

Prevented attempt to clean up embedded server if it was not initialized
2018-06-25 13:28:09 +02:00
Elena Stepanova
bb825194b8 Updated list of unstable tests for 10.2.16 2018-06-25 14:04:16 +03:00
Thirunarayanan Balathandayuthapani
88aaf590ac MDEV-16365 Setting a column NOT NULL fails to return error for
NULL values when there is no DEFAULT

Copy and inplace algorithm works similarly for
NULL to NOT NULL conversion for the following cases:
(1) strict sql mode - Should give error.
(2) non-strict sql mode - Should give warnings alone
(3) alter ignore table command. - Should give warnings alone.
2018-06-25 14:52:38 +05:30
Alexander Barkov
ee6ac4d313 MDEV-12574 MAX(old_decimal) produces a column of the old DECIMAL type 2018-06-25 09:08:07 +04:00
Sergei Golubchik
01bbb912bf update C/C 2018-06-24 20:38:45 +02:00
Sergei Golubchik
a40c06e03a Merge branch 'connect/10.2' into 10.2 2018-06-24 15:27:38 +02:00
Sergei Golubchik
f577311027 fix mroonga post-install script
it only worked if mroonga plugin wasn't installed before (normal case),
but then it didn't need to delete anything.

if, by some glitch, mroonga was already installed, it would delete
mroonga from mysql.plugin, but INSTALL would fail (as mroonga was running),
and the script aborted, leaving mroonga not in mysql.plugin at all.
2018-06-24 15:18:36 +02:00
Sergei Golubchik
f25a5c39c1 MDEV-14560 Extra engines enabled through additional config are not loaded on first installation
Solution for Debian/Ubuntu: install a trigger to restart mysqld
automatically whenever a package changes something in /etc/mysql
or in /etc/systemd/system/mariadb.service.d
2018-06-24 15:18:36 +02:00
Sergei Golubchik
a19089ff4e MDEV-16537 aws key management plugin on Ubuntu bionic has impossible dependencies
remove manual libcurl3 dependency.
it'll be automatically added (libcurl3 or libcurl4, whatever was
actually used)
2018-06-24 15:18:36 +02:00
Sergei Golubchik
ffb96be9e7 fix debian packaging for tokudb 2018-06-24 15:18:36 +02:00
Sergei Golubchik
b2190f859b fix vcol.vcol_misc --embedded 2018-06-24 15:18:36 +02:00
Sergei Golubchik
e561a346c3 fix mtr warnings after 5f0510225a 2018-06-24 15:18:36 +02:00
Igor Babaev
364a20fe0b MDEV-16507 SIGSEGV when use_stat_tables = preferably and
optimizer_use_condition_selectivity = 4

It does not makes sense to try to read statistics for temporary tables
because it's not collected.
2018-06-23 19:36:26 -07:00
Vladislav Vaintroub
95ef8de891 mariabackup - rename backup-rocksdb option to rocksdb-backup
to avoid "using unique option prefix 'backup' is error-prone", there is
already --backup option there.
2018-06-22 23:30:26 +01:00
Vladislav Vaintroub
ecc4682672 MDEV-16519 : mariabackup should fail if MDL could not be acquired with lock-ddl-per-table
There is a tiny chance for race condition during MDL acquisition.

If table is renamed just prior to
SELECT 1 FROM <table_name> LIMIT 0

then this query would  fail, yet mariabackup --backup does not handle
it as fatal error and continues, only to fail later during file copy.

The fix is to die on error, of MDL lock query fails.
2018-06-22 15:24:09 +01:00
Sergei Golubchik
0d745343fc fix plugins.processlist
make it not to fail when `show engine innodb status` output
contains a double quote
2018-06-22 09:52:21 +02:00
Alexander Barkov
1abd877e2d MDEV-8049 name_const() is not consistent about its signess 2018-06-22 11:28:02 +04:00
Sergei Golubchik
ef64856b97 don't crash on innodb_undo_tablespaces=1 2018-06-21 23:49:37 +02:00
Sergei Golubchik
082eec1418 SET wsrep_on=1 - only check innodb_lock_schedule_algorithm if innodb is enabled 2018-06-21 23:48:59 +02:00
Sergei Golubchik
b942aa34c1 Merge branch '10.1' into 10.2 2018-06-21 23:47:39 +02:00
Alexander Barkov
fe3f9fa918 MDEV-12809 Bad column type created for TEXT(1431655798) CHARACTER SET utf8 2018-06-21 15:17:15 +04:00
Alexander Barkov
bcc2100f9d MDEV-16471 mysqldump throws "Variable 'sql_mode' can't be set to the value of 'NULL' (1231)" 2018-06-21 12:54:28 +04:00
Sergei Golubchik
635c5e3281 mysql_install_db: clarify the after-install message
don't tell users to set the root password if they're using unix_socket
2018-06-21 10:15:27 +02:00
Sergei Golubchik
df704b5a1b don't use my_error(0) or my_printf_error(0)
there's an assert that catches it
2018-06-21 10:15:27 +02:00
Sergei Golubchik
af2dd582e6 empty password is a valid password, don't crash 2018-06-21 10:15:27 +02:00
Sergei Golubchik
5f0510225a MDEV-16238 root/localhost authn prioritizes authentication_string over Password
Don't let SET PASSWORD to set the password, if auth_string is set.

Now SET PASSWORD always sets the plugin/auth_string fields and clears
the password field (on pre-plugin mysql.user table it works as before).
2018-06-21 10:15:27 +02:00
Georg Richter
b4db59ba47 MDEV-15596 10.2 doesn't work with openssl 1.1.1 2018-06-21 10:15:27 +02:00
Sergei Golubchik
1db1340c0c MDEV-14578: mysql_install_db install unix_socket plugin when --auth-root-authentication-method=socket
post-merge fixes
2018-06-21 10:15:27 +02:00
Daniel Black
53db5edbcf MDEV-14578: mysql_install_db install unix_socket plugin when --auth-root-authentication-method=socket
$ cmake -DPLUGIN_AUTH_SOCKET=STATIC ../mariadb-server-10.2/

$ scripts/mysql_install_db --datadir=/tmp/mysqldatadir-auth-static --auth-root-socket-user=dan --auth-root-authentication-method=socket --builddir=.  --srcdir=../mariadb-server-10.2
Installing MariaDB/MySQL system tables in '/tmp/mysqldatadir-auth-static' ...
OK

$ client/mysql -S /tmp/mysql.sock -e 'show create user dan@localhost'
+----------------------------------------------------------+
| CREATE USER for dan@localhost                            |
+----------------------------------------------------------+
| CREATE USER 'dan'@'localhost' IDENTIFIED VIA unix_socket |
+----------------------------------------------------------+

$ cmake -DPLUGIN_AUTH_SOCKET=NO ../mariadb-server-10.2/
$ scripts/mysql_install_db --datadir=/tmp/mysqldatadir-auth-none --auth-root-socket-user=dan --auth-root-authentication-method=socket --builddir=.  --srcdir=../mariadb-server-10.2
Installing MariaDB/MySQL system tables in '/tmp/mysqldatadir-auth-none' ...
ERROR: 1126  Can't open shared library '.../plugin/auth_socket/auth_socket.so' (errno: 2, cannot open shared object file: No such file or directory)
2018-05-01 11:38:56 0 [ERROR] Aborting

$ cmake -DPLUGIN_AUTH_SOCKET=DYNAMIC ../mariadb-server-10.2/
$ scripts/mysql_install_db --datadir=/tmp/mysqldatadir-auth-dyn --auth-root-socket-user=dan --auth-root-authentication-method=socket --builddir=.  --srcdir=../mariadb-server-10.2
Installing MariaDB/MySQL system tables in '/tmp/mysqldatadir-auth-dyn' ...
OK
$ ./sql/mysqld  --datadir=/tmp/mysqldatadir-auth-dyn  --lc-messages-dir=${PWD}/sql/share --plugin-dir=./plugin/auth_socket/
$ client/mysql -S /tmp/mysql.sock -e 'show create user dan@localhost'
+----------------------------------------------------------+
| CREATE USER for dan@localhost                            |
+----------------------------------------------------------+
| CREATE USER 'dan'@'localhost' IDENTIFIED VIA unix_socket |
+----------------------------------------------------------+

$ sudo make install
$ sudo chmod a+rwx /usr/local/mysql/data
$ cd /usr/local/mysql/
$ scripts/mysql_install_db  --auth-root-socket-user=dan --auth-root-authentication-method=socket
Installing MariaDB/MySQL system tables in './data' ...
OK
..
$ bin/mysqld_safe
$ client/mysql -S /tmp/mysql.sock -e 'show create user dan@localhost'
+----------------------------------------------------------+
| CREATE USER for dan@localhost                            |
+----------------------------------------------------------+
| CREATE USER 'dan'@'localhost' IDENTIFIED VIA unix_socket |
+----------------------------------------------------------+

Merges #767
2018-06-21 10:15:27 +02:00
Sergei Golubchik
1033fa4bcc MDEV-13403 Mariadb (with TokuDB) excessive memory usage/leak
In RPM/DEB packages - always ld-preload jemalloc, instead
of linking ha_tokudb.so with it.

Keep linking in bintars, because they don't install cnf files
in the correct locations.
2018-06-21 10:15:27 +02:00
Sergei Golubchik
c09a8b5b36 Merge branch '10.0' into 10.1 2018-06-21 08:34:35 +02:00
Sergei Golubchik
d8192f5495 Merge branch '5.5' into 10.0 2018-06-21 00:44:10 +02:00
Sergei Golubchik
2b8f2b3e88 Fix unit suite on Windows and in out-of-source builds 2018-06-21 00:06:15 +02:00
Sergei Golubchik
0a9d78f51d Revert "MDEV-16075: Workaround to run MTR test suite for make test"
This reverts commit d39629f01e.

Because running mtr for many hours with no output whatsoever
is not really what we should do.

And in 5.5 `make test` just works anyway, nothing to fix here.
2018-06-20 23:27:23 +02:00
Alexey Botchkov
be9d923af2 MDEV-11917 enum/set command-line options aren't respecting max-* settings.
my_option strucures for command-line variables should be set properly.
2018-06-20 22:45:10 +04:00
Eugene Kosov
9dc81f7d38 MDEV-16330 Allow instant change of WITH SYSTEM VERSIONING column attribute
Changing columns WITH/WITHOUT SYSTEM VERSIONING doens't require to read data at
all. Thus it should be an instant operation.

Patch also fixes a bug when ALTER_COLUMN_UNVERSIONED wasn't passed to InnoDB
to change its internal structures.

change_field_versioning_try(): apply WITH/WITHOUT SYSTEM VERSIONING
change in SYS_COLUMNS for one field.

change_fields_versioning_try(): apply WITH/WITHOUT SYSTEM VERSIONING
change in SYS_COLUMNS for every changed field in a table.

change_fields_versioning_cache(): update cache for versioning property
of columns.
2018-06-20 19:23:48 +03:00