An error occurred fetching the project authors.
  1. 24 Jan, 2006 1 commit
    • unknown's avatar
      Fix for the following bugs: · 8f395ebb
      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.
      8f395ebb
  2. 19 Jan, 2006 1 commit
    • unknown's avatar
      Fix the tree: plugin-related changes, necessary for · bd7120f9
      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
      bd7120f9
  3. 05 Jan, 2006 1 commit
    • unknown's avatar
      Review fixes of new pushed code · 64206b18
      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())
      64206b18
  4. 27 Dec, 2005 1 commit
    • unknown's avatar
      WL#2985 "Partition pruning", postreview fixes: Small code fixes and better comments · e6bff9a6
      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
      e6bff9a6
  5. 22 Dec, 2005 1 commit
    • unknown's avatar
      WL#2985 "Partition Pruning" · f19fb870
      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 ..."
      f19fb870
  6. 21 Dec, 2005 1 commit
    • unknown's avatar
      Adding XPath support: ExtractValue and UpdateXML functions. · 5e4c3ce6
      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.
      5e4c3ce6
  7. 08 Dec, 2005 1 commit
    • unknown's avatar
      A fix and a test case for Bug#15441 "Running SP causes Server · 9c4985de
      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.
      9c4985de
  8. 07 Dec, 2005 1 commit
    • unknown's avatar
      Patch for WL#2894: Make stored routine variables work · 6b2f1309
      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; 
       
        - BUG#13909: Varchar Stored Procedure Parameter always BINARY string (ignores 
          CHARACTER SET); 
       
        - BUG#14161: Stored procedure cannot retrieve bigint unsigned;
      
        - BUG#14188: BINARY variables have no 0x00 padding;
      
        - BUG#15148: Stored procedure variables accept non-scalar values;
      
      
      mysql-test/r/ctype_ujis.result:
        Explicitly specify correct charset.
      mysql-test/r/schema.result:
        Drop our test database to not affect this test if some test
        left it cause of failure.
      mysql-test/r/show_check.result:
        Drop our test database to not affect this test if some test
        left it cause of failure.
      mysql-test/r/skip_name_resolve.result:
        Ignore columns with unpredictable values.
      mysql-test/r/sp-big.result:
        Add cleanup statement.
      mysql-test/r/sp-dynamic.result:
        Add cleanup statements.
      mysql-test/r/sp.result:
        Update result file.
      mysql-test/r/sum_distinct-big.result:
        Update result file.
      mysql-test/r/type_newdecimal-big.result:
        Update result file.
      mysql-test/t/ctype_ujis.test:
        Explicitly specify correct charset.
      mysql-test/t/schema.test:
        Drop our test database to not affect this test if some test
        left it cause of failure.
      mysql-test/t/show_check.test:
        Drop our test database to not affect this test if some test
        left it cause of failure.
      mysql-test/t/skip_name_resolve.test:
        Ignore columns with unpredictable values.
      mysql-test/t/sp-big.test:
        Add cleanup statement.
      mysql-test/t/sp-dynamic.test:
        Add cleanup statements.
      mysql-test/t/sp.test:
        Non-scalar values prohibited for assignment to SP-vars;
        polishing.
      mysql-test/t/type_newdecimal-big.test:
        Update type specification so that the variables
        can contain the large values used in the test.
      sql/field.cc:
        Extract create_field::init() to initialize an existing
        instance of create_field from new_create_field().
      sql/field.h:
        Extract create_field::init() to initialize an existing
        instance of create_field from new_create_field().
      sql/item.cc:
        - Introduce a new class: Item_sp_variable -- a base class
          of stored-routine-variables classes;
        - Introduce Item_case_expr -- an Item, which is used to access
          to the expression of CASE statement;
      sql/item.h:
        - Introduce a new class: Item_sp_variable -- a base class
          of stored-routine-variables classes;
        - Introduce Item_case_expr -- an Item, which is used to access
          to the expression of CASE statement;
      sql/item_func.cc:
        Pass the Field (instead of Item) for the return value of
        a function to the function execution routine.
      sql/item_func.h:
        Pass the Field (instead of Item) for the return value of
        a function to the function execution routine.
      sql/mysql_priv.h:
        Move create_virtual_tmp_table() out of sql_select.h.
      sql/sp.cc:
        Use create_result_field() instead of make_field().
      sql/sp_head.cc:
        - Add a function to map enum_field_types to Item::Type;
        - Add sp_instr_push_case_expr instruction -- an instruction
          to push CASE expression into the active running context;
        - Add sp_instr_pop_case_expr instruction -- an instruction
          to pop CASE expression from the active running context;
        - Adapt the SP-execution code to using Fields instead of Items
          for SP-vars;
        - Use create_field structure for field description instead of
          a set of members.
      sql/sp_head.h:
        - Add a function to map enum_field_types to Item::Type;
        - Add sp_instr_push_case_expr instruction -- an instruction
          to push CASE expression into the active running context;
        - Add sp_instr_pop_case_expr instruction -- an instruction
          to pop CASE expression from the active running context;
        - Adapt the SP-execution code to using Fields instead of Items
          for SP-vars;
        - Use create_field structure for field description instead of
          a set of members.
      sql/sp_pcontext.cc:
        - Change rules to assign an index of SP-variable: use
          transparent index;
        - Add an operation to retrieve a list of defined SP-vars
          from the processing context recursively.
      sql/sp_pcontext.h:
        - Change rules to assign an index of SP-variable: use
          transparent index;
        - Add an operation to retrieve a list of defined SP-vars
          from the processing context recursively.
      sql/sp_rcontext.cc:
        - Change rules to assign an index of SP-variable: use
          transparent index;
        - Use a tmp virtual table to store SP-vars instead of Items;
        - Provide operations to work with CASE expresion.
      sql/sp_rcontext.h:
        - Change rules to assign an index of SP-variable: use
          transparent index;
        - Use a tmp virtual table to store SP-vars instead of Items;
        - Provide operations to work with CASE expresion.
      sql/sql_class.cc:
        - Reflect Item_splocal ctor changes;
        - Item_splocal::get_offset() has been renamed to get_var_idx().
      sql/sql_class.h:
        Polishing.
      sql/sql_parse.cc:
        Extract create_field::init() to initialize an existing
        instance of create_field from new_create_field().
      sql/sql_select.cc:
        Take care of BLOB columns in create_virtual_tmp_table().
      sql/sql_select.h:
        Move create_virtual_tmp_table() out of sql_select.h.
      sql/sql_trigger.cc:
        Use boolean constants for boolean type instead of numerical ones.
      sql/sql_yacc.yy:
        Provide an instance of create_field for each SP-var.
      mysql-test/include/sp-vars.inc:
        The definitions of common-procedures, which are created
        under different circumstances.
      mysql-test/r/sp-vars.result:
        Result file for the SP-vars test.
      mysql-test/sp-vars.test:
        A new test for checking SP-vars functionality.
      6b2f1309
  9. 29 Nov, 2005 1 commit
  10. 28 Nov, 2005 2 commits
    • unknown's avatar
      WL#2486 - Natural/using join according to SQL:2003. · 4fd41f7c
      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.
      4fd41f7c
    • unknown's avatar
      item.cc, item.h: · a9af48e9
      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.
      a9af48e9
  11. 23 Nov, 2005 1 commit
    • unknown's avatar
      Table definition cache, part 2 · f631b361
      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
      f631b361
  12. 22 Nov, 2005 1 commit
    • unknown's avatar
      Fix for BUG#13549 "Server crash with nested stored procedures · 6574612d
      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.
      6574612d
  13. 20 Nov, 2005 1 commit
    • unknown's avatar
      Inefficient usage of String::append() fixed. · fe63e095
      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.
      fe63e095
  14. 14 Nov, 2005 1 commit
    • unknown's avatar
      Fix bug #14850 Item_ref's null_value wasn't updated · 6c708fad
      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
      6c708fad
  15. 03 Nov, 2005 1 commit
    • unknown's avatar
      Fix bug #14093 Query takes a lot of time when date format is not valid · bb841518
      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
      bb841518
  16. 31 Oct, 2005 1 commit
  17. 27 Oct, 2005 1 commit
    • unknown's avatar
      support of view underlying tables and SP functions security check added (BUG#9505) (WL#2787) · 24ac4019
      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/sql_acl.cc:
        Storing requested privileges of tables added
        View underlying tables privilege check added
      sql/sql_base.cc:
        View underlying tables privilege check added
      sql/sql_cache.cc:
        Code cleunup: we should not register underlying tables of view second time
      sql/sql_delete.cc:
        ancestor -> merge_underlying_list renaming
      sql/sql_derived.cc:
        refult of derived table processing functions changed to bool
        do not give SELECT_ACL for TEMPTABLE views
      sql/sql_lex.h:
        The comment added
      sql/sql_parse.cc:
        registration of requested privileges added
      sql/sql_prepare.cc:
        registration of requested privileges added
      sql/sql_update.cc:
        manipulation of requested privileges for underlying tables made the same as for table which we are updating
      sql/sql_view.cc:
        underlying tables of view security check support added
      sql/table.cc:
        renaming and fixing view preparation methods, methods for checking underlyoing tables security context added
      sql/table.h:
        storege for reuested privileges added
      24ac4019
  18. 20 Oct, 2005 1 commit
    • unknown's avatar
      Bug#12371: executing prepared statement fails (illegal mix of collations) · 06164d5d
      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.
      06164d5d
  19. 15 Oct, 2005 1 commit
    • unknown's avatar
      Fixed bug #12762: · 6a0695fe
      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.
      6a0695fe
  20. 11 Oct, 2005 1 commit
    • unknown's avatar
      Reviewing new pushed code · 0ce12f70
      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
      mysql-test/r/user_var-binlog.result:
        CHAR() now returns binary string as default
      mysql-test/r/view.result:
        More tests of view rename
      mysql-test/t/ctype_utf8.test:
        CHAR() now returns binary string as default
      mysql-test/t/func_str.test:
        CHAR() now returns binary string as default
      mysql-test/t/range.test:
        Added test to verify new introduced bug in NOT BETWEEN X and X
      mysql-test/t/view.test:
        More tests of view rename
      mysys/mf_keycache.c:
        Indentation changes
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      mysys/my_os2cond.c:
        Fix to MySQL coding style
        Optimized functions
      mysys/thr_lock.c:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      mysys/thr_mutex.c:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      server-tools/instance-manager/instance.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      server-tools/instance-manager/thread_registry.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      sql/ha_federated.cc:
        Use octet2hex()
      sql/ha_ndbcluster.cc:
        Removed not used variable
      sql/handler.cc:
        Simplify code
        Use *NONE* instead of 'none' for not existing storage engine
        Ensure we call commit_by_xid or rollback_by_xid for all engines, even if one engine has failed
      sql/item.h:
        Remove not needed test for *ref.  (If ref is set, it should never point at 0)
      sql/item_func.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
        Simplify code
        More comments
        Require that last argument to find_and_check_access() is given
        (Made code shorter and faster)
      sql/item_strfunc.cc:
        Changed CHAR() to return result in binary collation
        CHAR(X*65536+Y*256+Z) is now equal to CHAR(X,Y,Z) independent of the character set for CHAR()
        
        Bar will shortly add the following syntax:
        CHAR(.... USING character_set)
        and ensure that
        CONVERT(CHAR(....) USING utf8) cuts not legal utf8 strings
        Use ocet2hex()
      sql/item_strfunc.h:
        CHAR() now returns a binary string
      sql/log_event.cc:
        Use octet2hex()
        Simplify code
      sql/parse_file.cc:
        Indentation fixes
        Use for() instead of while()
      sql/password.c:
        Make octet2hex() more generally usable by returning pointer to end 0
      sql/slave.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      sql/sql_base.cc:
        Indentation fixes
      sql/sql_insert.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      sql/sql_manager.cc:
        Test for both ETIMEDOUT and ETIME from pthread_cond_timedwait()
      sql/sql_parse.cc:
        Don't check thd->db when checking for function privileges
      sql/sql_prepare.cc:
        Fixed wrong merge
      sql/sql_select.cc:
        Fixed new bug for NOT BETWEEN X and X
      sql/sql_show.cc:
        Removed not used variable
      sql/sql_table.cc:
        Indentation fixed
        Removed DBUG_PRINT that is obvious from context
      sql/sql_view.cc:
        Simplify code
      sql/unireg.cc:
        Use octet2hex()
      0ce12f70
  21. 06 Oct, 2005 1 commit
    • unknown's avatar
      Review of code pushed since last 5.0 pull: · c807724f
      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
      c807724f
  22. 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. · 58263844
      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
      58263844
  23. 23 Sep, 2005 1 commit
    • unknown's avatar
      Some minor fixes revealed as warnings by · ab0d7e2a
      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.
      ab0d7e2a
  24. 22 Sep, 2005 1 commit
    • unknown's avatar
      Fix CAST(1.0e+300 TO SIGNED). (Bug #13344) · 13fa84a7
      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.
      13fa84a7
  25. 21 Sep, 2005 1 commit
  26. 08 Sep, 2005 1 commit
  27. 07 Sep, 2005 1 commit
    • unknown's avatar
      Fix bug #12922 if(sum(),...) with group from view returns wrong results · 792221e3
      unknown authored
      Fields of view represented by Item_direct_view_ref. When complex expression
      such as if(sum()>...,...) is splited in simpler parts by refs was ignored.
      Beside this direct ref doesn't use it's result_field and thus can't store
      it's result in tmp table which is needed for sum() ... group.
      All this results in reported bug.
      
      Item::split_sum_func2() now converts Item_direct_view_ref to Item_ref to
      make fields from view being storable in tmp table.
      
      
      sql/item.h:
        Fix bug #12922 if(sum(),...) with group from view returns wrong results
        Added function ref_type() to distinguish Item_ref subclasses
      sql/item.cc:
        Fix bug #12922 if(sum(),...) with group from view returns wrong results
         Item::split_sum_func2() now converts Item_direct_view_ref to Item_ref to make fields from view being storable in tmp table.
      mysql-test/t/view.test:
        Test case for bug#12922 if(sum(),...) with group from view returns wrong results
      mysql-test/r/view.result:
        Test case for bug#12922 if(sum(),...) with group from view returns wrong results
      792221e3
  28. 26 Aug, 2005 1 commit
    • unknown's avatar
      Slightly amended Monty's SP replication code cleanup patch · 9bc3976c
      unknown authored
      sql/item.cc:
        Code cleanup
      sql/item.h:
        Code cleanup
      sql/log.cc:
        Added comments
      sql/sp_head.cc:
        Code cleanup patch from Monty: 
        in subst_spvars()
        - Move local variables first in block
        - Use res|= instead of res |=
        - Use strmake() instead of alloc + memcpy
        Added:
        - Fail the query if we don't have enough memory to produce a binlog-suitable query string: 
          if we're so low on memory we're likely to fail the query anyway, and failing now removes
          the need for hack with THD::query_str_binlog_suitable.
      sql/sql_class.cc:
        Remove THD::query_str_binlog_unsuitable
      sql/sql_class.h:
        Remove THD::query_str_binlog_unsuitable
      sql/sql_delete.cc:
        Remove THD::query_str_binlog_unsuitable
      sql/sql_insert.cc:
        Remove THD::query_str_binlog_unsuitable
      sql/sql_parse.cc:
        Code cleanup
      sql/sql_update.cc:
        Remove THD::query_str_binlog_unsuitable
      9bc3976c
  29. 25 Aug, 2005 2 commits
    • unknown's avatar
      Fix for BUG#12335 (SP replication) : New binlogging strategy for stored PROCEDUREs/FUNCTIONs. · 8a5e5274
      unknown authored
      "Interleaved SPs execution is now binlogged properly, "SELECT spfunc()" is binlogged too.
      The known remaining issue is binlogging/replication of "a routine is deleted while it is executed" scenario.
      
      
      mysql-test/r/rpl_sp.result:
        Fix for BUG#12335: updated test cases/results
      mysql-test/t/rpl_sp.test:
        Fix for BUG#12335: updated test cases/results
      sql/item.cc:
        Fix for BUG#12335 (SP replication): 
         - Added Item_name_const 'function'
         - Addede 'delete reuse' to call dtor on item reuse
      sql/item.h:
        Fix for BUG#12335 (SP replication) : Added Item_name_const 'function' + code cleanup
      sql/item_create.cc:
         Fix for BUG#12335 (SP replication) : Added Item_name_const 'function'
      sql/item_create.h:
         Fix for BUG#12335 (SP replication) : Added Item_name_const 'function'
      sql/item_func.cc:
        Fix for BUG#12335 (SP replication) : binary log is now constrolled from within execute_function.
      sql/lex.h:
        Fix for BUG#12335 (SP replication) : Added Item_name_const 'function'
      sql/log.cc:
        Fix for BUG#12335 (SP replication) : Added MYSQL_LOG::{start|stop}_union_events to allow
        one to temporary disable binlogging but collect a 'union' information about binlog write
        calls.
      sql/mysql_priv.h:
        Fix for BUG#12335 (SP replication)
      sql/sp_head.cc:
        Fix for BUG#12335 (SP replication) : Now we use different SP binlogging strategy, grep for 
        StoredRoutinesBinlogging for details
      sql/sp_head.h:
        Comments added
      sql/sp_pcontext.h:
        Comments added
      sql/sp_rcontext.h:
        Comments added
      sql/sql_class.cc:
        Fix for BUG#12335 (SP replication) : Now we use different SP binlogging strategy, grep for 
        StoredRoutinesBinlogging for details
      sql/sql_class.h:
        Fix for BUG#12335 (SP replication) : Added MYSQL_LOG::{start|stop}_union_events to allow
        one to temporary disable binlogging but collect a 'union' information about binlog write
        calls.
      sql/sql_delete.cc:
        Fix for BUG#12335: check THD::query_str_binlog_unsuitable when writing to binlog.
      sql/sql_insert.cc:
        Fix for BUG#12335: check THD::query_str_binlog_unsuitable when writing to binlog.
      sql/sql_lex.cc:
        Fix for BUG#12335 (SP replication): Add ability to extract previous returned token from
        the tokenizer.
      sql/sql_lex.h:
        Fix for BUG#12335 (SP replication): Add ability to extract previous returned token from
        the tokenizer.
      sql/sql_parse.cc:
        Fix for BUG#12335 (SP replication) : Now we use different SP binlogging strategy, grep for 
        StoredRoutinesBinlogging for details
      sql/sql_update.cc:
        Fix for BUG#12335: check THD::query_str_binlog_unsuitable when writing to binlog.
      sql/sql_yacc.yy:
        Fix for BUG#12335 (SP replication) : When creating Item_splocal, remember where it is located
        in the query.
      8a5e5274
    • unknown's avatar
      Fix Bug#11333 "Stored Procedure: Memory blow up on repeated SELECT ... INTO query" · d29df564
      unknown authored
      mysql-test/r/sp.result:
        update result
      mysql-test/t/sp.test:
        Add test for Bug #11333 "Stored Procedure: Memory blow up on repeated SELECT ... INTO query"
      sql/item.cc:
        we should call destructors for Items before reuse
      sql/item.h:
        Add new method and constructor for Item_string.
      sql/sp_head.cc:
        String allocation should be done on the system heap for now.
      d29df564
  30. 19 Aug, 2005 2 commits
    • unknown's avatar
      Bug#11338 Fixes from review (identical functionality). · 1b970e94
      unknown authored
      include/my_sys.h:
        Fixes from review (use version in log_event.cc instead)
      mysql-test/r/ctype_cp932.result:
        Updated test for bug#11338 (logging of prepared statement w/ blob type)
      mysql-test/t/ctype_cp932.test:
        udpated test for bug#11338 (logging of prepared statement w/ blob type)
      mysys/charset.c:
        Fixes from review (use version in log_event.cc instead)
      sql/item.cc:
        Fixes from review (store character_set_client differently so that
        fix can be merged forward to 5.0)
      sql/item.h:
        Fixes from review
      sql/log_event.cc:
        Fixes from review, str_to_hex is now used by item.cc
      sql/log_event.h:
        Added prototype for str_to_hex (now used by item.cc)
      sql/sql_prepare.cc:
        Fixes from review, store character_set_client differently so that 
        Item_param::query_val_str can use it.
      1b970e94
    • unknown's avatar
      WL#2486 - natural and using join according to SQL:2003 · 1cb72d7e
      unknown authored
      - Corrected problem with N-way nested natural joins in PS mode.
      - Code cleanup
      - More asserts to check consistency of name resolution contexts
      - Fixed potential memory leak of name resolution contexts
      
      
      mysql-test/r/join.result:
        - Corrected problem with N-way nested natural joins in PS mode.
      mysql-test/t/join.test:
        - Corrected problem with N-way nested natural joins in PS mode.
      sql/item.h:
        - Fixed potential memory leak.
      sql/sql_base.cc:
        - the local context of Item_fields that participate in TABLE_LIST::on_cond for
          natural joins is correctly set to the tables where the corresponding fields
          originate from.
        - removed unused variables
        - correct allocation of contexts
      sql/sql_parse.cc:
        - correct allocation of contexts for JOIN ON conditions.
      sql/table.cc:
        - added asserts to check the consistency of name resolution contexts
      sql/table.h:
        - added asserts to check the consistency of name resolution contexts
      1cb72d7e
  31. 17 Aug, 2005 1 commit
    • unknown's avatar
      BUG#11338 (logging of prepared statement w/ blob type) · a29b1d71
      unknown authored
      In cp932, '\' character can be the second byte in a 
      multi-byte character stream. This makes it difficult to use
      mysql_escape_string. Added flag to indicate which languages allow
      '\' as second byte of multibyte sequence so that when putting a prepared
      statement into the binlog we can decide at runtime whether hex encoding
      is really needed.
      
      
      include/m_ctype.h:
        Added bool to indicate character sets which allow '\' as the second
        byte of a multibyte character set (currently only cp932). For these
        character sets, escaping with '\' is dangerous and leads to corruption
        in replication.
      include/my_sys.h:
        Add function to enocde a string as hex with no prefix (bare)
      mysys/charset.c:
        Add function to encode string as hex with no prefix (bare).
      sql/item.cc:
        Check the connection character set to see if escape_string_for_mysql
        is safe, or if character set requires unambiguous (hex) encoding
      sql/item.h:
        Pass thd to query_val_str for access to charset()
      sql/sql_prepare.cc:
        Pass thd to query_val_str.
      strings/ctype-big5.c:
        Add escape_with_backslash_is_dangerous flag.
      strings/ctype-bin.c:
        Add escape_with_backslash_is_dangerous flag
      strings/ctype-cp932.c:
        Add escape_with_backslash_is_dangerous flag.
      strings/ctype-czech.c:
        Add escape_with_backslash_is_dangerous flag.
      strings/ctype-euc_kr.c:
        Add escape_with_backslash_is_dangerous flag.
      strings/ctype-extra.c:
        Add escape_with_backslash_is_dangerous flag.
      strings/ctype-gb2312.c:
        Add escape_with_backslash_is_dangerous flag.
      strings/ctype-gbk.c:
        Added escape_with_backslash_is_dangerous flag.
      strings/ctype-latin1.c:
        Added escape_with_backslash_is_dangerous flag.
      strings/ctype-sjis.c:
        Added escape_with_backslash_is_dangerous flag.
      strings/ctype-tis620.c:
        Added esacpe_with_backslash_character_is_dangerous flag.
      strings/ctype-uca.c:
        Added escape_with_backslash_is_dangerous flag.
      strings/ctype-ucs2.c:
        Added escape_with_backslash_is_dangerous.
      strings/ctype-ujis.c:
        Added escape_with_backslash_is_dangerous flag.
      strings/ctype-utf8.c:
        Added escape_with_backslash_is_dangerous.
      strings/ctype-win1250ch.c:
        Added escape_with_backslash_is_dangerous.
      a29b1d71
  32. 13 Aug, 2005 1 commit
    • unknown's avatar
      fixed convertion and handling IN subqueries with rows (BUG#11867) · 19b4760f
      unknown authored
      mysql-test/r/subselect.result:
        testst of IN subqueries with row
      mysql-test/t/subselect.test:
        tests of ion subqueries with row
      sql/item.h:
        add method to prevent of removing Item_ref_null_helper from HAVING
      sql/item_cmpfunc.h:
        Prevented removing of Item_test_isnotnull from HAVING
      sql/item_subselect.cc:
        fixed converting row IN subqueries
      sql/sql_select.cc:
        fixed debug print
      19b4760f
  33. 12 Aug, 2005 1 commit
    • unknown's avatar
      Implementation of WL#2486 - · 7517d7e1
      unknown authored
      "Process NATURAL and USING joins according to SQL:2003".
      
      * Some of the main problems fixed by the patch:
        - in "select *" queries the * expanded correctly according to
          ANSI for arbitrary natural/using joins
        - natural/using joins are correctly transformed into JOIN ... ON
          for any number/nesting of the joins.
        - column references are correctly resolved against natural joins
          of any nesting and combined with arbitrary other joins.
      
      * This patch also contains a fix for name resolution of items
        inside the ON condition of JOIN ... ON - in this case items must
        be resolved only against the JOIN operands. To support such
        'local' name resolution, the patch introduces a stack of
        name resolution contexts used at parse time.
      
      NOTICE:
      - This patch is not complete in the sense that
        - there are 2 test cases that still do not pass -
          one in join.test, one in select.test. Both are marked
          with a comment "TODO: WL#2486".
        - it does not include a new test specific for the task
      
      
      mysql-test/include/ps_query.inc:
        Adjusted according to standard NATURAL/USING join semantics.,
      mysql-test/r/bdb.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/derived.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/errors.result:
        The column as a whole cannot be resolved, so different error message.
      mysql-test/r/fulltext.result:
        Adjusted according to standard JOIN ... ON semantics =>
        the ON condition can refer only to the join operands.
      mysql-test/r/fulltext_order_by.result:
        More detailed error message.
      mysql-test/r/innodb.result:
        Adjusted according to standard NATURAL/USING join semantics.
        This test doesn't pass completetly yet!
      mysql-test/r/insert_select.result:
        More detailed error message.
      mysql-test/r/join.result:
        Adjusted according to standard NATURAL/USING join semantics.
        
        NOTICE: there is one test case that still fails, and it is
        commeted out and marked with WL#2486 in the test file.
      mysql-test/r/join_crash.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/join_nested.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/join_outer.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/multi_update.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/null_key.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/order_by.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_2myisam.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_3innodb.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_4heap.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_5merge.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_6bdb.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/ps_7ndb.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/select.result:
        Adjusted according to standard NATURAL/USING join semantics.
        
        NOTICE: there is one failing test case which is commented with
        WL#2486 in the test file.
      mysql-test/r/subselect.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/type_ranges.result:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/r/union.result:
        More detailed error message.
      mysql-test/t/bdb.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/errors.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/fulltext.test:
        Adjusted according to standard JOIN ... ON semantics =>
        the ON condition can refer only to the join operands.
      mysql-test/t/fulltext_order_by.test:
        More detailed error message.
      mysql-test/t/innodb.test:
        Adjusted according to standard NATURAL/USING join semantics.
        This test doesn't pass completetly yet!
      mysql-test/t/insert_select.test:
        More detailed error message.
      mysql-test/t/join.test:
        Adjusted according to standard NATURAL/USING join semantics.
        
        NOTICE: there is one test case that still fails, and it is
        commeted out and marked with WL#2486 in the test file.
      mysql-test/t/join_crash.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/join_nested.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/join_outer.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/null_key.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/order_by.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/select.test:
        Adjusted according to standard NATURAL/USING join semantics.
        
        NOTICE: there is one test case that still fails, and it is
        commeted out and marked with WL#2486 in the test file.
      mysql-test/t/subselect.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/type_ranges.test:
        Adjusted according to standard NATURAL/USING join semantics.
      mysql-test/t/union.test:
        More detailed error message.
      sql/item.cc:
        - extra parameter to find_field_in_tables
        - find_field_in_real_table renamed to find_field_in_table
        - fixed comments/typos
      sql/item.h:
        - added [first | last]_name_resolution_table to class
          Name_resolution_context
        - commented old code
        - standardized formatting
      sql/mysql_priv.h:
        - refactored the find_field_in_XXX procedures,
        - added a new procedure for natural join table references,
        - renamed the find_field_in_XXX procedures to clearer names
      sql/sp.cc:
        - pass the top-most list of the FROM clause to setup_tables
        - extra parameter to find_field_in_tables
      sql/sql_acl.cc:
        - renamed find_field_in_table => find_field_in_table_ref
        - extra parameter to find_field_in_table_ref
        - commented old code
      sql/sql_base.cc:
        This file contains the core of the implementation of the processing
        of NATURAL/USING joins (WL#2486).
        - added many comments to old code
        - refactored the group of find_field_in_XXX procedures, and added a
          new procedure for natural joins. There is one find_field_in_XXX procedure
          per each type of table reference (stored table, merge view, or natural
          join); one meta-procedure that selects the correct one depeneding on the
          table reference; and one procedure that goes over a list of table
          referenes.
        - NATURAL/USING joins are processed through the procedures:
            mark_common_columns, store_natural_using_join_columns,
            store_top_level_join_columns, setup_natural_join_row_types.
          The entry point to processing NATURAL/USING joins is the
          procedure 'setup_natural_join_row_types'.
        - Replaced the specialized Field_iterator_XXX iterators with one
          generic iterator over the fields of a table reference.
        - Simplified 'insert_fields' and 'setup_conds' due to encapsulation of
          the processing of natural joins in a separate set of procedures.
      sql/sql_class.h:
        - Commented old code.
      sql/sql_delete.cc:
        - Pass the FROM clause to setup_tables.
      sql/sql_help.cc:
        - pass the end name resolution table to find_field_in_tables
        - adjust the list of tables for name resolution
      sql/sql_insert.cc:
        - Changed the code that saves and restores the current context to
          support the list of tables for name resolution -
          context->first_name_resolution_table, and
          table_list->next_name_resolution_table.
          Needed to support an ugly trick to resolve inserted columns only in
          the first table.
        - Added Name_resolution_context::[first | last]_name_resolution_table.
        - Commented old code
      sql/sql_lex.cc:
        - set select_lex.parent_lex correctly
        - set correct state of the current name resolution context
      sql/sql_lex.h:
        - Added a stack of name resolution contexts to support local
          contexts for JOIN ... ON conditions.
        - Commented old code.
      sql/sql_load.cc:
        - Pass the FROM clause to setup_tables.
      sql/sql_olap.cc:
        - Pass the FROM clause to setup_tables.
      sql/sql_parse.cc:
        - correctly set SELECT_LEX::parent_lex
        - set the first table of the current name resoltion context
        - added support for NATURAL/USING joins
        - commented old code
      sql/sql_select.cc:
        - Pass the FROM clause to setup_tables.
        - Pass the end table to find_field_in_tables
        - Improved comments
      sql/sql_show.cc:
        - Set SELECT_LEX::parent_lex.
      sql/sql_update.cc:
        - Pass the FROM clause to setup_tables.
      sql/sql_yacc.yy:
        - Added support for a stack of name resolution contexts needed to
          implement name resolution for JOIN ... ON. A context is pushed
          for each new JOIN ... ON, and popped afterwards.
        - Added support for NATURAL/USING joins.
      sql/table.cc:
        - Added new class Natural_join_column to hide the heterogeneous
          representation of column references for stored tables and for
          views.
        - Added a new list TABLE_LIST::next_name_resolution_table to
          support name resolution with NATURAL/USING joins. Also added
          other members to TABLE_LIST to support NATURAL/USING joins.
        - Added a generic iterator over the fields of table references
          of various types - class Field_iterator_table_ref
      sql/table.h:
        - Added new class Natural_join_column to hide the heterogeneous
          representation of column references for stored tables and for
          views.
        - Added a new list TABLE_LIST::next_name_resolution_table to
          support name resolution with NATURAL/USING joins. Also added
          other members to TABLE_LIST to support NATURAL/USING joins.
        - Added a generic iterator over the fields of table references
          of various types - class Field_iterator_table_ref
      tests/mysql_client_test.c:
        Adjusted according to standard NATURAL JOIN syntax.
      7517d7e1
  34. 06 Aug, 2005 1 commit
    • unknown's avatar
      Bug#12371 executing prepared statement fails (illegal mix of collations) · c03d28b8
      unknown authored
      item.cc:
      item.h:
        Adding Item_param::safe_charset_converter,
        not to return collation mix error if
        parameter can be converted into operation
        character set.
      
      ctype_utf8.result:
        adding test case
      ctype_utf8.test:
        adding test case
      
      
      sql/item.h:
        Bug #12371 executing prepared statement fails (illegal mix of collations)
        Adding Item_param::safe_charset_converter,
        not to returm collation mix error if
        parameter can be converted into operation
        character set.
      sql/item.cc:
        Bug #12371 executing prepared statement fails (illegal mix of collations)
      mysql-test/t/ctype_utf8.test:
        adding test case
      mysql-test/r/ctype_utf8.result:
        adding
      c03d28b8
  35. 31 Jul, 2005 1 commit
    • unknown's avatar
      Fixes during review of new pushed code · 6b3478ec
      unknown authored
      Change bool in C code to my_bool
      Added to mysqltest --enable_parsning and --disable_parsing to avoid to have to comment parts of tests
      Added comparison of LEX_STRING's and use this to compare file types for view and trigger files.
      
      
      client/client_priv.h:
        Added OPT_TRIGGERS (to get rid of compiler warning)
      client/mysql.cc:
        Added cast to get rid of compiler warning
      client/mysqldump.c:
        Added OPT_TRIGGERS (to get rid of compiler warning)
        Abort if we can't write to outfile (even if --ignore-errors is given)
      client/mysqltest.c:
        Added --enable_parsning and --disable_parsing to avoid to have to comment parts of tests
      include/my_sys.h:
        Make my_progname const
      include/my_time.h:
        Avoid using 'bool' in C programs
      mysql-test/lib/init_db.sql:
        Align with mysql_create_system_tables
        (Ideally this file should be auto-generated from the above script)
      mysql-test/r/mysqltest.result:
        Test for --enable_parsing
      mysql-test/r/variables.result:
        Update results after fix for overflow checking of max_heap_table_size
      mysql-test/t/information_schema.test:
        USe --enable/disable parsing instead of comments
      mysql-test/t/mysqltest.test:
        Test for --enable_parsing
      mysql-test/t/sp.test:
        USe --enable/disable parsing instead of comments
      mysql-test/t/variables.test:
        Portability fix for 64 bit systems
      mysql-test/t/view.test:
        USe --enable/disable parsing instead of comments
      mysys/my_init.c:
        May my_progname const
      mysys/my_static.c:
        May my_progname const
      mysys/thr_lock.c:
        Remove not needed casts
      sql-common/my_time.c:
        Change bool -> my_bool as bool is not portable in C programs
      sql/field.cc:
        Test number_to_datetime() for -1 instead of < 0 (Safety fix)
        New prototype for TIME_to_timestamp()
      sql/item.h:
        Don't have prototypes for both uint32 and ulong as these 'may' be the same thing
      sql/item_timefunc.cc:
        New prototype for TIME_to_timestamp()
      sql/log.cc:
        Remove compiler warnings
      sql/mysql_priv.h:
        New prototype for TIME_to_timestamp()
        Added function for comparing LEX_STRING
      sql/set_var.cc:
        Added overflow checking when setting ulong variable
      sql/sql_base.cc:
        Added function is_equal()
        Changed strncmp -> is_equal() as strncmp() to not match "V" (instead of "VIEW")
      sql/sql_class.cc:
        Added comment
      sql/sql_select.cc:
        Portability fixes
        After review fixes
      sql/sql_trigger.cc:
        Use 'tables_alias_charset' for comparing database name
        Use 'is_equal()' to compare file type. (Old code didn't do the comparison correctly)
      sql/sql_view.cc:
        Use 'is_equal()' to compare file type. (Old code didn't do the comparison correctly)
      sql/time.cc:
        New prototype for TIME_to_timestamp() to allow easyer mapping to C function
      sql/tztime.cc:
        bool -> my_bool (to allow calling C code from C++ code)
      sql/tztime.h:
        bool -> my_bool (to allow calling C code from C++ code)
      6b3478ec
  36. 26 Jul, 2005 2 commits
    • unknown's avatar
      item.h: · 4903707c
      unknown authored
        Post review change in Item_ref::get_tmp_table_field (bug #11412).
      
      
      sql/item.h:
        Post review change in Item_ref::get_tmp_table_field (bug #11412).
      4903707c
    • unknown's avatar
      func_gconcat.result, func_gconcat.test: · 8624bcfd
      unknown authored
        Adding test
      item_sum.cc:
        Adding a call for collation/charset aggregation,
            to collect attributes from the arguments. The actual bug fix.
      item_func.h, item_func.cc, item.h, item.cc:
        - Removing collation aggrgation functions from Item_func class
            in item.cc, and adding it as non-class functions in item.cc
            to be able to reuse this code for group_concat.
            - Adding replacement for these functions into Item_func class
            as wrappers for moved functions, to minizize patch size,
      
      
      sql/item.cc:
        - Removing collation aggrgation functions from Item_func class
            in item.cc, and adding it as non-class functions in item.cc
            to be able to reuse this code for group_concat.
            - Adding replacement for these functions into Item_func class
            as wrappers for moved functions, to minizize patch size,
      sql/item.h:
        - Removing collation aggrgation functions from Item_func class
            in item.cc, and adding it as non-class functions in item.cc
            to be able to reuse this code for group_concat.
            - Adding replacement for these functions into Item_func class
            as wrappers for moved functions, to minizize patch size,
      sql/item_func.cc:
        - Removing collation aggrgation functions from Item_func class
            in item.cc, and adding it as non-class functions in item.cc
            to be able to reuse this code for group_concat.
            - Adding replacement for these functions into Item_func class
            as wrappers for moved functions, to minizize patch size,
      sql/item_func.h:
        - Removing collation aggrgation functions from Item_func class
            in item.cc, and adding it as non-class functions in item.cc
            to be able to reuse this code for group_concat.
            - Adding replacement for these functions into Item_func class
            as wrappers for moved functions, to minizize patch size,
      sql/item_sum.cc:
        Adding a call for collation/charset aggregation,
            to collect attributes from the arguments. The actual bug fix.
      mysql-test/t/func_gconcat.test:
        Adding test
      mysql-test/r/func_gconcat.result:
        Adding test
      8624bcfd