An error occurred fetching the project authors.
  1. 27 Aug, 2009 2 commits
    • Georgi Kodinov's avatar
      Bug #46749: Segfault in add_key_fields() with outer subquery level · a22c29d5
      Georgi Kodinov authored
        field references
      
      This error requires a combination of factors : 
      1. An "impossible where" in the outermost SELECT
      2. An aggregate in the outermost SELECT
      3. A correlated subquery with a WHERE clause that includes an outer 
      field reference as a top level WHERE sargable predicate
      
      When JOIN::optimize detects an "impossible WHERE" it will bail out
      without doing the rest of the work and initializations. It will not
      call make_join_statistics() as well.  And make_join_statistics fills 
      in various structures for each table referenced.
      When processing the result of the "impossible WHERE" the query must
      send a single row of data if there are aggregate functions in it.
      In this case the server marks all the aggregates as having received 
      no rows and calls the relevant Item::val_xxx() method on the SELECT
      list. However if this SELECT list happens to contain a correlated 
      subquery this subquery is evaluated in a normal evaluation mode.
      And if this correlated subquery has a reference to a field from the 
      outermost "impossible where" SELECT the add_key_fields will mistakenly
      consider the outer field reference as a "local" field reference when 
      looking for sargable predicates.
      But since the SELECT where the outer field reference refers to is not
      completely initialized due to the "impossible WHERE" in this level
      we'll get a NULL pointer reference.
      Fixed by making a better condition for discovering if a field is "local"
      to the SELECT level being processed. 
      It's not enough to look for OUTER_REF_TABLE_BIT in this case since 
      for outer references to constant tables the Item_field::used_tables() 
      will return 0 regardless of whether the field reference is from the 
      local SELECT or not.
      a22c29d5
    • Sergey Glukhov's avatar
      Bug#46184 Crash, SELECT ... FROM derived table procedure analyze · 367c14b8
      Sergey Glukhov authored
      The crash happens because select_union object is used as result set
      for queries which have derived tables.
      select_union use temporary table as data storage and if
      fields count exceeds 10(count of values for procedure ANALYSE())
      then we get a crash on fill_record() function.
      
      
      mysql-test/r/analyse.result:
        test result
      mysql-test/r/subselect.result:
        result fix
      mysql-test/t/analyse.test:
        test case
      mysql-test/t/subselect.test:
        test fix
      sql/sql_yacc.yy:
        The crash happens because select_union object is used as result set
        for queries which have derived tables.
        select_union use temporary table as data storage and if
        fields count exceeds 10(count of values for procedure ANALYSE())
        then we get a crash on fill_record() function.
      367c14b8
  2. 18 Jul, 2009 1 commit
    • Evgeny Potemkin's avatar
      Bug#46051: Incorrectly market field caused wrong result. · 50323800
      Evgeny Potemkin authored
      When during the optimization an item is moved to the upper select
      the item's context left unchanged. This caused wrong result in the 
      PS/SP mode.
      The Item_ident::remove_dependence_processor now sets the context
      of the select to which the item is moved to.
      
      mysql-test/r/subselect.result:
        The test case for the bug#46051 is adjusted.
      mysql-test/t/subselect.test:
        The test case for the bug#46051 is adjusted.
      sql/item.cc:
        Bug#46051: Incorrectly market field caused wrong result.
        The Item_ident::remove_dependence_processor now sets the context
        of the select to which the item is moved to.
      50323800
  3. 16 Jul, 2009 1 commit
    • Evgeny Potemkin's avatar
      Bug#46051: Incorrectly market field caused wrong result. · 63e6a59d
      Evgeny Potemkin authored
      In a subselect all fields from outer selects are marked as dependent on
      selects they are belong to. In some cases optimizer substitutes it for an
      equivalent expression. For example "a_field IN (SELECT outer_field)" is
      substituted with "a_field = outer_field". As we moved the outer_field to the
      upper select it's not really outer anymore. But it was left marked as outer.
      If exists an index over a_field optimizer choose wrong execution plan and thus
      return wrong result.
      
      Now the Item_in_subselect::single_value_transformer function removes dependent
      marking from fields when a subselect is optimized away.
      
      mysql-test/r/subselect.result:
        Added a test case for the bug#46051.
      mysql-test/t/subselect.test:
        Added a test case for the bug#46051.
      sql/item_subselect.cc:
        Bug#46051: Incorrectly market field caused wrong result.
        Now the Item_in_subselect::single_value_transformer function removes dependent
        marking from fields when a subselect is optimized away.
      63e6a59d
  4. 09 Feb, 2009 1 commit
    • Matthias Leich's avatar
      This belongs to the fix for · 0fab1a85
      Matthias Leich authored
      Bug#42003 tests missing the disconnect of connections <> default
      second slice
      Content:
      1. wait_until_count_sessions.inc
         - One PB run of a test using this routine failed because
           5 seconds timeout were exceeded. Although I have some doubts
           if the assigned timeout was really too small, I increase the
           value to 10. We waste the additional 5 seconds only if the
           tests fails anyway.
         - Print the content of the PROCESSLIST if the poll routine fails
      2. minor improvements of formatting
      3. query_cache_notembedded:
         Activate the wait_until_count_sessions.inc routine which was
         unfortunately forgotten in the changeset before.
      0fab1a85
  5. 05 Feb, 2009 1 commit
    • Matthias Leich's avatar
      2. Slice of fix for Bug#42003 tests missing the disconnect of connections <> default · 41e6a1f8
      Matthias Leich authored
         - If missing: add "disconnect <session>"
         - If physical disconnect of non "default" sessions is not finished
           at test end: add routine which waits till this happened
      + additional improvements
        - remove superfluous files created by the test
        - replace error numbers by error names
        - remove trailing spaces, replace tabs by spaces
        - unify writing of bugs within comments
        - correct comments
        - minor changes of formatting
      Fixed tests:
        backup
        check
        compress
        grant
        information_schema
        multi_update
        overflow
        packet
        query_cache_not_embedded
        sp-threads
        subselect
        synchronization
        timezone_grant
      41e6a1f8
  6. 29 Jan, 2009 1 commit
  7. 28 Jan, 2009 1 commit
    • Sergey Petrunia's avatar
      BUG#37822: Correlated subquery with IN and IS UNKNOWN provides wrong result · a9608b19
      Sergey Petrunia authored
      Item_in_optimizer::is_null() evaluated "NULL IN (SELECT ...)" to NULL regardless of
      whether subquery produced any records, this was a documented limitation.
      
      The limitation has been removed (see bugs 8804, 24085, 24127) now
      Item_in_optimizer::val_int() correctly handles all cases with NULLs. Make
      Item_in_optimizer::is_null() invoke val_int() to return correct values for
      "NULL IN (SELECT ...)".
      
      
      mysql-test/r/subselect.result:
        BUG#37822: Correlated subquery with IN and IS UNKNOWN provides wrong result
        - Testcase
      mysql-test/t/subselect.test:
        BUG#37822: Correlated subquery with IN and IS UNKNOWN provides wrong result
        - Testcase
      a9608b19
  8. 12 Jan, 2009 1 commit
    • Joerg Bruehe's avatar
      Backport of a 5.0.74 fix into 5.0.72sp1: · 3055db5c
      Joerg Bruehe authored
      Bug#34760 Character set autodetection appears to fail
      the problem is the same as reported in bug#20835,
      so the fix is backport of bug#20835 patch.
      
      Original changeset:
      > revision-id: sergey.glukhov@sun.com-20081121123959-58ffhp2nitg7f40h
      > parent: ramil@mysql.com-20081120100836-gct60cm67b1rui29
      > committer: Sergey Glukhov <Sergey.Glukhov@sun.com>
      > branch nick: mysql-5.0-bugteam
      > timestamp: Fri 2008-11-21 16:39:59 +0400
      
      3055db5c
  9. 27 Nov, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#37460 Assertion failed: !table->file || table->file->inited == handler::NONE · 89d04406
      Sergey Glukhov authored
      enable uncacheable flag if we update a view with check option
      and check option has a subselect, otherwise, the check option
      can be evaluated after the subselect was freed as independent
      (See full_local in JOIN::join_free())
      
      
      mysql-test/r/subselect.result:
        test result
      mysql-test/t/subselect.test:
        test case
      sql/mysql_priv.h:
        added UNCACHEABLE_CHECKOPTION flag
      sql/sql_update.cc:
        enable uncacheable flag if we update a view with check option
        and check option has a subselect, otherwise, the check option
        can be evaluated after the subselect was freed as independent
        (See full_local in JOIN::join_free())
      89d04406
  10. 21 Nov, 2008 1 commit
  11. 27 Aug, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug#37548: result value erronously reported being NULL in certain subqueries · cab267ec
      Georgi Kodinov authored
            
      When switching to indexed ORDER BY we must be sure to reset the index read
      flag if we are switching from a covering index to non-covering.
      
      mysql-test/r/subselect.result:
        Bug#37548: test case
      mysql-test/t/subselect.test:
        Bug#37548: test case
      sql/sql_select.cc:
        Bug#37548: update the index read flag if the index for indexed ORDER BY is not
            covering.
      cab267ec
  12. 26 Jul, 2008 1 commit
    • Igor Babaev's avatar
      Fixed bug #38191. · b6e3a9e2
      Igor Babaev authored
      Calling List<Cached_item>::delete_elements for the same list twice
      caused a crash of the server in the function JOIN::cleaunup.
      Ensured that delete_elements() in JOIN::cleanup would be called only once.
      
      
      mysql-test/r/subselect.result:
        Added a test case for bug #38191.
      mysql-test/t/subselect.test:
        Added a test case for bug #38191.
      sql/sql_select.cc:
        Fixed bug #38191.
        Ensured that delete_elements() in JOIN::cleanup would be called only once.
      b6e3a9e2
  13. 07 Jul, 2008 2 commits
    • Sven Sandberg's avatar
      Post-merge fixes. · 1fc4954d
      Sven Sandberg authored
      The file tree in mtr's vardir has changed so an old
      hard-coded path in mysql-test/t/subselect.test didn't
      work.
      Fix: update the paths in the test.
      
      
      mysql-test/r/subselect.result:
        Updated result file.
      mysql-test/t/subselect.test:
        Problem: The file tree in mtr's vardir has changed
        so an old hard-coded path didn't work.
        Fix: update the paths in the test.
      1fc4954d
    • Georgi Kodinov's avatar
      Bug#37627: addendum : · 50853ac3
      Georgi Kodinov authored
       - moved the test into a separate file to check for presence of the test variable
      
      mysql-test/r/subselect.result:
        Bug#37627: moved the test to a separate file
      mysql-test/r/subselect_debug.result:
        Bug#37627: moved the test to a separate file
      mysql-test/t/subselect.test:
        Bug#37627: moved the test to a separate file
      mysql-test/t/subselect_debug.test:
        Bug#37627: moved the test to a separate file
      50853ac3
  14. 04 Jul, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug#37627: Killing query with sum(exists()) or avg(exists()) reproducibly crashes server · 0e1709bd
      Georgi Kodinov authored
      When there is an error executing EXISTS predicates they return NULL as their string
      or decimal value but don't set the NULL value flag.
      Fixed by returning 0 (as a decimal or a string) on error exectuting the subquery.
      Note that we can't return NULL as EXISTS is not supposed to return NULL.
      
      mysql-test/r/subselect.result:
        Bug#37627: test case
      mysql-test/t/subselect.test:
        Bug#37627: test case
      sql/item_subselect.cc:
        Bug#37627: return decimal (or string) 0 isntead of a NULL pointer on
        error calculating an EXISTS predicate.
      0e1709bd
  15. 19 Jun, 2008 1 commit
    • Tatiana A. Nurnberg's avatar
      Fixed bug #37004. · f13393db
      Tatiana A. Nurnberg authored
      The value of JOIN::tables must be set to 0 when there
      is no matching min/max row.
      
      mysql-test/r/subselect.result:
        Added a test case for bug #37004.
      mysql-test/t/subselect.test:
        Added a test case for bug #37004.
      f13393db
  16. 16 May, 2008 2 commits
    • unknown's avatar
      subselect.result: · 747d881b
      unknown authored
        updated the testcase for bug 36011
      
      
      mysql-test/r/subselect.result:
        updated the testcase for bug 36011
      747d881b
    • unknown's avatar
      Bug #36011: server crash with explain extended on query · 0fb1527e
      unknown authored
         with dependent subqueries
      An IN subquery is executed on EXPLAIN when it's not correlated.
      If the subquery required a temporary table for its execution
      not all the internal structures were restored from pointing to
      the items of the temporary table to point back to the items of
      the subquery.
      Fixed by restoring the ref array when a temp tables were used in
      executing the IN subquery during EXPLAIN EXTENDED.
      
      
      mysql-test/r/subselect.result:
        Bug #36011: test case
      mysql-test/t/subselect.test:
        Bug #36011: test case
      sql/sql_select.cc:
        Bug #36011: restore the ref array after execution 
        when there were temp tables.
      0fb1527e
  17. 23 Apr, 2008 1 commit
    • unknown's avatar
      subselect.test, subselect.result: · 415112a9
      unknown authored
        Post-commit minor cleanup of testcase (bug#36139).
      
      
      mysql-test/r/subselect.result:
        Post-commit minor cleanup of testcase (bug#36139).
      mysql-test/t/subselect.test:
        Post-commit minor cleanup of testcase (bug#36139).
      415112a9
  18. 21 Apr, 2008 1 commit
    • unknown's avatar
      BUG#36139 "float, zerofill, crash with subquery" · 1c1f0a62
      unknown authored
      - Make convert_zerofill_number_to_string() take into account that the 
        constant it is converting may evaluate to NULL.
      
      
      mysql-test/r/subselect.result:
        BUG#36139 "float, zerofill, crash with subquery"
        - Testcase
      mysql-test/t/subselect.test:
        BUG#36139 "float, zerofill, crash with subquery"
        - Testcase
      1c1f0a62
  19. 07 Mar, 2008 1 commit
    • unknown's avatar
      Fix for bug #34650: Test suite without cluster fails on Mac OS X · 0ba100d3
      unknown authored
                          Leopard.
      
      The change_user test failed because results of some statements
      depended on platform and server build flags.
      
      subselect_notembedded failure was a result of a bad merge from 5.0.
      
      Fixed the corresponding test cases.
      
      
      mysql-test/r/change_user.result:
        Fixed the test case.
      mysql-test/r/subselect.result:
        Fixed the test case.
      mysql-test/r/subselect_notembedded.result:
        Fixed the test case.
      mysql-test/t/change_user.test:
        Fixed the test case.
      mysql-test/t/subselect.test:
        Fixed the test case.
      mysql-test/t/subselect_notembedded.test:
        Fixed the test case.
      0ba100d3
  20. 28 Feb, 2008 1 commit
  21. 20 Feb, 2008 1 commit
    • unknown's avatar
      Bug#33266: Incorrect test case for the bug#31048 failing on some platforms. · daffceb4
      unknown authored
      The test case for the bug#31048 checks that there is no crash on stack
      overrun. But due to different stack sizes on different platforms it failed
      on some of them.
      
      The new test case check that a query with at least 4 level subquery nesting
      works without the stack overrun nesting and other levels of nesting doesn't
      cause a crash.
      
      
      mysql-test/t/subselect.test:
        Corrected test case for the bug#31048.
      mysql-test/r/subselect.result:
        Corrected test case for the bug#31048.
      daffceb4
  22. 12 Feb, 2008 1 commit
    • unknown's avatar
      Fix for Bug#32538: View definition picks up character set, · c1d0dd94
      unknown authored
      but not collation.
      
      The problem here was that text literals in a view were always
      dumped with character set introducer. That lead to loosing
      collation information.
      
      The fix is to dump character set introducer only if it was
      in the original query. That is now possible because there 
      is no problem any more of loss of character set of string
      literals in views -- after WL#4052 the view is dumped 
      in the original character set.
      
      
      mysql-test/r/case.result:
        Update result file.
      mysql-test/r/compress.result:
        Update result file.
      mysql-test/r/ctype_collate.result:
        Update result file.
      mysql-test/r/date_formats.result:
        Update result file.
      mysql-test/r/ddl_i18n_koi8r.result:
        Update result file.
      mysql-test/r/ddl_i18n_utf8.result:
        Update result file.
      mysql-test/r/fulltext.result:
        Update result file.
      mysql-test/r/func_crypt.result:
        Update result file.
      mysql-test/r/func_encrypt.result:
        Update result file.
      mysql-test/r/func_if.result:
        Update result file.
      mysql-test/r/func_in.result:
        Update result file.
      mysql-test/r/func_like.result:
        Update result file.
      mysql-test/r/func_regexp.result:
        Update result file.
      mysql-test/r/func_set.result:
        Update result file.
      mysql-test/r/func_str.result:
        Update result file.
      mysql-test/r/func_time.result:
        Update result file.
      mysql-test/r/gis.result:
        Update result file.
      mysql-test/r/group_min_max.result:
        Update result file.
      mysql-test/r/mysqldump.result:
        Update result file.
      mysql-test/r/negation_elimination.result:
        Update result file.
      mysql-test/r/null.result:
        Update result file.
      mysql-test/r/select.result:
        Update result file.
      mysql-test/r/show_check.result:
        Update result file.
      mysql-test/r/sp-code.result:
        Update result file.
      mysql-test/r/ssl.result:
        Update result file.
      mysql-test/r/ssl_compress.result:
        Update result file.
      mysql-test/r/subselect.result:
        Update result file.
      mysql-test/r/temp_table.result:
        Update result file.
      mysql-test/r/type_blob.result:
        Update result file.
      mysql-test/r/view.result:
        Update result file.
      mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
        Update result file.
      mysql-test/suite/rpl/r/rpl_get_lock.result:
        Update result file.
      mysql-test/suite/rpl/r/rpl_master_pos_wait.result:
        Update result file.
      mysql-test/t/view.test:
        Add a test case for Bug#32538.
      sql/item.cc:
        Do not dump character set introducer if it was not specified
        explicitly in the original query.
      sql/item.h:
        Add 'cs_specified' property to Item_string.
      sql/sql_yacc.yy:
        Set Item_string::cs_specified property to TRUE
        when character set introducer is explicitly specified.
      c1d0dd94
  23. 20 Jan, 2008 1 commit
  24. 18 Jan, 2008 1 commit
    • unknown's avatar
      BUG#33794 "MySQL crashes executing specific query": · c71a6428
      unknown authored
      The problem occurred when one had a subquery that had an equality X=Y where 
      Y referred to a named select list expression from the parent select. MySQL 
      crashed when trying to use the X=Y equality for ref-based access. 
      
      Fixed by allowing non-Item_field items in the described case.
      
      
      mysql-test/r/subselect.result:
        BUG#33794 "MySQL crashes executing specific query"
        - Testcase
      mysql-test/t/subselect.test:
        BUG#33794 "MySQL crashes executing specific query"
        - Testcase
      sql/sql_select.cc:
        BUG#33794 "MySQL crashes executing specific query"
        get_store_key() assumed that if it got a reference
          t.key=Item_outer_ref(Item_direct_ref(x)) 
        then x was an Item_field object, which is not the case when one refers to a
        named select list expression out ot subquery.
      c71a6428
  25. 08 Jan, 2008 1 commit
    • unknown's avatar
      Bug#33675: Usage of an uninitialized memory by filesort in a subquery caused · 8845553a
      unknown authored
      server crash.
      
      The filesort implementation has an optimization for subquery execution which
      consists of reusing previously allocated buffers. In particular the call to
      the read_buffpek_from_file function might be skipped when a big enough buffer
      for buffer descriptors (buffpeks) is already allocated. Beside allocating
      memory for buffpeks this function fills allocated buffer with data read from
      disk. Skipping it might led to using an arbitrary memory as fields' data and
      finally to a crash.
      
      Now the read_buffpek_from_file function is always called. It allocates
      new buffer only when necessary, but always fill it with correct data.
      
      
      sql/filesort.cc:
        Bug#33675: Usage of an uninitialized memory by filesort in a subquery caused
        server crash.Now the read_buffpek_from_file function is always called. It allocates
        new buffer only when necessary, but always fill it with correct data.
      mysql-test/r/subselect.result:
        Added a test case for the bug#33675: Usage of an uninitialized memory by
        filesort in a subquery caused server crash.
      mysql-test/t/subselect.test:
        Added a test case for the bug#33675: Usage of an uninitialized memory by
        filesort in a subquery caused server crash.
      8845553a
  26. 30 Nov, 2007 1 commit
    • unknown's avatar
      Bug#31177: Server variables can't be set to their current values · 89a20885
      unknown authored
      Default values of variables were not subject to upper/lower bounds
      and step, while setting variables was. Bounds and step are also
      applied to defaults now; defaults are corrected quietly, values
      given by the user are corrected, and a correction-warning is thrown
      as needed. Lastly, very large values could wrap around, starting
      from 0 again. They are bounded at the maximum value for the
      respective data-type now if no lower maximum is specified in the
      variable's definition.
      
      
      client/mysql.cc:
        correct maxima in options array
      client/mysqltest.c:
        adjust minimum for "sleep" option so default value is no longer
        out of bounds.
      include/m_string.h:
        ullstr() - the unsigned brother of llstr()
      include/my_getopt.h:
        Flag if we bounded the value (that is, correct anything aside from
        making value a multiple of block-size)
      mysql-test/r/delayed.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/index_merge.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/innodb.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/innodb_mysql.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/key_cache.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/packet.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/ps.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/subselect.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/type_bit.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/type_bit_innodb.result:
        We throw a warning now when we adjust out of range parameters.
      mysql-test/r/variables.result:
        correct results: bounds and step apply to variables' default values, too
      mysql-test/t/variables.test:
        correct results: bounds and step apply to variables' default values, too
      mysys/my_getopt.c:
        - apply bounds/step to default values of variables (based on work by serg)
        - print complaints about incorrect values for variables (truncation etc.,
          by requestion of consulting)
        - if no lower maximum is specified in variable definition, bound unsigned
          values at their maximum to prevent wrap-around
        - some calls to error_reporter had a \n, some didn't. remove \n from calls,
          let reporter-function handle it, so the default reporter behaves like that
          in mysqld
      sql/mysql_priv.h:
        correct RANGE_ALLOC_BLOCK_SIZE (cleared with monty)
      sql/mysqld.cc:
        correct maxima to correct data-type.
        correct minima where higher than default.
        correct range-alloc-block-size.
        correct inno variables so GET_* corresponds to actual variable's type.
      sql/set_var.cc:
        When the new value for a variable is out of bounds, we'll send the
        client a warning (but not if the value was simply not a multiple of
        'blocksize').  sys_var_thd_ulong had this, sys_var_long_ptr_global
        didn't; broken out and streamlined to avoid duplication of code.
      strings/llstr.c:
        ullstr() - the unsigned brother of llstr()
      89a20885
  27. 26 Nov, 2007 3 commits
    • unknown's avatar
      Many files: · 3058e025
      unknown authored
        Test case for the bug#31048 is moved to the subselect_notembedded tests as the embedded server isn't affected by this bug.
      
      
      mysql-test/r/subselect.result:
        Test case for the bug#31048 is moved to the subselect_notembedded tests as the embedded server isn't affected by this bug.
      mysql-test/r/subselect_notembedded.result:
        Test case for the bug#31048 is moved to the subselect_notembedded tests as the embedded server isn't affected by this bug.
      mysql-test/t/subselect.test:
        Test case for the bug#31048 is moved to the subselect_notembedded tests as the embedded server isn't affected by this bug.
      mysql-test/t/subselect_notembedded.test:
        Test case for the bug#31048 is moved to the subselect_notembedded tests as the embedded server isn't affected by this bug.
      3058e025
    • unknown's avatar
      merge of 5.0-opt to 5.1-opt · 185b9efe
      unknown authored
      185b9efe
    • unknown's avatar
      Bug #32036: EXISTS within a WHERE clause with a UNION · f3f9855d
      unknown authored
        crashes MySQL 5.122
      There was a difference in how UNIONs are handled
      on top level and when in sub-query.
      Because the rules for sub-queries were syntactically
      allowing cases that are not currently supported by
      the server we had crashes (this bug) or wrong results
      (bug 32051).
      Fixed by making the syntax rules for UNIONs match the 
      ones at top level.
      
      These rules however do not support nesting UNIONs, e.g.
      (SELECT a FROM t1 UNION ALL SELECT b FROM t2) 
       UNION
      (SELECT c FROM t3 UNION ALL SELECT d FROM t4)
      Supports for statements with nested UNIONs will be
      added in a future version.
      
      
      mysql-test/r/subselect.result:
        Bug #32036: test case
      mysql-test/t/subselect.test:
        Bug #32036: test case
      sql/sql_yacc.yy:
        Bug #32036: Make the syntax rules for UNIONs in subqueries the same
        as for top level UNIONs.
      f3f9855d
  28. 23 Nov, 2007 1 commit
  29. 22 Nov, 2007 1 commit
    • unknown's avatar
      opt_range.cc: · a197c4e9
      unknown authored
        Fix for the bug#31048 for 64bit platforms.
      subselect.test, subselect.result:
        Corrected text case for the bug#31048.
      
      
      mysql-test/t/subselect.test:
        Corrected text case for the bug#31048.
      mysql-test/r/subselect.result:
        Corrected text case for the bug#31048.
      sql/opt_range.cc:
        Fix for the bug#31048 for 64bit platforms.
      a197c4e9
  30. 21 Nov, 2007 2 commits
    • unknown's avatar
      merge of bug 30788 to 5.1-opt · 16f15dba
      unknown authored
      16f15dba
    • unknown's avatar
      Bug #30788: Inconsistent retrieval of char/varchar · e9832cee
      unknown authored
      Index lookup does not always guarantee that we can
      simply remove the relevant conditions from the WHERE
      clause. Reasons can be e.g. conversion errors, 
      partial indexes etc. 
      The optimizer was removing these parts of the WHERE 
      condition without any further checking.
      This leads to "false positives" when using indexes.
      Fixed by checking the index reference conditions
      (using WHERE) when using indexes with sub-queries.
      
      
      mysql-test/r/subselect.result:
        Bug #30788: 
         - using where
         - test case
      mysql-test/r/subselect3.result:
        Bug #30788: using where
      mysql-test/t/subselect.test:
        Bug #30788: test case
      sql/item.h:
        Bug #30788: 
         - Declare eq() method of Item_cache descendants : this is used in
         test_if_ref()
         - preserve the field that is being cached for type comparisions
      sql/sql_select.cc:
        Bug #30788: Don't remove the WHERE when using index lookup 
        with subqueries.
      e9832cee
  31. 20 Nov, 2007 1 commit
    • unknown's avatar
      Bug #32400: Complex SELECT query returns correct result · 870d4681
      unknown authored
       only on some occasions
      
      Referencing an element from the SELECT list in a WHERE 
      clause is not permitted. The namespace of the WHERE
      clause is the table columns only. This was not enforced
      correctly when resolving outer references in sub-queries.
      
      Fixed by not allowing references to aliases in a 
      sub-query in WHERE.
      
      
      mysql-test/include/ps_query.inc:
        Bug #32400: fixed old test queries
      mysql-test/r/ps_2myisam.result:
        Bug #32400: fixed old test queries
      mysql-test/r/ps_3innodb.result:
        Bug #32400: fixed old test queries
      mysql-test/r/ps_4heap.result:
        Bug #32400: fixed old test queries
      mysql-test/r/ps_5merge.result:
        Bug #32400: fixed old test queries
      mysql-test/r/ps_6bdb.result:
        Bug #32400: fixed old test queries
      mysql-test/r/ps_7ndb.result:
        Bug #32400: fixed old test queries
      mysql-test/r/subselect.result:
        Bug #32400: test case
      mysql-test/t/subselect.test:
        Bug #32400: test case
      sql/item.cc:
        Bug #32400: don't allow references to aliases in WHERE
      tests/mysql_client_test.c:
        Bug #32400: fixed old test queries
      870d4681
  32. 19 Nov, 2007 1 commit
    • unknown's avatar
      Bug#31048: Many nested subqueries may cause server crash. · 13105534
      unknown authored
      This bug is actually two. The first one manifests itself on an EXPLAIN
      SELECT query with nested subqueries that employs the filesort algorithm.
      The whole SELECT under explain is marked as UNCACHEABLE_EXPLAIN to preserve
      some temporary structures for explain. As a side-effect of this values of
      nested subqueries weren't cached and subqueries were re-evaluated many
      times. Each time buffer for filesort was allocated but wasn't freed because
      freeing occurs at the end of topmost SELECT. Thus all available memory was
      eaten up step by step and OOM event occur.
      The second bug manifests itself on SELECT queries with conditions where
      a subquery result is compared with a key field and the subquery itself also
      has such condition. When a long chain of such nested subqueries is present
      the stack overrun occur. This happens because at some point the range optimizer
      temporary puts the PARAM structure on the stack. Its size if about 8K and
      the stack is exhausted very fast.
      
      Now the subselect_single_select_engine::exec function allows subquery result
      caching when the UNCACHEABLE_EXPLAIN flag is set.
      Now the SQL_SELECT::test_quick_select function calls the check_stack_overrun
      function for stack checking purposes to prevent server crash.
      
      
      mysql-test/t/subselect.test:
        Added a test case for the bug#31048: Many nested subqueries may cause server crash.
      mysql-test/r/subselect.result:
        Added a test case for the bug#31048: Many nested subqueries may cause server crash.
      sql/opt_range.cc:
        Bug#31048: Many nested subqueries may cause server crash.
        Now the SQL_SELECT::test_quick_select function calls the check_stack_overrun
        function for stack checking purposes to preven server crash.
      sql/item_subselect.cc:
        Bug31048: Many nested subqueries may cause server crash.
        Now the subselect_single_select_engine::exec function allows subquery result
        caching when the UNCACHEABLE_EXPLAIN flag is set.
      13105534
  33. 10 Nov, 2007 1 commit
    • unknown's avatar
      Fixed bug #28076: inconsistent binary/varbinary comparison. · e7c6a81f
      unknown authored
      After adding an index the <VARBINARY> IN (SELECT <BINARY> ...)
      clause returned a wrong result: the VARBINARY value was illegally padded
      with zero bytes to the length of the BINARY column for the index search.
      (<VARBINARY>, ...) IN (SELECT <BINARY>, ... ) clauses are affected too.
      
      
      sql/item.cc:
        Fixed bug #28076.
        The Item_cache_str::save_in_field method has been overloaded
        to check cached values for an illegal padding before the saving
        into a field.
      sql/item.h:
        Fixed bug #28076.
        The Item_cache_str::is_varbinary flag has been added and the
        Item_cache_str::save_in_field method has been overloaded to prevent
        cached values from an illegal padding when saving in fields.
        The signature of the Item_cache::get_cache method has been
        changed to accept pointers to Item instead of Item_result
        values.
      sql/item_cmpfunc.cc:
        Fixed bug #28076.
        The Item_in_optimizer::fix_left method has been modified to
        to call Item_cache::get_cache in a new manner.
      sql/item_subselect.cc:
        Fixed bug #28076.
        The subselect_indexsubquery_engine::exec method has been
        modified to take into account field conversion errors
        (copy&paste from subselect_uniquesubquery_engine::exec).
      sql/sp_rcontext.cc:
        Fixed bug #28076.
        The sp_rcontext::create_case_expr_holder method has been
        modified to call Item_cache::get_cache in a new manner.
      sql/sp_rcontext.h:
        Fixed bug #28076.
        The sp_rcontext::create_case_expr_holder method signature
        has been modified to pass Item pointers to the
        Item_cache::get_cache method.
      sql/sql_class.cc:
        Fixed bug #28076.
        The select_max_min_finder_subselect::send_data method has been
        modified to call Item_cache::get_cache in a new manner.
      mysql-test/t/subselect.test:
        Added test case for bug #28076.
      mysql-test/r/subselect.result:
        Added test case for bug #28076.
      e7c6a81f
  34. 30 Oct, 2007 1 commit
    • unknown's avatar
      Bug #31884: Assertion + crash in subquery in the SELECT clause. · 6bbdacae
      unknown authored
      Item_in_subselect's only externally callable method is val_bool().
      However the nullability in the wrapper class (Item_in_optimizer) is 
      established by calling the "forbidden" method val_int().
      
      Fixed to use the correct method (val_bool() ) to establish nullability 
      of Item_in_subselect in Item_in_optimizer.
      
      
      mysql-test/r/subselect.result:
        Bug #31884: test case
      mysql-test/t/subselect.test:
        Bug #31884: test case
      sql/item_subselect.h:
        Bug #31884: Use the correct method to establish nullability
      6bbdacae