1. 02 May, 2016 1 commit
    • Alexey Botchkov's avatar
      MDEV-9898 SET ROLE NONE can crash mysqld. · 94cd0f6c
      Alexey Botchkov authored
              The check_user_can_set_role() used find_user_exact() to get the
              permissions for the SET ROLE NONE command. Which returned NULL too often,
              for instance when user authenticated as 'user'@'%'.
              Now we use find_user_wild() instead.
      94cd0f6c
  2. 01 May, 2016 1 commit
    • Monty's avatar
      Fixed assert if user table was mailformed. · ad4239cc
      Monty authored
      Added mysql_to_mariadb.sql script, to change mysql.user tables from
      MySQL 5.7 to MariaDB.
      After this script is run, one can get the other tables fixed by running
      mysql_upgrade
      ad4239cc
  3. 29 Apr, 2016 1 commit
  4. 28 Apr, 2016 7 commits
  5. 27 Apr, 2016 3 commits
  6. 08 Apr, 2016 1 commit
    • Kristian Nielsen's avatar
      MDEV-9383: Server fails to read master.info after upgrade 10.0 -> 10.1 · 1cf852d8
      Kristian Nielsen authored
      In some cases, MariaDB 10.0 could write a master.info file that was read
      incorrectly by 10.1 and could cause server to fail to start after an upgrade.
      
      (If writing a new master.info file that is shorter than the old, extra
      junk may remain at the end of the file. This is handled properly in
      10.1 with an END_MARKER line, but this line is not written by
      10.0. The fix here is to make 10.1 robust at reading the master.info
      files written by 10.0).
      
      Fix several things around reading master.info and read_mi_key_from_file():
      
       - read_mi_key_from_file() did not distinguish between a line with and
         without an eqals '=' sign.
      
       - If a line was empty, read_mi_key_from_file() would incorrectly return
         the key from the previous call.
      
       - An extra using_gtid=X line left-over by MariaDB 10.0 might incorrectly
         be read and overwrite the correct value.
      
       - Fix incorrect usage of strncmp() which should be strcmp().
      
       - Add test cases.
      1cf852d8
  7. 07 Apr, 2016 2 commits
  8. 06 Apr, 2016 3 commits
  9. 03 Apr, 2016 1 commit
  10. 31 Mar, 2016 6 commits
  11. 30 Mar, 2016 2 commits
  12. 24 Mar, 2016 4 commits
  13. 23 Mar, 2016 3 commits
    • Alexey Botchkov's avatar
      MDEV-717 LP:1003679 - Wrong binlog order on concurrent DROP schema and CREATE function. · 2783fc7d
      Alexey Botchkov authored
              The cause of the issue is when DROP DATABASE takes
              metadata lock and is in progress through it's
              execution, a concurrently running CREATE FUNCTION checks
              for the existence of database which it succeeds and then it
              waits on the metadata lock.  Once DROP DATABASE writes to
              BINLOG and finally releases the metadata lock on schema
              object, the CREATE FUNCTION waiting on metadata lock
              gets in it's code path and succeeds and writes to binlog.
      2783fc7d
    • Alexander Barkov's avatar
      MDEV-9604 crash in Item::save_in_field with empty enum value · e4435b5e
      Alexander Barkov authored
      1. Fixing Field_time::get_equal_const_item() to pass TIME_FUZZY_DATES
         and TIME_INVALID_DATES to get_time_with_conversion().
         This is needed to make the recursively called Item::get_date() return
         non-NULL values on garbage input. This makes Field_time::get_equal_const_item()
         work consistently with how Item::val_time_packed() works.
      
      2. Fixing Item::get_date() to return TIME'00:00:00' rather than
         DATE'0000-00-00' on empty or garbage input when:
         - TIME_FUZZY_DATES is enabled
         - The caller requested a TIME value (by passing TIME_TIME_ONLY).
         This is needed to avoid conversion of DATE'0000-00-00' to TIME
         in get_time_with_conversion(), which would erroneously try to subtract
         CURRENT_DATE from DATE'0000-00-00' and return TIME'-838:59:59' rather than
         the desired zero value TIME'00:00:00'.
      
         #1 and #2 fix these type of scripts to return one row with both
         MyISAM and InnoDB, with and without an index on t1.b:
      
           CREATE TABLE t1 (a ENUM('a'), b TIME, c INT, KEY(b));
           INSERT INTO t1 VALUES ('','00:00:00',0);
           SELECT * FROM t1 WHERE b='';
           SELECT * FROM t1 WHERE a=b;
           SELECT * FROM t1 IGNORE INDEX(b) WHERE b='';
           SELECT * FROM t1 IGNORE INDEX(b) WHERE a=b;
      
         Additionally, #1 and #2 fix the originally reported in MDEV-9604 crash
         in Item::save_in_field(), because now execution goes through a different
         path, so save_in_field() is called for a Item_time_literal instance
         (which is non-NULL) rather than a Item_cache_str instance (which could
         return NULL without setting null_value).
      
      3. Fixing Field_temporal::get_equal_const_item_datetime() to enable
         equal field propagation for DATETIME and TIMESTAMP in case of
         comparison (e.g. when ANY_SUBST), for symmetry with
         Field_newdate::get_equal_const_item(). This fixes a number of problems
         with empty set returned on comparison to empty/garbage input.
         Now all SELECT queries in this script return one row for MyISAM and InnoDB,
         with and without an index on t1.b:
      
           CREATE TABLE t1 (a ENUM('a'), b DATETIME, c INT, KEY(b));
           INSERT INTO t1 VALUES ('','0000-00-00 00:00:00',0);
           SELECT * FROM t1 WHERE b='';
           SELECT * FROM t1 WHERE a=b;
           SELECT * FROM t1 IGNORE INDEX(b) WHERE b='';
           SELECT * FROM t1 IGNORE INDEX(b) WHERE a=b;
      e4435b5e
    • Elena Stepanova's avatar
      Fix sysvar tests - embedded and 32-bit · f66303dc
      Elena Stepanova authored
      f66303dc
  14. 22 Mar, 2016 5 commits