1. 12 May, 2018 4 commits
    • Sergei Golubchik's avatar
      MDEV-14820 System versioning is applied incorrectly to CTEs · 531acda4
      Sergei Golubchik authored
      Make sure that SELECT_LEX_UNIT::derived, behaves as documented
      (points to the "TABLE_LIST representing this union in the
      embedding select"). For recursive CTE this was not necessarily
      the case, it could've pointed to the TABLE_LIST inside the CTE,
      not in the embedding select.
      
      To fix:
      * don't update unit->derived in mysql_derived_prepare(), pass derived
        as an argument to st_select_lex_unit::prepare()
      * prefer to set unit->derived in TABLE_LIST::init_derived()
        to the TABLE_LIST in the embedding select, not to the recursive
        reference. Fail if there are many TABLE_LISTs in the embedding
        select with conflicting FOR SYSTEM_TIME clauses.
      
      cleanup:
      * remove redundant THD* argument from st_select_lex_unit::prepare()
      531acda4
    • Sergei Golubchik's avatar
      cleanup: hide HA_ERR_RECORD_DELETED in ha_rnd_next() · 0f956a06
      Sergei Golubchik authored
      it's internal storage engine error, don't let it leak
      into the upper layer.
      0f956a06
    • Sergei Golubchik's avatar
      ./mtr --gdb testname · 5441bbd3
      Sergei Golubchik authored
      Make --gdb to take an optional argument *only* if it's
      written after '=', not after a space.
      
      followup for 339b9055
      5441bbd3
    • Sergei Golubchik's avatar
      compilation warnings w/o partitioning · 0a1c0a43
      Sergei Golubchik authored
      0a1c0a43
  2. 11 May, 2018 7 commits
    • Sergey Vojtovich's avatar
      MDEV-15592 - Column COMPRESSED should select a 'high order' datatype · c9829242
      Sergey Vojtovich authored
      Compressed blob columns didn't accept data at their capacity. E.g. storing
      255 bytes to TINYBLOB results in "Data too long" error.
      
      Now it is allowed assuming compression method was able to produce shorter
      string (so that both metadata and compressed data fits blob) and
      column_compression_threshold is lower than blob.
      
      If no compression was performed, we still have to reserve additional byte
      for metadata and thus we perform normal data truncation and return it's
      status.
      c9829242
    • twocode's avatar
      User _server_host per discussion. · 8ad12b66
      twocode authored
      8ad12b66
    • Xiangyu Hu's avatar
      Add host name to session attributes. · ee8dfc68
      Xiangyu Hu authored
      ee8dfc68
    • Alexander Barkov's avatar
      Removing some duplicate code in THD::convert_string() & friends · 4a126bf3
      Alexander Barkov authored
      1. Adding THD::convert_string(LEX_CSTRING *to,...) as a wrapper
         for convert_string(LEX_STRING *to,...), as LEX_CSTRING
         is now frequently used for conversion purpose.
         This reduced duplicate code in TEXT_STRING_sys,
         TEXT_STRING_literal, TEXT_STRING_filesystem grammar rules in *.yy
      
      2. Adding yet another THD::convert_string() with an extra parameter
         "bool simple_copy_is_possible". This even more reduced
         repeatable code in the mentioned grammar rules in *.yy
      
      3. Deriving Lex_ident_cli_st from Lex_string_with_metadata_st,
         as they have very similar functionality. Moving m_quote
         from Lex_ident_cli_st to Lex_string_with_metadata_st,
         as m_quote will be used later to optimize string literals anyway
         (e.g. avoid redundant copying on the tokenizer stage).
         Adjusting Lex_input_stream::get_text() accordingly.
      
      4. Moving the reminders of the code in TEXT_STRING_sys, TEXT_STRING_literal,
         TEXT_STRING_filesystem grammar rules as new methods in THD:
         - make_text_string_sys()
         - make_text_string_connection()
         - make_text_string_filesystem()
         and changing *.yy to use these new methods.
         This reduced the amount of similar code in
         sql_yacc.yy and sql_yacc_ora.yy.
      
      5. Removing duplicate code in Lex_input_stream::body_utf8_append_ident():
         by reusing THD::make_text_string_sys(). Thanks to #3 and #4.
      
      6. Making THD members charset_is_system_charset,
         charset_is_collation_connection, charset_is_character_set_filesystem
         private, as they are not needed externally any more.
      4a126bf3
    • Sergei Golubchik's avatar
      compiler warning · af682525
      Sergei Golubchik authored
      item->val_int() == bool
      af682525
    • Sergei Golubchik's avatar
      MDEV-15746 ASAN heap-use-after-free in... · e19915d5
      Sergei Golubchik authored
      MDEV-15746 ASAN heap-use-after-free in Item_change_list::rollback_item_tree_changes on ALTER executed as PS
      
      10.3+ fix
      
      On ALTER TABLE, if a non-changed column default
      might need a charset conversion, it must
      be a blob. Because blob's defaults ar stored
      as expressions, and for any other type
      a basic_const_item() will be in the record,
      so it'll have correct charset and won't need
      converting. For the same reason it makes no
      sense to convert blob defaults (and it's
      unsafe, see MDEV-15746).
      
      test case is already in main/ps.test
      e19915d5
    • Sergei Golubchik's avatar
      Merge branch '10.2' into 10.3 · c9717dc0
      Sergei Golubchik authored
      c9717dc0
  3. 10 May, 2018 6 commits
    • Alexander Barkov's avatar
    • Alexander Barkov's avatar
      MDEV-16117 SP with a single FOR statement creates but further fails to load · fc63c1e1
      Alexander Barkov authored
      The code in the "sp_tail" rule in sql_yacc.yy always
      used YYLIP->get_cpp_tok_start() as the start of the body,
      and did not check for possible lookahead which happens
      for keywords "FOR", "VALUES" and "WITH" for LALR(2)
      resolution in Lex_input_stream::lex_token().
      
      In case of the lookahead token presence,
      get_tok_start_prev() should have been used instead
      of get_cpp_tok_start() as the beginning of the SP body.
      
      Change summary:
      
      This patch hides the implementation of the lookahead
      token completely inside Lex_input_stream.
      The users of Lex_input_stream now just get token-by-token
      transparently and should not care about lookahead any more.
      Now external users of Lex_input_stream
      are not aware of the lookahead token at all.
      
      Change details:
      
      - Moving Lex_input_stream::has_lookahead() into the "private" section.
      
      - Removing Lex_input_stream::get_tok_start_prev() and
        Lex_input_stream::get_cpp_start_prev().
      
      - Fixing the external code to call get_tok_start() and get_cpp_tok_start()
        in all places where get_tok_start_prev() and get_cpp_start_prev()
        where used.
      
      - Adding a test for has_lookahead() right inside
        get_tok_start() and get_cpp_tok_start().
        If there is a lookahead token, these methods now
        return the position of the previous token automatically:
      
         const char *get_tok_start()
         {
           return has_lookahead() ? m_tok_start_prev : m_tok_start;
         }
      
         const char *get_cpp_tok_start()
         {
          return has_lookahead() ? m_cpp_tok_start_prev : m_cpp_tok_start;
         }
      
      - Fixing the internal code inside Lex_input_stream methods
        to use m_tok_start and m_cpp_tok_start directly,
        instead of calling get_tok_start() and get_cpp_tok_start(),
        to make sure to access to the *current* token position
        (independently of a lookahead token presence).
      fc63c1e1
    • Sergei Golubchik's avatar
      Merge branch 'connect/10.2' into 10.2 · 1d411a8a
      Sergei Golubchik authored
      1d411a8a
    • Sergei Golubchik's avatar
      Merge branch '10.1' into 10.2 · 9b1824dc
      Sergei Golubchik authored
      9b1824dc
    • Sergei Golubchik's avatar
      MDEV-15746 ASAN heap-use-after-free in... · 92a13148
      Sergei Golubchik authored
      MDEV-15746 ASAN heap-use-after-free in Item_change_list::rollback_item_tree_changes on ALTER executed as PS
      
      don't try to convert a default value string from a user character set
      into a column character set, if this particular default value string did
      not came from the user at all (that is, if it's an ALTER TABLE and the
      default value string is the *old* default value of the unaltered
      column).
      
      This used to crash, because old defaults are allocated on the old
      table's memroot, which is freed mid-ALTER when the old table is closed.
      So thd->rollback_item_tree_changes() at the end of the ALTER was writing
      into the freed memory.
      92a13148
    • Sergei Golubchik's avatar
      MDEV-15626 Assertion on update virtual column in partitioned table · 88a0bb83
      Sergei Golubchik authored
      table.cc:
        virtual columns must be computed for INSERT, if they're part
        of the partitioning expression.
      
      this change broke gcol.gcol_partition_innodb.
      fix CHECK TABLE for partitioned tables and vcols.
      
      sql_partition.cc:
        mark prerequisite base columns in full_part_field_set
      ha_partition.cc
        initialize vcol_set accordingly
      88a0bb83
  4. 09 May, 2018 15 commits
    • Vladislav Vaintroub's avatar
      Fix warning VS2017 15.7 update. · 8ba0eea6
      Vladislav Vaintroub authored
      This previously unreported warning comes from casting size_t to ulong
      in sql_hset.h in Hash_Set::at().
      
      Change my_hash_element to accept size_t index parameter.
      8ba0eea6
    • Jacob Mathew's avatar
      MDEV-15697: Remote user used by Spider needs SUPER privilege · df420cbb
      Jacob Mathew authored
      The remote users need the SUPER privilege because by default Spider sends a
      'SET SQL_LOG_OFF' statement to the data nodes.  This is controlled by the
      spider_internal_sql_log_off configuration setting on the Spider node, which
      can only be set to 0 or 1, with a default value of 1.
      
      I have fixed the problem by changing this configuration setting so that if it
      is NOT SET, which is the most likely case, the Spider node DOES NOT SEND the
      'SET SQL_LOG_OFF' statement to the data nodes.  However if the
      spider_internal_sql_log_off setting IS EXPLICITLY SET to either 0 or 1, then
      the Spider node DOES SEND the 'SET SQL_LOG_OFF' statement, requiring a remote
      user with the SUPER privilege.  The Spider documentation will be updated to
      reflect this change.
      
      Author:
        Jacob Mathew.
      
      Reviewer:
        Kentoku Shiba.
      
      Cherry-Picked:
        Commit 72f0efac on branch bb-10.3-MDEV-15697
      df420cbb
    • Jacob Mathew's avatar
      MDEV-15697: Remote user used by Spider needs SUPER privilege · 8b087c63
      Jacob Mathew authored
      The remote users need the SUPER privilege because by default Spider sends a
      'SET SQL_LOG_OFF' statement to the data nodes.  This is controlled by the
      spider_internal_sql_log_off configuration setting on the Spider node, which
      can only be set to 0 or 1, with a default value of 1.
      
      I have fixed the problem by changing this configuration setting so that if it
      is NOT SET, which is the most likely case, the Spider node DOES NOT SEND the
      'SET SQL_LOG_OFF' statement to the data nodes.  However if the
      spider_internal_sql_log_off setting IS EXPLICITLY SET to either 0 or 1, then
      the Spider node DOES SEND the 'SET SQL_LOG_OFF' statement, requiring a remote
      user with the SUPER privilege.  The Spider documentation will be updated to
      reflect this change.
      
      Author:
        Jacob Mathew.
      
      Reviewer:
        Kentoku Shiba.
      
      Merged:
        Branch bb-10.3-MDEV-15697 into 10.3
      8b087c63
    • Marko Mäkelä's avatar
      Rename a test (fix merge error) · 85ccdd9f
      Marko Mäkelä authored
      85ccdd9f
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-16125 Crash or ASAN heap-buffer-overflow in... · d94a9553
      Thirunarayanan Balathandayuthapani authored
      MDEV-16125 Crash or ASAN heap-buffer-overflow in mach_read_from_n_little_endian upon ALTER TABLE with blob
      
      - Virtual column should be considered only to find the respective non-null fields.
      But virtual column can never changed from NULL to NOT NULL.
      d94a9553
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · e9f26097
      Marko Mäkelä authored
      e9f26097
    • Sergei Golubchik's avatar
      install disks plugin on debian · ff579bc8
      Sergei Golubchik authored
      ff579bc8
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-16125 Shutdown crash when innodb_force_recovery >= 2 · fe95cb2e
      Thirunarayanan Balathandayuthapani authored
      Problem:
      =======
      InnoDB master thread encounters the shutdown state as SRV_SHUTDOWN_FLUSH_PHASE
      when innodb_force_recovery >=2 and slow scheduling of master thread during
      shutdown.
      
      Fix:
      ====
      There is no need for master thread itself if innodb_force_recovery >=2.
      Don't create the master thread if innodb_force_recovery >= 2
      fe95cb2e
    • Marko Mäkelä's avatar
      9be99dac
    • Marko Mäkelä's avatar
      Merge 10.0 into 10.1 · d06ca5bb
      Marko Mäkelä authored
      d06ca5bb
    • Marko Mäkelä's avatar
      MDEV-16119 InnoDB lock->index refers to a freed object after failed ADD INDEX · 4f42f0d1
      Marko Mäkelä authored
      The problem is hard to repeat, and I failed to create a deterministic
      test case. Online index creation creates stubs for to-be-created indexes.
      If index creation fails, we could remove these stubs while locks exist
      in the indexes. (This would require that the index creation was completed,
      and a concurrent DML operation acquired a lock on a record in the
      uncommitted index. If a duplicate key error occurs in an uncommitted
      index, the error will be reported for the CREATE UNIQUE INDEX, not for
      the DML operation that tried to insert the duplicate.)
      
      dict_table_try_drop_aborted(), row_merge_drop_indexes(): If transactional
      locks exist on the table, keep the table->indexes intact.
      4f42f0d1
    • Marko Mäkelä's avatar
      MDEV-15916 Change buffer crash during TRUNCATE or DROP TABLE · 0ea625b3
      Marko Mäkelä authored
      ibuf_restore_pos(): Do not issue any messages if the tablespace
      is being dropped or truncated. In MariaDB 10.2, TRUNCATE TABLE
      would not change the tablespace ID, and therefore the tablespace
      would be found, even though TRUNCATE is in progress.
      
      Furthermore, do not commit suicide if restoring the change buffer
      cursor fails. The worst that could happen is that a secondary index
      becomes corrupted due to incomplete change buffer merge.
      0ea625b3
    • Igor Babaev's avatar
      MDEV-16104 Server crash in JOIN::fix_all_splittings_in_plan · fc0f5adb
      Igor Babaev authored
      upon select with view and subqueries
      
      This bug occurred when a splittable materialized derived/view
      were used inside another splittable materialized derived/view.
      The bug happened because the function JOIN::fix_all_splittings_in_plan()
      was called at the very beginning of the optimization phase 2 at
      the moment when the plan structure of the embedding derived/view
      were not valid. The proper position for this call is the very
      end of the optimization phase 1.
      fc0f5adb
    • Jan Lindström's avatar
      MDEV-15351: wsrep_sst_xtrabackup is broken in 10.1.31 · b2fc197b
      Jan Lindström authored
      Remove the setup_ports function call. This is related to
      https://github.com/MariaDB/server/pull/717
      
      Thanks to Daniel Black and Bart S.
      b2fc197b
    • Daniel Black's avatar
  5. 08 May, 2018 8 commits