Commit graph

172,524 commits

Author SHA1 Message Date
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
Alexander Barkov
12da27da85 MDEV-8472 BINARY, VARBINARY and BLOB return different warnings on CAST to DECIMAL 2015-07-16 16:28:06 +04:00
Sergey Vojtovich
94bc50650e MDEV-8374 - Debian: mysqld_safe Can't log to error log and syslog at the same time
Let mysqld_safe_syslog.cnf force disable error log so that logging to syslog is
not affected by previous log_error setting.

Added handling of --skip-log-error to mysqld_safe.
2015-07-16 14:03:29 +04:00
Monty
0ad00c66d2 Fix for MySQL bug #77448 Inconsistent handling of RAND() in WHERE and HAVING
Problem was that for queries of type:

select rand() r, rand()  p, rand() = rand() from a having r = p

The optimizer thought that r = p was same as rand() = rand() and this would always be true.

The problem was that when testing if two expressions are equal, we didn't take into account no determinstic functions.

The fix is to not compare non deterministic functions as equal.
2015-07-16 10:36:58 +03:00
Monty
872a953b22 MDEV-8469 Add RESET MASTER TO x to allow specification of binlog file nr
Other things:
- Avoid calling init_and_set_log_file_name() when opening binary log.
- Remove newlines early when reading from index file.
- Ensure that reset_logs() will work even if thd is 0 (Can happen on startup)
- Added thd to sart_slave_threads() for better error handling.
2015-07-16 10:36:58 +03:00
Nirbhay Choubey
df0498fd76 Update sys_vars.sys_vars_wsrep result. 2015-07-14 21:38:17 -04:00
Nirbhay Choubey
ee9bdcf79a Binlog SE doesn't implement abort_transaction(), so skip warning. 2015-07-14 17:33:22 -04:00
Nirbhay Choubey
e204116734 Check supress_my_ok before sending Ok packet (logic lost during merge). 2015-07-14 17:21:35 -04:00
Nirbhay Choubey
0e2ce3b745 Allow binlog row image column marking even for wsrep binlog emulation. 2015-07-14 17:16:28 -04:00
Nirbhay Choubey
dd4d81ddfd Update read_pos after reading from the cache. 2015-07-14 16:58:38 -04:00
Nirbhay Choubey
dced5146bd Merge branch '10.0-galera' into 10.1 2015-07-14 16:05:29 -04:00
Jan Lindström
6efdc398ba MDEV-8463: 10.0 tree does not build
Merge error on srv0start.cc
2015-07-14 20:36:23 +03:00
Jan Lindström
a9960ef0ec MDEV-8386: MARIADB creates very big tmp file > 351Gb. Started happening after Version 10.0.16-15
Fixed small size limit and added additional information if we reserve
new pages more then 50 times.
2015-07-14 20:14:48 +03:00
Jan Lindström
0a43236fbe Code cleanup. 2015-07-14 20:14:48 +03:00
Alexander Barkov
75931feabe MDEV-8362 dash '-' is not recognized in charset armscii8 on select where query 2015-07-14 12:00:05 +04:00
Jan Lindström
3bbffc2119 Merge pull request #85 from josh4trunks/10.0
Apply fixes for raw devices to XtraDB in MariaDB 10.0
2015-07-13 19:29:09 +03:00
Alexander Barkov
657f8a8d60 MDEV-8456 Dead code in Item_cond::fix_fields() and Item_func_between::fix_fields() 2015-07-13 13:16:14 +04:00
josh4trunks
a95be9644a Apply fix for raw devices to XtraDB 2015-07-12 19:53:38 -07:00
josh4trunks
ee5633a39e Apply fix for raw devices to XtraDB 2015-07-12 19:46:29 -07:00
Nirbhay Choubey
6771b818a3 MDEV-8383 : "GRANT role TO user" does not replicate
Enable replication of GRANT/REVOKE ROLE commands across
galera nodes.
2015-07-10 19:06:42 -04:00
Monty
d9835658e0 Updated fill_help_tables for MariaDB
- References changed from mysql.com to mariadb.com/kb
- NDB specfic things removed
- Changed other MySQL related things to MariaDB
2015-07-10 14:03:39 +03:00
Monty
f195f93903 Cleanups, fixed warnings from valgrind, fixed failing tests (because on changes in WSREP initialization) 2015-07-10 12:49:05 +03:00
Monty
24881437b7 Fixed bug found by bar where we didn't properely check length of last argument for BETWEEN
This should not have caused any notable errors in most cases.

After fix, we are not using keys to solve MIN/MAX if the string used for comparision is longer thant the column-
2015-07-10 09:18:17 +03:00
Monty
9bb8b74e99 Merge branch '10.1' of github.com:MariaDB/server into 10.1
Conflicts:
	sql/item_subselect.cc

Fixed also typo in comment
2015-07-09 14:47:32 +03:00
Olivier Bertrand
b520febbc3 Resolving conflict on ha_connect.cc 2015-07-09 12:33:17 +02:00
Monty
a6c8014387 Speed and code space optimziation:
- Cache variables.lc_messages->errmsgs->errmsgs in variables.errmsgs

This gives us 15 byte less code space and 2 memory references for any access to language dependent message,
of which there are 500 in the server..
2015-07-09 13:09:36 +03:00
Alexander Barkov
7780370343 MDEV-8336 The meaning of NO_ZERO_DATE is not clear for DATETIME.
In some cases NO_ZERO_DATE did not allow datetime values with zero date part
and non-zero time part (e.g. '0000-00-00 10:20:30.123456').
Allowing values of this kind in all known pieces of the code.
2015-07-08 19:20:07 +04:00
Nirbhay Choubey
8154ef4b16 MDEV-7067: Server outputs Galera (WSREP) information, even if Galera is disabled
Additional changes :
* On startup, do not initialize wsrep if wsrep_on=0.
* On shutdown, stop wsrep replication only if > 0 wsrep
threads are running.
2015-07-07 22:26:44 -04:00
Olivier Bertrand
fdd9af56f6 Correct typo in endian.test 2015-07-07 19:41:56 +02:00
Olivier Bertrand
0efaedf430 Add some new tests:
storage/connect/mysql-test/connect/r/endian.result
  storage/connect/mysql-test/connect/r/mysql_index.result
  storage/connect/mysql-test/connect/t/endian.test
  storage/connect/mysql-test/connect/t/mysql_index.test
2015-07-07 18:16:42 +02:00
Olivier Bertrand
6114101344 Fix regression bug on "select max(length(nom)) from emp1" when:
The emp1 table type is MYSQL
  nom is an indexed column
2015-07-07 15:55:32 +02:00
Alexander Barkov
b08c4201fa Removing unused String declaration in Create_field::Create_field 2015-07-07 15:59:21 +04:00
Alexander Barkov
e4f8cea356 MDEV-8419 utf32: compare broken bytes as "greater than any non-broken character" 2015-07-07 09:15:58 +04:00
Monty
7332af49e4 - Renaming variables so that they don't shadow others (After this patch one can compile with -Wshadow and get much fewer warnings)
- Changed ER(ER_...) to ER_THD(thd, ER_...) when thd was known or if there was many calls to current_thd in the same function.
- Changed ER(ER_..) to ER_THD_OR_DEFAULT(current_thd, ER...) in some places where current_thd is not necessary defined.
- Removing calls to current_thd when we have access to thd

Part of this is optimization (not calling current_thd when not needed),
but part is bug fixing for error condition when current_thd is not defined
(For example on startup and end of mysqld)

Notable renames done as otherwise a lot of functions would have to be changed:
- In JOIN structure renamed:
   examined_rows -> join_examined_rows
   record_count -> join_record_count
- In Field, renamed new_field() to make_new_field()

Other things:
- Added DBUG_ASSERT(thd == tmp_thd) in Item_singlerow_subselect() just to be safe.
- Removed old 'tab' prefix in JOIN_TAB::save_explain_data() and use members directly
- Added 'thd' as argument to a few functions to avoid calling current_thd.
2015-07-06 20:24:14 +03:00
Nirbhay Choubey
a5f4412bd4 Fix embedded result to reflect increased system variable's max value length. 2015-07-06 11:40:56 -04:00
Alexander Barkov
3a606ba210 Fixing a bug in MDEV-8418 (utf16, utf16le) and MDEV-8417 (utf8mb4).
Fixing non-BMP characters to have the same weight, as it was before
MDEV-8418 and MDEV-8417.
2015-07-06 18:59:33 +04:00
Alexander Barkov
b2e324a21f MDEV-8416 ucs2: compare broken bytes as "greater than any non-broken character"
MDEV-8418 utf16: compare broken bytes as "greater than any non-broken character"
2015-07-06 15:50:56 +04:00
Olivier Bertrand
f07359349f Fix loosing result lines when all of this is true:
The table type is MYSQL
  The query where clause includes an indexed column
  The where clause contains < or <= operator on this column
Change version date
  modified:   storage/connect/ha_connect.cc
  modified:   storage/connect/tabmysql.cpp

Add visual studio 2013 files to ignore
  modified:   .gitignore
2015-07-06 12:33:11 +02:00
Alexander Barkov
35d8ac350d MDEV-8417 utf8mb4: compare broken bytes as "greater than any non-broken character" 2015-07-06 10:47:39 +04:00
Monty
8d4d185a08 Simple optimization and removal of compiler warnings 2015-07-05 12:40:16 +03:00
Monty
86377d078e Fixes done while working on MDEV-4119:
Fixed several optimizer issues relatied to GROUP BY:

a) Refering to a SELECT column in HAVING sometimes calculated it twice, which caused problems with non determinstic functions

b) Removing duplicate fields and constants from GROUP BY was done too late for "using index for group by" optimization to work

c) EXPLAIN SELECT ... GROUP BY did wrongly show 'Using filesort' in some cases involving "Using index for group-by"


a) was fixed by:
- Changed last argument to Item::split_sum_func2() from bool to int to allow more flags
- Added flag argument to Item::split_sum_func() to allow on to specify if the item was in the SELECT part
- Mark all split_sum_func() calls from SELECT with SPLIT_SUM_SELECT
- Changed split_sum_func2() to do nothing if called with an argument that is not a sum function and doesn't include sum functions, if we are not an argument to SELECT.

This ensures that in a case like
select a*sum(b) as f1 from t1 where a=1 group by c having f1 <= 10;

That 'a' in the SELECT part is stored as a reference in the temporary table togeher with sum(b) while the 'a' in having isn't (not needed as 'a' is already a reference to a column in the result)

b) was fixed by:
- Added an extra remove_const() pass for GROUP BY arguments before make_join_statistics() in case of one table SELECT.

This allowes get_best_group_min_max() to optimize things better.

c) was fixed by:
- Added test for group by optimization in JOIN::exec_inner for
  select->quick->get_type() == QUICK_SELECT_I::QS_TYPE_GROUP_MIN_MAX

item.cc:
- Simplifed Item::split_sum_func2()
  - Split test to make them faster and easier to read
  - Changed last argument to Item::split_sum_func2() from bool to int to allow more flags
  - Added flag argument to Item::split_sum_func() to allow on to specify if the item was in the SELECT part
  - Changed split_sum_func2() to do nothing if called with an argument that is not a sum function and doesn't include sum functions, if we are not an argument to SELECT.

opt_range.cc:
- Simplified get_best_group_min_max() by calcuating first how many group_by elements.
- Use join->group instead of join->group_list to test if group by, as join->group_list may be NULL if everything was optimized away.

sql_select.cc:
- Added an extra remove_const() pass for GROUP BY arguments before make_join_statistics() in case of one table SELECT.
- Use group instead of group_list to test if group by, as group_list may be NULL if everything was optimized away.
- Moved printing of "Error in remove_const" to remove_const() instead of having it in caller.
- Simplified some if tests by re-ordering code.
- update_depend_map_for_order() and remove_const() fixed to handle the case where make_join_statistics() has not yet been called (join->join_tab is 0 in this case)
2015-07-05 12:39:46 +03:00
Alexander Barkov
7ab7f5327a Fixing a typo in the previous commit. 2015-07-03 19:08:18 +04:00
Alexander Barkov
fff30e26c3 Adding UTF8 related macros to reduce duplicate code. 2015-07-03 18:40:04 +04:00
Alexander Barkov
aeb8d713f4 Removing unused code in ctype-utf8.c 2015-07-03 17:30:15 +04:00
Alexander Barkov
9ad8ff666c MDEV-8415 utf8: compare broken bytes as "greater than any non-broken character" 2015-07-03 17:24:16 +04:00
Alexander Barkov
95d07ee408 MDEV-8215 Asian MB3 charsets: compare broken bytes as "greater than any non-broken character" 2015-07-03 10:33:17 +04:00
Sergei Petrunia
302bf7c466 Tabular ANALYZE must get its data from execution tracker 2015-07-02 13:40:03 +03:00
Jan Lindström
28a8ba089f Fix test failure seen on P7/P8 innodb-encrypt-tables update/validate
function used incorrect type.
2015-07-02 12:02:27 +03:00