An error occurred fetching the project authors.
  1. 13 Feb, 2007 1 commit
  2. 06 Feb, 2007 1 commit
    • unknown's avatar
      Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison · bdc14162
      unknown authored
       Ignoring error codes from type conversion allows default (wrong) values to
       go unnoticed in the formation of index search conditions.
       Fixed by correctly checking for conversion errors.
      
      
      mysql-test/r/select.result:
        Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
         - test case
      mysql-test/t/select.test:
        Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
         - test case
      sql/field.h:
        Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
         - don't ignore coversion errors
      sql/field_conv.cc:
        Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
         - don't ignore coversion errors
      sql/item.cc:
        Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
         - don't ignore coversion errors
      bdc14162
  3. 01 Feb, 2007 1 commit
    • unknown's avatar
      Fixed bug #25407. · 77890fe1
      unknown authored
      The bug could cause choosing a sub-optimal execution plan for 
      a single-table query if a unique index with many null keys were 
      defined for the table. 
      It happened because the code of the check_quick_keys function 
      made an assumption that any key may occur in an unique index 
      only once. Yet this is not true for keys with nulls that may 
      have multiple occurrences in the index.
      
      
      mysql-test/r/null_key.result:
        Fixed bug #25407
        Adjusted result after the fix.
      mysql-test/r/select.result:
        Added a test case for bug #25407.
      mysql-test/t/select.test:
        Added a test case for bug #25407.
      77890fe1
  4. 22 Jan, 2007 1 commit
    • unknown's avatar
      Fix for bug #22026: Warning when using IF statement and large unsigned bigint · cecefeb8
      unknown authored
        
      We use INT_RESULT type if all arguments are of type INT for 'if', 'case', 
      'coalesce' functions regardless of arguments' unsigned flag, so sometimes we can
      exceed the INT bounds.
      
      
      mysql-test/r/select.result:
        Fix for bug #22026: Warning when using IF statement and large unsigned bigint
          - test result.
      mysql-test/t/select.test:
        Fix for bug #22026: Warning when using IF statement and large unsigned bigint
          - test case.
      sql/item_cmpfunc.cc:
        Fix for bug #22026: Warning when using IF statement and large unsigned bigint
          - take into account unsigned flags aggregating result types:                    
            return INT_RESULT only if two items with INT_RESULT type                      
            have equal unsigned_flags, otherwise return REAL_RESULT.
      cecefeb8
  5. 19 Jan, 2007 1 commit
    • unknown's avatar
      Bug#25172: Not checked buffer size leads to a server crash. · 4e588859
      unknown authored
      After fix for bug#21798 JOIN stores the pointer to the buffer for sorting
      fields. It is used while sorting for grouping and for ordering. If ORDER BY
      clause has more elements then the GROUP BY clause then a memory overrun occurs.
      
      Now the length of the ORDER BY list is always passed to the 
      make_unireg_sortorder() function and it allocates buffer big enough to be
      used for bigger list.
      
      
      sql/sql_delete.cc:
        Bug#25172: Not checked buffer size leads to a server crash.
        Length parameter is initialized to 0 for the make_unireg_sortorder() function.
      sql/sql_select.cc:
        Bug#25172: Not checked buffer size leads to a server crash.
        Now the length of the ORDER BY list is always passed to the 
        make_unireg_sortorder() function and it allocates buffer big enough to be
        used for bigger list.
      sql/sql_table.cc:
        Bug#25172: Not checked buffer size leads to a server crash.
        Length parameter is initialized to 0 for the make_unireg_sortorder() function.
      sql/sql_update.cc:
        Bug#25172: Not checked buffer size leads to a server crash.
        Length parameter is initialized to 0 for the make_unireg_sortorder() function.
      mysql-test/r/select.result:
        Added a test case for bug#25172: Not checked buffer size leads to a server crash.
      mysql-test/t/select.test:
        Added a test case for bug#25172: Not checked buffer size leads to a server crash.
      4e588859
  6. 03 Jan, 2007 1 commit
    • unknown's avatar
      Bug#6298 (LIMIT #, -1 no longer works to set start with no end limit) · a015519a
      unknown authored
      With MySQL 3.23 and 4.0, the syntax 'LIMIT N, -1' is accepted, and returns
      all the rows located after row N. This behavior, however, is not the
      intended result, and defeats the purpose of LIMIT, which is to constrain
      the size of a result set.
      
      With MySQL 4.1 and later, this construct is correctly detected as a syntax
      error.
      
      This fix does not change the production code, and only adds a new test case
      to improve test coverage in this area, to enforce in the test suite the
      intended behavior.
      
      
      mysql-test/r/select.result:
        Enforce that LIMIT N, -1 is illegal.
      mysql-test/t/select.test:
        Enforce that LIMIT N, -1 is illegal.
      a015519a
  7. 06 Dec, 2006 1 commit
    • unknown's avatar
      Fix for bug #22533: Traditional: Too-long bit value not rejected. · bbe17387
      unknown authored
      Problem: storing >=8 byte hexadecimal values we don't check data.
      Fix: check if the data fits the {u}longlong range.
      
      
      mysql-test/r/select.result:
        Fix for bug #22533: Traditional: Too-long bit value not rejected.
          - test result.
      mysql-test/t/range.test:
        Fix for bug #22533: Traditional: Too-long bit value not rejected.
          - adjusted.
      mysql-test/t/select.test:
        Fix for bug #22533: Traditional: Too-long bit value not rejected.
          - test case.
      sql/item.cc:
        Fix for bug #22533: Traditional: Too-long bit value not rejected.
          - limit storing value to {U}LONGLONG_MAX in numeric context.
      bbe17387
  8. 20 Nov, 2006 1 commit
    • unknown's avatar
      Remove compiler warnings · cd5544ca
      unknown authored
      (Mostly in DBUG_PRINT() and unused arguments)
      Fixed bug in query cache when used with traceing (--with-debug)
      Fixed memory leak in mysqldump
      Removed warnings from mysqltest scripts (replaced -- with #)
      
      
      BitKeeper/etc/ignore:
        added mysql-test/r/*.warnings
      BUILD/SETUP.sh:
        Don't build with BDB as default
      client/client_priv.h:
        Added OPT_DEBUG_INFO
      client/mysqlbinlog.cc:
        Fixed compiler warning
      client/mysqldump.c:
        Removed compiler warnings
        Added option --debug-info to detect memory leaks
        Fixed memory leak
        Don't backup cluster replication tables (if used with 5.1)
      cmd-line-utils/readline/bind.c:
        Fixed compiler warning
      cmd-line-utils/readline/chardefs.h:
        Fixed compiler warning
      cmd-line-utils/readline/complete.c:
        Fixed compiler warning
      cmd-line-utils/readline/display.c:
        Fixed compiler warning
      cmd-line-utils/readline/histexpand.c:
        Fixed compiler warning
      cmd-line-utils/readline/input.c:
        Fixed compiler warning
      cmd-line-utils/readline/isearch.c:
        Fixed compiler warning
      cmd-line-utils/readline/kill.c:
        Fixed compiler warning
      cmd-line-utils/readline/macro.c:
        Fixed compiler warning
      cmd-line-utils/readline/misc.c:
        Fixed compiler warning
      cmd-line-utils/readline/nls.c:
        Fixed compiler warning
      cmd-line-utils/readline/readline.c:
        Fixed compiler warning
      cmd-line-utils/readline/rltty.c:
        Fixed compiler warning
      cmd-line-utils/readline/search.c:
        Fixed compiler warning
      cmd-line-utils/readline/terminal.c:
        Fixed compiler warning
      cmd-line-utils/readline/text.c:
        Fixed compiler warning
      cmd-line-utils/readline/tilde.c:
        Fixed compiler warning
      cmd-line-utils/readline/undo.c:
        Fixed compiler warning
      cmd-line-utils/readline/util.c:
        Fixed compiler warning
      cmd-line-utils/readline/vi_mode.c:
        Fixed compiler warning
      dbug/dbug_analyze.c:
        Fixed compiler warning
      extra/yassl/src/ssl.cpp:
        Fixed compiler warning
      extra/yassl/testsuite/testsuite.cpp:
        Fixed compiler warning
      heap/_check.c:
        Fixed compiler warning
      heap/hp_delete.c:
        Fixed compiler warning
      heap/hp_hash.c:
        Fixed compiler warning
      heap/hp_open.c:
        Fixed compiler warning
      heap/hp_rkey.c:
        Fixed compiler warning
      heap/hp_rrnd.c:
        Fixed compiler warning
      heap/hp_write.c:
        Fixed compiler warning
      libmysql/libmysql.c:
        Fixed compiler warning
      libmysqld/libmysqld.c:
        Fixed compiler warning
      myisam/mi_close.c:
        Fixed compiler warning
      myisam/mi_delete.c:
        Fixed compiler warning
      myisam/mi_dynrec.c:
        Fixed compiler warning
      myisam/mi_keycache.c:
        Fixed compiler warning
      myisam/mi_page.c:
        Fixed compiler warning
      myisam/mi_statrec.c:
        Fixed compiler warning
      myisam/mi_test2.c:
        Fixed compiler warning
      myisam/mi_write.c:
        Fixed compiler warning
      myisam/myisampack.c:
        Fixed compiler warning
      myisammrg/myrg_extra.c:
        Fixed compiler warning
      mysql-test/mysql-test-run.pl:
        Remove .reject, .progress, .log and .warnings flag at start
        cluster -> mysql database (for 5.1)
      mysql-test/include/federated.inc:
        Remove mysqltest warnings
      mysql-test/include/sp-vars.inc:
        Remove mysqltest warnings
      mysql-test/mysql-test-run.sh:
        Fix so that 'make test' works again
        Remove .reject, .progress .log and .warnings files at startup
      mysql-test/r/ctype_cp1250_ch.result:
        Drop used tables at startup
      mysql-test/t/create.test:
        Remove mysqltest warnings
      mysql-test/t/csv.test:
        Remove mysqltest warnings
      mysql-test/t/ctype_collate.test:
        Remove mysqltest warnings
      mysql-test/t/ctype_cp1250_ch.test:
        Drop used tables at startup
      mysql-test/t/ctype_ucs.test:
        Remove mysqltest warnings
      mysql-test/t/func_sapdb.test:
        Remove mysqltest warnings
      mysql-test/t/func_str.test:
        Remove mysqltest warnings
      mysql-test/t/grant.test:
        Remove mysqltest warnings
      mysql-test/t/greedy_optimizer.test:
        Remove mysqltest warnings
      mysql-test/t/group_min_max.test:
        Remove mysqltest warnings
      mysql-test/t/innodb.test:
        Remove mysqltest warnings
      mysql-test/t/join.test:
        Remove mysqltest warnings
      mysql-test/t/limit.test:
        Remove mysqltest warnings
      mysql-test/t/null.test:
        Remove mysqltest warnings
      mysql-test/t/select.test:
        Remove mysqltest warnings
      mysql-test/t/sp-prelocking.test:
        Remove mysqltest warnings
      mysql-test/t/strict.test:
        Remove mysqltest warnings
      mysql-test/t/subselect.test:
        Remove mysqltest warnings
      mysql-test/t/type_newdecimal.test:
        Remove mysqltest warnings
      mysql-test/t/view_grant.test:
        Remove mysqltest warnings
      mysys/default.c:
        Fixed compiler warning
      mysys/hash.c:
        Fixed compiler warning
      mysys/list.c:
        Fixed compiler warning
      mysys/mf_iocache.c:
        Fixed compiler warning
      mysys/mf_keycache.c:
        Fixed compiler warning
      mysys/mf_keycaches.c:
        Fixed compiler warning
      mysys/my_alloc.c:
        Fixed compiler warning
      mysys/my_dup.c:
        Fixed compiler warning
      mysys/my_fopen.c:
        Fixed compiler warning
      mysys/my_fstream.c:
        Fixed compiler warning
      mysys/my_getwd.c:
        Fixed compiler warning
      mysys/my_handler.c:
        Fixed compiler warning
        Added missing enums in switch
      mysys/my_lib.c:
        Fixed compiler warning
      mysys/my_lread.c:
        Fixed compiler warning
      mysys/my_lwrite.c:
        Fixed compiler warning
      mysys/my_malloc.c:
        Fixed compiler warning
      mysys/my_pread.c:
        Fixed compiler warning
      mysys/my_read.c:
        Fixed compiler warning
      mysys/my_realloc.c:
        Fixed compiler warning
      mysys/my_seek.c:
        Fixed compiler warning
      mysys/my_write.c:
        Fixed compiler warning
      mysys/safemalloc.c:
        Fixed compiler warning
      mysys/thr_lock.c:
        Fixed compiler warning
      mysys/tree.c:
        Fixed compiler warning
      mysys/typelib.c:
        Fixed compiler warning
      ndb/include/logger/LogHandler.hpp:
        Changed SetErrorStr() to take const char* to remove compiler warnings (as many arguments to this are const strings)
      ndb/include/ndb_global.h.in:
        Added LINT_SET_PTR macro to be able to remove some compiler warnings
      ndb/include/util/InputStream.hpp:
        Fixed compiler warning
      ndb/include/util/OutputStream.hpp:
        Fixed compiler warning
      ndb/include/util/SimpleProperties.hpp:
        Fixed compiler warning
      ndb/src/common/debugger/EventLogger.cpp:
        remove if on 'signal' as this is a function pointer and is always true
      ndb/src/common/debugger/signaldata/BackupSignalData.cpp:
        Add missing enums
      ndb/src/common/logger/LogHandler.cpp:
        Changed SetErrorStr() to take const char* to remove compiler warnings (as many arguments to this are const strings)
      ndb/src/common/portlib/NdbMutex.c:
        Fixed compiler warning
      ndb/src/common/portlib/NdbThread.c:
        Fixed compiler warning
      ndb/src/common/transporter/Transporter.cpp:
        Swapped arguments to remove compiler warnings
      ndb/src/cw/cpcd/CPCD.hpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/backup/Backup.cpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
        Added missing enums
      ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
        Fixed compiler warning
      ndb/src/kernel/error/ErrorReporter.cpp:
        Fixed compiler warning
      ndb/src/kernel/error/ErrorReporter.hpp:
        Fixed compiler warning
      ndb/src/kernel/error/ndbd_exit_codes.c:
        Fixed compiler warning
      ndb/src/kernel/vm/TransporterCallback.cpp:
        Fixed compiler warning
      ndb/src/mgmapi/mgmapi.cpp:
        Fixed compiler warning
      ndb/src/mgmclient/CommandInterpreter.cpp:
        Fixed compiler warning
      ndb/src/mgmsrv/MgmtSrvr.cpp:
        Fixed compiler warning
      ndb/src/mgmsrv/Services.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/ClusterMgr.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/DictCache.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/Ndb.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbOperationDefine.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbOperationExec.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbOperationInt.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbOperationSearch.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbTransaction.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/Ndbif.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/Ndbinit.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/ndb_cluster_connection.cpp:
        Fixed compiler warning
      ndb/tools/drop_index.cpp:
        Fixed compiler warning
      ndb/tools/drop_tab.cpp:
        Fixed compiler warning
      ndb/tools/ndb_config.cpp:
        Fixed compiler warning
      regex/regexec.c:
        Fixed compiler warning
      server-tools/instance-manager/mysql_connection.cc:
        Fixed compiler warning
      sql/Makefile.am:
        Fix for bison 1.875, which adds an attribute statement that gcc 4.1.0 can't parse
      sql/filesort.cc:
        Fixed compiler warning
      sql/ha_archive.cc:
        Fixed compiler warning
      sql/ha_federated.cc:
        Fixed compiler warning
      sql/ha_federated.h:
        Fixed compiler warning
      sql/ha_innodb.cc:
        Fixed compiler warning
      sql/ha_myisam.cc:
        Fixed compiler warning
      sql/ha_myisammrg.cc:
        Fixed compiler warning
      sql/ha_ndbcluster.cc:
        Fixed compiler warning
      sql/handler.cc:
        Fixed compiler warning
      sql/item_cmpfunc.cc:
        Fixed compiler warning
      sql/item_subselect.cc:
        Fixed compiler warning
      sql/item_timefunc.cc:
        Fixed compiler warning
      sql/log_event.cc:
        Fixed compiler warning
      sql/mysqld.cc:
        Fixed compiler warning
      sql/net_serv.cc:
        Fixed compiler warning
      sql/opt_range.cc:
        Fixed compiler warning
        Formated DBUG statements to be as rest of code
      sql/slave.cc:
        Fixed compiler warning
      sql/sql_acl.cc:
        Fixed compiler warning
      sql/sql_cache.cc:
        Fixed compiler warning
        Fixed bug in query cache when used with DBUG traceing
      sql/sql_class.cc:
        Fixed compiler warning
      sql/sql_class.h:
        Fixed compiler warning
      sql/sql_delete.cc:
        Fixed compiler warning
      sql/sql_parse.cc:
        Fixed compiler warning
        Hack to fix my_sprintf() strings with %b
      sql/sql_prepare.cc:
        Fixed compiler warning
        Hack to fix my_sprintf() strings with %b
      sql/sql_repl.cc:
        Fixed compiler warning
      sql/sql_select.cc:
        Fixed compiler warning
      sql/sql_update.cc:
        Fixed compiler warning
      sql/sql_view.cc:
        Fixed compiler warning
      sql/strfunc.cc:
        Fixed compiler warning
      sql-common/client.c:
        Fixed compiler warning
      sql-common/my_time.c:
        Fixed compiler warning
      sql/table.cc:
        Fixed compiler warning
      sql/tztime.cc:
        Fixed compiler warning
      sql/unireg.cc:
        Fixed compiler warning
      strings/decimal.c:
        Fixed compiler warning
      tests/mysql_client_test.c:
        Fixed compiler warning
      vio/viosocket.c:
        Fixed compiler warning
      vio/viossl.c:
        Fixed compiler warning
      vio/viosslfactories.c:
        Fixed compiler warning
      cd5544ca
  9. 16 Oct, 2006 2 commits
    • unknown's avatar
      Fixed bug #19579: at range analysis optimizer did not take into · 93a82420
      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.
      93a82420
    • unknown's avatar
      Bug #22367: Optimizer uses ref join type instead of eq_ref for simple join on · fabcd518
      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
      fabcd518
  10. 29 Sep, 2006 1 commit
    • unknown's avatar
      Fixed bug #22753. · 0475bb7b
      unknown authored
      After the patch for big 21698 equality propagation stopped
      working for BETWEEN and IN predicates with STRING arguments.
      This changeset completes the solution of the above patch.
      
      
      mysql-test/r/select.result:
        Added a test case for bug #22735.
      mysql-test/t/select.test:
        Added a test case for bug #22735.
      sql/item_cmpfunc.h:
        Fixed bug #22753.
        After the patch for big 21698 equality propagation stopped
        working for BETWEEN and IN predicates with STRING arguments.
        This changeset completes the solution of the above patch.
        
        Added an implementation of the subst_argument_checker method
        for Item_func_opt_neg (the direct ancestor of Item_func_between
        and Item_func_in) which allows equality propagation for
        BETWEEN and IN predicates.
      0475bb7b
  11. 28 Sep, 2006 1 commit
    • unknown's avatar
      Fixed bug#20503: Server crash due to the ORDER clause not taken into account · e9b82b5a
      unknown authored
      while space allocation
      
      Under some circumstances DISTINCT clause can be converted to grouping.
      In such cases grouping is performed by all items in the select list.
      If an ORDER clause is present then items from it is prepended to group list.
      But the case with ORDER wasn't taken into account when allocating the
      array for sum functions. This leads to memory corruption and crash.
      
      The JOIN::alloc_func_list() function now allocates additional space if there
      is an ORDER by clause is specified and DISTINCT -> GROUP BY optimization is
      possible.
      
      
      mysql-test/t/select.test:
        Added the test case for bug#20503: Server crash due to the ORDER clause not taken into account while space allocation
      mysql-test/r/select.result:
        Added the test case for bug#20503: Server crash due to the ORDER clause not taken into account while space allocation
      sql/sql_select.cc:
        Fixed bug#20503: Server crash due to the ORDER clause not taken into account
        while space allocation
        The JOIN::alloc_func_list() function now allocates additional space if there
        is an ORDER by clause is specified and DISTINCT -> GROUP BY optimization is
        possible.
      e9b82b5a
  12. 25 Aug, 2006 1 commit
    • unknown's avatar
      Fixed bug #21390: wrong estimate of rows after elimination of · c0ffb9ee
      unknown authored
      const tables. This resulted in choosing extremely inefficient
      execution plans in same cases when distribution of data in
      joined were skewed (see the customer test case for the bug).
      
      
      
      mysql-test/r/select.result:
        Added a test case for bug #21390: wrong estimate of rows
        after elimination of const tables.
        Includded a test case that checks the code added by the patch
        that handles outer joins with no matches after substitution of
        a const table in an efficient way.
      mysql-test/t/select.test:
        Added a test case for bug #21390: wrong estimate of rows
        after elimination of const tables.
        Included a test case that checks the code added by the patch
        that handles outer joins with no matches after substitution of
        a const table in an efficient way.
      sql/sql_select.cc:
        Fixed bug #21390: wrong estimate of rows after elimination of
        const tables. This resulted in choosing extremely inefficient
        execution plans in same cases when distribution of data in
        joined were skewed (see the customer test case for the bug).
        Also added the code to handle outer joins with no matches after
        substitution of a const table in an efficient way. 
        Corrected calculation of the null rejecting key conditions.
      c0ffb9ee
  13. 26 Jul, 2006 1 commit
    • unknown's avatar
      Bug #21019: First result of SELECT COUNT(*) different than consecutive runs · 035ddb82
      unknown authored
       When optimizing conditions like 'a = <some_val> OR a IS NULL' so that they're
       united into a single condition on the key and checked together the server must 
       check which value is the NULL value in a correct way : not only using ->is_null 
       but also check if the expression doesn't depend on any tables referenced in the 
       current statement. 
       This additional check must be performed because that optimization takes place 
       before the actual execution of the statement, so if the field was initialized 
       to NULL from a previous statement the optimization would be applied incorrectly.
      
      
      mysql-test/r/select.result:
        Bug #21019: First result of SELECT COUNT(*) different than consecutive runs
         - test case
      mysql-test/t/select.test:
        Bug #21019: First result of SELECT COUNT(*) different than consecutive runs
         - test case. 
           Note that ALTER TABLE is important here : it happens to
           leave the Field instance for t1.b set to NULL, witch is vital for
           demonstrating the problem fixed by this changeset.
      sql/sql_select.cc:
        Bug #21019: First result of SELECT COUNT(*) different than consecutive runs
         - check whether a value is null taking into account its table dependency.
      035ddb82
  14. 25 Jul, 2006 1 commit
    • unknown's avatar
      Fix for BUG#20954: avg(keyval) retuns 0.38 but max(keyval) returns an empty set · 996cdfd3
      unknown authored
      The problem was in that opt_sum_query() replaced MIN/MAX functions
      with the corresponding constant found in a key, but due to imprecise
      representation of float numbers, when evaluating the where clause,
      this comparison failed.
      
      When MIN/MAX optimization detects that all tables can be removed,
      also remove all conjuncts in a where clause that refer to these
      tables. As a result of this fix, these conditions are not evaluated
      twice, and in the case of float number comparisons we do not discard
      result rows due to imprecise float representation.
      
      As a side-effect this fix also corrects an unnoticed problem in
      bug 12882.
      
      
      mysql-test/r/func_group.result:
        BUG#20954 - test result adjustment.
        Adjusted the test result of bug 12882 which was not preperly fixed.
        The current patch corrects the problem that was fully corrected by the
        patch for 12882.
        
        The problem was that opt_sum_query() indicated that the optimizer may
        remove all tables because all MIN/MAX/COUNT functions are constants,
        but this lead to an empty result instead of NULL because the WHERE
        clause was still evaluated.
        
        The current fix removes all conjuncts in the where clause that
        reference the removed tables, and thus corrects the problem.
      mysql-test/r/select.result:
        BUG#20954 - added test
      mysql-test/r/subselect.result:
        BUG#20954 - test result adjustment.
        
        The fix removes those conditions in a where clause that refer to
        tables optimized away by MIN/MAX optimization (opt_sum_query()).
      mysql-test/t/select.test:
        BUG#20954 - added test
      sql/sql_select.cc:
        Fix for BUG#20954: avg(keyval) retuns 0.38 but max(keyval) returns an empty set
        
        When MIN/MAX optimization detects that all tables can be removed,
        also remove all conjuncts in a where clause that refer to these
        tables. As a result of this fix, these conditions are not evaluated
        twice, and in the case of float number comparisons we do not discard
        result rows due to imprecise float representation.
        
        As a side-effect this fix also corrects an unnoticed problem in
        bug 12882.
      996cdfd3
  15. 17 Jul, 2006 1 commit
    • unknown's avatar
      select.result, select.test: · a23ae773
      unknown authored
        Test case for bug#10977 altered to make it work in both plain and ps-protocol modes.
      
      
      mysql-test/t/select.test:
        Test case for bug#10977 altered to make it work in both plain and ps-protocol modes.
      mysql-test/r/select.result:
        Test case for bug#10977 altered to make it work in both plain and ps-protocol modes.
      a23ae773
  16. 15 Jul, 2006 1 commit
    • unknown's avatar
      Fixed bug#10977: No warning issued if a column name is truncated · db1c95e8
      unknown authored
      When an alias is set to a column leading spaces are removed from the alias.
      But when this is done on aliases set by user this can lead to confusion.
      
      Now Item::set_name() method issues the warning if leading spaces were removed
      from an alias set by user.
      
      New warning message is added.
      
      
      mysql-test/t/select.test:
        Added test case for bug#10977:No warning issued if a column name is truncated.
      mysql-test/r/select.result:
        Added test case for bug#10977:No warning issued if a column name is truncated.
      sql/sql_yacc.yy:
        Fixed bug#10977: No warning issued if a column name is truncated
        The is_autogenerated_name flag is set before set_name() method call.
      sql/item.cc:
        Fixed bug#10977: No warning issued if a column name is truncated
        Now Item::set_name() method issues the warning if leading spaces were removed
        from an alias set by user.
      db1c95e8
  17. 06 Jul, 2006 1 commit
    • unknown's avatar
      Bug #20569 Garbage in DECIMAL results from some mathematical functions · fb917563
      unknown authored
        Adding decimal "digits" in multiplication resulted in signed overflow and
      producing wrong results.
      
        Fixed by using large enough buffers and intermediary result types :
      dec2 (currently longlong) to hold result of adding decimal "digits" 
      (currently int32). 
      
      
      mysql-test/r/select.result:
        Bug #20569 Garbage in DECIMAL results from some mathematical functions
          * test suite for the bug
      mysql-test/t/select.test:
        Bug #20569 Garbage in DECIMAL results from some mathematical functions
          * test suite for the bug
      strings/decimal.c:
        Bug #20569 Garbage in DECIMAL results from some mathematical functions
          * fixed the overflow in adding decimal "digits"
      fb917563
  18. 20 Jun, 2006 2 commits
    • unknown's avatar
      field.cc, field.h: · 6ddd15ad
      unknown authored
        Additional fix for #16377 for bigendian platforms
      sql_select.cc, select.result, select.test:
        After merge fix
      
      
      mysql-test/t/select.test:
        After merge fix
      mysql-test/r/select.result:
        After merge fix
      sql/sql_select.cc:
        After merge fix
      sql/field.h:
        Additional fix for #16377 for bigendian platforms
      sql/field.cc:
        Additional fix for #16377 for bigendian platforms
      6ddd15ad
    • unknown's avatar
      select.result: · 503d2023
      unknown authored
        Added test case for bug#18759 Incorrect string to numeric conversion.  
      select.test:
        Added test case for bug#18759 Incorrect string to numeric conversion.
      item_cmpfunc.cc:
        Cleanup after fix for bug#18360 removal
      
      
      sql/item_cmpfunc.cc:
        Cleanup after fix for bug#18360 removal
      mysql-test/t/select.test:
        Added test case for bug#18759 Incorrect string to numeric conversion.
      mysql-test/r/select.result:
        Added test case for bug#18759 Incorrect string to numeric conversion.
      503d2023
  19. 14 Jun, 2006 1 commit
    • unknown's avatar
      Bug #18895: BIT values cause joins to fail · d496b16d
      unknown authored
      The Field::eq() considered instances of Field_bit that differ only in 
      bit_ptr/bit_ofs equal. This caused equality conditions optimization 
      (build_equal_items_for_cond()) to make bad field substitutions that result
      in wrong predicates. 
      Field_bit requires an overloaded eq() function that checks the bit_ptr/bit_ofs
      in addition to Field::eq().
      
      
      mysql-test/r/select.result:
        Bug #18895: BIT values cause joins to fail
        
        - test case
      mysql-test/t/select.test:
        Bug #18895: BIT values cause joins to fail
        
        - test case
      sql/field.h:
        Bug #18895: BIT values cause joins to fail
        
        - eq() method overloaded for Field_bit
      d496b16d
  20. 02 Jun, 2006 2 commits
    • unknown's avatar
      Removed duplicate tests from select.test · 9213819c
      unknown authored
      9213819c
    • unknown's avatar
      Bug #4981: 4.x and 5.x produce non-optimal execution path, · 65b9d2b9
      unknown authored
              3.23 regression test failure
      
      The member SEL_ARG::min_flag was not initialized, 
      due to which the condition for no GEOM_FLAG in function 
      key_or did not choose "Range checked for each record" as 
      the correct access method.
      
      
      mysql-test/r/select.result:
        testcase for 'Range checked' access method
      mysql-test/t/select.test:
        testcase for 'Range checked' access method
      sql/opt_range.cc:
        All of the class members initialized
      65b9d2b9
  21. 30 May, 2006 1 commit
    • unknown's avatar
      Fixed bug #17873: confusing error message when IGNORE/USE/FORCE INDEX · 031cf6a3
      unknown authored
      refers to a column name.
      
      
      mysql-test/r/select.result:
        Fixed bug #17873: confusing error message when IGNORE/USE/FORCE INDEX
        refers to a column name.
        Added a new test case.
      mysql-test/t/select.test:
        Fixed bug #17873: confusing error message when IGNORE/USE/FORCE INDEX
        refers to a column name.
        Added a new test case.
      sql/share/czech/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/danish/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/dutch/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/english/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/estonian/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/french/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/german/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/greek/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.\
      sql/share/hungarian/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/italian/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/japanese-sjis/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.\
      sql/share/japanese/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/korean/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/norwegian-ny/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/norwegian/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/polish/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/portuguese/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/romanian/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/russian/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/serbian/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/slovak/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/spanish/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/swedish/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      sql/share/ukrainian/errmsg.txt:
        Removed error message ER_INDEX_DOES_NOT_EXIST,
        used ER_KEY_DOES_NOT_EXITS instead.
      031cf6a3
  22. 28 May, 2006 1 commit
    • unknown's avatar
      Fixed bug #17873: confusing error message when IGNORE/USE/FORCE INDEX · 883291a2
      unknown authored
      refers to a column name.
      Added a new error message ER_INDEX_DOES_NOT_EXIST.
      
      
      include/mysqld_error.h:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      include/sql_state.h:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      mysql-test/r/explain.result:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      mysql-test/r/key_cache.result:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      mysql-test/r/preload.result:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      mysql-test/r/select.result:
        Added a test case for bug #17873.
      mysql-test/t/explain.test:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      mysql-test/t/select.test:
        Added a test case for bug #17873.
      sql/share/czech/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/danish/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/dutch/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/english/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/estonian/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/french/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/german/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/greek/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/hungarian/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/italian/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/japanese-sjis/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/japanese/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/korean/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/norwegian-ny/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/norwegian/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/polish/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/portuguese/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/romanian/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/russian/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/serbian/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/slovak/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/spanish/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/swedish/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      sql/share/ukrainian/errmsg.txt:
        Fixed bug #17873.
        Added a new error message ER_INDEX_DOES_NOT_EXIST.
      883291a2
  23. 12 May, 2006 1 commit
    • unknown's avatar
      Added a test case for bug #18940:in 5.0 the optimizer chose · a37955d0
      unknown authored
      a worse execution plan than in 4.1 for some queries.
      It happened due the fact that at some conditions the 
      optimizer always preferred range or full index scan access
      methods to lookup access methods even when the latter were much
      cheaper. 
      The problem was not observed in 4.1 for the reported query
      because the WHERE condition was not of a form that could
      cause the problem.
      Equality propagation introduced on 5.0 added an extra 
      predicate and changed the WHERE condition. The new condition
      provoked the optimizer to make a bad choice.
      
      The problem was fixed by the patch for bug 17379.
      
      
      mysql-test/r/select.result:
        Added a test case for bug #18940.
        The problem was fixed by the patch for bug 17379.
      mysql-test/t/select.test:
        Added a test case for bug #18940.
        The problem was fixed by the patch for bug 17379.
      a37955d0
  24. 10 May, 2006 1 commit
    • unknown's avatar
      BUG#17379 Wrong reuse of E(#rows(range)) as E(#rows(ref(const))): · 7c63a144
      unknown authored
      Re-work best_access_path() and find_best() to reuse E(#rows(range access)) as
      E(#rows(ref[_or_null](const) access) only when it is appropriate.
      [This is the final cumulative patch]
      
      
      mysql-test/r/select.result:
        BUG#17379: Testcase
      mysql-test/r/subselect.result:
        BUG#17379: Updated test results
      mysql-test/t/select.test:
        BUG#17379: Testcase
      sql/opt_range.cc:
        BUG#17379: Wrong reuse of E(#rows(range)) as E(#rows(ref(const))):
        Make range optimizer together with TABLE::quick_* also return TABLE::quick_n_ranges
      sql/sql_select.cc:
        BUG#17379: Wrong reuse of E(#rows(range)) as E(#rows(ref(const))):
        Re-work best_access_path() to reuse E(#rows(range access)) as
        E(#rows(ref[_or_null](const) access) only when it is appropriate.
      sql/table.h:
        BUG#17379: Wrong reuse of E(#rows(range)) as E(#rows(ref(const))):
        Make range optimizer together with TABLE::quick_* also return TABLE::quick_n_ranges
      7c63a144
  25. 04 May, 2006 1 commit
  26. 01 Apr, 2006 1 commit
    • unknown's avatar
      Fixed bug #16504. · 62302ad0
      unknown authored
      Multiple equalities were not adjusted after reading constant tables.
      It resulted in neglecting good index based methods that could be
      used to access of other tables.
      
      
      mysql-test/r/having.result:
        Adjusted a test case results after fix for bug #16504.
      mysql-test/r/select.result:
        Added a test case for bug #16504.
      mysql-test/r/subselect.result:
        Adjusted a test case results after fix for bug #16504.
      mysql-test/r/varbinary.result:
        Adjusted a test case results after fix for bug #16504.
      mysql-test/t/select.test:
        Added a test case for bug #16504.
      sql/item.cc:
        Fixed bug #16504.
        An Item_equal object may contain only a constant member.
        It may happen after reading constant tables.
      sql/item_cmpfunc.cc:
        Fixed bug #16504.
        Added method Item_equal::check_const that check appearance of new 
        constant items in a multiple equality.
      sql/item_cmpfunc.h:
        Fixed bug #16504.
        Added method Item_equal::check_const that check appearance of new 
        constant items in a multiple equality.
      sql/sql_select.cc:
        Fixed bug #16504.
        Adjusted multiple equalities after reading constant tables.
        Fixed a few typo in comments.
      62302ad0
  27. 11 Jan, 2006 3 commits
    • unknown's avatar
      Fixed bug #15538: unchecked table absence caused server crash. · e2a8eeda
      unknown authored
      Absence of table in left part of LEFT/RIGHT join wasn't checked before
      name resolution which resulted in NULL dereferencing and server crash.
      
      Modified rules: 
      "table_ref LEFT opt_outer JOIN_SYM table_ref" and "table_ref RIGHT opt_outer 
      JOIN_SYM table_ref"
      NULL check is moved before push_new_name_resolution_context()
      
      
      sql/sql_yacc.yy:
        Fixed bug #15538: unchecked table absence caused server crash.
        Modified rules:
        "table_ref LEFT opt_outer JOIN_SYM table_ref" and "table_ref RIGHT opt_outer 
        JOIN_SYM table_ref"
        NULL check is moved before push_new_name_resolution_context()
      mysql-test/r/select.result:
        Added test case for bug #15538: unchecked table absence caused server crash.
      mysql-test/t/select.test:
        Added test case for bug #15538: unchecked table absence caused server crash.
      e2a8eeda
    • unknown's avatar
      Fixed bug #15347: Wrong result of subselect when records cache and set · 511078bf
      unknown authored
      functions are involved.
      
      When subselect is a join with set functions and no record have been found in
      it, end_send_group() sets null_row for all tables in order aggregate functions 
      to calculate their values correctly. Normally this null_row flag is cleared for 
      each table in sub_select(), but flush_cached_records() doesn't do so.
      Due to this all fields from the table processed by flush_cached_records() are 
      always evaluated as nulls and whole select produces wrong result.
      
      flush_cached_records() now clears null_row flag at the very beginning.
      
      
      mysql-test/t/select.test:
        Added test case for bug #15347: Wrong result of subselect when records cache
        and set functions are involved
      mysql-test/r/select.result:
        Added test case for bug #15347: Wrong result of subselect when records cache
        and set functions are involved
      sql/sql_select.cc:
        Fixed bug #15347: Wrong result of subselect when records cache and set functions are involved
        flush_cached_records() now clears null_row flag at the very beginning.
      511078bf
    • unknown's avatar
      Fixed bug #15633: Evaluation of Item_equal for non-const table caused wrong · f107c706
      unknown authored
      select result
      
      Item equal objects are employed only at the optimize phase. Usually they are not
      supposed to be evaluated.  Yet in some cases we call the method val_int() for
      them. Here we have to take care of restricting the predicate such an object
      represents f1=f2= ...=fn to the projection of known fields fi1=...=fik.
      
      Added a check for field's table being const in Item_equal::val_int().
      If the field's table is not const val_int() just skips that field when
      evaluating Item_equal.
      
      
      mysql-test/t/select.test:
        Added test case for bug #15633: Evaluation of Item_equal for non-const table caused wrong select result
      mysql-test/r/select.result:
        Added test case for bug #15633: Evaluation of Item_equal for non-const table caused wrong select result
      mysql-test/r/func_group.result:
        Corrected test result for bug #12882 after fix for bug#15633
      sql/item_cmpfunc.h:
        Fixed bug #15633: Evaluation of Item_equal for non-const table caused wrong select result
        Added comment about fields from non-const tables in class description.
      sql/item_cmpfunc.cc:
        Fixed bug #15633: Evaluation of Item_equal for non-const table caused wrong select result
        Added check for field's table being const in Item_equal::val_int().
      f107c706
  28. 09 Dec, 2005 1 commit
    • unknown's avatar
      Fix bug #15268 Unchecked null value caused server crash · 8fb7cbbe
      unknown authored
      cmp_item_sort_string::cmp() wasn't checking values_res variable for null.
      Later called function was dereferenced it and crashed server.
      
      Added null check to cmp_item_sort_string::cmp().
      
      
      
      sql/item_cmpfunc.h:
        Fix bug#15268  Unchecked null value caused server crash
        Added null check to cmp_item_sort_string::cmp().
      mysql-test/t/select.test:
        Test case for bug#15268 Unchecked null value caused server crash
      mysql-test/r/select.result:
        Test case for bug#15268 Unchecked null value caused server crash
      8fb7cbbe
  29. 26 Nov, 2005 1 commit
    • unknown's avatar
      Fixed bug #15106. · cbff7c97
      unknown authored
      A typo bug caused loss of a predicate of the form field=const in some cases.
      
      
      mysql-test/r/select.result:
        Added a test case for bug #15106.
      mysql-test/t/select.test:
        Added a test case for bug #15106.
      cbff7c97
  30. 24 Nov, 2005 1 commit
    • unknown's avatar
      Fix bug #14482 Wrongly applied optimization in resolve_const_item() caused · 76fb5711
      unknown authored
      crash
      
      resolve_const_item() substitutes item which will evaluate to constant with
      equvalent constant item, basing on the item's result type. In this case
      subselect was resolved as constant, and resolve_const_item() was substituting
      it's result's Item_caches to Item_null. Later Item_cache's function was called
      for Item_null object, which caused server crash.
      
      resolve_const_item() now substitutes constants for items with 
      result_type == ROW_RESULT only for Item_rows.
      
      
      sql/item.cc:
        Fix bug #14482 Wrongly applied optimization in resolve_const_item() caused
        crash
        
        resolve_const_item() now applies optimization for items with
        result_type == ROW_RESULT only to Item_rows.
      mysql-test/t/select.test:
        Test case for bug #14482 Wrongly applied optimization in resolve_const_item() caused crash
      mysql-test/r/select.result:
        Test case for bug #14482 Wrongly applied optimization in resolve_const_item() caused crash
      76fb5711
  31. 11 Nov, 2005 1 commit
    • unknown's avatar
      Fix for BUG#14662: view column in ORDER BY considered ambiguous if SELECT contains · aa54d403
      unknown authored
      the same column as an aliased and as a non-aliased column.
      
      The problem was that Item_direct_view_ref::eq() was first comparing view columns
      by name, and in this case the name of one of them is different since it is aliased.
      
      
      mysql-test/r/select.result:
        Added test for BUG#14662.
      mysql-test/t/select.test:
        Added test for BUG#14662.
      sql/item.cc:
        Changed the way view column refenreces are compared. Two view columns are
        equal if they resolve to the same result field of a view.
      aa54d403
  32. 03 Nov, 2005 1 commit
    • unknown's avatar
      Fix bug #14093 Query takes a lot of time when date format is not valid · 898f6f28
      unknown authored
      Invalid date like 2000-02-32 wasn't converted to int, which lead to not
      using index and comparison with field as astring, which results in slow
      query execution.
      
      convert_constatn_item() and get_mm_leaf() now forces MODE_INVALID_DATES to
      allow such conversion.
      
      
      sql/item.h:
        Fix bug #14093 Query takes a lot of time when date format is not valid
        To Item_int_with_ref added method real_item() which returns ref.
      sql/item_cmpfunc.cc:
         Fix bug #14093 Query takes a lot of time when date format is not valid
        convert_constant_item() now allows conversion of invalid dates like 2000-01-32 to int to make it possible to use index when comparing fields with such dates.
      sql/opt_range.cc:
         Fix bug #14093 Query takes a lot of time when date format is not valid
        get_mm_leaf() modified so it allows index usage for comparing fields with invalid dates like 2000-01-32.
      mysql-test/r/select.result:
        Test case for bug#14093 Query takes a lot of time when date format is not valid
      mysql-test/t/select.test:
        Test case for bug#14093 Query takes a lot of time when date format is not valid
      898f6f28
  33. 25 Oct, 2005 1 commit
    • unknown's avatar
      Fix for BUG#13832 - Unknown column t1.a in 'on clause'. · fedd917f
      unknown authored
      The cause for the bug is that the priorities of all rules/terminals
      that process the FROM clause are not fully specified, and the
      parser generator produces a parser that doesn't always parse
      the FROM clause so that JOINs are left-associative. As a result
      the final join tree produced by the parser is incorrect, which
      is the cause for subsequent name resolution to fail.
      
      
      mysql-test/r/select.result:
        Test for BUG#13832.
      mysql-test/t/select.test:
        Test for BUG#13832.
      sql/sql_yacc.yy:
        Fix for BUG#13832 - Unknown column t1.a in 'on clause'.
        
        List all join-related operators as having lower priority
        than the join operands to make the parser process join-
        related productions from left to right.
      fedd917f
  34. 21 Oct, 2005 1 commit
    • unknown's avatar
      fix for bug #12595 (ESCAPE must be exactly 1 character long) · 8a20d641
      unknown authored
      ESCAPE has length of 1 if specified and sql_mode is NO_BACKSLASH_ESCAPES
      or has length of 0 or 1 in every other situation.
      (approved patch applied on a up-to-date tree re-commit) 
      
      
      mysql-test/r/select.result:
        results of test for bug 12595
      mysql-test/t/select.test:
        test for bug #12595 (ESCAPE must be exactly one character long)
      sql/item_cmpfunc.cc:
        if ESCAPE was in the statement check whether its length is
        different than 1. In NO_BACKSLASH_ESCAPES mode only length of 1 is
        allowed, otherwise the length could be 0 or 1 character (code point
        in the sense of Unicode).
      sql/item_cmpfunc.h:
        pass variable from the parsing stage - whether
        ESCAPE clause was found in the statement
      sql/sql_help.cc:
        pass FALSE for escape_used_in_parsing because we
        want the default mode of no error checking - our internal code.
      sql/sql_lex.cc:
        initialized variable used to transfer information during
        parsing up in the stack when reducing in the grammar
      sql/sql_lex.h:
        new variable used for transfering information when
        reducing in the grammar.
      sql/sql_yacc.yy:
        initialize Lex->escape_used and then use it when reducing.
        This is needed as fix for bug #12595 to distinguish between
        situation where ESCAPE was found and when not because internally
        we may pass a string an empty string and there is no other way
        to find out whether this is correct or not in case of 
        NO_BACKSLASH_ESCAPES mode, which allows only length of 1 if
        ESCAPE is part of the SQL statement.
      8a20d641
  35. 13 Oct, 2005 1 commit
    • unknown's avatar
      Fix bug #13855 select distinct with group by caused server crash · df9653ef
      unknown authored
      DISTINCT wasn't optimized away and caused creation of tmp table in wrong
      case. This result in integer overrun and running out of memory.
      
      Fix backported from 4.1. Now if optimizer founds that in result be only 1
      row it removes distinct.
      
      
      sql/sql_select.cc:
        Fix bug #13855 select distinct with group by caused server crash
      mysql-test/r/select.result:
        Test case for bug#13855 select distinct with group by caused server crash
      mysql-test/t/select.test:
         Test case for bug#13855 select distinct with group by caused server crash
      df9653ef