An error occurred fetching the project authors.
  1. 11 Dec, 2004 1 commit
    • unknown's avatar
      new reference which refer to current value not to result used for resolving outer · b41b1681
      unknown authored
      refernces if subqueri is not in HAVING clause (BUG#7079)
        and the same used for subquery transformetion
      
      
      mysql-test/r/subselect.result:
        reference on changable fields from subquery
      mysql-test/t/subselect.test:
        reference on changable fields from subquery
      sql/item.cc:
        new reference which refer to current value not to result used
      sql/item.h:
        new reference which refer to current value not to result used
      sql/item_subselect.cc:
        new reference which refer to current value not to result used
      b41b1681
  2. 25 Nov, 2004 1 commit
  3. 21 Nov, 2004 1 commit
    • unknown's avatar
      A fix and test case for Bug#6297 "prepared statement, wrong handling · c474e066
      unknown authored
       of <parameter> IS NULL":
      we must not only set Item::null_value in Item_param, but implement
      Item_param::is_null() to work well with IS NULL/IS NOT NULL clauses.
      
      
      mysql-test/r/ps.result:
        Test case for Bug#6297: test results fixed.
      mysql-test/t/ps.test:
        A test case for Bug#6297 "prepared statement, wrong handling of 
        <parameter> IS NULL"
      sql/item.h:
        A fix for Bug#6297: we must not only set null_value in Item_param, but
        also implement Item_param::is_null() to work well with  IS NULL/
        IS NOT NULL.
        Item::is_null() commented.
      c474e066
  4. 10 Nov, 2004 1 commit
    • unknown's avatar
      1. When mixing NULL to a character string, · ad63974d
      unknown authored
      the result takes its charset/collation
      attributes from the character string,
      e.g.  SELECT func(NULL, _latin2'string')
      now returns a latin2 result. This is
      done by introducing a new derivation
      (aka coercibility) level DERIVATION_IGNORABLE,
      which is used with Item_null.
      2. 'Pure' NULL is now BINARY(0), not CHAR(0).
      I.e. NULL is now more typeless.
      
      
      mysql-test/r/metadata.result:
        Fixing test results:
        CHAR(0) -> BINARY(0) for NULLs
      mysql-test/r/null.result:
        Testing mixing NULL with a character string with a number of functions.
      mysql-test/r/ps_2myisam.result:
        Fixing test results:
        CHAR(0) -> BINARY(0) for NULLs
      mysql-test/r/ps_3innodb.result:
        Fixing test results:
        CHAR(0) -> BINARY(0) for NULLs
      mysql-test/r/ps_4heap.result:
        Fixing test results:
        CHAR(0) -> BINARY(0) for NULLs
      mysql-test/r/ps_5merge.result:
        Fixing test results:
        CHAR(0) -> BINARY(0) for NULLs
      mysql-test/r/ps_6bdb.result:
        Fixing test results:
        CHAR(0) -> BINARY(0) for NULLs
      mysql-test/r/ps_7ndb.result:
        Fixing test results:
        CHAR(0) -> BINARY(0) for NULLs
      mysql-test/t/null.test:
        Testing mixing NULL with a character string with a number of functions.
      sql/item.cc:
        New derivation level.
      sql/item.h:
        New derivation level.
      ad63974d
  5. 02 Nov, 2004 1 commit
    • unknown's avatar
      Many files: · 469889f5
      unknown authored
        Allow mixing of different character sets for more SQL functions.
      item_func.h:
        Allow mixing of different character sets for more SQL functions..
      
      
      sql/item_cmpfunc.cc:
        Allow mixing of different character sets for more SQL functions.
      sql/item_func.cc:
        Allow mixing of different character sets for more SQL functions.
      sql/item_func.h:
        Allow mixing of different character sets for more SQL functions..
      sql/item_strfunc.cc:
        Allow mixing of different character sets for more SQL functions.
      sql/item.cc:
        Allow mixing of different character sets for more SQL functions.
      sql/item.h:
        Allow mixing of different character sets for more SQL functions.
      mysql-test/t/ctype_recoding.test:
        Allow mixing of different character sets for more SQL functions.
      mysql-test/r/ctype_recoding.result:
        Allow mixing of different character sets for more SQL functions.
      469889f5
  6. 29 Oct, 2004 1 commit
    • unknown's avatar
      Allow to convert to non-Unicode charset when mixing a string · 312fc6da
      unknown authored
      constant with a column. The string is converted into the column
      character set. It conversion doesn't lose data, then operation
      is possible. Otherwise, give an error, as it was earlier.
      
      
      sql/item.h:
        Change bool argument to uint flags:
        we have now two different flags.
      312fc6da
  7. 22 Oct, 2004 3 commits
    • unknown's avatar
      Followup to fix for bug#6050: fix valgrind warnings. · 49cc2b17
      unknown authored
      sql/item.cc:
        Fix valgrind errors: we need Item::name to point to PS memory
        as well.
      sql/item.h:
        set_field no longer can be reused as is for PS purposes.
      sql/sql_union.cc:
        Item_field::set_field -> Item_field::reset_field.
      49cc2b17
    • unknown's avatar
      Fix compiler warnings (detected by Intel's C++ compiler) · 3bfa0e9c
      unknown authored
      Fixed checking of privilege handling in CREATE ... SELECT (Bug #6094)
      
      
      client/mysql.cc:
        Fix compiler warnings
      client/mysqltest.c:
        Fix wrong counting of lines
        Remove compiler warnings
      heap/hp_hash.c:
        Fix compiler warnings
      innobase/dict/dict0load.c:
        Fix compiler warnings
      innobase/include/mem0mem.h:
        Fix compiler warnings
      libmysql/client_settings.h:
        Fix compiler warnings
      myisam/ft_nlq_search.c:
        Add comments about compiler warnings
      myisam/rt_index.c:
        Add comments about compiler warnings
      myisam/rt_mbr.c:
        Add comments about compiler warnings
      mysql-test/r/ps.result:
        Test case for bug#6094
      mysql-test/t/ps.test:
        Test case for bug#6094
      mysys/hash.c:
        Fix compiler warnings
      mysys/my_handler.c:
        Add comments about compiler warnings
      mysys/my_thr_init.c:
        Add comments about compiler warnings
      ndb/include/mgmapi/mgmapi.h:
        Fix compiler warnings
      regex/main.c:
        Fix compiler warnings
      sql/item.h:
        Fix compiler warnings
      sql/item_func.h:
        Add comments about compiler warnings
      sql/spatial.h:
        Add comments about compiler warnings
      sql/sql_lex.h:
        Fix compiler warning
      sql/sql_list.h:
        Fix compiler warning
      sql/sql_parse.cc:
        Move testing of access rights of tables in CREATE ... SELECT to create_table_precheck() to fix privilege checking in CREATE ... SELECT
        (Bug #6094)
      sql/sql_prepare.cc:
        Remove not needed empty line
      sql/sql_string.h:
        Fix compiler warnings
      strings/ctype-mb.c:
        Fix compiler warnings
      3bfa0e9c
    • unknown's avatar
      A fix and test case for Bug#6050 "EXECUTE stmt reports ambiguous field · f306f414
      unknown authored
      names with ident. tables fr. diff. schemata": revise all uses of
      Item_field and make them prepared-statements friendly when necessary.
      
      
      mysql-test/r/ps.result:
        Test results fixed: the test case for Bug#6050
      mysql-test/r/ps_1general.result:
        Test results fixed: in prepared statements we expand '*' to a list
        of fully qualified fields (db.table.column).
      mysql-test/t/ps.test:
        A test for Bug#6050 "EXECUTE stmt reports ambiguous fieldnames with 
        ident. tables fr. diff. schemata"
      sql/item.cc:
        Revise all Item_field constructors: we need to make sure that no Item_field
        object points to unaccessible memory in prepared statements.
      sql/item.h:
        Revise all Item_field constructors: we need to make sure that no Item_field
        object points to unaccessible memory in prepared statements.
      sql/sql_base.cc:
        Item_field use changed to be prepared statements friendly.
      sql/sql_class.h:
        New check of Item_arena state.
      sql/sql_union.cc:
        Fixing the problem with name resolving in UNION and prepared statements:
        In case of SELECT a, b, c FROM t1 UNION SELECT a, b, c FROM t2 the list of
        selected items is represented as a List<Item_field>, where each 
        Item_field points to a field of temporary table.
        But the temporary table is created anew on each execution of the prepared 
        statement. So on each subsequent execution we should reset Item_field
        items to point to fields from freshly-created temporary table.
      sql/table.h:
        Comment TABLE member.
      f306f414
  8. 12 Oct, 2004 1 commit
    • unknown's avatar
      item.h: · cf19901a
      unknown authored
        A fix for Bug#6042 "constants propogation works olny once (prepared
        statements)": reset item->marker in Item::cleanup, as it's used
        in propogate_cond_constants. No test case as the only way I could
        come up with to show the problem is EXPLAIN, and EXPLAIN is painful
        to use in the test suite.
      
      
      sql/item.h:
        A fix for Bug#6042 "constants propogation works olny once (prepared
        statements)": reset item->marker in Item::cleanup, as it's used
        in propogate_cond_constants
      cf19901a
  9. 09 Oct, 2004 1 commit
    • unknown's avatar
      A fix and test case for Bug#5987 "subselect in bool function · bcc6f615
      unknown authored
      crashes server (prepared statements)": the bug was that all boolean
      items always recovered its original arguments at statement cleanup 
      stage.
      This collided with Item_subselect::select_transformer, which tries to 
      permanently change the item tree to use a transformed subselect instead of
      original one.
      So we had this call sequence for prepare:
      mysql_stmt_prepare -> JOIN::prepare -> 
      Item_subselect::fix_fields -> the item tree gets transformed ->
      Item_bool_rowready_func2::cleanup, item tree is recovered to original
      state, while it shouldn't have been;
      mysql_stmt_execute -> attempts to execute a broken tree -> crash.
      Now instead of bluntly recovering all arguments of bool functions in 
      Item_bool_rowready_func2::cleanup, we recover only those
      which were changed, and do it in one place.
      There still would exist a possibility for a collision with subselect
      tranformation, if permanent and temporary changes were performed at the 
      same stage.
      But fortunately subselect transformation is always done first, so it 
      doesn't conflict with the optimization done by propogate_cond_constants.
      Now we have: 
      mysql_stmt_prepare -> JOIN::prepare -> subselect transformation 
      permanently changes the tree -> cleanup doesn't recover anything, 
      because nothing was registered for recovery.
      mysql_stmt_execute -> JOIN::prepare (the tree is already transformed, 
      so it doesn't change), JOIN::optimize -> 
      propogate_cond_constants -> temporary changes the item tree 
      with constants -> JOIN::execute -> cleanup -> 
      the changes done by propogate_cond_constants are recovered, as
      they were registered for recovery.
      
      
      mysql-test/r/ps.result:
        Bug#5987: test results fixed.
      mysql-test/t/ps.test:
        A test for bug#5987 "subselect in bool function crashes server 
        (prepared statements)"
      sql/item.cc:
        resolve_const_item is now responsible to register all changes of the 
        item tree for recovery
      sql/item.h:
        resolve_const_item signagture changed
      sql/item_cmpfunc.h:
        Arguments of boolean functions are now recovered using the 
        centralized registry of THD.
      sql/sql_class.cc:
        It's crucial to add new items to the beginning of the recovery list,
        so that the recovery is performed in LIFO mode: otherwise if we 
        change one node of a tree twice, it will be recovered to some intermediate
        state.
      sql/sql_select.cc:
        change_cond_ref_to_const and propogate_cond_constants are now responsible
        to register all changes of the item tree for recovery.
        The recovery is done using the centralized THD registry of
        changed tree items.
      bcc6f615
  10. 08 Oct, 2004 2 commits
    • unknown's avatar
      args_copy and cleunup() removed from Item_sum · 29d87fee
      unknown authored
      registration changing ITEM_SUM arguments added
      
      
      sql/item.cc:
        cleunup for Item_result_field
      sql/item.h:
        cleunup for Item_result_field
      sql/item_sum.cc:
        args_copy and cleunup() removed from Item_sum
      sql/item_sum.h:
        args_copy and cleunup() removed from Item_sum
      sql/sql_select.cc:
        registration changing ITEM_SUM arguments
      29d87fee
    • unknown's avatar
      Deployment of centralized Item change registry, step 2: Item_ref · 9ba3c23e
      unknown authored
      doesn't need to have it's own recovery mechanism.
      
      
      sql/item.cc:
        Deployment of centralized Item change registry, step 2: Item_ref 
        doesn't need to have it's own recovery mechanism, so it was simplified.
      sql/item.h:
        Deployment of centralized Item change registry, step 2: Item_ref 
        doesn't need to have it's own recovery mechanism, so it was simplified.
      sql/item_cmpfunc.cc:
        - Item::split_sum_func now requires THD
        - use THD::register_item_tree_change
      sql/item_cmpfunc.h:
        - Item::split_sum_func now requires THD
      sql/item_func.cc:
        - Item::split_sum_func now requires THD
        - use THD::register_item_tree_change
      sql/item_func.h:
        - Item::split_sum_func now requires THD
      sql/item_row.cc:
        - Item::split_sum_func now requires THD
        - use THD::register_item_tree_change
      sql/item_row.h:
        - Item::split_sum_func now requires THD
      sql/item_strfunc.cc:
        - Item::split_sum_func now requires THD
        - use THD::register_item_tree_change to register changes in the item
          tree
      sql/item_strfunc.h:
        - Item::split_sum_func now requires THD
      sql/item_subselect.cc:
        - use updated Item_ref constructor
      sql/sql_base.cc:
        - Item::split_sum_func now requires THD
      sql/sql_select.cc:
        - Item::split_sum_func now requires THD
      sql/sql_yacc.yy:
        - use updated Item_ref constructor
      9ba3c23e
  11. 07 Oct, 2004 1 commit
    • unknown's avatar
      A fix for Bug#5748 "Prepared statement with BETWEEN and bigint values · 5eba8d3a
      unknown authored
      crashes mysqld": implementation for a generic item tree modifications
      registry. Every item tree modification which should be rolled back for
      subsequent execution of a prepared statement or stored procedure should
      be saved in the registry. All such modifications are rolled back at once
      during cleanup stage of PS.
      Actual fix for the bug just adds a call to register modifications to
      convert_constant_item.
      Post review fixes implemented.
      
      
      mysql-test/r/ps.result:
        A fix for bug#5748, test results fixed.
      mysql-test/t/ps.test:
        A test case for Bug#5748 "Prepared statement with BETWEEN and bigint 
        values crashes mysqld"
      sql/item.cc:
        Fix for Bug#5748 "Prepared statement with BETWEEN and bigint values
        crashes mysqld":
        First step in removing up item-specific cleanups: now all such
        tree modifications should be done using the genericm mechanism implemented
        in this changeset.
      sql/item.h:
        Fix for Bug#5748 "Prepared statement with BETWEEN and bigint values
        crashes mysqld": no need for an item-specific change record any more.
      sql/item_cmpfunc.cc:
        A fix for Bug#5748 "Prepared statement with BETWEEN and bigint 
        values crashes mysqld": register item tree transformation performed by
        convert_constant_item.
      sql/sql_class.cc:
        Implementation for item tree transformations registry.
      sql/sql_class.h:
        Declarations, necessary for the tree transformations registry.
      sql/sql_parse.cc:
        Assert that the item tree transformations registry is not used for 
        conventional execution.
      sql/sql_prepare.cc:
        Use of the item tree modifications registry in prepared statements:
        rollback all modifications in the end of statement prepare and execute.
        Also we now always set thd->current_arena to be able to determine that
        this is an execution of prepared statement inside the registry code.
      tests/client_test.c:
        A typo fixed.
      5eba8d3a
  12. 25 Sep, 2004 1 commit
  13. 16 Sep, 2004 1 commit
  14. 01 Sep, 2004 1 commit
  15. 31 Aug, 2004 1 commit
    • unknown's avatar
      after review patch · e6fbc582
      unknown authored
      mysql-test/r/negation_elimination.result:
        new tests of negation elimination
      mysql-test/t/negation_elimination.test:
        new tests of negation elimination
      sql/item.h:
        test of boolean functions added
      sql/item_cmpfunc.cc:
        NOT subtree is already checked, so wee need to return just argument
      sql/item_cmpfunc.h:
        test of boolean functions added
      sql/mysql_priv.h:
        'place' to detect WHERE clause
      sql/sql_parse.cc:
        function for creation negated expression
      sql/sql_select.cc:
        removed unused function
      sql/sql_select.h:
        removed unused function
      sql/sql_yacc.yy:
        'place' to detect WHERE clause
      e6fbc582
  16. 11 Aug, 2004 1 commit
  17. 28 Jun, 2004 1 commit
  18. 26 Jun, 2004 1 commit
  19. 25 Jun, 2004 1 commit
  20. 18 Jun, 2004 1 commit
    • unknown's avatar
      Fix for bug#4105 "Server crash on attempt to prepare a statement with · 26c53376
      unknown authored
      character set introducer": add new item type to be returned before from 
      Item_param until it's value is set.
      This way items like Item_bool_func2 and udf_handler won't treat this item
      as constant literal when statement is prepared.
      
      
      mysql-test/r/ps.result:
        Test results fixed (test case for bug #4105)
      mysql-test/t/ps.test:
        Followup to bug #4105: a test case.
      sql/item.cc:
        Fix for bug#4105 "Server crash on attempt to prepare a statement with 
        character set introducer": add new item type to be returned before from 
        Item_param until it's value is set.
      sql/item.h:
        Fix for bug#4105 "Server crash on attempt to prepare a statement with 
        character set introducer": add new item type to be returned before from 
        Item_param until it's value is set.
      26c53376
  21. 17 Jun, 2004 1 commit
    • unknown's avatar
      after review fix (BUG#4067) · 47e3e1f0
      unknown authored
      sql/field.cc:
        method getting maximum display length for fields
      sql/field.h:
        method getting maximum display length for fields
      sql/item.cc:
        code cleanup
        switch replaced with new method
      sql/item.h:
        method getting maximum display length for fields
      47e3e1f0
  22. 16 Jun, 2004 2 commits
  23. 08 Jun, 2004 1 commit
    • unknown's avatar
      Proposed fix for Bug#4026 "Microseconds part of TIME/DATETIME types · b9862a88
      unknown authored
      is broken (prepared statements)": fixed date handling in many places 
      of prepared statements code.
      
      
      libmysql/libmysql.c:
        Fix for Bug#4026:
        - now buffer_length is defined for any buffer type. Network buffer 
          preallocation cleaned up.
        - added constants for maximum buffer sizes necessary for MYSQL_TYPE_DATE,
          MYSQL_TYPE_TIME, MYSQL_TYPE_DATETIME types.
        - TIME/DATETIME packing/unpacking functions fixed 
        - now result set metadata is always updated from fields sent to COM_EXECUTE.
          This is necessary to make 'SELECT ?' queries work without conversions.
      sql/item.cc:
        - added implementatoin of Item_param::get_date
      sql/item.h:
        - added enum_field_types Item_param::param_type. First step for proper
          handling of placeholders.
        - added get_date() implementation to prevent date -> string -> date 
          conversions when MYSQL_TYPE_DATE/DATETIME parameter is used in temporal 
          context.
      sql/protocol.cc:
        Fix for Bug#4026:
        - PACKET_BUFFET_EXTRA_ALLOC -> PACKET_BUFFER_EXTRA_ALLOC.
          The define itself was moved to .cc as it's used only in protocol.cc
        - fixed Protocol_prep::store_time() call.
      sql/protocol.h:
        - PACKET_BUFFER_EXTRA_ALLOC moved to protocol.cc
      sql/sql_prepare.cc:
        Fix for Bug#4026:
        - MYSQL_TYPE_TIME/DATETIME handling fixed.
        - added initialization for Item_param::param_type in 
          setup_one_conversion_function
      tests/client_test.c:
        Test case for Bug#4026
      b9862a88
  24. 07 Jun, 2004 1 commit
    • unknown's avatar
      Post review fixes for "SQL Syntax for Prepared Statements". · 2f9a9e55
      unknown authored
      mysql-test/r/ps.result:
        Better error message
      mysys/my_error.c:
        Comments added
      sql/item.cc:
        Moved a chunk of code from sql_prepare.cc to Item_param::set_from_user_var
      sql/item.h:
        Moved a chunk of code from sql_prepare.cc to Item_param::set_from_user_var
      sql/item_func.cc:
        Code cleanup
      sql/mysql_priv.h:
        Code cleanup
      sql/sql_class.cc:
        Code cleanup
      sql/sql_parse.cc:
        use user_var_entry::val_str in PREPARE stmt FROM @var.
      sql/sql_prepare.cc:
        Post-review fixes and code cleanup.
      sql/sql_yacc.yy:
        Coding style fixes
      2f9a9e55
  25. 31 May, 2004 1 commit
    • unknown's avatar
      Fix for Bug#3796 "Prepared statement, select concat(<parameter>,<column>), wrong · 58b696b1
      unknown authored
      result": new Item_param member for use in val_str()
      
      
      sql/item.cc:
        Fix for Bug#3796:
        - return str_value_ptr from val_str to prevent modifications of parameter 
        value.
      sql/item.h:
        Fix for bug#3796:
        - Item::val_str() method semantics documented
        - new member of Item_param
      tests/client_test.c:
        Test case for bug #3796 added. A few compile-time warnings removed.
      58b696b1
  26. 24 May, 2004 1 commit
    • unknown's avatar
      Support for character set conversion in binary protocol: another go · eff961a9
      unknown authored
      after Monty's review.
      - Item_param was rewritten.
      - it turns out that we can't convert string data to character set of
        connection on the fly, because they first should be written to the binary
        log.
        To support efficient conversion we need to rewrite prepared statements
        binlogging code first.
      
      
      include/my_global.h:
        Macro swap(a, b, c) was renamed to resolve name conflict with
        String::swap() method.
      include/my_sys.h:
        Added declaration of escape_string_for_mysql()
      include/mysql_com.h:
        Removed and moved back: a macro which is visible to libmysql user but
        has sence only in prepared statement protocol implementation.
      isam/_search.c:
        swap -> swap_variables
      isam/test2.c:
        swap -> swap_variables
      libmysql/libmysql.c:
        - sub_escape_string moved to mysys/charset.c to be visible in sql/
        - few cleanups
      myisam/mi_test2.c:
        swap -> swap_variables
      mysys/charset.c:
        sub_escape_string was moved from libmysql.c to be able to use it in sql/
        code.
      mysys/my_chsize.c:
        rename: swap -> swap_variables
      mysys/my_compress.c:
        swap -> swap_variables
      mysys/my_handler.c:
        swap -> swap_variables
      sql/field.cc:
        Field::store_time refactored to use TIME_to_string function from time.cc
      sql/item.cc:
        New implementation of Item_param class:
        added support for character sets conversion.
      sql/item.h:
        Item_param:
        - 'state' member introduced instead of many boolean variables.
        - put ltime, int_value and real_value into union to save space.
        - remove unimplemented members
        - set_value renamed to set_str
      sql/item_timefunc.cc:
        Refactored to use functions from time.cc
      sql/lock.cc:
        rename: swap -> swap_variables
      sql/mysql_priv.h:
        - added declarations for TIME_to_ulonglong_*, TIME_to_string functions
        - const specifiers for make_date, make_time, make_datetime arguments
      sql/opt_range.cc:
        rename: swap -> swap_variables
      sql/protocol.cc:
        - added character set conversion support to binary protocol.
        - Protocol::convert changed to point at shared buffer in THD.
          This lets us use one convert buffer for binary and simple protocol.
          The same buffer is used for client->server conversions in prepared
          statements code.
        - string conversion code refactored to Protocol::store_string_aux function.
        - few more comments
      sql/protocol.h:
        - Protocol::convert now points at THD::convert_buffer: we want to share one
          buffer between all protocol implementations.
      sql/sql_class.cc:
        - implementation of THD::convert_string using THD::convert_buffer
          (conversion of strings allocated in the system heap).
      sql/sql_class.h:
        - THD::convert_buffer is shared between THD and network Protocols and
          used for character set conversion of strings.
        - new function to convert String object from one charset to another using
          THD::convert_buffer
      sql/sql_insert.cc:
        A little fix in a comment.
      sql/sql_parse.cc:
        Shrink convert buffer in the end of each statement.
      sql/sql_prepare.cc:
          Many changes:
        - static specifier for set_param_* family of functions.
        - FIELD_TYPE -> MYSQL_TYPE
        - added set_param_binary as handler for BLOB types.
        - added character set support
        - added support for param typecode in mysql_stmt_get_longdata
          (mysql_stmt_send_long_data handler)
        - changes in Item_param deployed
        - few cleanups
      sql/sql_select.cc:
        rename: swap -> swap_variables
      sql/sql_string.cc:
        - String::append rewritten to support character set conversion for
        single-byte encodings.
        - added String::swap method to efficiently exchange two string objects.
      sql/sql_string.h:
        Declraration for String::swap().
      sql/time.cc:
        - function TIME_to_string to convert TIME to String in default MySQL format
        - family of functions TIME_to_ulonglong_*
      tests/client_test.c:
        Test for support for character set conversions in prepared statements
        (binary and text data).
      eff961a9
  27. 21 May, 2004 1 commit
    • unknown's avatar
      WL#1622 "SQL Syntax for Prepared Statements": Post-review fixes (1 of 2) · cbb05d26
      unknown authored
      mysql-test/r/ps.result:
        Added tests for PREPARE stmt1 FROM @var syntax
      mysql-test/t/ps.test:
        Added tests for PREPARE stmt1 FROM @var syntax
      mysys/my_error.c:
        Added support for "%.*s" format
      sql/item.cc:
        Removed one redundant Item_param::set_value function
      sql/item.h:
        Removed one redundant Item_param::set_value function
      sql/mysqld.cc:
        Reformmated the code
      sql/share/czech/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/dutch/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/english/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/estonian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/french/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/german/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/greek/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/hungarian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/italian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/japanese/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/korean/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/norwegian-ny/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/norwegian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/polish/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/portuguese/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/romanian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/russian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/slovak/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/spanish/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/swedish/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/ukrainian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/sql_class.h:
        SQL Prepared statements now can't be used by binary protocol commands
      sql/sql_lex.h:
        Added support for PREPARE stmt1 FROM @var syntax.
      sql/sql_parse.cc:
        Added support for PREPARE stmt1 FROM @var syntax.
      sql/sql_prepare.cc:
        Code cleanup
      sql/sql_yacc.yy:
        Added support for PREPARE stmt1 FROM @var syntax.
      cbb05d26
  28. 06 May, 2004 1 commit
    • unknown's avatar
      Portability fixes · f3b3b2b1
      unknown authored
      Change strtoll -> my_strtoll10()
      Fixed bug in my_strntoul() and my_strntol() where we got different values on 32 and 64 bit systems (Bug #3472)
      
      
      configure.in:
        Fixed problem on IRIX64 (One can't have AC_MSG_RESULT on same row as AC_DEFINE
      extra/my_print_defaults.c:
        Fixed wrong definition for 'verbose'
      include/my_global.h:
        Portability fix (IRIX64)
      libmysql/client_settings.h:
        Remove compiler warnings
      libmysql/libmysql.c:
        Remove compiler warnings
      mysql-test/r/func_str.result:
        Updated results
      mysql-test/r/key_cache.result:
        Updated results to not depend on key_blocks_unused
      mysql-test/t/func_str.test:
        More test of long overflow
      mysql-test/t/key_cache.test:
        Updated results to not depend on key_blocks_unused
      sql/item.cc:
        Portability fix (don't use strtoll())
      sql/item.h:
        Portability fix (don't use strtoll())
      sql/item_sum.h:
        Portability fix (don't use strtoll())
      sql/item_timefunc.cc:
        Fixed compiler warning
      strings/ctype-simple.c:
        Fixed bug in my_strntoul() and my_strntol() where we got different values on 32 and 64 bit systems
      strings/ctype-ucs2.c:
        Fixed bug in my_strntoul() and my_strntol() where we got different values on 32 and 64 bit systems
      f3b3b2b1
  29. 05 May, 2004 1 commit
  30. 04 May, 2004 1 commit
    • unknown's avatar
      Fix for remaining issues described in Bug #1664 · 5b19a9d0
      unknown authored
      "mysql_send_long_data() API call is completely broken".
      
      Now we are resetting some members (long_data_supplied/null_value...) of Item_param to its 
      initial state after each execution of prepared statement. We also manipulating 
      Item_param::maybe_null/null_value only via Item_param::set_* setters which makes code a bit 
      more robust.
      
      
      sql/item.cc:
        Now we are assuming that Item_param may be NULL until we know this fact exactly.
        Added non-empty implementation of Item_param::reset() method which should be used
        for restoring Item_param state after each statment execution. (We need to clear 
        long_data_supplied flag, we also clear some other Item_param members here since it
        makes code simpler.)
      sql/item.h:
        Now Item_param::reset() method really does something.
      sql/sql_prepare.cc:
        Now we are calling Item_param::reset() for each parameter after execution for resetting Item_param
        to initial state. So we no longer don't need Prepared_statement::long_data_flag. We also 
        set Item_param::null_value/maybe_null value in Item_param::set_* and reset() methods 
        instead of doing it explicitly in insert_params_* functions (this by the way lowers 
        probability that we will forget to update one of such functions).
      tests/client_test.c:
        Added test for Bug#1664 "mysql_send_long_data() API call is broken".
      5b19a9d0
  31. 28 Apr, 2004 1 commit
    • unknown's avatar
      Fixed stack overrun with some INSERT ... SELECT ... GROUP BY queries (Bug #3265) · 747141ed
      unknown authored
      Ensure that raid_chunks is not set to higher than 255 as this could cause problems with DROP DATABASE. (Bug #3182)
      
      
      mysql-test/r/raid.result:
        Test of raid_chunks > 255
      mysql-test/t/raid.test:
        Test of raid_chunks > 255
      sql/item.cc:
        Fixed wrong usage of str_value in Item::save_in_field
        This could caused a stack overrun with some very special INSERT ... SELECT ... GROUP BY queries where the GROUP BY value was an expression that generated a NULL value. (Bug #3265)
        The Item_copy_string::save_in_field() function is from 4.1 and helps optimized this case a bit
      sql/item.h:
        Fixed wrong usage of str_value in Item_copy_string::save_in_field
      sql/sql_insert.cc:
        More debug information
      sql/table.cc:
        Ensure that raid_chunks is not set to higher than 255 as this could cause problems with DROP DATABASE.
        Another problem with values > 255 is that in the .frm file we store the chunks value in one byte.
        (Bug #3182)
      747141ed
  32. 11 Apr, 2004 1 commit
  33. 05 Apr, 2004 1 commit
    • unknown's avatar
      Many files: · 9470bf84
      unknown authored
        SQL Syntax for Prepared Statements (WL#1622)
      ps.test, ps.result:
        new file
      
      
      sql/item.cc:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/item.h:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/lex.h:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/mysql_priv.h:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/mysqld.cc:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/sql_class.cc:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/sql_class.h:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/sql_lex.h:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/sql_parse.cc:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/sql_prepare.cc:
        SQL Syntax for Prepared Statements (WL#1622)
      sql/sql_yacc.yy:
        SQL Syntax for Prepared Statements (WL#1622)
      9470bf84
  34. 31 Mar, 2004 1 commit
    • unknown's avatar
      Fix for Bug #3307 "FLUSH TABLES sometimes breaks prepared statement · ca25de03
      unknown authored
      table resolution".
      Added members to Item_ident for storing original db, table and field
      names since those that set later from Field have shorter life-time 
      than required by prep. stmt. So we need to restore original names in 
      Item_ident::cleanup(). Also now using special construnctor for creation
      of Item_field from Field object that ensures that table and field name 
      have big enough life-time.
      
      "Fix" for bug #2050 "10 to 1 performance drop with server 4.1.1"
      Clean ups in implementation of caching of field number in table.
      Added caching of table in which field is found in find_field_in_tables(). 
      
      
      sql/item.cc:
        Added members to Item_ident for storing original db, table and field
        names since those that set later from Field have shorter life-time 
        than required by prep. stmt. So we need to restore original names in 
        Item_ident::cleanup().
        Added Item_ident::cached_table for caching table there we found 
        our field.
        Added special constructor for creation of Item_field from Field object
        that ensures that table and field name have big enough life-time.
      sql/item.h:
        Added members to Item_ident for storing original db, table and field
        names since those that set later from Field have shorter life-time 
        than required by prep. stmt. So we need to restore original names in 
        Item_ident::cleanup().
        Changed type of Item_ident::cached_field_index from int to uint
        (and so NO_CACHED_FIELD_INDEX is UINT_MAX now) because we want to
        save one comparison in find_field_in_table().
        Added Item_ident::cached_table for caching table there we found 
        our field.
        Added special constructor for creation of Item_field from Field object
        that ensures that table and field name have big enough life-time.
      sql/mysql_priv.h:
        Changed type of cached_field_index_ptr from int* to uint*
        (and so NO_CACHED_FIELD_INDEX is UINT_MAX now) because we want to
        save one comparison in find_field_in_table().
      sql/sql_acl.cc:
        Changed type of find_field_in_table() paremeter to make it 
        faster.
      sql/sql_base.cc:
        find_field_in_table(): small optimization and soime clean ups in 
         caching of field index.
        find_field_in_tables(): added aggresive caching of table in which
         field is found in Item_ident::cached_table.
        insert_fields():
         using special construnctor for creation of Item_field from Field 
         object that ensures that table and field name have big enough life-time.
      ca25de03
  35. 28 Mar, 2004 1 commit
    • unknown's avatar
      "Fix" for BUG #2050 "10 to 1 performance drop with server 4.1.1". · 12dd5008
      unknown authored
      Actually it is not a bug but right behavior observed as pefomance 
      degradation after we have forced Item_field::fix_fields() to 
      re-execute each time when we are executing prep stmt.
      
      This patch implements small optimization which heals this bad 
      behavior. We are caching field position in TABLE::field array in
      Item's member and are using this position for speeding up field
      lookups in fix_fields() in case of its re-execution.
      
      
      sql/item.cc:
        Added cached_field_index member to Item_ident for caching field
        position in TABLE::field array for quicker field lookup in case 
        fix_fields() is executed twice.
      sql/item.h:
        Added cached_field_index member to Item_ident for caching field
        position in TABLE::field array for quicker field lookup in case 
        fix_fields() is executed twice.
      sql/mysql_priv.h:
        Now find_field_in_table has one more in-out parameter which is used
        for caching field index in TABLE::field array stored for quicker
        field look up.
      sql/sql_acl.cc:
        Now find_field_in_table has one more in-out parameter which is used
        for caching field index in TABLE::field array stored for quicker
        field look up.
      sql/sql_base.cc:
        Optimization: Now when we are looking up Field by its name we are 
        caching its position in TABLE::field array in Item_ident::cached_field_index,
        so when we will call fix_fields() second time for this item (e.g.
        when we are re-executing prep statement) we can reuse this index
        to speed up this lookup.
      sql/table.cc:
        Now we storing in TABLE::name_hash pointers to elements of 
        TABLE::field array, because this allows easily retrieve index
        of field in this array when it is looked up by its name.
      sql/table.h:
        Added comment claryfying what we store in TABLE::name_hash.
      BitKeeper/etc/logging_ok:
        Logging to logging@openlogging.org accepted
      12dd5008
  36. 25 Mar, 2004 1 commit
    • unknown's avatar
      Cleanups & safety fixes · cf5e9e65
      unknown authored
      include/mysql.h:
        cleanup of load data infile patch
      libmysql/libmysql.c:
        cleanup of load data infile patch
      myisam/mi_search.c:
        Added missing assert.h
      mysql-test/r/func_time.result:
        Make test more secure
      mysql-test/t/func_time.test:
        Make test more secure
      sql/item.cc:
        restore to use str_value in item::save_in_field
      sql/item.h:
        Simple cleanup
      sql/item_cmpfunc.cc:
        Safety fix
      sql/item_cmpfunc.h:
        Simple optimization
      sql/item_func.cc:
        Updated comment
      sql/sql_base.cc:
        Simple optimization
      sql/sql_select.cc:
        Simple optimization
      sql/sql_union.cc:
        safey fixes
      cf5e9e65