1. 19 Apr, 2017 1 commit
    • Alexander Barkov's avatar
      MDEV-12514 Split Item_temporal_func::fix_length_and_dec() + MDEV-12515 · e2b03cd3
      Alexander Barkov authored
      This patch implements MDEV-12514 according to the task descriptions.
      It automatically fixes:
      MDEV-12515 Wrong value when storing DATE_ADD() and ADDTIME() to a numeric field
      
      Additionally:
      
      a. Moves Item_func::set_attributes_temporal() to
         Type_str_attributes::fix_attributes_temporal(),
        which is a more proper place and name for it.
      
      b. Continues replacing calls for:
           set_handler_by_field_type(MYSQL_TYPE_XXX)
         to corresponding:
           set_handler(&type_handler_xxx)
         which is faster.
         Note, we should eventually get rid of almost all set_handler_by_field_type().
      
      c. Makes type_handler_string, type_handler_time2, type_handler_newdate,
         type_handler_datetime2 public.
         (all built-in handlers will become public eventually)
      
      d. Removing Item_temporal_func::sql_mode, as it was not used.
      e2b03cd3
  2. 18 Apr, 2017 5 commits
  3. 15 Apr, 2017 1 commit
  4. 14 Apr, 2017 1 commit
  5. 13 Apr, 2017 2 commits
  6. 11 Apr, 2017 3 commits
    • Alexander Barkov's avatar
    • Alexander Barkov's avatar
    • Daniel Black's avatar
      Travis: Test more suites, latest OSX · eecce3d7
      Daniel Black authored
      Remove clang-3.8 which doesn't have a repository on apt.llvm.org any
      more.
      
      For OSX, xcode8.3 is explicitly specified.
      
      /usr/local/Cellar is used as a cache repository to save brew install
      time on OSX (and /usr/local was too big).
      
      Debian autobake.sh is moved to a matrix include.
      
      Other branches of the matrix build test other test suites.
      An Ubuntu galera is downloaded and used in the test suite.
      
      TYPE=RelWithDebInfo used with the test to provide backtraces with line
      numbers when crashes occur.
      
      Build of PLUGIN_AWS_KEY_MANAGEMENT enabled in build.
      
      Code supporting TYPE=Debug and -DWITH_ASAN=ON included by not enabled
      due to large numbers of errors.
      
      Running more tests in parallel (6) as container based builds seem to
      support them. The test case timeout has been set to 2 minutes as large
      stalls will put test cases over 50 minute interval.
      
      ccache enabled where possible. Linux clang builds don't use them as the
      minimum CMake version isn't there.
      eecce3d7
  7. 09 Apr, 2017 2 commits
  8. 08 Apr, 2017 3 commits
  9. 07 Apr, 2017 22 commits
    • Alexander Barkov's avatar
      fa5be1d3
    • Vladislav Vaintroub's avatar
    • Oleksandr Byelkin's avatar
      MDEV-12395: DROP PARTITION does not work as expected when table has DEFAULT LIST partition · d9484a2f
      Oleksandr Byelkin authored
      Data loss in case of partituon removing is documented => do not try to prevent it
      d9484a2f
    • Oleksandr Byelkin's avatar
      MDEV-12379: Server crashes in TABLE_LIST::is_with_table on SHOW CREATE VIEW · 27f6b11a
      Oleksandr Byelkin authored
      In case of error on opening VIEW (absent table for example) it is still possible to print its definition but some variable is not set (table_list->derived->derived) so it is better do not try to test it when there is safer alternative (table_list itself).
      27f6b11a
    • Monty's avatar
      Simple binary cache optimizations · 0177a9c7
      Monty authored
      - Don't call my_chsize() for small (less than 64K) binary log tmp files
      - Don't flush cache to disk on reset.
      0177a9c7
    • Monty's avatar
      Simple cleanups · 1bcfa14e
      Monty authored
      - Added file name to error in mysql-test-run
      - When creating tags, first do it for sql to make it easier to find things in server
      1bcfa14e
    • Marko Mäkelä's avatar
      MDEV-10139 Support for InnoDB SEQUENCE objects · 7c767a30
      Marko Mäkelä authored
      We introduce a NO_ROLLBACK flag for InnoDB tables. This flag only works
      for tables that have a single index. Apart from undo logging, this flag
      will also prevent locking and the assignment of DB_ROW_ID or DB_TRX_ID,
      and imply READ UNCOMMITTED isolation. It is assumed that the SQL layer
      is guaranteeing mutual exclusion.
      
      After the initial insert of the single record during CREATE SEQUENCE,
      InnoDB will be updating the single record in-place. This is crash-safe
      thanks to the redo log. (That is, after a crash after CREATE SEQUENCE
      was committed, the effect of sequence operations will be observable
      fully or not at all.)
      
      When it comes to the durability of the updates of SEQUENCE in
      InnoDB, there is a clear analogy to MDEV-6076 Persistent AUTO_INCREMENT.
      The updates would be made persistent by the InnoDB redo log flush
      at transaction commit or rollback (or XA PREPARE), provided that
      innodb_log_flush_at_trx_commit=1.
      
      Similar to AUTO_INCREMENT, it is possible that the update of a SEQUENCE
      in a middle of transaction becomes durable before the COMMIT/ROLLBACK of
      the transaction, in case the InnoDB redo log is being flushed as a result
      of the a commit or rollback of some other transaction, or as a result of
      a redo log checkpoint that can be initiated at any time by operations that
      are writing redo log.
      
      dict_table_t::no_rollback(): Check if the table does not support rollback.
      
      BTR_NO_ROLLBACK: Logging and locking flags for no_rollback() tables.
      
      DICT_TF_BITS: Add the NO_ROLLBACK flag.
      
      row_ins_step(): Assign 0 to DB_ROW_ID and DB_TRX_ID, and skip
      any locking for no-rollback tables. There will be only a single row
      in no-rollback tables (or there must be a proper PRIMARY KEY).
      
      row_search_mvcc(): Execute the READ UNCOMMITTED code path for
      no-rollback tables.
      
      ha_innobase::external_lock(), ha_innobase::store_lock():
      Block CREATE/DROP SEQUENCE in innodb_read_only mode.
      This probably has no effect for CREATE SEQUENCE, because already
      ha_innobase::create() should have been called (and refused)
      before external_lock() or store_lock() is called.
      
      ha_innobase::store_lock(): For CREATE SEQUENCE, do not acquire any
      InnoDB locks, even though TL_WRITE is being requested. (This is just
      a performance optimization.)
      
      innobase_copy_frm_flags_from_create_info(), row_drop_table_for_mysql():
      Disable persistent statistics for no_rollback tables.
      7c767a30
    • Vladislav Vaintroub's avatar
      MDEV-12473 - fix rocksdb linking error · a33653ee
      Vladislav Vaintroub authored
      link rocksdb with librt, for clock_gettime()
      a33653ee
    • Monty's avatar
      Change error message when using DROP VIEW on a non existing view from · 470c3fd9
      Monty authored
      "Unknown table" to "Unknown view"
      470c3fd9
    • Monty's avatar
      MDEV-10139 Support for SEQUENCE objects · 17a87d60
      Monty authored
      Working features:
      CREATE OR REPLACE [TEMPORARY] SEQUENCE [IF NOT EXISTS] name
          [ INCREMENT [ BY | = ] increment ]
          [ MINVALUE [=] minvalue | NO MINVALUE ]
          [ MAXVALUE [=] maxvalue | NO MAXVALUE ]
          [ START [ WITH | = ] start ] [ CACHE [=] cache ] [ [ NO ] CYCLE ]
          ENGINE=xxx COMMENT=".."
      SELECT NEXT VALUE FOR sequence_name;
      SELECT NEXTVAL(sequence_name);
      SELECT PREVIOUS VALUE FOR sequence_name;
      SELECT LASTVAL(sequence_name);
      
      SHOW CREATE SEQUENCE sequence_name;
      SHOW CREATE TABLE sequence_name;
      CREATE TABLE sequence-structure ... SEQUENCE=1
      ALTER TABLE sequence RENAME TO sequence2;
      RENAME TABLE sequence TO sequence2;
      DROP [TEMPORARY] SEQUENCE  [IF EXISTS] sequence_names
      
      Missing features
      - SETVAL(value,sequence_name), to be used with replication.
      - Check replication, including checking that sequence tables are marked
        not transactional.
      - Check that a commit happens for NEXT VALUE that changes table data (may
        already work)
      - ALTER SEQUENCE. ANSI SQL version of setval.
      - Share identical sequence entries to not add things twice to table list.
      - testing insert/delete/update/truncate/load data
      - Run and fix Alibaba sequence tests (part of mysql-test/suite/sql_sequence)
      - Write documentation for NEXT VALUE / PREVIOUS_VALUE
      - NEXTVAL in DEFAULT
        - Ensure that NEXTVAL in DEFAULT uses database from base table
      - Two NEXTVAL for same row should give same answer.
      - Oracle syntax sequence_table.nextval, without any FOR or FROM.
      - Sequence tables are treated as 'not read constant tables' by SELECT; Would
        be better if we would have a separate list for sequence tables so that
        select doesn't know about them, except if refereed to with FROM.
      
      Other things done:
      - Improved output for safemalloc backtrack
      - frm_type_enum changed to Table_type
      - Removed lex->is_view and replaced with lex->table_type. This allows
        use to more easy check if item is view, sequence or table.
      - Added table flag HA_CAN_TABLES_WITHOUT_ROLLBACK, needed for handlers
        that want's to support sequences
      - Added handler calls:
       - engine_name(), to simplify getting engine name for partition and sequences
       - update_first_row(), to be able to do efficient sequence implementations.
       - Made binlog_log_row() global to be able to call it from ha_sequence.cc
      - Added handler variable: row_already_logged, to be able to flag that the
        changed row is already logging to replication log.
      - Added CF_DB_CHANGE and CF_SCHEMA_CHANGE flags to simplify
        deny_updates_if_read_only_option()
      - Added sp_add_cfetch() to avoid new conflicts in sql_yacc.yy
      - Moved code for add_table_options() out from sql_show.cc::show_create_table()
      - Added String::append_longlong() and used it in sql_show.cc to simplify code.
      - Added extra option to dd_frm_type() and ha_table_exists to indicate if
        the table is a sequence. Needed by DROP SQUENCE to not drop a table.
      17a87d60
    • Monty's avatar
      MDEV-8203 Assert in Query_log_event::do_apply_event() · 546e7aa9
      Monty authored
      This happens because the master writes a table_map event to the binary log, but no row event.
      The slave has a check that there should always be a row event if there was a table_map event, which
      causes a crash.
      
      Fixed by remembering in the cache what kind of events are logged
      and ignore cached statements which is just a table map event.
      546e7aa9
    • Marko Mäkelä's avatar
      Remove the unused variable trx_t::support_xa. · 85da56bf
      Marko Mäkelä authored
      Also, merge some test changes from MySQL 5.7.10, for deprecating
      innodb_support_xa.
      85da56bf
    • Alexander Barkov's avatar
    • Sergei Golubchik's avatar
      use log-error in mtr, don't let mysqld to write to stderr · 84d9d286
      Sergei Golubchik authored
      because on Windows it cannot properly append to the file,
      doesn't use CreateFile(..., FILE_APPEND_DATA, ...)
      
      this fixes main.shutdown failures on Windows
      84d9d286
    • Sergei Golubchik's avatar
      cd79be82
    • Sergei Golubchik's avatar
      ASAN error in rpl.mysql-wsrep#110-2 · 06ee58a7
      Sergei Golubchik authored
      Annotate_rows_log_event again. When a new annotate event comes,
      the server applies it first (which backs up thd->query_string),
      then frees the old annotate event, if any. Normally there isn't.
      
      But with sub-statements (e.g. triggers) new annotate event comes
      before the first one is freed, so the second event backs up
      thd->query_string that was set by the first annotate event. Then
      the first event is freed, together with its query string. And then
      the second event restores thd->query_string to this freed memory.
      
      Fix: free old annotate event before applying the new one.
      06ee58a7
    • Sergei Golubchik's avatar
      ASAN errors in many rpl tests · 30ed99cb
      Sergei Golubchik authored
      Annotate_rows_log_event should always restore thd->query_string
      if it was backed up. Even if the backed up value is NULL.
      30ed99cb
    • Sergei Golubchik's avatar
      MDEV-11995 ALTER TABLE proceeds despite reporting ER_TOO_LONG_KEY error · 82196f01
      Sergei Golubchik authored
      automatic shortening of a too-long non-unique key should
      be not a warning, but a note. It's a normal optimization,
      doesn't affect correctness, and should never be converted to
      an error, no matter how strict sql_mode is.
      82196f01
    • Vladislav Vaintroub's avatar
      MDEV-12452 postfix - use C style cast, not reinterpret_cast · 30cbbfbf
      Vladislav Vaintroub authored
      to fix build on Win64
      30cbbfbf
    • Alexander Barkov's avatar
      MDEV-12457 Cursors with parameters · 113a980f
      Alexander Barkov authored
      113a980f
    • Alexander Barkov's avatar
      Using the -t command line to bison instead of %name-prefix · 75d1962a
      Alexander Barkov authored
      Needed to compile on machines with older bison versions.
      Adding a new parameter "name_prefix" to RUN_BISON() cmake macro.
      75d1962a
    • Alexander Barkov's avatar