1. 09 Mar, 2011 2 commits
  2. 08 Mar, 2011 4 commits
  3. 07 Mar, 2011 1 commit
  4. 04 Mar, 2011 6 commits
  5. 03 Mar, 2011 4 commits
    • Sergey Petrunya's avatar
      Merge fix for BUG#693747 · 57f7ca42
      Sergey Petrunya authored
      57f7ca42
    • Sergey Petrunya's avatar
      Merge BUG#707925. · e21fd5ac
      Sergey Petrunya authored
      e21fd5ac
    • Sergey Petrunya's avatar
      BUG#707925: Wrong result with join_cache_level=6 optimizer_use_mrr = force (incremental, BKA join) · 3c69d4f2
      Sergey Petrunya authored
      - The problem was that Mrr_ordered_index_reader's interrupt_read() and resume_read() would 
        save and restore 1) index tuple  2) the rowid (as bytes returned by handler->position()).  Clustered 
        primary key columns were not saved/restored. 
        They are not explicitly present in the index tuple (i.e. table->key_info[secondary_key].key_parts 
        doesn't list them), but they are actually there, in particular 
        table->field[clustered_primary_key_member].part_of_key(secondary_key) == 1. Index condition pushdown
        code [correctly] uses the latter as inidication that pushed index condition can refer to clustered PK
        members. 
      
        The fix was to make interrupt_read()/resume_read() to save/restore clustered primary key members as well,
        so that we get correct values for them when evaluating pushed index condition.
      [3rd attempt: remove the debugging aids, fix comments in testcase]
      3c69d4f2
    • unknown's avatar
      Fix LP BUG#718763 · 5dfb33be
      unknown authored
      Analysis:
      The reason for the crash was that the inner subquery was executed
      via a scan on a final temporary table applied after all other
      operations. This final operation is implemented by changing the
      contents of the JOIN object of the subquery to represent a table
      scan over the temp table. At the same time query optimization of
      the outer subquery required evaluation of the inner subquery, which
      happened before the actual EXPLAIN. The evaluation left the JOIN
      object of the inner subquery in the changed state, where it represented
      a table scan over a temp table, and EXPLAIN crashed because the temp
      table is not associated with any table reference (TABLE_LIST object).
      The reason the JOIN was not restored was because its saving/restoration
      was controlled by the join->select_lex->uncacheable flag, which was
      not set in the case of materialization.
      
      Solution:
      In the methods Item_in_subselect::[single | row]_value_transformer() set:
          select_lex->uncacheable|= UNCACHEABLE_EXPLAIN;
      In addition, for symmetry, change:
          master_unit->uncacheable|= UNCACHEABLE_EXPLAIN;
      instead of UNCACHEABLE_DEPENDENT because if a subquery was not
      dependent initially, the changed methods do not change this
      fact. The subquery may later become correlated if it is transformed
      to an EXISTS query, but it may stay uncorrelated if executed via
      materialization.
      5dfb33be
  6. 02 Mar, 2011 1 commit
    • Sergey Petrunya's avatar
      BUG#693747: Assertion multi_range_read.cc:908: int DsMrr_impl::dsmrr_init · 75bd2a0e
      Sergey Petrunya authored
      - Make DsMrr_impl::dsmrr_init() handle the case of 
         1. 1st MRR scan using DS-MRR strategy (i.e. doing key sorting and rowid sorting)
         2. 2nd MRR scan getting a buffer that's too small to fit one key element 
            and one rowid element, and so falling back to default MRR implementation
        In this case, dsmrr_init() is invoked with {primary_handler, secondary_handler}
        initialized for DS-MRR scan and have to reset them to be initialized for the
        default MRR scan.
      (attempt 2, with simplified testcase)
      75bd2a0e
  7. 01 Mar, 2011 11 commits
  8. 28 Feb, 2011 9 commits
    • Michael Widenius's avatar
    • Michael Widenius's avatar
      Fixes to mysql-test-run and tests · c5adf0db
      Michael Widenius authored
      - Added ORDER BY to get consistent results to federated_server
      - Sort slow tests first
      
      mysql-test/lib/My/ConfigFactory.pm:
        Remove usage of port as the test suite is not using that anymore and it causes some probelms in buildbot
      mysql-test/lib/mtr_cases.pm:
        Sort slow tests first
        If a test is marked as 'big_test' also mark it as 'long_test'
      mysql-test/suite/federated/federated_server.result:
        Added ORDER BY to get consistent results
      mysql-test/suite/federated/federated_server.test:
        Added ORDER BY to get consistent results
      c5adf0db
    • Sergey Petrunya's avatar
      BUG#724275: Crash in JOIN::optimize in maria-5.3 · 1103e74c
      Sergey Petrunya authored
      - Make equality-substitution-for-ref-access code in JOIN::optimize() treat join_tab->ref.key_copy correctly
        (in the way create_ref_for_key() has filled it).
      1103e74c
    • Michael Widenius's avatar
      Get rid of compiler warnings · 1e4ef6a8
      Michael Widenius authored
      mysql-test/suite/parts/t/partition_alter4_innodb.test:
        Removed duplicated big_test marker
      sql-common/my_time.c:
        Get rid of compiler warning about uninitialized members
      1e4ef6a8
    • Michael Widenius's avatar
      Increase version number · 2b870884
      Michael Widenius authored
      Taged a couple of tests with --big-test
      
      configure.in:
        Upgrade version number
      mysql-test/suite/parts/t/partition_alter1_1_2_innodb.test:
        Removed duplicate big_test tag
      mysql-test/suite/parts/t/partition_alter1_2_innodb.test:
        Removed duplicate big_test tag
      mysql-test/suite/parts/t/partition_decimal_innodb.test:
        Added big_test tag as this takes forever with valgrind
      mysql-test/suite/parts/t/partition_decimal_myisam.test:
        Removed duplicate big_test tag
      2b870884
    • Michael Widenius's avatar
      11ed10cb
    • Michael Widenius's avatar
      Merge with alias as String · dfcc0010
      Michael Widenius authored
      dfcc0010
    • Michael Widenius's avatar
      Change TABLE->alias to String for less memory reallocation · d32246f8
      Michael Widenius authored
      Changed some String.ptr() -> String.c_ptr() for String that are not guaranteed to end with \0
      Removed some c_ptr() usage from parameters to functions that takes ptr & length
      Use preallocate buffers to avoid calling malloc() for most operations. 
      
      
      sql/event_db_repository.cc:
        alias is now a String
      sql/event_scheduler.cc:
        c_ptr -> c_ptr_safe() to avoid warnings from valgrind.
      sql/events.cc:
        c_ptr -> c_ptr_safe() to avoid warnings from valgrind.
        c_ptr -> ptr() as function takes ptr & length
      sql/field.cc:
        alias is now a String
      sql/field.h:
        alias is now a String
      sql/ha_partition.cc:
        alias is now a String
      sql/handler.cc:
        alias is now a String
        ptr() -> c_ptr() as string is not guaranteed to be \0 terminated
      sql/item.cc:
        Store error parameter in separarte buffer to ensure correct error message
      sql/item_func.cc:
        ptr() -> c_ptr_safe() as string is not guaranteed to be \0 terminated
      sql/item_sum.h:
        Use my_strtod() instead of my_atof() to not have to make string \0 terminated
      sql/lock.cc:
        alias is now a String
      sql/log.cc:
        c_ptr() -> ptr() as function takes ptr & length
      sql/log_event.cc:
        c_ptr_quick() -> ptr() as we only want to get the pointer to String buffer
      sql/opt_range.cc:
        ptr() -> c_ptr() as string is not guaranteed to be \0 terminated
      sql/opt_table_elimination.cc:
        alias is now a String
      sql/set_var.cc:
        ptr() -> c_ptr() as string is not guaranteed to be \0 terminated
        c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
        c_ptr() -> ptr() as function takes ptr & length
        Simplify some code.
      sql/sp.cc:
        c_ptr() -> ptr() as function takes ptr & length
      sql/sp_rcontext.cc:
        alias is now a String
      sql/sql_base.cc:
        alias is now a String.
        Here we win a realloc() for most alias usage.
      sql/sql_class.cc:
        Use size descriptor for printf() to avoid accessing bytes outside of buffer
      sql/sql_insert.cc:
        Change allocation of TABLE as it's now contains a String
        _ptr() -> ptr() as function takes ptr & length
      sql/sql_load.cc:
        Use preallocate buffers to avoid calling malloc() for most operations.
      sql/sql_parse.cc:
        Use c_ptr_safe() to ensure string is \0 terminated.
      sql/sql_plugin.cc:
        c_ptr_quick() -> ptr() as function takes ptr & length
      sql/sql_select.cc:
        alias is now a String
      sql/sql_show.cc:
        alias is now a String
      sql/sql_string.h:
        Added move() function to change who owns the string (owner does the free)
      sql/sql_table.cc:
        alias is now a String
        c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
      sql/sql_test.cc:
        c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
        alias is now a String
      sql/sql_trigger.cc:
        c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
        Use field->init() to setup pointers to alias.
      sql/sql_update.cc:
        alias is now a String
      sql/sql_view.cc:
        ptr() -> c_ptr_safe() as string is not guaranteed to be \0 terminated
      sql/sql_yacc.yy:
        r() -> c_ptr() as string is not guaranteed to be \0 terminated
      sql/table.cc:
        alias is now a String
      sql/table.h:
        alias is now a String
      storage/federatedx/ha_federatedx.cc:
        Remove extra 1 byte alloc that is automaticly done by strmake()
        Ensure that error message ends with \0
      storage/maria/ha_maria.cc:
        alias is now a String
      storage/myisam/ha_myisam.cc:
        alias is now a String
      d32246f8
    • Igor Babaev's avatar
      Fixed LP bug #725050. · 606feedb
      Igor Babaev authored
      The bug in the function print_keyuse() caused crashes if
      hash join could be used. It happened because the function
      ignored the fact that KEYUSE structures could be created
      for hash joins as well. 
      606feedb
  9. 27 Feb, 2011 2 commits
    • Igor Babaev's avatar
      Merge. · 096a0370
      Igor Babaev authored
      096a0370
    • Igor Babaev's avatar
      Minor corrections. · 5eecebfb
      Igor Babaev authored
      sql/mysqld.cc:
        Fixed: optimize_join_buffer_size was missing in the description of possible
        options for the optimizer switch.
      sql/sql_select.cc:
        Fixed: initialization for the field ref_table_rows of the KEYUSE structure was 
        missing (as a result of a lame merge).
      5eecebfb