1. 06 Nov, 2018 4 commits
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 074c6840
      Marko Mäkelä authored
      074c6840
    • Marko Mäkelä's avatar
      Merge 10.2 into 10.3 · df563e0c
      Marko Mäkelä authored
      main.derived_cond_pushdown: Move all 10.3 tests to the end,
      trim trailing white space, and add an "End of 10.3 tests" marker.
      Add --sorted_result to tests where the ordering is not deterministic.
      
      main.win_percentile: Add --sorted_result to tests where the
      ordering is no longer deterministic.
      df563e0c
    • Marko Mäkelä's avatar
      Unify a test with the 10.3 version · bdfe2784
      Marko Mäkelä authored
      Remove trailing white space, and use lower case for "eval" and "let".
      Add an "End of 10.2 tests" marker to ease future merges.
      bdfe2784
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · 32062cc6
      Marko Mäkelä authored
      32062cc6
  2. 05 Nov, 2018 9 commits
  3. 04 Nov, 2018 2 commits
    • Sergei Golubchik's avatar
      MDEV-17349 Assertion `!table || (!table->read_set ||... · af9649c7
      Sergei Golubchik authored
      MDEV-17349 Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))' failed on concurrent SELECT and DELETE after RENAME from table with index on virtual column
      
      Race condition. field->flags were copied from s->field->flags during
      field->clone(), early in open_table_from_share(). But s->field->flags
      were getting their PART_INDIRECT_KEY_FLAG bit much later in
      TABLE::mark_columns_used_by_virtual_fields() and only once per share.
      
      If two threads were executing the code between field->clone()
      and mark_columns_used_by_virtual_fields() at the same time, only
      one would get PART_INDIRECT_KEY_FLAG bits in field[].
      af9649c7
    • Alexander Barkov's avatar
      MDEV-17607 DATE(COALESCE(year_column)) returns a wrong result · 563efece
      Alexander Barkov authored
      C++ does not guarantee the order of parameter evaluation.
      It was wrong to pass item->val_int() and item->null_value
      at the same time to any function or constructor.
      Adding a new helper class Longlong_null, and new methods
      Item::to_longlong_null() and Item_func_hybrid_field_type::to_longlong_null_op(),
      which make sure to properly call val_int()/int_op() and test null_value.
      Reorganizing the rest of the code accordingly.
      563efece
  4. 03 Nov, 2018 1 commit
  5. 02 Nov, 2018 4 commits
  6. 01 Nov, 2018 12 commits
  7. 31 Oct, 2018 8 commits
    • Elena Stepanova's avatar
      8d834cd0
    • Sergei Golubchik's avatar
      update rdiffs for 32bit · bf28ba67
      Sergei Golubchik authored
      bf28ba67
    • Vladislav Vaintroub's avatar
      MDEV-17195 Speedup lock-ddl-per-table, if there is a large number of tables · f8268f3c
      Vladislav Vaintroub authored
      Query INFORMATION_SCHEMA.INNODB_SYS_TABLES only once, and cache results.
      
      As a small cleanup, remove  mdl_lock_con_mutex, the MDL handling
      connection is never accessed by multiple threads at the same time.
      f8268f3c
    • Sergei Golubchik's avatar
      c0d75a6d
    • Sergei Golubchik's avatar
      compilation failure on Windows · 6087e21d
      Sergei Golubchik authored
        sql\sql_acl.cc(3114): error C2220: warning treated as error - no 'object' file generated
        sql\sql_acl.cc(3114): warning C4390: ';': empty controlled statement found; is this the intent?
      6087e21d
    • Sergei Golubchik's avatar
      MDEV-12321 authentication plugin: SET PASSWORD support · 7c40996c
      Sergei Golubchik authored
      Support SET PASSWORD for authentication plugins.
      
      Authentication plugin API is extended with two optional methods:
      * hash_password() is used to compute a password hash (or digest)
        from the plain-text password. This digest will be stored in mysql.user
        table
      * preprocess_hash() is used to convert this digest into some memory
        representation that can be later used to authenticate a user.
        Build-in plugins convert the hash from hexadecimal or base64 to binary,
        to avoid doing it on every authentication attempt.
      
      Note a change in behavior: when loading privileges (on startup or on
      FLUSH PRIVILEGES) an account with an unknown plugin was loaded with a
      warning (e.g. "Plugin 'foo' is not loaded"). But such an account could
      not be used for authentication until the plugin is installed. Now an
      account like that will not be loaded at all (with a warning, still).
      Indeed, without plugin's preprocess_hash() method the server cannot know
      how to load an account. Thus, if a new authentication plugin is
      installed run-time, one might need FLUSH PRIVILEGES to activate all
      existing accounts that were using this new plugin.
      7c40996c
    • Sergei Golubchik's avatar
      misc cleanups · 14e181a4
      Sergei Golubchik authored
      * remove dead code (from .yy)
      * remove redundant commands from the test
      * extract common code into a reusable function
        (get_auth_plugin, push_new_user)
      * rename update_user_table->update_user_table_password
      * simplify acl_update_user
      * don't strdup a string that's already in a memroot
        (in ACL_ROLE::ACL_ROLE(ACL_USER*))
      * create parent_grantee and role_grants dynamic arrays with size 0.
        to avoid any memory allocations when roles aren't used.
      14e181a4
    • Sergei Golubchik's avatar
      Use mysql.user.authentication_string for password · 76151f3c
      Sergei Golubchik authored
      Don't distinguish between a "password hash" and "authentication string"
      anymore. Now both are stored in mysql.user.authentication_string, both
      are handled identically internally. A "password hash" is just how some
      particular plugins interpret authentication string.
      
      Set mysql.user.plugin even if there is no password. The server will use
      mysql_native_password plugin in these cases, let's make it expicit.
      
      Remove LEX_USER::pwhash.
      76151f3c