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 · cdd214de
      Sergey Petrunya authored
      cdd214de
    • Sergey Petrunya's avatar
      Merge BUG#707925. · 0e090eaa
      Sergey Petrunya authored
      0e090eaa
    • Sergey Petrunya's avatar
      BUG#707925: Wrong result with join_cache_level=6 optimizer_use_mrr = force (incremental, BKA join) · 8ef094fe
      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]
      8ef094fe
    • unknown's avatar
      Fix LP BUG#718763 · adce16f9
      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.
      adce16f9
  6. 02 Mar, 2011 1 commit
    • Sergey Petrunya's avatar
      BUG#693747: Assertion multi_range_read.cc:908: int DsMrr_impl::dsmrr_init · 9faf5452
      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)
      9faf5452
  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 · 7a79fe52
      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
      7a79fe52
    • Sergey Petrunya's avatar
      BUG#724275: Crash in JOIN::optimize in maria-5.3 · 10b8119a
      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).
      10b8119a
    • Michael Widenius's avatar
      Get rid of compiler warnings · 8fa14ba6
      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
      8fa14ba6
    • Michael Widenius's avatar
      Increase version number · 5df39c48
      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
      5df39c48
    • Michael Widenius's avatar
      3358cdd5
    • Michael Widenius's avatar
      Merge with alias as String · 869f5d0e
      Michael Widenius authored
      869f5d0e
    • Michael Widenius's avatar
      Change TABLE->alias to String for less memory reallocation · ff3da0f9
      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
      ff3da0f9
    • Igor Babaev's avatar
      Fixed LP bug #725050. · 0f0360e2
      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. 
      0f0360e2
  9. 27 Feb, 2011 2 commits
    • Igor Babaev's avatar
      Merge. · 1b03a028
      Igor Babaev authored
      1b03a028
    • Igor Babaev's avatar
      Minor corrections. · ed3524c2
      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).
      ed3524c2