1. 07 Mar, 2005 9 commits
  2. 06 Mar, 2005 1 commit
    • unknown's avatar
      BUG#8351 post-review improvements. · 19925810
      unknown authored
      
      myisam/ft_boolean_search.c:
        quot, qend not needed anymore, removed.
        phrase initialization moved to ft_init_boolean_search.
        comments added.
        _ftb_strstr renamed to _ftb_check_phrase.
      myisam/ft_parser.c:
        style improvements.
      19925810
  3. 05 Mar, 2005 9 commits
    • unknown's avatar
      Porting of "buffered read" patch to 5.0 and post-review fixes. · e904d0e7
      unknown authored
      The patch implements the idea suggested by Olaf van der Spek in 
      thread "Client: many small reads?" (internals@lists.mysql.com).
      Now small reads performed by the client library are buffered.
      The buffering gives up to 2 times speedup when retrieving 
      one-column tables.
      
      
      BUILD/SETUP.sh:
        Remove --with-vio option which no longer exist.
      BUILD/compile-pentium64-valgrind-max:
        Remove --with-vio option which no longer exist.
      config/ac-macros/misc.m4:
        Removed --with-vio configure switch: we always use VIO. The switch,
         in fact, only saved us one pointer dereferencing per call in case we had
        only one transport type in VIO enabled.
      config/ac-macros/openssl.m4:
        Removed HAVE_VIO.
      include/config-win.h:
        Removed HAVE_VIO (not needed anymore)
        Added HAVE_VIO_READ_BUFF (define buffered client reads for Windows clients).
      include/violite.h:
        Removed HAVE_VIO, as currently VIO is always in use.
        Added declaration for vio_read_buff and related members in struct VIO.
      sql-common/client.c:
        Use flags to set up vio read buffering in mysql_real_connect.
      sql/mysqld.cc:
        Use flags to disable vio read buffering when creating a server 
        connection.
      vio/vio.c:
        Optionally set up vio read buffer when creating a new VIO structure.
      vio/viosocket.c:
        Implementation of client-side buffered reads in VIO: the idea 
        is to buffer small reads in a client buffer to save amount of
        syscalls per retrieved result set. The implementation relies
        on the fact that read/recv will return as soon as there is
        some data in the kernel buffer, no matter how big the given
        user's buffer is. To be able to disable it in case recv/read don't
        have such semantics, the new calls are guarded
        with #define HAVE_VIO_READ_BUFF. Currently buffered reading is 
        switched on only for BSD sockets and named pipes, both on Windows
        and UNIXes.
      e904d0e7
    • unknown's avatar
      sql_udf.cc: · 18f16edf
      unknown authored
        Comment changes: use standard style; fix grammar.
      
      
      sql/sql_udf.cc:
        Comment changes: use standard style; fix grammar.
      18f16edf
    • unknown's avatar
      func_group.test, func_str.result, func_group.result: · e75e10dd
      unknown authored
        after merge fixes
      
      
      mysql-test/r/func_group.result:
        after merge fixes
      mysql-test/r/func_str.result:
        after merge fixes
      mysql-test/t/func_group.test:
        after merge fixes
      e75e10dd
    • unknown's avatar
      Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0 · a12b0b28
      unknown authored
      into mysql.com:/home/bar/mysql-5.0
      
      
      a12b0b28
    • unknown's avatar
      Merge · e7eac027
      unknown authored
      
      BitKeeper/etc/logging_ok:
        auto-union
      innobase/trx/trx0trx.c:
        Auto merged
      mysql-test/r/ctype_collate.result:
        Auto merged
      mysql-test/r/func_system.result:
        Auto merged
      mysql-test/r/type_blob.result:
        Auto merged
      sql/ha_innodb.cc:
        Auto merged
      sql/item.cc:
        Auto merged
      sql/item.h:
        Auto merged
      sql/item_create.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/item_strfunc.cc:
        Auto merged
      sql/item_strfunc.h:
        Auto merged
      sql/opt_sum.cc:
        Auto merged
      innobase/ut/ut0mem.c:
        e
        merge from 4.1
      mysql-test/r/func_group.result:
        merge from 4.1
      mysql-test/r/func_str.result:
        merge from 4.1
      mysql-test/t/func_group.test:
        merge from 4.1
      e7eac027
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · 52740354
      unknown authored
      into mysql.com:/home/dlenev/src/mysql-5.0-sp
      
      
      sql/sp_head.cc:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      52740354
    • unknown's avatar
      Fix for yet another memleak caused by SP-locking patch. · e3bc9d82
      unknown authored
      Improved handling of situations when we encounter error during
      CREATE PROCEDURE (FUNCTION/TRIGGER/...) and bail out of yyparse()
      without restoring proper THD::lex.
      
      
      sql/sp.cc:
        We do not need to call sp_head::restore_lex() explicitly to restore right
        value of THD::lex in case when we have encountered error during parsing.
        Now we do this in sp_head::~sp_head() instead.
      sql/sp_head.cc:
        sp_head::destroy():
         Fixed cleaning up of stack of auxilary LEXes. 
         We also restore right value of THD::lex during this process now.
      sql/sql_parse.cc:
        We do not need to call sp_head::restore_lex() explicitly to restore right
        value of THD::lex in case when we have encountered error during parsing.
        Now we do this in sp_head::~sp_head() instead.
      sql/sql_prepare.cc:
        We do not need to call sp_head::restore_lex() explicitly to restore right
        value of THD::lex in case when we have encountered error during parsing.
        Now we do this in sp_head::~sp_head() instead.
      sql/sql_trigger.cc:
        We do not need to call sp_head::restore_lex() explicitly to restore right
        value of THD::lex in case when we have encountered error during parsing.
        Now we do this in sp_head::~sp_head() instead.
      e3bc9d82
    • unknown's avatar
      0d7e68c9
    • unknown's avatar
      logging_ok: · f1c81bf6
      unknown authored
        Logging to logging@openlogging.org accepted
      func_group.result, func_group.test:
        Added a test case for bug #8893.
      opt_sum.cc:
        A misplaced initialization for the returned parameter
        prefix_len in the function find_key_for_maxmin caused
        usage of a wrong key prefix by the min/max optimization
        in cases when the matching index was not the first index
        that contained the min/max field.
      
      
      sql/opt_sum.cc:
        A misplaced initialization for the returned parameter
        prefix_len in the function find_key_for_maxmin caused
        usage of a wrong key prefix by the min/max optimization
        in cases when the matching index was not the first index
        that contained the min/max field.
      mysql-test/t/func_group.test:
        Added a test case for bug #8893.
      mysql-test/r/func_group.result:
        Added a test case for bug #8893.
      BitKeeper/etc/logging_ok:
        Logging to logging@openlogging.org accepted
      f1c81bf6
  4. 04 Mar, 2005 21 commits
    • unknown's avatar
      Chmod -x for ha_federated.h · 0ae5efb4
      unknown authored
      
      sql/ha_federated.h:
        Change mode to -rw-rw-r--
      0ae5efb4
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0 · 554375ed
      unknown authored
      into deer.(none):/home/hf/work/mysql-5.0.8915
      
      
      554375ed
    • unknown's avatar
      Fix for bug #8431 (FLOOR returns incorrect result) · 6e362a20
      unknown authored
      
      mysql-test/r/type_newdecimal.result:
        test result fixed
      mysql-test/t/type_newdecimal.test:
        test case enlarged for FLOOR and CEILING functions
      sql/item_func.cc:
        floor::int_op fixed - it should work differently depending on operand's type
      6e362a20
    • unknown's avatar
      Merge bk@192.168.21.1:/usr/home/bk/mysql-5.0 · e5be4a13
      unknown authored
      into deer.(none):/home/hf/work/mysql-5.0.8915
      
      
      sql/item_func.cc:
        Auto merged
      e5be4a13
    • unknown's avatar
      Fix for memory leak which was introduced by patch improving locking in SP. · f76b64f5
      unknown authored
      Made mysql_make_view() to call destructor for st_lex_local objects before
      throwing them away (this happens in case of error).
      
      
      sql/sql_lex.h:
        Made LEX's destructor virtual to be able properly destroy objects
        of inherited classes (i.e. of st_lex_local).
      sql/sql_view.cc:
        mysql_make_view():
          We should call destructor for st_lex_local object before throwing
          it away.
      f76b64f5
    • unknown's avatar
      Fix for bug #8430 (CEILING returns incorrect result) · 329a3dea
      unknown authored
      
      sql/item_func.cc:
        ceiling::int_op should work differently depending on argument's type
      329a3dea
    • unknown's avatar
      ut0mem.c: · 58002ddd
      unknown authored
        If InnoDB cannot allocate memory, keep retrying for 60 seconds before we crash mysqld; maybe the memory shortage is just temporary
      
      
      innobase/ut/ut0mem.c:
        If InnoDB cannot allocate memory, keep retrying for 60 seconds before we crash mysqld; maybe the memory shortage is just temporary
      58002ddd
    • unknown's avatar
      trx0trx.c: · 6736ce56
      unknown authored
        Do not assert, but print diagnostics if MySQL tries to free a trx where n_mysql_tables_in_use > 0
      
      
      innobase/trx/trx0trx.c:
        Do not assert, but print diagnostics if MySQL tries to free a trx where n_mysql_tables_in_use > 0
      6736ce56
    • unknown's avatar
      Manual merge SP-locking improvements patch with current tree. · b1095fb0
      unknown authored
      
      mysql-test/r/mysqldump.result:
        Auto merged
      mysql-test/r/sp.result:
        Auto merged
      mysql-test/t/mysqldump.test:
        Auto merged
      mysql-test/t/sp.test:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/sp.cc:
        Auto merged
      sql/sp_rcontext.cc:
        Auto merged
      sql/sql_acl.cc:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_lex.cc:
        Auto merged
      sql/sql_lex.h:
        Auto merged
      sql/sql_prepare.cc:
        Auto merged
      sql/sql_update.cc:
        Auto merged
      sql/sql_view.cc:
        Auto merged
      sql/table.h:
        Auto merged
      sql/sp_head.cc:
        Manual merge.
      sql/sql_class.cc:
        Manual merge.
      sql/sql_parse.cc:
        Manual merge.
      sql/sql_yacc.yy:
        Manual merge.
      b1095fb0
    • unknown's avatar
      ha_innodb.cc: · 8ef8cd76
      unknown authored
        write_row(): Detect SQLCOM_OPTIMIZE, so that also OPTIMIZE TABLE
        will commit at every 10,000 copied rows.
      
      
      sql/ha_innodb.cc:
        write_row(): Detect SQLCOM_OPTIMIZE, so that also OPTIMIZE TABLE
        will commit at every 10,000 copied rows.
      8ef8cd76
    • unknown's avatar
      Better approach for prelocking of tables for stored routines execution · ac9f68b9
      unknown authored
      and some SP-related cleanups.
      
      - We don't have separate stage for calculation of list of tables
        to be prelocked and doing implicit LOCK/UNLOCK any more.
        Instead we calculate this list at open_tables() and do implicit
        LOCK in lock_tables() (and UNLOCK in close_thread_tables()).
        Also now we support cases when same table (with same alias) is
        used several times in the same query in SP.
      
      - Cleaned up execution of SP. Moved all common code which handles
        LEX and does preparations before statement execution or complex
        expression evaluation to auxilary sp_lex_keeper class. Now 
        all statements in SP (and corresponding instructions) that
        evaluate expression which can contain subquery have their
        own LEX.
      
      
      mysql-test/r/lock.result:
        Replaced wrong error code with the correct one after fixing bug in
        SP-locking.
      mysql-test/r/mysqldump.result:
        Added dropping of view which is used in test to its beginning.
      mysql-test/r/sp.result:
        Added tests for improved SP-locking.
        Temporarily disabled tests for SHOW PROCEDURE STATUS and alike
        (Until Monty will allow to open mysql.proc under LOCK TABLES without
        mentioning it in lock list).
        Replaced wrong results of test for bug #5240 with correct results after
        fixing bug in handling of cursors.
      mysql-test/t/lock.test:
        Replaced wrong error code with the correct one after fixing bug in
        SP-locking.
      mysql-test/t/mysqldump.test:
        Added dropping of view which is used in test to its beginning.
      mysql-test/t/sp.test:
        Added tests for improved SP-locking.
        Temporarily disabled tests for SHOW PROCEDURE STATUS and alike
        (Until Monty will allow to open mysql.proc under LOCK TABLES without
        mentioning it in lock list).
        Removed test for bug #1654 since we already test exactly this function
        in one of SP-locking tests.
        Removed comment about cursor's wrong behavior in test for bug #5240
        after fixing bug which was its cause.
      sql/item_func.cc:
        Removed comment which is no longer true.
      sql/mysql_priv.h:
        Changed open_tables() signature.
        Now its 2nd parameter is in/out since it can add elements to table list.
      sql/sp.cc:
        sp_find_procedure():
         Added one more parameter which enforces cache only lookup.
        
        sp_merge_hash():
         Now uses its return value to indicate that first of two hashes changed
         as result of merge.
        
        sp_cache_routines():
         This function caches all stored routines used in query now.
      sql/sp.h:
        - sp_find_procedure() now has one more parameter which enforces cache only
          lookup.
        - sp_merge_hash() now uses its return value to indicate that first of two
          hashes changed as result of merge.
        - sp_cache_routines() caches all stored routines now. So it does not need
          third argument any more.
      sql/sp_head.cc:
        sp_head::sp_head():
         Added initialization of new m_spfuns and m_spprocs members.
        
        sp_head::execute():
         Let us save/restore part of thread context which can be damaged by
         execution of instructions.
        sp_head::execute_function()/execute_procedure():
         Now it is responsibility of caller to close tables used in
         subqueries which are passed as routine parameters.
        
        sp_head::restore_lex():
         Let us accumulate information about routines used by this one
         in new m_spfuns, m_spprocs hashes.
        
        sp_lex_keeper::reset_lex_and_exec_core()
         Main method of new auxilary sp_lex_keeper class to which instructions 
         delegate responsibility for handling LEX and preparations before
         executing statement or calculating complex expression.
        
        Since all instructions which calculate complex expression or execute
        command now use sp_lex_keeper they have to implement
        sp_instr::exec_core() method. Most of instruction specific logic
        has moved from sp_instr::execute() to this new method.
        
        Removed sp_instr_set_user_var class which is no longer used, because
        nowdays we allow execution of statements in stored functions and
        triggers.
        
        sp_merge_table_list() became sp_head::merge_table_list() method. It
        also treats sp_head::m_sptabs as multi-set of tables now.
        
        sp_hash_to_table_list() became sp_head::add_used_tables_to_table_list().
        It takes into account that sp_head::m_sptabs is multi-set and allocates
        object into persistent arena of PS.
        
        Removed sp_merge_table_hash(), sp_open_and_lock_tables(),
        sp_unlock_tables(), sp_merge_routine_tables() methods since they are not
        used by new prelocking mechanism.
        
        Added sp_add_sp_tables_to_table_list() which serves for adding tables needed
        by routines used in query to the query table list for prelocking.
      sql/sp_head.h:
        class sp_head:
        - Added m_spfuns, m_spprocs members for storing names of routines used
          by this routine.
        - Added add_used_tables_to_table_list() method which allows to add
          tables needed by this routine to query's table list.
        - Converted sp_merge_table_list() to sp_head::merge_table_list() method.
        - Changed semantics of THD::m_sptabs. Now it is multi-set which contains
          only tables which are used by this routine and not routines that are
          called from this one.
        
        Removed sp_merge_routine_tables(), sp_merge_table_hash(),
        sp_open_and_lock_tables(), sp_unlock_tables() calls since they are not
        used for our prelocking list calculation.
        
        Added auxilary sp_lex_keeper class to which instructions delegate
        responsibility for handling LEX and preparations before executing
        statement or calculating complex expression. This class uses
        new sp_instr::exec_core() method which is responsible for executing
        instruction's core function after all preparations were made.
        
        All instructions which hold and calculate complex expression now have
        their own LEX (by aggregating sp_lex_keeper instance). sp_instr_stmt
        now uses sp_lex_keeper too.
        
        Removed sp_instr_set_user_var class which is no longer used, because
        nowdays we allow execution of statements in stored functions and
        triggers.
      sql/sp_rcontext.cc:
        Now sp_cursor holds pointer to sp_lex_keeper instead of LEX.
      sql/sp_rcontext.h:
        Now sp_cursor holds pointer to sp_lex_keeper instead of LEX.
      sql/sql_acl.cc:
        acl_init(), grant_init():
          Now we use simple_open_n_lock_tables() instead of explicit
          calls to open_tables() and mysql_lock_tables().
      sql/sql_base.cc:
        Implemented support for execution of statements in "prelocked" mode.
        
        When we have statement which uses stored routines explicitly or
        implicitly (via views or triggers) we have to open and lock all tables
        for these routines at the same time as tables for the main statement.
        In fact we have to do implicit LOCK TABLES at the begining of such
        statement and implict UNLOCK TABLES at its end. We call such mode
        "prelocked".
        
        When open_tables() is called for the statement tables which are needed
        for execution of routines used by it are added to its tables list
        (this process also caches all routines used). Implicit use of routines
        is discovered when we open view or table with trigger and apropriate
        tables are added to the table list at this moment. Statement which has
        such extra tables in its list (well actually any that uses functions)
        is marked as requiring prelocked mode for its execution.
        
        When lock_tables() sees such statement it will issue implicit LOCK TABLES
        for this extended table list instead of doing usual locking, it will also
        set THD::prelocked_mode to indicate that we are in prelocked mode.
        
        When open_tables()/lock_tables() are called for statement of stored
        routine (substatement), they notice that we are running in prelocked mode
        and use one of prelocked tables from those that are not used by upper
        levels of execution.
        
        close_thread_tables() for substatement won't really close tables used
        but will mark them as free for reuse instead.
        
        Finally when close_thread_tables() is called for the main statement it
        really unlocks and closes all tables used.
        
        Everything will work even if one uses such statement under real LOCK
        TABLES (we are simply not doing implicit LOCK/UNLOCK in this case).
      sql/sql_class.cc:
        Added initialization of THD::prelocked_mode member.
      sql/sql_class.h:
        - Added prelocked_mode_type enum and THD::prelocked_mode member
          which are used for indication whenever "prelocked mode" is on 
          (i.e. that statement uses stored routines and is executed under
           implicit LOCK TABLES).
        - Removed THD::shortcut_make_view which is no longer needed.
          We use TABLE_LIST::prelocking_placeholder for the same purprose
          now.
      sql/sql_handler.cc:
        Changed open_tables() invocation.
        Now its 2nd parameter is in/out since it can add elements to table list.
      sql/sql_lex.cc:
        lex_start():
          Added initialization of LEX::query_tables_own_last.
          Unused LEX::sptabs member was removed.
        st_lex::unlink_first_table()/link_first_table_back():
          We should update LEX::query_tables_last properly if table list
          contains(ed) only one element.
      sql/sql_lex.h:
        LEX:
        - Removed sptabs member since it is no longer used.
        - Added query_tables_own_last member, which if non-0 indicates that
          statement requires prelocking (implicit LOCK TABLES) for its execution
          and points to last own element in query table list. If it is zero
          then this query does not need prelocking.
        - Added requires_prelocking(), mark_as_requiring_prelocking(),
          first_not_own_table() inline methods to incapsulate and simplify
          usage of this new member.
      sql/sql_parse.cc:
        dispatch_command():
          To properly leave prelocked mode when needed we should call
          close_thread_tables() even if there are no open tables.
        mysql_execute_command():
        - Removed part of function which were responsible for doing implicit
          LOCK TABLES before statement execution if statement used stored 
          routines (and doing UNLOCK TABLES at the end).
          Now we do all this in open_tables()/lock_tables()/close_thread_tables()
          instead.
        - It is also sensible to reset errors before execution of statement
          which uses routines.
        - SQLCOM_DO, SQLCOM_SET_OPTION, SQLCOM_CALL
          We should always try to open tables because even if statement has empty
          table list, it can call routines using tables, which should be preopened
          before statement execution.
        - SQLCOM_CALL
          We should not look up routine called in mysql.proc, since it should be
          already cached by this moment by open_tables() call.
        - SQLCOM_LOCK_TABLES
          it is better to use simple_open_n_lock_tables() since we want to avoid
          materialization of derived tables for this command.
      sql/sql_prepare.cc:
        mysql_test_update():
          Changed open_tables() invocations. Now its 2nd parameter is in/out
          since it can add elements to table list.
        check_prepared_statement():
          Since now we cache all routines used by statement in open_tables() we 
          don't need to do it explicitly.
        mysql_stmt_prepare():
          Now we should call close_thread_tables() when THD::lex points to the
          LEX of statement which opened tables.
        reset_stmt_for_execute():
          Commented why we are resetting all tables in table list.
      sql/sql_trigger.h:
        Table_triggers_list::process_triggers():
          We should surpress sending of ok packet when we are calling trigger's
          routine, since now we allow statements in them.
      sql/sql_update.cc:
        Changed open_tables() invocations.
        Now its 2nd parameter is in/out since it can add elements to table list.
      sql/sql_view.cc:
        mysql_make_view():
        - Removed handling of routines used in view. Instead we add tables which
          are needed for their execution to statement's table list in 
          open_tables().
        - Now we use TABLE_LIST::prelocking_placeholder instead of 
          THD::shortcut_make_view for indicating that view is opened
          only to discover which tables and routines it uses (this happens
          when we build extended table list for prelocking). Also now we try
          to avoid to modify main LEX in this case (except of its table list).
        - Corrected small error we added tables to the table list of the main
          LEX without updating its query_tables_last member properly.
      sql/sql_yacc.yy:
        Now each expression which is used in SP statements and can contain
        subquery has its own LEX. This LEX is stored in corresponding sp_instr
        object and used along with Item tree for expression calculation.
        
        We don't need sp_instr_set_user_var() anymore since now we allow
        execution of statements in stored functions and triggers.
      sql/table.h:
        Added TABLE_LIST::prelocking_placeholder member for distinguishing
        elements of table list which does not belong to the statement itself
        and added there only for prelocking (as they are to be used by routines
        called by this statement).
      sql/tztime.cc:
        my_tz_init():
          Now we use more simplier simple_open_n_lock_tables() call instead of 
          open_tables()/lock_tables() pair.
      ac9f68b9
    • unknown's avatar
      Merge marko@bk-internal.mysql.com:/home/bk/mysql-4.1 · 56c517bd
      unknown authored
      into hundin.mysql.fi:/home/marko/mysql-4.1
      
      
      56c517bd
    • unknown's avatar
      Fix for BUG#8351 (5.0) - Double quote in Boolean Fulltext query causes crash · d72d7a88
      unknown authored
      
      myisam/ft_boolean_search.c:
        Put phrase words, including stopwords into list `phrase'.
        Use `phrase' instead of `qout', `qend' in _ftb_strstr.
      myisam/ft_parser.c:
        ft_get_word extended, so it can return short words and stopwords. (return value 4)
        ft_simple_get_word extended, so it can return short words and stopwords
        when skip_stopwords is false.
      myisam/ft_stopwords.c:
        One more argument for ft_simple_get_word.
      myisam/ftdefs.h:
        One more argument for ft_simple_get_word added.
        Third argument of ft_simple_get_word changet to const.
      d72d7a88
    • unknown's avatar
      Merge · d6949b3e
      unknown authored
      
      sql/mysqld.cc:
        SCCS merged
      d6949b3e
    • unknown's avatar
      Merge with after merge fix · 7bd7643a
      unknown authored
      
      BitKeeper/deleted/.del-create.c~96cecc433c0c2242:
        Auto merged
      include/my_global.h:
        Auto merged
      myisam/mi_create.c:
        Auto merged
      sql/ha_myisam.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      BitKeeper/deleted/.del-errmsg.txt~f96b7055cac394e:
        Auto merged
      BitKeeper/deleted/.del-mrg_create.c~b747c8ec2b801f6:
        Auto merged
      sql/table.cc:
        Auto merged
      sql/sql_udf.cc:
        After merge fix
      7bd7643a
    • unknown's avatar
      type_blob.result, func_system.result, func_str.result, ctype_collate.result: · c56d0283
      unknown authored
        fixing test results accordingly.
      func_system.test:
        New test that illegal mix of collations does not happen anymore.
      item_strfunc.h:
          safe_charset_converter() was added for system constants.
      item_strfunc.cc:
        safe_charset_converter() was added for system constants.
      item_func.cc, item.h, item.cc:
        Bug#8291: Illegal collation mix with USER() function.
        After discussion with PeterG and Serge, a new coercibility
        level for "system constants" was introduced, between
        COERRIBLE and IMPLICIT. Thus:
        SELECT col1 = USER() FROM t1; - is done according to col1 collation.
        SELECT 'string' = USER(); - is done according to USER() collation.
        At the same time, "nagg" and "strong" members were removed as unused.
      item_create.cc:
        Version is a system constant too.
      
      
      sql/item.cc:
        Bug#8291: Illegal collation mix with USER() function.
        After discussion with PeterG and Serge, a new coercibility
        level for "system constants" was introduced, between
        COERRIBLE and IMPLICIT. Thus:
        SELECT col1 = USER() FROM t1; - is done according to col1 collation.
        SELECT 'string' = USER(); - is done according to USER() collation.
        At the same time, "nagg" and "strong" members were removed as unused.
      sql/item.h:
        Bug#8291: Illegal collation mix with USER() function.
        After discussion with PeterG and Serge, a new coercibility
        level for "system constants" was introduced, between
        COERRIBLE and IMPLICIT. Thus:
        SELECT col1 = USER() FROM t1; - is done according to col1 collation.
        SELECT 'string' = USER(); - is done according to USER() collation.
        At the same time, "nagg" and "strong" members were removed as unused.
      sql/item_create.cc:
        Version is a system constant too.
      sql/item_func.cc:
        Bug#8291: Illegal collation mix with USER() function.
        After discussion with PeterG and Serge, a new coercibility
        level for "system constants" was introduced, between
        COERRIBLE and IMPLICIT. Thus:
        SELECT col1 = USER() FROM t1; - is done according to col1 collation.
        SELECT 'string' = USER(); - is done according to USER() collation.
        At the same time, "nagg" and "strong" members were removed as unused.
      sql/item_strfunc.cc:
        safe_charset_converter() was added for system constants.
      sql/item_strfunc.h:
          safe_charset_converter() was added for system constants.
      mysql-test/t/func_system.test:
        New test that illegal mix of collations does not happen anymore.
      mysql-test/r/ctype_collate.result:
        fixing test results accordingly.
      mysql-test/r/func_str.result:
        fixing test results accordingly.
      mysql-test/r/func_system.result:
        fixing test results accordingly.
      mysql-test/r/type_blob.result:
        fixing test results accordingly.
      c56d0283
    • unknown's avatar
      Merge mysql.com:/home/mydev/mysql-4.1 · e54b545a
      unknown authored
      into mysql.com:/home/mydev/mysql-4.1-4100
      
      
      myisam/mi_create.c:
        Auto merged
      e54b545a
    • unknown's avatar
      Fix compilation failure in mi_create.c · 24cb24c0
      unknown authored
      
      myisam/mi_create.c:
        Fix typo.
      24cb24c0
    • unknown's avatar
      Merge mysql.com:/home/mydev/mysql-4.0 · f97fd0f0
      unknown authored
      into mysql.com:/home/mydev/mysql-4.1-4100
      
      
      myisam/mi_create.c:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      f97fd0f0
    • unknown's avatar
      Fix for a build bug. · 555ea37d
      unknown authored
      Added a missing comma.
      
      
      555ea37d
    • unknown's avatar
      Clean up merge of fix for Bug #3309. · aec0408b
      unknown authored
      
      mysql-test/r/grant2.result:
        Update results
      mysql-test/t/grant2.test:
        Reset sql_mode before test.
      sql/sql_acl.cc:
        Fixes to merge
      aec0408b