1. 15 Feb, 2018 1 commit
  2. 14 Feb, 2018 5 commits
    • Alexander Barkov's avatar
      MDEV-15310 Range optimizer does not work well for "WHERE temporal_column NOT IN (const_list)" · c17a06ab
      Alexander Barkov authored
      There were two problems related to the bug report:
      1. Item_datetime::get_date() was not implemented.
         So execution went through val_int() followed
         by int-to-datetime or int-to-time conversion.
         This was the reason why the optimizer did not
         work well on data with fractional seconds.
      2. Item_datetime::set() did not have a TIME specific code
         to mix months and days to hours after unpack_time().
         This is why the optimizer did not work well with negative
         TIME values, as well as huge time values.
      
      Changes:
      
      1. Overriding Item_datetime::get_date(), to return ltime.
         This fixes the problem N1.
      2. Cleanup: Moving pack_time() and unpack_time() from
         sql-common/my_time.c and include/my_time.h to
         sql/sql_time.cc and sql/sql_time.h, as they are not needed
         on the client side.
      3. Adding a new "enum_mysql_timestamp_type ts_type" parameter
         to unpack_time() and moving the TIME specific code to mix
         months and days with hours inside unpack_time().
         Adding a new "ts_type" parameter to Item_datetime::set(),
         to pass it from the caller down to unpack_time().
         So now the TIME specific code is automatically called
         from Item_datetime::set(). This fixes the problem N2.
         This change also helped to get rid of duplicate TIME specific code
         from other three places, where mixing month/days to hours
         was done immediately after unpack_time().
         Moving the DATE specific code to zero hhmmssff
         from Item_func_min_max::get_date_native to inside unpack_time(),
         for symmetry.
      4. Removing the virtual method in_vector::result_type(),
         adding in_vector::type_handler() instead.
         This helps to get result_type(), field_type(),
         mysql_timestamp_type() of an in_vector easier.
         Passing type_handler()->mysql_timestamp_type() as
         a new parameter to Item_datetime::set() inside
         in_temporal::value_to_item().
      5. Cleaup: Removing separate implementations of in_datetime::get_value()
         and in_time::get_value(). Adding a single implementation
         in_temporal::get_value() instead.
         Passing type_handler()->field_type() to get_value_internal().
      c17a06ab
    • Monty's avatar
      Fix privilege checking for sequence · 1fe9092d
      Monty authored
      MDEV-13732 User with SELECT privilege can ALTER sequence
      1fe9092d
    • Marko Mäkelä's avatar
      Merge 10.2 into bb-10.2-ext · dc09f8f2
      Marko Mäkelä authored
      dc09f8f2
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · c6e35276
      Marko Mäkelä authored
      c6e35276
    • Alexey Yurchenko's avatar
      GAL-506 breaks galera_defaults MTR test by upping repl.proto_max again. Fix... · a33c9a07
      Alexey Yurchenko authored
      GAL-506 breaks galera_defaults MTR test by upping repl.proto_max again. Fix this once and for all by overwriting it with constant string since it makes little sense to check for it in this test.
      a33c9a07
  3. 13 Feb, 2018 8 commits
  4. 12 Feb, 2018 7 commits
    • Monty's avatar
      Added Max_index_length and Temporary to SHOW TABLE STATUS · 54db0be3
      Monty authored
      - Max_index_length is supported by MyISAM and Aria tables.
      - Temporary is a placeholder to signal that a table is a
        temporary table. For the moment this is always "N", except
        "Y" for generated information_schema tables and NULL for
        views. Full temporary table support will be done in another task.
        (No reason to have to update a lot of result files twice in a row)
      54db0be3
    • Monty's avatar
      Updated galera .result files · 19dd14e6
      Monty authored
      19dd14e6
    • Marko Mäkelä's avatar
      MDEV-15270 Mariabackup should not try to use doublewrite buffer · 00f0c039
      Marko Mäkelä authored
      When Mariabackup gets a bad read of the first page of the system
      tablespace file, it would inappropriately try to apply the doublewrite
      buffer and write changes back to the data file (to the source file)!
      This is very wrong and must be prevented.
      
      The correct action would be to retry reading the system tablespace
      as well as any other files whose first page was read incorrectly.
      Fixing this was not attempted.
      
      xb_load_tablespaces(): Shorten a bogus message to be more relevant.
      The message can be displayed by --backup or --prepare.
      
      xtrabackup_backup_func(), os_file_write_func(): Add a missing space
      to a message.
      
      Datafile::restore_from_doublewrite(): Do not even attempt the
      operation in Mariabackup.
      
      recv_init_crash_recovery_spaces(): Do not attempt to restore the
      doublewrite buffer in Mariabackup (--prepare or --export), because
      all pages should have been copied correctly in --backup already,
      and because --backup should ignore the doublewrite buffer.
      
      SysTablespace::read_lsn_and_check_flags(): Do not attempt to initialize
      the doublewrite buffer in Mariabackup.
      
      innodb_make_page_dirty(): Correct the bounds check.
      
      Datafile::read_first_page(): Correct the name of the parameter.
      00f0c039
    • Alexander Barkov's avatar
    • Marko Mäkelä's avatar
      MDEV-13869 MariaDB slow start · 33f70c4d
      Marko Mäkelä authored
      When code from MySQL 5.7.9 was merged to MariaDB 10.2.2
      in commit 2e814d47
      an assignment validate=true was inadvertently added to the function
      dict_check_sys_tables().
      
      This causes InnoDB to open every single .ibd file on startup, even
      when no crash recovery was needed.
      
      Simply removing the assignment would make some tests fail. We do the
      best to retain almost the same level of inconsistency detection.
      In the test innodb.table_flags, access to one of the tables will not
      be blocked despite inconsistent flags.
      
      dict_check_sys_tables(): Remove the problematic assignment, and skip
      validation in normal startup.
      
      dict_load_table_one(): If the .ibd file cannot be opened, mark the
      table as corrupted and unreadable.
      
      fil_node_open_file(): Validate FSP_SPACE_FLAGS with the expected
      flags. If reading the tablespace fails, invalidate node->handle
      instead of letting it remain stale. This bug was caught by a
      fil_validate() assertion failure.
      
      fsp_flags_try_adjust(): If the tablespace file is invalid, do nothing.
      33f70c4d
    • Alexander Barkov's avatar
    • Elena Stepanova's avatar
      7a106d19
  5. 11 Feb, 2018 1 commit
  6. 10 Feb, 2018 5 commits
  7. 09 Feb, 2018 7 commits
  8. 08 Feb, 2018 6 commits