1. 31 Oct, 2006 3 commits
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 37a823b7
      unknown authored
      into  rakia.gmz:/home/kgeorge/mysql/autopush/B21809-5.0-opt
      
      
      sql/item.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/item_func.h:
        Auto merged
      sql/sql_lex.cc:
        Auto merged
      sql/sql_lex.h:
        Auto merged
      37a823b7
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · c805d584
      unknown authored
      into  rakia.gmz:/home/kgeorge/mysql/autopush/B23184-5.0-opt
      
      
      c805d584
    • unknown's avatar
      Bug #23184: SELECT causes server crash · 634d3991
      unknown authored
       Item::val_xxx() may be called by the server several times at execute time 
       for a single query. Calls to val_xxx() may be very expensive and sometimes
       (count(distinct), sum(distinct), avg(distinct)) not possible.
       To avoid that problem the results of calculation for these aggregate 
       functions are cached so that val_xxx() methods just return the calculated 
       value for the second and subsequent calls.
      
      
      mysql-test/r/func_group.result:
        Bug #23184: SELECT causes server crash
         - test case
      mysql-test/t/func_group.test:
        Bug #23184: SELECT causes server crash
         - test case
      sql/item_sum.cc:
        Bug #23184: SELECT causes server crash
         - caching of the aggregate function results so no need to recalculate at val_xxx()
      sql/item_sum.h:
        Bug #23184: SELECT causes server crash
         - caching of the aggregate function results so no need to recalculate at val_xxx()
      634d3991
  2. 24 Oct, 2006 1 commit
    • unknown's avatar
      Bug #21809: Error 1356 while selecting from view with grouping though underlying · f51d0812
      unknown authored
                  select OK.
      The SQL parser was using Item::name to transfer user defined function attributes
      to the user defined function (udf). It was not distinguishing between user defined 
      function call arguments and stored procedure call arguments. Setting Item::name 
      was causing Item_ref::print() method to print the argument as quoted identifiers 
      and caused views that reference aggregate functions as udf call arguments (and 
      rely on Item::print() for the text of the view to store) to throw an undefined 
      identifier error.
      Overloaded Item_ref::print to print aggregate functions as such when printing
      the references to aggregate functions taken out of context by split_sum_func2()
      Fixed the parser to properly detect using AS clause in stored procedure arguments
      as an error.
      Fixed printing the arguments of udf call to print properly the udf attribute.
      
      
      mysql-test/r/udf.result:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - test cases
      mysql-test/t/udf.test:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - test cases
      sql/item.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - Don't print the refs to SUM functions as refs.
      sql/item_func.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - print the aliases in the udf calls
      sql/item_func.h:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - print the aliases in the udf calls
      sql/sql_lex.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
      sql/sql_lex.h:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
      sql/sql_yacc.yy:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
         - fix bison duplicate symbol warnings
      f51d0812
  3. 20 Oct, 2006 7 commits
  4. 19 Oct, 2006 12 commits
  5. 18 Oct, 2006 2 commits
    • unknown's avatar
      Merge mysql.com:/data0/bk/mysql-5.0 · ea39ca34
      unknown authored
      into  mysql.com:/data0/bk/mysql-5.0-kt
      
      
      ea39ca34
    • unknown's avatar
      BUG#23175 - MYISAM crash/repair failed during repair · 48cf65c0
      unknown authored
      Repair table could crash a server if there is not sufficient
      memory (myisam_sort_buffer_size) to operate. Affects not only
      repair, but also all statements that use create index by sort:
      repair by sort, parallel repair, bulk insert.
      
      Return an error if there is not sufficient memory to store at
      least one key per BUFFPEK.
      
      Also fixed memory leak if thr_find_all_keys returns an error.
      
      
      myisam/sort.c:
        maxbuffer is number of BUFFPEK-s for repair. It is calculated
        as records / keys. keys is number of keys that can be stored
        in memory (myisam_sort_buffer_size). There must be sufficient
        memory to store both BUFFPEK-s and keys. It was checked
        correctly before this patch. However there is another
        requirement that wasn't checked: there must be sufficient
        memory for at least one key per BUFFPEK, otherwise repair
        by sort/parallel repair cannot operate.
        
        Return an error if there is not sufficient memory to store at
        least one key per BUFFPEK.
        
        Also fixed memory leak if thr_find_all_keys returns an error.
      mysql-test/r/repair.result:
        A test case for BUG#23175.
      mysql-test/t/repair.test:
        A test case for BUG#23175.
      48cf65c0
  6. 17 Oct, 2006 10 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · b18b419b
      unknown authored
      into  sunlight.local:/local_work/14959-bug-5.0-opt-mysql
      
      
      b18b419b
    • unknown's avatar
      sql_rename.cc: · 3dccef3c
      unknown authored
        Cleanup of fix for bug#14959.
      
      
      sql/sql_rename.cc:
        Cleanup of fix for bug#14959.
      3dccef3c
    • unknown's avatar
      Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · e2698fa7
      unknown authored
      into  rurik.mysql.com:/home/igor/mysql-5.0-opt
      
      
      sql/sql_select.cc:
        Auto merged
      e2698fa7
    • unknown's avatar
      Merge rurik.mysql.com:/home/igor/mysql-5.0-opt · 711021a4
      unknown authored
      into  rurik.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug19579
      
      
      mysql-test/t/select.test:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      mysql-test/r/select.result:
        SCCS merged
      711021a4
    • unknown's avatar
      71b67e4a
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0-opt · c208f46b
      unknown authored
      into  macbook.gmz:/Users/kgeorge/mysql/work/B21798-5.0-opt-merge
      
      
      sql/mysql_priv.h:
        Auto merged
      sql/sql_delete.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      sql/sql_table.cc:
        Auto merged
      sql/sql_update.cc:
        Auto merged
      mysql-test/r/subselect.result:
        merge fixes for bug 21798
      mysql-test/t/subselect.test:
        merge fixes for bug 21798
      c208f46b
    • unknown's avatar
      Bug#21798: memory leak during query execution with subquery in column · 841ea461
      unknown authored
                  list using a function
      When executing dependent subqueries they are re-inited and re-exec() for 
      each row of the outer context.
      The cause for the bug is that during subquery reinitialization/re-execution,
      the optimizer reallocates JOIN::join_tab, JOIN::table in make_simple_join()
      and the local variable in 'sortorder' in create_sort_index(), which is
      allocated by make_unireg_sortorder().
      Care must be taken not to allocate anything into the thread's memory pool
      while re-initializing query plan structures between subquery re-executions.
      All such items mush be cached and reused because the thread's memory pool
      is freed at the end of the whole query.
      Note that they must be cached and reused even for queries that are not 
      otherwise cacheable because otherwise it will grow the thread's memory 
      pool every time a cacheable query is re-executed. 
      We provide additional members to the JOIN structure to store references 
      to the items that need to be cached.
      
      
      mysql-test/r/subselect.result:
        Bug#21798: memory leak during query execution with subquery in column
                    list using a function
         - test case
      mysql-test/t/subselect.test:
        Bug#21798: memory leak during query execution with subquery in column
                    list using a function
         - test case
      sql/mysql_priv.h:
        Bug#21798: memory leak during query execution with subquery in column
                    list using a function
         - cache the entities allocated in the threads memory pool by
           JOIN::exec ().
      sql/sql_delete.cc:
        Bug#21798: memory leak during query execution with subquery in column
                    list using a function
         - cache the SORT_ORDER, TABLE * and JOIN_TAB allocated in the thread's 
           memory pool by JOIN::exec ().
      sql/sql_select.cc:
        Bug#21798: memory leak during query execution with subquery in column
                    list using a function
         - cache the SORT_ORDER, TABLE * and JOIN_TAB allocated in the thread's 
           memory pool by JOIN::exec ().
      sql/sql_select.h:
        Bug#21798: memory leak during query execution with subquery in column
                    list using a function
         - cache the SORT_ORDER, TABLE * and JOIN_TAB allocated in the thread's 
           memory pool by JOIN::exec ().
      sql/sql_table.cc:
        Bug#21798: memory leak during query execution with subquery in column
                    list using a function
         - cache the SORT_ORDER, TABLE * and JOIN_TAB allocated in the thread's 
           memory pool by JOIN::exec ().
      sql/sql_update.cc:
        Bug#21798: memory leak during query execution with subquery in column
                    list using a function
         - cache the SORT_ORDER, TABLE * and JOIN_TAB allocated in the thread's 
           memory pool by JOIN::exec ().
      841ea461
    • unknown's avatar
      merge changes becuase of the fix for bug 22367 · d2198ed9
      unknown authored
      d2198ed9
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0-opt · a2e0c419
      unknown authored
      into  macbook.gmz:/Users/kgeorge/mysql/work/B22367-5.0-opt-merge
      
      
      include/my_base.h:
        Auto merged
      mysql-test/r/select.result:
        merge of 5.0-opt to 22367
      mysql-test/t/select.test:
        merge of 5.0-opt to 22367
      a2e0c419
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-4.1-engines · e71520ab
      unknown authored
      into  chilla.local:/home/mydev/mysql-4.1-bug12240
      
      
      sql/sql_select.cc:
        Auto merged
      e71520ab
  7. 16 Oct, 2006 5 commits
    • unknown's avatar
      Fixed bug #19579: at range analysis optimizer did not take into · 6101fd25
      unknown authored
      account predicates that become sargable after reading const tables.
      In some cases this resulted in choosing non-optimal execution plans.
      Now info of such potentially saragable predicates is saved in
      an array and after reading const tables we check whether this
      predicates has become saragable.
      
      
      
      mysql-test/r/select.result:
        Added a test case for bug #19579.
      mysql-test/t/select.test:
        Added a test case for bug #19579.
      sql/item_cmpfunc.cc:
        Fixed bug #19579: at range analysis optimizer did not take into 
        account predicates that become sargable after reading const tables.
        Added a counter of between predicates.
      sql/sql_base.cc:
        Fixed bug #19579: at range analysis optimizer did not take into 
        account predicates that become sargable after reading const tables.
        Added a counter of between predicates.
      sql/sql_lex.cc:
        Fixed bug #19579: at range analysis optimizer did not take into 
        account predicates that become sargable after reading const tables.
        Added a counter of between predicates.
      sql/sql_lex.h:
        Fixed bug #19579: at range analysis optimizer did not take into 
        account predicates that become sargable after reading const tables.
        Added a counter of between predicates.
      sql/sql_select.cc:
        Fixed bug #19579: at range analysis optimizer did not take into 
        account predicates that become sargable after reading const tables.
        Now info of such potentially saragable predicates is saved in
        an array and after reading const tables we check whether this
        predicates has become saragable.
      6101fd25
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 6caacb9b
      unknown authored
      into  rakia.(none):/home/kgeorge/mysql/autopush/B22342-5.0-opt
      
      
      sql/opt_range.cc:
        Auto merged
      6caacb9b
    • unknown's avatar
      Bug #22342: No results returned for query using max and group by · decf9082
      unknown authored
       When using index for group by and range access the server isolates    
       a set of ranges based on the conditions over the key parts of the
       index used. Then it uses only the ranges over the GROUP BY fields to
       jump from one group to another. Since the GROUP BY fields may form a
       prefix over the index, we may use only a prefix of the ranges produced
       by the range optimizer.
       Each range contains a notion on whether it includes its border values.
       The problem is that when using a range prefix, the last range is open
       because it assumes that there is a range on the next keypart. Thus when
       we use a prefix range as it is, it excludes all border values.
       The solution is when ignoring the suffix of the range conditions 
       (to jump over the GROUP BY prefix only) the server must change the 
       remaining intervals so they always contain their borders, e.g. 
       if the whole range was :
       (1,-inf) <= (<group_by_col>,<min_max_arg_col>) < (1, 3) we must make
       (1) <= (<group_by_col>) <= (1) because (a,b) < (c1,c2) means :
       a < c1 OR (a = c1 AND b < c2).
      
      
      mysql-test/r/group_min_max.result:
        Bug #22342: No results returned for query using max and group by
         - test case
      mysql-test/t/group_min_max.test:
        Bug #22342: No results returned for query using max and group by
         - test case
      sql/opt_range.cc:
        Bug #22342: No results returned for query using max and group by
         - open the intervals for prefix select when there are more conditions
           than used for the prefix search.
      sql/opt_range.h:
        Bug #22342: No results returned for query using max and group by
         - open the intervals for prefix select when there are more conditions
           than used for the prefix search.
      decf9082
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-engines · 7fdcb255
      unknown authored
      into  chilla.local:/home/mydev/mysql-5.0-bug12240
      
      
      sql/sql_select.cc:
        Auto merged
      7fdcb255
    • unknown's avatar
      Bug #22367: Optimizer uses ref join type instead of eq_ref for simple join on · ffc1facc
      unknown authored
                   strings
      MySQL is setting the flag HA_END_SPACE_KEYS for all the keys that reference
      text or varchar columns with collation different than binary.
      This was done to handle correctly the situation where a lookup on such a key
      may return more than 1 row because of the presence of many rows that differ
      only by the amount of trailing space in the table's string column.
      Inserting such values however appears to violate the unique checks on 
      INSERT/UPDATE. Thus that flag must not be set as it will prevent the optimizer
      from choosing a faster access method.
      This fix removes the setting of the HA_END_SPACE_KEYS flag.
      
      
      include/my_base.h:
        Bug #22367: Optimizer uses ref join type instead of eq_ref for simple join on 
                     strings
         - disabled HA_END_SPACE_KEY as it's no longer needed
      mysql-test/r/func_str.result:
        Bug #22367: Optimizer uses ref join type instead of eq_ref for simple join on 
                     strings
         - fixed explain in an existing case
      mysql-test/r/merge.result:
        Bug #22367: Optimizer uses ref join type instead of eq_ref for simple join on 
                     strings
         - fixed explain in an existing case
      mysql-test/r/select.result:
        Bug #22367: Optimizer uses ref join type instead of eq_ref for simple join on 
                     strings
         - test case
      mysql-test/r/subselect.result:
        Bug #22367: Optimizer uses ref join type instead of eq_ref for simple join on 
                     strings
         - fixed explain in an existing case
      mysql-test/t/select.test:
        Bug #22367: Optimizer uses ref join type instead of eq_ref for simple join on 
                     strings
         - test case
      ffc1facc