1. 31 May, 2006 1 commit
    • unknown's avatar
      BUG#18198: Many strange partition functions were allowed, now only strictly... · e56826ed
      unknown authored
      BUG#18198: Many strange partition functions were allowed, now only strictly allowed functions are ok
      
      
      mysql-test/r/partition_error.result:
        New test cases
      mysql-test/t/partition_error.test:
        New test cases
      sql/item.h:
        Added method check_partition_func_processor for check if item tree is valid
      sql/item_cmpfunc.h:
        Added method check_partition_func_processor for check if item tree is valid
      sql/item_func.h:
        Added method check_partition_func_processor for check if item tree is valid
      sql/item_strfunc.h:
        Added method check_partition_func_processor for check if item tree is valid
      sql/item_timefunc.h:
        Added method check_partition_func_processor for check if item tree is valid
      sql/item_xmlfunc.h:
        Added method check_partition_func_processor for check if item tree is valid
      e56826ed
  2. 17 May, 2006 1 commit
    • unknown's avatar
      Fixed bug#19077: A nested materialized derived table is used before being populated. · 5e38e2ce
      unknown authored
      The convert_constant_item() function converts constant items to ints on
      prepare phase to optimize execution speed. In this case it tries to evaluate
      subselect which contains a derived table and is contained in a derived table. 
      All derived tables are filled only after all derived tables are prepared.
      So evaluation of subselect with derived table at the prepare phase will
      return a wrong result.
      
      A new flag with_subselect is added to the Item class. It indicates that
      expression which this item represents is a subselect or contains a subselect.
      It is set to 0 by default. It is set to 1 in the Item_subselect constructor
      for subselects.
      For Item_func and Item_cond derived classes it is set after fixing any argument
      in Item_func::fix_fields() and Item_cond::fix_fields accordingly.
      The convert_constant_item() function now doesn't convert a constant item
      if the with_subselect flag set in it. 
      
      
      mysql-test/t/view.test:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/t/subselect.test:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/r/view.result:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/r/subselect.result:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      sql/item_subselect.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        The Item_subselect class constructor sets new with_subselect flag to 1.
      sql/item_func.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        
        The Item_func::fix_fields() sets new with_subselect flag from with_subselect flags of its arguments.
      sql/item_cmpfunc.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        The convert_constant_item() function now doesn't convert a constant item
        with the with_subselect flag set.
        The Item_cond::fix_fields() sets new with_subselect flag from with_subselect flags of its arguments.
      sql/item.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        Set new with_subselect flag to default value - 0 in the Item constructor.
      sql/item.h:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        A new flag with_subselect is added to the Item class. It indicates that
        expression which this item represents is a subselect or contains a subselect.
        It is set to 0 by default.
      5e38e2ce
  3. 15 May, 2006 2 commits
  4. 12 May, 2006 1 commit
    • unknown's avatar
      Bug#14635: Accept NEW.x as INOUT parameters to stored procedures · eb567121
      unknown authored
      from within triggers
      
      Add support for passing NEW.x as INOUT and OUT parameters to stored
      procedures.  Passing NEW.x as INOUT parameter requires SELECT and
      UPDATE privileges on that column, and passing it as OUT parameter
      requires only UPDATE privilege.
      
      
      mysql-test/r/sp-error.result:
        Update the result for new message.
      mysql-test/r/trigger-grant.result:
        Add result for bug#14635.
      mysql-test/r/trigger.result:
        Add result for bug#14635.
      mysql-test/t/trigger-grant.test:
        Add test case for bug#14635.
      mysql-test/t/trigger.test:
        Add test case for bug#14635.
      sql/item.cc:
        Add implementations of set_value() and set_required_privilege() methods
        of Settable_routine_parameter interface.
        
        Use Item_trigger_field::want_privilege instead of
        Item_trigger_field::access_type.
        
        Reset privileges on Item_trigger_field::cleanup().
      sql/item.h:
        Add interface class Settable_routine_parameter and interface query
        method to Item class.  Item_splocal and Item_trigger_field implement
        this interface.
        
        For Item_trigger_field:
         - add read_only attribute and is_read_only() method.
         - remove access_type and add original_privilege and want_privilege
           instead.
         - add set_value() method.
         - add reset_privilege() method.
      sql/item_func.cc:
        Add implementations of set_value() method of Settable_routine_parameter
        interface.
      sql/item_func.h:
        Item_func_get_user_var implements Settable_routine_parameter interface.
      sql/share/errmsg.txt:
        Update english ER_SP_NOT_VAR_ARG message.
      sql/sp_head.cc:
        Use Settable_routine_parameter interface for parameter update.
      sql/sql_yacc.yy:
        Set read_only and want_privilege members in Item_trigger_field
        appropriately.  For NEW.x trigger variable used in left-hand-side
        of SET statement the latter is set to UPDATE_ACL, otherwise it is
        set to SELECT_ACL (but see Item_trigger_field::set_required_privilege(),
        where it may be updated to different value).
      eb567121
  5. 28 Apr, 2006 1 commit
    • unknown's avatar
      BUG#18492: mysqld reports ER_ILLEGAL_REFERENCE in --ps-protocol · 0e0d0d9d
      unknown authored
      In the code that converts IN predicates to EXISTS predicates it is changing
      the select list elements to constant 1. Example :
      SELECT ... FROM ...  WHERE a IN (SELECT c FROM ...)
      is transformed to :
      SELECT ... FROM ... WHERE EXISTS (SELECT 1 FROM ...  HAVING a = c)
      However there can be no FROM clause in the IN subquery and it may not be
      a simple select : SELECT ... FROM ... WHERE a IN (SELECT f(..) AS
      c UNION SELECT ...) This query is transformed to : SELECT ... FROM ...
      WHERE EXISTS (SELECT 1 FROM (SELECT f(..) AS c UNION SELECT ...)
      x HAVING a = c) In the above query c in the HAVING clause is made to be
      an Item_null_helper (a subclass of Item_ref) pointing to the real
      Item_field (which is not referenced anywhere else in the query anymore).
      This is done because Item_ref_null_helper collects information whether
      there are NULL values in the result.  This is OK for directly executed
      statements, because the Item_field pointed by the Item_null_helper is
      already fixed when the transformation is done.  But when executed as
      a prepared statement all the Item instances are "un-fixed" before the
      recompilation of the prepared statement. So when the Item_null_helper
      gets fixed it discovers that the Item_field it points to is not fixed
      and issues an error.  The remedy is to keep the original select list
      references when there are no tables in the FROM clause. So the above
      becomes : SELECT ... FROM ...  WHERE EXISTS (SELECT c FROM (SELECT f(..)
      AS c UNION SELECT ...) x HAVING a = c) In this way c is referenced
      directly in the select list as well as by reference in the HAVING
      clause. So it gets correctly fixed even with prepared statements.  And
      since the Item_null_helper subclass of Item_ref_null_helper is not used
      anywhere else it's taken out.
      
      
      mysql-test/r/ps_11bugs.result:
        Test case for the bug
      mysql-test/r/subselect.result:
        Explain updated because of the tranformation
      mysql-test/t/ps_11bugs.test:
        Testcase for the bug
      sql/item.cc:
        Taking out Item_null_helper as it's no longer needed
      sql/item.h:
        Taking out Item_null_helper as it's no longer needed
      sql/item_subselect.cc:
        The described change to the IN->EXISTS transformation
      0e0d0d9d
  6. 25 Apr, 2006 1 commit
    • unknown's avatar
      BUG#15872: Don't run the range analyzer on "t1.keypart NOT IN (const1, ..., )", as that consumes · ccf8af40
      unknown authored
      too much memory. Instead, either create the equvalent SEL_TREE manually, or create only two ranges that
      strictly include the area to scan
      (Note: just to re-iterate: increasing NOT_IN_IGNORE_THRESHOLD will make optimization run slower for big 
      IN-lists, but the server will not run out of memory. O(N^2) memory use has been eliminated)
      
      
      mysql-test/r/func_in.result:
        Testcase for BUG#15872
      mysql-test/t/func_in.test:
        Testcase for BUG#15872
      sql/item.cc:
        BUG#15872: Added Item_decimal::set_decimal_value()
      sql/item.h:
        UG#15872: Added Item_decimal::set_decimal_value()
      sql/item_cmpfunc.h:
        BUG#15872: Added in_vector::create_item(), in_vector::value_to_item() and their implementations in concrete
        classes.
      sql/opt_range.cc:
        BUG#15872: Don't run the range analyzer on "t1.keypart NOT IN (const1, ..., )", as that 
        consumes too much memory. Instead, either 
         A) create the equivalent SEL_TREE manually, making use of the fact that item_not_in->array
            has an ordered IN-list, or
         B) create only two ranges: (-inf|NULL) < X < min_value_from_in_list,  max_value_from_in_list < X
        (Choose #B if the IN-list has > 10K elements)
      ccf8af40
  7. 12 Apr, 2006 1 commit
    • unknown's avatar
      Bug#16461: connection_id() does not work properly inside trigger · 489ea1be
      unknown authored
      CONNECTION_ID() was implemented as a constant Item, i.e. an instance of
      Item_static_int_func class holding value computed at creation time.
      Since Items are created on parsing, and trigger statements are parsed
      on table open, the first connection to open a particular table would
      effectively set its own CONNECTION_ID() inside trigger statements for
      that table.
      
      Re-implement CONNECTION_ID() as a class derived from Item_int_func, and
      compute connection_id on every call to fix_fields().
      
      
      mysql-test/r/trigger.result:
        Add result for bug#16461.
      mysql-test/t/trigger.test:
        Add test case for bug#16461.
      sql/item.cc:
        Remove now unused class Item_static_int_func.
      sql/item.h:
        Remove now unused class Item_static_int_func.
      sql/item_create.cc:
        Use new implementation of CONNECTION_ID().
      sql/item_func.cc:
        Re-implement CONNECTION_ID() as Item_func_connection_id
        (was Item_static_int_func).  Set max_length to 10, as it was before.
        Compute connection_id dynamically on every call to fix_fields().
      sql/item_func.h:
        Re-implement CONNECTION_ID() as Item_func_connection_id
        (was Item_static_int_func).
      489ea1be
  8. 08 Apr, 2006 1 commit
    • unknown's avatar
      BUG#18198: Errors due to too much allowed in partition functions · 6e62a9f2
      unknown authored
      Added functions to enable/disable allowed/disallowed partition functions
      
      
      sql/item.h:
        Added functions to enable/disable allowed/disallowed partition functions
      sql/item_cmpfunc.h:
        Added functions to enable/disable allowed/disallowed partition functions
      sql/item_func.h:
        Added functions to enable/disable allowed/disallowed partition functions
      sql/item_strfunc.h:
        Added functions to enable/disable allowed/disallowed partition functions
      sql/item_timefunc.h:
        Added functions to enable/disable allowed/disallowed partition functions
      sql/item_xmlfunc.h:
        Added functions to enable/disable allowed/disallowed partition functions
      sql/partition_info.cc:
        Added functions to enable/disable allowed/disallowed partition functions
      sql/share/errmsg.txt:
        Added new error message
      6e62a9f2
  9. 05 Apr, 2006 1 commit
    • unknown's avatar
      BUG#18198: Too much expressiveness in partition functions allowed · 279b8721
      unknown authored
      First step
      
      
      sql/item.h:
        Add function to check for partition function whether allowed or not.
        In this first step allow only a field on its own.
        Further steps will add a lot more possibilities.
      sql/partition_info.cc:
        Add a check whether the partition function is allowed by walking the
        partition function expression.
      sql/share/errmsg.txt:
        Add a new error code for partition function not allowed
      279b8721
  10. 31 Mar, 2006 1 commit
    • unknown's avatar
      Fix for BUG#16710. · bb839d3a
      unknown authored
      The bug was due to a missed case in the detection of whether an index
      can be used for loose scan. More precisely, the range optimizer chose
      to use loose index scan for queries for which the condition(s) over
      an index key part could not be pushed to the index together with the
      loose scan.
      
      As a result, loose index scan was selecting the first row in the
      index with a given GROUP BY prefix, and was applying the WHERE
      clause after that, while it should have inspected all rows with
      the given prefix, and apply the WHERE clause to all of them.
      
      The fix detects and skips such cases.
      
      
      mysql-test/r/group_min_max.result:
        Added test for BUG#16710.
      mysql-test/t/group_min_max.test:
        Added test for BUG#16710.
      sql/item.cc:
        Added new method [Item | Item_field]::find_item_in_field_list_processor.
      sql/item.h:
        Added new method [Item | Item_field]::find_item_in_field_list_processor.
      sql/opt_range.cc:
        Handle the case when there is no MIN/MAX aggregate function, and a
        keypart of the index being considered, that is after the GROUP BY
        prefix, is used in the WHERE clause and the condition where it is
        used cannot be pushed to the index.
        If this is the case, we rule out this index.
      bb839d3a
  11. 02 Mar, 2006 1 commit
    • unknown's avatar
      Fixed BUG#17476: Stored procedure not returning data when it is called first · d25f1055
      unknown authored
                       time per connection
        Removed const_string() method from Item_string (it was only used in one
        place, in a bad way). Defer possible SP variable, and access data directly
        instead, in date_format item.
      
      
      mysql-test/r/sp.result:
        Updated results for new test (BUG#17476).
      mysql-test/t/sp.test:
        New test case (BUG#17476)
      sql/item.h:
        Removed const_string() from Item_string.
        It was only used in one place, and we can just use str_value in Item directly.
      sql/item_timefunc.cc:
        Must defer a (possible) local SP variable to use max_length and str_value
        in Item_func_date_format::fix_length_and_dec(), and refer to str_value
        directly without the const_string() method (now removed); the cast didn't
        work in all cases anyway.
      d25f1055
  12. 01 Mar, 2006 1 commit
    • unknown's avatar
      bug #9088 (bigint WHERE fails) · f0c667ba
      unknown authored
      mysql-test/r/bigint.result:
        test result
      mysql-test/t/bigint.test:
        testcase
      sql/item.h:
        unsigned_arg is a separate parameter now
      sql/item_cmpfunc.cc:
        we can get unsigned field from the signed Item - from string
        like '1234'
      f0c667ba
  13. 25 Feb, 2006 1 commit
    • unknown's avatar
      Fixed compiler warnings from gcc 4.0.2: · 59ebf42d
      unknown authored
      - Added empty constructors and virtual destructors to many classes and structs
      - Removed some usage of the offsetof() macro to instead use C++ class pointers
      
      
      configure.in:
        Added comment
      ndb/include/ndbapi/NdbDictionary.hpp:
        Fixed compiler warnings from gcc 4.0.2
      sql/field.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/handler.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/item.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/item_cmpfunc.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/log_event.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/mysql_priv.h:
        Fixed compiler warnings from gcc 4.0.2
        For find_table_in_list I fixed it to use proper C++ class pointers instead of C style pointers
      sql/opt_range.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/parse_file.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sp_rcontext.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/spatial.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_base.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_cache.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_class.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_parse.cc:
        Fixed compiler warnings from gcc 4.0.2
        (Not pretty, but seams to work...)
      sql/sql_select.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/sql_update.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/table.h:
        Fixed compiler warnings from gcc 4.0.2
      sql/tztime.cc:
        Fixed compiler warnings from gcc 4.0.2
      sql/tztime.h:
        Fixed compiler warnings from gcc 4.0.2
      59ebf42d
  14. 15 Feb, 2006 1 commit
    • unknown's avatar
      Fix bug #15706 find_field_in_tables() returns field from outer select · 9f1a3d10
      unknown authored
      If item->cached_table is set, find_field_in_tables() returns found field
      even if it doesn't belong to current select. Because Item_field::fix_fields
      doesn't expect such behaviour, reported bug occurs.
      
      Item_field::fix_fields() was modifed to detect when find_field_in_tables() 
      can return field from outer select and process such fields accordingly.
      In order to ease this code which was searching and processing outed fields was
      moved into separate function called Item_field::fix_outer_field().
      
      
      sql/item_subselect.h:
        Fixed bug #15706: find_field_in_tables() returns field from outer select
        Item_field::fix_outer_field() was marked as friend to Item_subselect class.
      sql/item.h:
        Fixed bug #15706: find_field_in_tables() returns field from outer select
        fix_outer_field() function is added to the Item_field class.
      sql/item.cc:
        Fixed bug #15706: find_field_in_tables() returns field from outer select
        
        Item_ref::fix_fields() and Item_field::fix_fields() were modifed to detect when
        find_field_in_tables() can return field from outer select and process such
        fields accordingly.
        In order to ease this, code Item_field::fix_fields() which was searching and
        processing outer fields was moved into separate function called
        Item_field::fix_outer_field().
        To the Item_field::fix_field() added a loop for finding context for found field.
      mysql-test/t/disabled.def:
        Fixed bug #15706: find_field_in_tables() returns field from outer select
        Enable subselect test
      9f1a3d10
  15. 24 Jan, 2006 1 commit
    • unknown's avatar
      Fix for the following bugs: · ccdcebe7
      unknown authored
        - BUG#15166: Wrong update permissions required to execute triggers
        - BUG#15196: Wrong select permission required to execute triggers
      
      The idea of the fix is to check necessary privileges
      in Item_trigger_field::fix_fields(), instead of having "special variables"
      technique. To achieve this, we should pass to an Item_trigger_field instance
      a flag, which will indicate the usage/access type of this trigger variable.
      
      
      mysql-test/r/trigger-grant.result:
        Update the result file.
      mysql-test/t/trigger-grant.test:
        Add test cases for BUG#15166 and BUG#15196
      sql/item.cc:
        Item_trigger_field: check appropriate (SELECT/UPDATE) privilege in fix_fields().
      sql/item.h:
        Add a flag to specify access type for trigger field.
      sql/sql_trigger.cc:
        "Special variable" technique of checking privileges for NEW/OLD variables
        was replaced by checking table- and column-level privileges in
        Item_trigger_field::fix_fields().
      sql/sql_trigger.h:
        "Special variable" technique of checking privileges for NEW/OLD variables
        was replaced by checking table- and column-level privileges in
        Item_trigger_field::fix_fields().
      sql/sql_yacc.yy:
        Specify access type for trigger fields.
      ccdcebe7
  16. 19 Jan, 2006 1 commit
    • unknown's avatar
      Fix the tree: plugin-related changes, necessary for · 802bcd93
      unknown authored
      CSV storage engine to be statically compiled.
      Derived from antony's patch.
      
      
      config/ac-macros/storage.m4:
        don't add objects to the object list if
        we don't have them
      configure.in:
        compile CSV statically
      sql/ha_myisam.cc:
        fix prototype to get rid of THD
      sql/ha_myisam.h:
        fix prototype to get rid of THD
      sql/handler.cc:
        new function for plugins
      sql/handler.h:
        fix prototype to get rid of THD
        declare functions used by plugins
      sql/item.h:
        Don't include all the types and files when not building mysqld
      sql/lock.cc:
        don's assume that handler knows about THD
      sql/mysql_priv.h:
        Don't include all the types and files when not building mysqld
        declare new plugin functions
      sql/sql_class.cc:
        New plugin functions
      sql/sql_class.h:
        Don't include all the types and files when not building mysqld
      sql/sql_lex.h:
        Don't include all the types and files when not building mysqld
      storage/csv/Makefile.am:
        compile CSV into a static lib to be
        linked into mysqld
      storage/csv/ha_tina.cc:
        fix ha_tina to be able to build it static
      storage/csv/ha_tina.h:
        fix prototype to get rid of THD
      802bcd93
  17. 05 Jan, 2006 1 commit
    • unknown's avatar
      Review fixes of new pushed code · 43886f1d
      unknown authored
      - Fixed tests
      - Optimized new code
      - Fixed some unlikely core dumps
      - Better bug fixes for:
        - #14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
        - #14850 (ERROR 1062 when a quering a view using a Group By on a column that can be null
      
      
      mysql-test/r/create.result:
        Update results after removing wrong warnings for CREATE ... SELECT
        New tests
      mysql-test/r/handler.result:
        Drop used tables
      mysql-test/r/kill.result:
        Make test portable
      mysql-test/r/mysqlshow.result:
        Drop tables used by previous test
      mysql-test/r/trigger.result:
        Reuse old procedure name
      mysql-test/r/view.result:
        Extra tests
      mysql-test/t/create.test:
        New tests to test fix of removing wrong warnings for CREATE ... SELECT
      mysql-test/t/disabled.def:
        Enable 'kill' test (should now be portable)
      mysql-test/t/handler.test:
        Drop used tables
      mysql-test/t/kill.test:
        Make test portable even if kill doesn't work at once
      mysql-test/t/mysqlshow.test:
        Drop tables used by previous test
      mysql-test/t/trigger.test:
        Reuse old procedure name
      mysql-test/t/view.test:
        Extra tests
      sql/field.cc:
        Removed compiler warning
      sql/ha_federated.cc:
        my_snprintf -> strmake()
        (Simple optimization)
      sql/ha_ndbcluster.cc:
        Indentation cleanups and trival optimization
      sql/item.cc:
        Moved save_org_in_field() to item.cc to make it easier to test
        Remove setting of null_value as this is not needed
      sql/item.h:
        Moved save_org_in_field() to item.cc to make it easier to test
      sql/log_event.cc:
        Remove inline of slave_load_file_stem()
        Added 'extension' parameter to slave_load_file_stem() to get smaller code
        Removed not critical (or needed) DBUG_ASSERT()'s
        Cleaned up usage of slave_load_file_stem() to not depend on constant string lengths
        Indentation fixes
      sql/opt_range.cc:
        Moved code from declaration to function body
        (To make it more readable)
      sql/parse_file.cc:
        Fixed DBUG_PRINT
      sql/sp.cc:
        Simple cleanups
        - Removed not needed {} level
        - Ensure saved variables starts with old_
      sql/sp_head.cc:
        Indentation fixes
        Remove core dump when using --debug when m_next_cached_sp == 0
        Fixed compiler warnings
        Trivial optimizations
      sql/sp_head.h:
        Changed argument to set_definer() to const
        Added THD argument to recursion_level_error() to avoid call to current_thd
      sql/sql_acl.cc:
        Removed not needed test (first_not_own_table is the guard)
      sql/sql_base.cc:
        Removed extra empty line
      sql/sql_handler.cc:
        Don't test table version in mysql_ha_read() as this is already tested in lock_tables()
        Moved call to insert_fields to be after lock_table() to guard aganst reopen of tables
        (Better fix for Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash)
      sql/sql_insert.cc:
        Mark fields that are set in CREATE ... SELECT as used
        (Removed wrong warnings about field not having a default value)
      sql/sql_parse.cc:
        Removed not needed test of 'tables' (first_not_own_table is the guard)
        Simplify code
      sql/sql_select.cc:
        Use group->field to check if value is null instead of item called by 'save_org_in_field'
        This is a better bug fix for #14850 (ERROR 1062 when a quering a view using a Group By on a column that can be null)
      sql/sql_trigger.cc:
        Move sql_modes_parameters outside of function
        Indentation fixes
        Fixed compiler warning
        Ensure that thd->lex->query_tables_own_last is set properly before calling check_table_access()
        (This allows us to remove the extra test in check_grant() and check_table_access())
      43886f1d
  18. 27 Dec, 2005 1 commit
    • unknown's avatar
      WL#2985 "Partition pruning", postreview fixes: Small code fixes and better comments · f42f1ae2
      unknown authored
      mysql-test/r/partition.result:
        Added testcase for BUG#15819
      mysql-test/t/partition.test:
        Added testcase for BUG#15819
      sql/item.h:
        WL#2985 "Partition pruning", postreview fixes: better comments
      sql/item_timefunc.cc:
        WL#2985 "Partition pruning", postreview fixes: better comments
      sql/opt_range.cc:
        WL#2985 "Partition pruning", postreview fixes: 
        - better comments, local function renames
        - Made SEL_ARG::is_singlepoint() to correctly handle NULL edge values.
        - fix uninitialized variable access: s/res |=/res =/
      sql/sql_class.cc:
        WL#2985 "Partition pruning", postreview fixes: 
        Set correct max. length of "partitions" column in EXPLAIN output
      sql/sql_lex.h:
        WL#2985 "Partition pruning", postreview fixes: better comments
      sql/sql_partition.cc:
        WL#2985 "Partition pruning", postreview fixes: better comments
      f42f1ae2
  19. 22 Dec, 2005 1 commit
    • unknown's avatar
      WL#2985 "Partition Pruning" · c4ef5317
      unknown authored
      sql/ha_ndbcluster.cc:
        WL#2985 "Partition Pruning": added part_info->used_partitions initialization
      sql/ha_partition.cc:
        WL#2985 "Partition Pruning": added part_info->used_partitions initialization
      sql/handler.h:
        WL#2985 "Partition Pruning": 
        Added function prototypes
        in partition_info:
         - Added 'used_partitions' bitmap
         - Added comments
      sql/item.h:
        WL#2985 "Partition Pruning": 
        - added enum monotonicity_info
        - added virtual Item::get_monotonicity_info()
      sql/item_timefunc.cc:
        WL#2985 "Partition Pruning": 
        - added Item_func_to_days::get_monotonicity_info()
        - added Item_func_year::get_monotonicity_info()
      sql/item_timefunc.h:
        WL#2985 "Partition Pruning": 
        - added Item_func_to_days::get_monotonicity_info()
        - added Item_func_year::get_monotonicity_info()
      sql/opt_range.cc:
        WL#2985 "Partition Pruning":
        - Split out PARAM structure into PARAM and RANGE_OPT_PARAM part.
        - Added partition pruning module code.
      sql/opt_range.h:
        WL#2985 "Partition Pruning": 
        Added prune_partitions() function declaration. This is the entry point for partition pruning 
        module
      sql/sql_class.cc:
        WL#2985 "Partition Pruning": added support for "EXPLAIN PARTITIONS SELECT ..."
      sql/sql_lex.h:
        WL#2985 "Partition Pruning": added support for "EXPLAIN PARTITIONS SELECT ..."
      sql/sql_partition.cc:
        WL#2985 "Partition Pruning": 
         - Added get_list_array_idx_for_endpoint and get_range_... functions to support partition 
           pruning on "partition_field < const"-like intervals.
         - Added partition_info::used_partitions bitmap.
         - Added make_used_partitions_str function
         - Fixed BUG#15819
      sql/sql_select.cc:
        WL#2985 "Partition Pruning": 
        - Added prune_partitions() invocation right before the range analysis
        - Added code to handle return value from prune_partitions()
        - Added support for "EXPLAIN PARTITIONS SELECT ..."
      sql/sql_yacc.yy:
        #2985 "Partition Pruning": added support for "EXPLAIN PARTITIONS SELECT ..."
      c4ef5317
  20. 21 Dec, 2005 1 commit
    • unknown's avatar
      Adding XPath support: ExtractValue and UpdateXML functions. · dca59833
      unknown authored
      libmysqld/Makefile.am:
      sql/Makefile.am:
        Adding new source files.
        Adding new file into build process.
      include/my_xml.h:
      strings/xml.c:
        Adding new XML parse flags to skip text normalization and 
        to use relative tag names. Adding enum for XML token types.
      sql/lex.h:
        Making parser aware of new SQL functions.
      sqll/item_create.h, sql/item_create.cc:
        Adding creators for ExtractValue and UpdateXML.
      sql/item.h:
        Adding new Item types: nodeset and nodeset comparator.
      sql/item_xmlfunc.h
      sql/item_xmlfunc.cc
        Adding new classes implementing XPath functions.
      mysql-test/t/xml.test, mysql-test/r/xml.result:
        New files: adding test case
      
      
      include/my_xml.h:
        Adding ExtractValue and UpdateXML functions.
        Adding XML parser flags and enum for XML token types.
      sql/Makefile.am:
        Adding new source files.
      sql/item.h:
        Adding new Item types: nodeset and nodeset comparator.
      sql/item_create.cc:
        Adding creators for ExtractValue and UpdateXML.
      sql/item_create.h:
        Adding creators for ExtractValue and UpdateXML.
      sql/lex.h:
        Make parse aware of new SQL functions.
      strings/xml.c:
        Adding new flags to skip text normalization and 
        to use relative tag names.
      libmysqld/Makefile.am:
        Adding new file into build process.
      dca59833
  21. 08 Dec, 2005 1 commit
    • unknown's avatar
      A fix and a test case for Bug#15441 "Running SP causes Server · 48a6232a
      unknown authored
      to Crash": the bug was that due to non-standard name
      resolution precedence in stored procedures (See Bug#5967)
      a stored procedure variable took precedence over a table column
      when the arguments for VALUES() function were resolved.
      The implementation of VALUES() function was not designed to work
      with Item_splocal and crashed.
      VALUES() function is non-standard. It can refer to, and
      is meaningful for, table columns only. The patch disables SP 
      variables as possible arguments of VALUES() function.
      
      
      mysql-test/r/sp.result:
        Test results fixed (Bug#15441).
        Also make sure that the recently added test cases follow sp.test
        internal tests standard.
      mysql-test/t/sp.test:
        Add a test case for Bug#15441 "Running SP causes Server to Crash".
      sql/item.cc:
        Cleanup Item_insert_value::fix_fields().
      sql/item.h:
        Add a comment for Item_insert_value.
      sql/sql_yacc.yy:
        Actual fix for Bug#15441 "Running SP causes Server to Crash":
        we should not allow VALUES() function to reference SP variables.
      48a6232a
  22. 07 Dec, 2005 1 commit
    • unknown's avatar
      Patch for WL#2894: Make stored routine variables work · 66ce27ca
      unknown authored
      according to the standard.
      
      The idea is to use Field-classes to implement stored routines
      variables. Also, we should provide facade to Item-hierarchy
      by Item_field class (it is necessary, since SRVs take part
      in expressions).
      
      The patch fixes the following bugs:
        - BUG#8702: Stored Procedures: No Error/Warning shown for inappropriate data 
          type matching; 
       
        - BUG#8768: Functions: For any unsigned data type, -ve values can be passed 
          and returned; 
       
        - BUG#8769: Functions: For Int datatypes, out of range values can be passed 
          and returned; 
       
        - BUG#9078: STORED PROCDURE: Decimal digits are not displayed when we use 
          DECIMAL datatype; 
       
        - BUG#9572: Stored procedures: variable type declarations ignored; 
       
        - BUG#12903: upper function does not work inside a function; 
       
        - BUG#13705: parameters to stored procedures are not verified; 
       
        - BUG#13808: ENUM type stored procedure parameter accepts non-enumerated
          data; 
       
        - BU...
      66ce27ca
  23. 29 Nov, 2005 1 commit
  24. 28 Nov, 2005 2 commits
    • unknown's avatar
      WL#2486 - Natural/using join according to SQL:2003. · 35c5237c
      unknown authored
      Post-review fixes according to Monty's review.
      
      
      sql/item.h:
        Unite all code that stores and restores the state of a name resolution context
        into a class to represent the state, and methods to save/restore that
        state.
      sql/mysql_priv.h:
        Reorder parameters so that length is after the name of a field,
        and database is before table name.
      sql/sql_acl.cc:
        Reorder parameters so that length is after the name of a field,
        and database is before table name.
      sql/sql_base.cc:
        * Reorder parameters so that length is after the name of a field,
          and database is before table name.
        * Added new method - Field_iterator_table_ref::get_natural_column_ref
          to avoid unnecessary code when it is knwon that no new columns will
          be created when accessing natural join columns.
      sql/sql_insert.cc:
        Unite all code that stores and restores the state of a name resolution context
        into a class to represent the state, and methods to save/restore that
        state.
      sql/sql_lex.cc:
        Removed obsolete comment.
      sql/sql_lex.h:
        Return error from push_contex() if there is no memory.
      sql/sql_list.h:
        Extended base_list_iterator, List_iterator, and List_iterator_fast with an
        empty constructor, and init() methods, so that one doesn't have to construct
        a new iterator object every time one needs to iterate over a new list.
      sql/sql_parse.cc:
        Moved common functionality from the parser into one function, and renamed
        the function to better reflect what it does.
      sql/sql_yacc.yy:
        Moved common functionality from the parser into one function, and renamed
        the function to better reflect what it does.
      sql/table.cc:
        * Extended base_list_iterator, List_iterator, and List_iterator_fast with an
          empty constructor, and init() methods, so that one doesn't have to construct
          a new iterator object every time one needs to iterate over a new list.
        * Added new method Field_iterator_table_ref::get_natural_column_ref to be
          used in cases when it is known for sure that no new columns should be
          created.
      sql/table.h:
        - column_ref_it no longer allocated for each new list of columns
        - new method get_natural_join_column for faster/simpler access
          to natural join columns.
      35c5237c
    • unknown's avatar
      item.cc, item.h: · 3f400939
      unknown authored
        Fixing Item_param::safe_charset_converter to do less "new"s.
      
      
      sql/item.h:
        Fixing Item_param::safe_charset_converter to do less "new"s.
      sql/item.cc:
        Fixing Item_param::safe_charset_converter to do less "new"s.
      3f400939
  25. 23 Nov, 2005 1 commit
    • unknown's avatar
      Table definition cache, part 2 · 9fb36b2d
      unknown authored
      The table opening process now works the following way:
      - Create common TABLE_SHARE object
      - Read the .frm file and unpack it into the TABLE_SHARE object
      - Create a TABLE object based on the information in the TABLE_SHARE
        object and open a handler to the table object
      
      Other noteworthy changes:
      - In TABLE_SHARE the most common strings are now LEX_STRING's
      - Better error message when table is not found
      - Variable table_cache is now renamed 'table_open_cache'
      - New variable 'table_definition_cache' that is the number of table defintions that will be cached
      - strxnmov() calls are now fixed to avoid overflows
      - strxnmov() will now always add one end \0 to result
      - engine objects are now created with a TABLE_SHARE object instead of a TABLE object.
      - After creating a field object one must call field->init(table) before using it
      
      - For a busy system this change will give you:
       - Less memory usage for table object
       - Faster opening of tables (if it's has been in use or is in table definition cache)
       - Allow you to cache many table definitions objects
       - Faster drop of table
      
      
      mysql-test/mysql-test-run.sh:
        Fixed some problems with --gdb option
        Test both with socket and tcp/ip port that all old servers are killed
      mysql-test/r/flush_table.result:
        More tests with lock table with 2 threads + flush table
      mysql-test/r/information_schema.result:
        Removed old (now wrong) result
      mysql-test/r/innodb.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/merge.result:
        Extra flush table test
      mysql-test/r/ndb_bitfield.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/ndb_partition_error.result:
        Better error messages (thanks to TDC patch)
      mysql-test/r/query_cache.result:
        Remove tables left from old tests
      mysql-test/r/temp_table.result:
        Test truncate with temporary tables
      mysql-test/r/variables.result:
        Table_cache -> Table_open_cache
      mysql-test/t/flush_table.test:
        More tests with lock table with 2 threads + flush table
      mysql-test/t/merge.test:
        Extra flush table test
      mysql-test/t/multi_update.test:
        Added 'sleep' to make test predictable
      mysql-test/t/query_cache.test:
        Remove tables left from old tests
      mysql-test/t/temp_table.test:
        Test truncate with temporary tables
      mysql-test/t/variables.test:
        Table_cache -> Table_open_cache
      mysql-test/valgrind.supp:
        Remove warning that may happens becasue threads dies in different order
      mysys/hash.c:
        Fixed wrong DBUG_PRINT
      mysys/mf_dirname.c:
        More DBUG
      mysys/mf_pack.c:
        Better comment
      mysys/mf_tempdir.c:
        More DBUG
        Ensure that we call cleanup_dirname() on all temporary directory paths.
        
        If we don't do this, we will get a failure when comparing temporary table
        names as in some cases the temporary table name is run through convert_dirname())
      mysys/my_alloc.c:
        Indentation fix
      sql/examples/ha_example.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_example.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_tina.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/examples/ha_tina.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/field.cc:
        Update for table definition cache:
        - Field creation now takes TABLE_SHARE instead of TABLE as argument
          (This is becasue field definitions are now cached in TABLE_SHARE)
          When a field is created, one now must call field->init(TABLE) before using it
        - Use s->db instead of s->table_cache_key
        - Added Field::clone() to create a field in TABLE from a field in TABLE_SHARE
        - make_field() takes TABLE_SHARE as argument instead of TABLE
        - move_field() -> move_field_offset()
      sql/field.h:
        Update for table definition cache:
        - Field creation now takes TABLE_SHARE instead of TABLE as argument
          (This is becasue field definitions are now cached in TABLE_SHARE)
          When a field is created, one now must call field->init(TABLE) before using it
        - Added Field::clone() to create a field in TABLE from a field in TABLE_SHARE
        - make_field() takes TABLE_SHARE as argument instead of TABLE
        - move_field() -> move_field_offset()
      sql/ha_archive.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_archive.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_berkeley.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Changed name of argument create() to not hide internal 'table' variable.
        table->s  -> table_share
      sql/ha_berkeley.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_blackhole.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_blackhole.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_federated.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Fixed comments
        Remove index variable and replace with pointers (simple optimization)
        move_field() -> move_field_offset()
        Removed some strlen() calls
      sql/ha_federated.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_heap.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Simplify delete_table() and create() as the given file names are now without extension
      sql/ha_heap.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_innodb.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_innodb.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_myisam.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Remove not needed fn_format()
        Fixed for new table->s structure
      sql/ha_myisam.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_myisammrg.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Don't set 'is_view' for MERGE tables
        Use new interface to find_temporary_table()
      sql/ha_myisammrg.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Added flag HA_NO_COPY_ON_ALTER
      sql/ha_ndbcluster.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Fixed wrong calls to strxnmov()
        Give error HA_ERR_TABLE_DEF_CHANGED if table definition has changed
        drop_table -> intern_drop_table()
        table->s -> table_share
        Move part_info to TABLE
        Fixed comments & DBUG print's
        New arguments to print_error()
      sql/ha_ndbcluster.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
      sql/ha_partition.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        We can't set up or use part_info when creating handler as there is not yet any table object
        New ha_intialise() to work with TDC (Done by Mikael)
      sql/ha_partition.h:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        Got set_part_info() from Mikael
      sql/handler.cc:
        We new use TABLE_SHARE instead of TABLE when creating engine handlers
        ha_delete_table() now also takes database as an argument
        handler::ha_open() now takes TABLE as argument
        ha_open() now calls ha_allocate_read_write_set()
        Simplify ha_allocate_read_write_set()
        Remove ha_deallocate_read_write_set()
        Use table_share (Cached by table definition cache)
      sql/handler.h:
        New table flag: HA_NO_COPY_ON_ALTER (used by merge tables)
        Remove ha_deallocate_read_write_set()
        get_new_handler() now takes TABLE_SHARE as argument
        ha_delete_table() now gets database as argument
      sql/item.cc:
        table_name and db are now LEX_STRING objects
        When creating fields, we have now have to call field->init(table)
        move_field -> move_field_offset()
      sql/item.h:
        tmp_table_field_from_field_type() now takes an extra paramenter 'fixed_length' to allow one to force usage of CHAR
         instead of BLOB
      sql/item_cmpfunc.cc:
        Fixed call to tmp_table_field_from_field_type()
      sql/item_create.cc:
        Assert if new not handled cast type
      sql/item_func.cc:
        When creating fields, we have now have to call field->init(table)
        dummy_table used by 'sp' now needs a TABLE_SHARE object
      sql/item_subselect.cc:
        Trivial code cleanups
      sql/item_sum.cc:
        When creating fields, we have now have to call field->init(table)
      sql/item_timefunc.cc:
        Item_func_str_to_date::tmp_table_field() now replaced by call to
         tmp_table_field_from_field_type() (see item_timefunc.h)
      sql/item_timefunc.h:
        Simply tmp_table_field()
      sql/item_uniq.cc:
        When creating fields, we have now have to call field->init(table)
      sql/key.cc:
        Added 'KEY' argument to 'find_ref_key' to simplify code
      sql/lock.cc:
        More debugging
        Use create_table_def_key() to create key for table cache
        Allocate TABLE_SHARE properly when creating name lock
        Fix that locked_table_name doesn't test same table twice
      sql/mysql_priv.h:
        New functions for table definition cache
        New interfaces to a lot of functions.
        New faster interface to find_temporary_table() and close_temporary_table()
      sql/mysqld.cc:
        Added support for table definition cache of size 'table_def_size'
        Fixed som calls to strnmov()
        Changed name of 'table_cache' to 'table_open_cache'
      sql/opt_range.cc:
        Use new interfaces
        Fixed warnings from valgrind
      sql/parse_file.cc:
        Safer calls to strxnmov()
        Fixed typo
      sql/set_var.cc:
        Added variable 'table_definition_cache'
        Variable table_cache renamed to 'table_open_cache'
      sql/slave.cc:
        Use new interface
      sql/sp.cc:
        Proper use of TABLE_SHARE
      sql/sp_head.cc:
        Remove compiler warnings
        We have now to call field->init(table)
      sql/sp_head.h:
        Pointers to parsed strings are now const
      sql/sql_acl.cc:
        table_name is now a LEX_STRING
      sql/sql_base.cc:
        Main implementation of table definition cache
        (The #ifdef's are there for the future when table definition cache will replace open table cache)
        Now table definitions are cached indepndent of open tables, which will speed up things when a table is in use at once from several places
        Views are not yet cached; For the moment we only cache if a table is a view or not.
        
        Faster implementation of find_temorary_table()
        Replace 'wait_for_refresh()' with the more general function 'wait_for_condition()'
        Drop table is slightly faster as we can use the table definition cache to know the type of the table
      sql/sql_cache.cc:
        table_cache_key and table_name are now LEX_STRING
        'sDBUG print fixes
      sql/sql_class.cc:
        table_cache_key is now a LEX_STRING
        safer strxnmov()
      sql/sql_class.h:
        Added number of open table shares (table definitions)
      sql/sql_db.cc:
        safer strxnmov()
      sql/sql_delete.cc:
        Use new interface to find_temporary_table()
      sql/sql_derived.cc:
        table_name is now a LEX_STRING
      sql/sql_handler.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
      sql/sql_insert.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
      sql/sql_lex.cc:
        Make parsed string a const (to quickly find out if anything is trying to change the query string)
      sql/sql_lex.h:
        Make parsed string a const (to quickly find out if anything is trying to change the query string)
      sql/sql_load.cc:
        Safer strxnmov()
      sql/sql_parse.cc:
        Better error if wrong DB name
      sql/sql_partition.cc:
        part_info moved to TABLE from TABLE_SHARE
        Indentation changes
      sql/sql_select.cc:
        Indentation fixes
        Call field->init(TABLE) for new created fields
        Update create_tmp_table() to use TABLE_SHARE properly
      sql/sql_select.h:
        Call field->init(TABLE) for new created fields
      sql/sql_show.cc:
        table_name is now a LEX_STRING
        part_info moved to TABLE
      sql/sql_table.cc:
        Use table definition cache to speed up delete of tables
        Fixed calls to functions with new interfaces
        Don't use 'share_not_to_be_used'
        Instead of doing openfrm() when doing repair, we now have to call
        get_table_share() followed by open_table_from_share().
        Replace some fn_format() with faster unpack_filename().
        Safer strxnmov()
        part_info is now in TABLE
        Added Mikaels patch for partition and ALTER TABLE
        Instead of using 'TABLE_SHARE->is_view' use 'table_flags() & HA_NO_COPY_ON_ALTER
      sql/sql_test.cc:
        table_name and table_cache_key are now LEX_STRING's
      sql/sql_trigger.cc:
        TABLE_SHARE->db and TABLE_SHARE->table_name are now LEX_STRING's
        safer strxnmov()
        Removed compiler warnings
      sql/sql_update.cc:
        Call field->init(TABLE) after field is created
      sql/sql_view.cc:
        safer strxnmov()
        Create common TABLE_SHARE object for views to allow us to cache if table is a view
      sql/structs.h:
        Added SHOW_TABLE_DEFINITIONS
      sql/table.cc:
        Creation and destruct of TABLE_SHARE objects that are common for many TABLE objects
        
        The table opening process now works the following way:
        - Create common TABLE_SHARE object
        - Read the .frm file and unpack it into the TABLE_SHARE object
        - Create a TABLE object based on the information in the TABLE_SHARE
          object and open a handler to the table object
        
        open_table_def() is written in such a way that it should be trival to add parsing of the .frm files in new formats
      sql/table.h:
        TABLE objects for the same database table now share a common TABLE_SHARE object
        In TABLE_SHARE the most common strings are now LEX_STRING's
      sql/unireg.cc:
        Changed arguments to rea_create_table() to have same order as other functions
        Call field->init(table) for new created fields
      sql/unireg.h:
        Added OPEN_VIEW
      strings/strxnmov.c:
        Change strxnmov() to always add end \0
        This makes usage of strxnmov() safer as most of MySQL code assumes that strxnmov() will create a null terminated string
      9fb36b2d
  26. 22 Nov, 2005 1 commit
    • unknown's avatar
      Fix for BUG#13549 "Server crash with nested stored procedures · 8152a78f
      unknown authored
      if inner routine has more local variables than outer one, and
      one of its last variables was used as argument to NOT operator".
      
      THD::spcont was non-0 when we were parsing stored routine/trigger
      definition during execution of another stored routine. This confused
      methods of Item_splocal and forced them use wrong runtime context.
      Fix ensures that we always have THD::spcont equal to zero during
      routine/trigger body parsing. This also allows to avoid problems
      with errors which occur during parsing and SQL exception handlers.
      
      
      mysql-test/r/sp.result:
        Test suite for bug#13549.
      mysql-test/r/trigger.result:
        Test suite for bug#13549.
      mysql-test/t/sp.test:
        Test suite for bug#13549.
      mysql-test/t/trigger.test:
        Test suite for bug#13549.
      sql/item.cc:
        Protection against using wrong context by SP local variable.
      sql/item.h:
        Protection against using wrong context by SP local variable.
      sql/protocol.cc:
        An incorrect macro name fixed.
      sql/protocol.h:
        An incorrect macro name fixed.
      sql/sp.cc:
        Do not allow SP which we are parsing to use other SP
        context (BUG#13549).
      sql/sp_head.cc:
        Protection against using wrong context by SP local variable.
      sql/sp_rcontext.h:
        Protection against using wrong context by SP local variable.
      sql/sql_cache.h:
        An incorrect macro name fixed.
      sql/sql_class.cc:
        Protection against using wrong context by SP local variable.
      sql/sql_class.h:
        Protection against using wrong context by SP local variable.
      sql/sql_trigger.cc:
        Do not allow Trigger which we are parsing to use
        other SP context (BUG#13549).
      sql/sql_yacc.yy:
        Protection against using wrong context by SP local variable.
      8152a78f
  27. 20 Nov, 2005 1 commit
    • unknown's avatar
      Inefficient usage of String::append() fixed. · 5e047f6b
      unknown authored
      Bad examples of usage of a string with its length fixed.
      The incorrect length in the trigger file configuration descriptor
        fixed (BUG#14090).
      A hook for unknown keys added to the parser to support old .TRG files.
      
      
      sql/field.cc:
        Inefficient usage of String::append() fixed.
        Bad examples of usage of a string with its length fixed.
      sql/ha_berkeley.cc:
        A bad example of usage of a string with its length fixed.
      sql/ha_federated.cc:
        Inefficient usage of String::append() fixed.
      sql/ha_myisammrg.cc:
        Bad examples of usage of a string with its length fixed.
      sql/handler.cc:
        Inefficient usage of String::append() fixed.
      sql/item.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item.h:
        A bad example of usage of a string with its length fixed.
      sql/item_cmpfunc.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item_func.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item_strfunc.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item_subselect.cc:
        Bad examples of usage of a string with its length fixed.
      sql/item_sum.cc:
        Bad examples of usage of a string with its length fixed.
        Inefficient usage of String::append() fixed.
      sql/item_timefunc.cc:
        Inefficient using of String::append() fixed.
        Bad examples of usage of a string with its length fixed.
      sql/item_uniq.h:
        Bad examples of usage of a string with its length fixed.
      sql/key.cc:
        Bad examples of usage of a string with its length fixed.
      sql/log.cc:
        Bad examples of usage of a string with its length fixed.
      sql/log_event.cc:
        Bad examples of usage of a string with its length fixed.
      sql/mysqld.cc:
        The dummy parser hook allocated.
      sql/opt_range.cc:
        Inefficient usage of String::append() fixed.
      sql/parse_file.cc:
        Bad examples of usage of a string with its length fixed.
        A hook for unknown keys added to the parser.
      sql/parse_file.h:
        A hook for unknown keys added to the parser.
      sql/protocol.cc:
        A bad example of usage of a string with its length fixed.
      sql/repl_failsafe.cc:
        Bad examples of usage of a string with its length fixed.
      sql/share/errmsg.txt:
        A warning for old format config file.
      sql/slave.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sp.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sp_head.cc:
        Bad examples of usage of a string with its length fixed.
      sql/spatial.cc:
        A bad example of usage of a string with its length fixed.
      sql/sql_acl.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_analyse.cc:
        Bad examples of usage of a string with its length fixed.
        Inefficient usage of String::append() fixed.
      sql/sql_lex.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_load.cc:
        A bad example of usage of a string with its length fixed.
      sql/sql_parse.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_prepare.cc:
        A bad example of usage of a string with its length fixed.
      sql/sql_select.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_show.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_string.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_string.h:
        The macro definition moved to sql_string.h to
          be accessible in all parts of server.
      sql/sql_table.cc:
        Bad examples of usage of a string with its length fixed.
      sql/sql_trigger.cc:
        Bad examples of usage of a string with its length fixed.
        The incorrect length in the trigger file configuration descriptor
          fixed (BUG#14090).
        The hook for processing incorrect sql_mode record added.
      sql/sql_view.cc:
        A dummy  hook used for parsing views.
      sql/structs.h:
        The macro definition moved to sql_string.h to be
          accessible in all parts of server.
      sql/table.cc:
        A bad example of usage of a string with its length fixed.
      sql/tztime.cc:
        A bad example of usage of a string with its length fixed.
      5e047f6b
  28. 14 Nov, 2005 1 commit
    • unknown's avatar
      Fix bug #14850 Item_ref's null_value wasn't updated · 09a10b23
      unknown authored
      Item_ref's null_value wasn't updated in save_org_in_field() causing reported
      error.
      
      
      sql/item.h:
        Fix bug #14850 Item_ref's null_value wasn't updated
        Make save_org_in_field() update Item_ref's null_value.
      mysql-test/r/view.result:
        Test case for bug #14850 Item_ref's null_value wasn't updated
      mysql-test/t/view.test:
         Test case for bug #14850 Item_ref's null_value wasn't updated
      09a10b23
  29. 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
  30. 31 Oct, 2005 1 commit
  31. 27 Oct, 2005 1 commit
    • unknown's avatar
      support of view underlying tables and SP functions security check added (BUG#9505) (WL#2787) · 9c6c527c
      unknown authored
      mysql-test/r/information_schema.result:
        error message changed
      mysql-test/r/sp.result:
        error message changed
      mysql-test/r/sql_mode.result:
        fixed test suite
      mysql-test/r/view.result:
        error message changed
      mysql-test/r/view_grant.result:
        test of underlying view tables check
      mysql-test/t/sql_mode.test:
        fixed test suite
      mysql-test/t/view_grant.test:
        test of underlying view tables check
      sql/item.cc:
        check of underlying tables privilege added
      sql/item.h:
        Name the resolution context points to the security  context of view (if item belong to the view)
      sql/item_func.cc:
        a view error hiding for execution of prepared function belonged to a view
        fixed checking privileges if stored functions belonds to some view
      sql/mysql_priv.h:
        refult of derived table processing functions changed to bool
        Security_context added as an argument to find_field_in_table()
      sql/share/errmsg.txt:
        error message fixed
      sql/sq...
      9c6c527c
  32. 20 Oct, 2005 1 commit
    • unknown's avatar
      Bug#12371: executing prepared statement fails (illegal mix of collations) · 0f8ab213
      unknown authored
      ctype_utf8.test, ctype_utf8.result:
        Adding test case.
      item.h:
      item.cc:
        Adding Item_param::safe_charset_converter
      
      
      sql/item.cc:
         Bug#12371: executing prepared statement fails (illegal mix of collations)
        Adding Item_param::safe_charset_converter
      sql/item.h:
        Adding Item_param::safe_charset_converter
      mysql-test/r/ctype_utf8.result:
        Adding test case.
      mysql-test/t/ctype_utf8.test:
        Adding test case.
      0f8ab213
  33. 15 Oct, 2005 1 commit
    • unknown's avatar
      Fixed bug #12762: · e57b7261
      unknown authored
      allowed set functions aggregated in outer subqueries, allowed nested set functions.
      
      
      mysql-test/r/func_gconcat.result:
        Changed a query when fixing bug #12762.
      mysql-test/r/subselect.result:
        Added test cases for bug #12762.
        Allowed set functions aggregated in outer subqueries. Allowed nested set functions.
      mysql-test/t/func_gconcat.test:
        Changed a query when fixing bug #12762.
      mysql-test/t/subselect.test:
        Added test cases for bug #12762.
        Allowed set functions aggregated in outer subqueries. Allowed nested set functions.
      sql/item.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Added a parameter to Item::split_sum_func2 aliowing to defer splitting for set functions
        aggregated in outer subquries.
        Changed Item_field::fix_fields to calculate attributes used when checking context conditions
        for set functions.
        Allowed alliases for set functions defined in outer subqueries.
      sql/item.h:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Added a parameter to Item::split_sum_func2 aliowing to defer splitting for set functions
        aggregated in outer subquries.
      sql/item_cmpfunc.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Added a parameter to Item::split_sum_func2 aliowing to defer splitting for set functions
        aggregated in outer subquries.
      sql/item_func.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Added a parameter to Item::split_sum_func2 aliowing to defer splitting for set functions
        aggregated in outer subquries.
      sql/item_row.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Added a parameter to Item::split_sum_func2 aliowing to defer splitting for set functions
        aggregated in outer subquries.
      sql/item_strfunc.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Added a parameter to Item::split_sum_func2 aliowing to defer splitting for set functions
        aggregated in outer subquries.
      sql/item_subselect.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced next levels for subqueries and a bitmap of nesting levels showing
        in what subqueries a set function can be aggregated.
      sql/item_sum.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Added Item_sum methods to check context conditions imposed on set functions.
      sql/item_sum.h:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Added Item_sum methods to check context conditions imposed on set functions.
      sql/mysql_priv.h:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced a type of bitmaps to be used for nesting constructs.
      sql/sql_base.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced next levels for subqueries and a bitmap of nesting levels showing
        in what subqueries a set function can be aggregated.
      sql/sql_class.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced a bitmap of nesting levels showing in what subqueries a set function can be aggregated.
      sql/sql_class.h:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced a bitmap of nesting levels showing in what subqueries a set function can be aggregated.
      sql/sql_delete.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced a bitmap of nesting levels showing in what subqueries a set function can be aggregated.
      sql/sql_lex.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced next levels for subqueries and a bitmap of nesting levels showing
        in what subqueries a set function can be aggregated.
      sql/sql_lex.h:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced next levels for subqueries and a bitmap of nesting levels showing
        in what subqueries a set function can be aggregated.
      sql/sql_parse.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced next levels for subqueries.
      sql/sql_prepare.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced a bitmap of nesting levels showingin what subqueries a set function can be aggregated.
      sql/sql_select.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced next levels for subqueries and a bitmap of nesting levels showing
        in what subqueries a set function can be aggregated.
      sql/sql_update.cc:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced a bitmap of nesting levels showing in what subqueries a set function can be aggregated.
      sql/sql_yacc.yy:
        Fixed bug #12762:
        allowed set functions aggregated in outer subqueries, allowed nested set functions.
        Introduced next levels for subqueries.
      e57b7261
  34. 11 Oct, 2005 1 commit
    • unknown's avatar
      Reviewing new pushed code · d6ccd7c7
      unknown authored
      - CHAR() now returns binary string as default
      - CHAR(X*65536+Y*256+Z) is now equal to CHAR(X,Y,Z) independent of the character set for CHAR()
      - Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
        (Some old systems returns ETIME and it's safer to test for both values
         than to try to write a wrapper for each old system)
      - Fixed new introduced bug in NOT BETWEEN X and X
      - Ensure we call commit_by_xid or rollback_by_xid for all engines, even if one engine has failed
      - Use octet2hex() for all conversion of string to hex
      - Simplify and optimize code
      
      
      client/mysqldump.c:
        Simple optimizations of new code
        Indentation fixes
      client/mysqltest.c:
        Removed not needed variable
      include/mysql_com.h:
        Made octec2hex() more usable
      mysql-test/r/ctype_utf8.result:
        CHAR() now returns binary string as default
      mysql-test/r/func_str.result:
        CHAR() now returns binary string as default
      mysql-test/r/range.result:
        Added test to verify new introduced bug in NOT BETWEEN X and X
      mysq...
      d6ccd7c7
  35. 06 Oct, 2005 1 commit
    • unknown's avatar
      Review of code pushed since last 5.0 pull: · 872a537c
      unknown authored
      Ensure that ccache is also used for C programs
      mysql: Ensure that 'delimiter' works the same way in batch mode as in normal mode
      mysqldump: Change to use ;; (instead of //) as a stored procedure/trigger delimiter
      Fixed test cases by adding missing DROP's and rename views to be of type 'v#'
      Removed MY_UNIX_PATH from fn_format()
      Removed current_db_used from TABLE_LIST
      Removed usage of 'current_thd' in Item_splocal
      Removed some compiler warnings
      A bit faster longlong2str code
      
      
      
      BUILD/FINISH.sh:
        Ensure that ccache is also used for C programs
      BUILD/SETUP.sh:
        Ensure that ccache is also used for C programs
      client/mysql.cc:
        More debugging
        Ensure that 'delimiter' works the same way in batch mode as in normal mode.
        Compare 'delimiter' command case-insensitive.
        The above fixes the delimiter bugs so that we can now use ;; as a trigger/SP function delimiter in mysqldump.
      client/mysqldump.c:
        Indentation fixes
        Use ;; as a delmimiter for stored procedures and triggers instead of //
      client/mysqltest.c:
        Indentation fixes
      include/my_sys.h:
        Remove not needed MY_UNIX_PATH parameter
      mysql-test/r/alter_table.result:
        Better to reuse mysqltest database (test didn't properly delete mysqltest1 at start)
      mysql-test/r/func_str.result:
        More testing of CONV() (to ensure that longlong2str() works correctly)
      mysql-test/r/information_schema.result:
        Drop all used tables and views
        Rename view tables to 'v#' to ensure that if this test fails, not a lot of other test fails
      mysql-test/r/information_schema_inno.result:
        Drop all used tables
      mysql-test/r/multi_statement.result:
        Drop used tables
      mysql-test/r/mysql.result:
        Add error messages to result
      mysql-test/r/mysqldump.result:
        ;; is now used as SP/trigger delimiter
      mysql-test/r/mysqlshow.result:
        Drop used tables
      mysql-test/r/temp_table.result:
        Drop used views
        Rename views to v#
      mysql-test/t/alter_table.test:
        Better to reuse mysqltest database (test didn't properly delete mysqltest1 at start)
      mysql-test/t/func_str.test:
        More testing of CONV() (to ensure that longlong2str() works correctly)
      mysql-test/t/information_schema.test:
        Drop all used tables and views
        Rename view tables to 'v#' to ensure that if this test fails, not a lot of other test fails
      mysql-test/t/information_schema_inno.test:
        Drop all used tables
      mysql-test/t/multi_statement.test:
        Drop used tables
      mysql-test/t/mysql.test:
        Add error messages to result
      mysql-test/t/mysqlshow.test:
        Drop used tables
      mysql-test/t/temp_table.test:
        Drop used views
        Rename views to v#
      mysys/mf_format.c:
        Remove not needed MY_UNIX_PATH parameter
        (This goes against how fn_format() is supposed to work and also conflicts with other options like MY_RETURN_REAL_PATH)
      sql/ha_federated.cc:
        Removed extra empty line
      sql/item.cc:
        Use 'str_value' instead of 'str_value_ptr' to hold result for Item_splocal
        Remove some calls to 'thd' in Item_splocal by making 'thd' a class variable
        One doesn't have to set 'null_value' when calling 'is_null()'
      sql/item.h:
        Add THD as a class variable to Item_splocal
        Use 'str_value' instead of 'str_value_ptr' to hold temp result
        Fixed bug in Item_hex when used in CAST()
      sql/item_func.cc:
        Optimize new code
      sql/log_event.cc:
        Move 'to_unix_path()' out of fn_format()
      sql/opt_range.cc:
        Simplify code
      sql/sp_head.cc:
        Ensure that Item_splocal has thd set before we call '->this_item()'
      sql/sql_class.cc:
        Return error if Statement::insert() fails in either hash_insert()
      sql/sql_parse.cc:
        Remove 'current_db_used' as we can trivially check if db table qualifier was used without this.
        Simplify code
      sql/sql_prepare.cc:
        Use enum instead of const int, to avoid ugly code for VC++
      sql/structs.h:
        Remove compiler warnings when using STRING_WITH_LEN() with constant strings.
      sql/table.cc:
        Fixed indentation
      sql/table.h:
        Remove not needed current_db_used
      strings/decimal.c:
        Simplify code
      strings/longlong2str-x86.s:
        A bit faster longlong2str.
        (Took some ideas from Peter Gulutzan's code)
      strings/my_strtoll10.c:
        Simplify code for MetroWerks compiler
      872a537c
  36. 01 Oct, 2005 1 commit
    • unknown's avatar
      Fix for BUG#13410 - qualified reference to a view column in the HAVING clause cannot be resolved. · 20c77c32
      unknown authored
      The problem was then when a column reference was resolved to a view column, the new Item
      created for this column contained the name of the view, and not the view alias.
      
      
      mysql-test/r/view.result:
        Additional test for BUG#13410.
      mysql-test/t/view.test:
        Additional test for BUG#13410.
      sql/item.cc:
        Correctly cast 'cur_field' to Item_ident because if the original item is
        an Item_field, the cur_field is either an Item_field or an Item_ref.
        Thus we have to cast cur_field to a common super-class of both.
      sql/item.h:
        - real_item() may be called before Item_ref::ref is set
          (i.e. the Item_ref object was resolved).
        - To avoid a crash and to return some meaningful value
          in such cases we return 'this'.
      sql/sql_base.cc:
        - 'item' may be an Item_ref, so we test for the type of the actual
          referenced item.
        - Correctly cast 'cur_field' to Item_ident because if the original
          item is an Item_field, the cur_field is either an Item_field or an
          Item_ref. Thus we have to cast cur_field to a common super-class
          of both.
      sql/table.cc:
        - When creating a new Item for a reference to a view column, use the view alias,
          and not the real view name.
        - Removed old code
      20c77c32
  37. 23 Sep, 2005 1 commit
    • unknown's avatar
      Some minor fixes revealed as warnings by · 9080d99c
      unknown authored
      Intel compiler.
      
      
      client/mysqltest.c:
        Fixed a warning from using reference to a memory area,
        which is outside an object. This is just a minor
        clean-up, not a bug fix.
      server-tools/instance-manager/buffer.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/buffer.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/command.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/command.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/guardian.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/guardian.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/instance.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/instance.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/instance_map.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/instance_map.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/instance_options.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/instance_options.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/listener.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/listener.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/mysql_connection.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/mysql_connection.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/options.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/options.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/parse_output.cc:
        Removed unused goto.
      server-tools/instance-manager/thread_registry.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/thread_registry.h:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/user_map.cc:
        Fixed pragma warning for those compilers that do
        not support it.
      server-tools/instance-manager/user_map.h:
        Fixed pragma warning for those compilers that do
        not support it.
      sql/field.cc:
        Fixed a warning about overflow.
      sql/item.h:
        Fixed implicit function declaration warning.
      sql/item_sum.cc:
        Fixed implicit function declaration warning.
      9080d99c
  38. 22 Sep, 2005 1 commit
    • unknown's avatar
      Fix CAST(1.0e+300 TO SIGNED). (Bug #13344) · a094d013
      unknown authored
      mysql-test/r/cast.result:
        Update results
      mysql-test/t/cast.test:
        Add regression test
      sql/item.h:
        Cap Item_real::val_int() to LONGLONG_MIN and LONGLONG_MAX.
      a094d013