1. 25 Aug, 2007 1 commit
    • unknown's avatar
      sql_select.cc: · 5b03876f
      unknown authored
        Additional fix for the bug#30245.
      
      
      sql/sql_select.cc:
        Additional fix for the bug#30245.
      5b03876f
  2. 24 Aug, 2007 1 commit
  3. 23 Aug, 2007 1 commit
  4. 22 Aug, 2007 2 commits
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0-opt-30201 · 10329092
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      
      
      10329092
    • unknown's avatar
      Fixed bug #30201. · 891b1659
      unknown authored
      Killing a SELECT query with KILL QUERY or KILL CONNECTION
      causes a server crash if the query cache is enabled.
      
      Normal evaluation of a query may be interrupted by the
      KILL QUERY/CONNECTION statement, in this case the mysql_execute_command
      function returns TRUE, and the thd->killed flag has true value.
      In this case the result of the query may
      be cached incompletely (omitting call to query_cache_insert inside
      the net_real_write function), and next call to query_cache_end_of_result
      may lead to server crash.
      Thus, the query_cache_end_of_result function has been modified to abort
      query cache in the case of killed thread.
      
      
      
      sql/sql_cache.cc:
        Fixed bug #30201.
        The  query_cache_end_of_result function has been modified to abort query
        cache in the case of query execution failure. Also this function has been
        modified to remove incomplete query block.
      891b1659
  5. 21 Aug, 2007 8 commits
  6. 20 Aug, 2007 4 commits
    • unknown's avatar
      Fixed bug #30287. · 7c3d5bc5
      unknown authored
      The server created temporary tables for filesort in the working directory
      instead of the specified tmpdir directory.
      
      
      sql/item.cc:
        Fixed bug #30287.
        The Item_field::set_field method has been modified to reset the any_privileges
        flag to false in case of system temporary table. This modification prevents the
        server from unnecessary checking of user privileges to access system temporary
        tables.
      sql/sql_select.cc:
        Fixed bug #30287.
        Bugfix for #29015 has been removed: TABLE_SHARE::table_name of system
        temporary tables contains full path to table file basename again.
      sql/sql_view.cc:
        Fixed bug #30287.
        Commentary has been added.
      7c3d5bc5
    • unknown's avatar
      Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base · 3c52b2b3
      unknown authored
      into  weblab.(none):/home/marcsql/TREE/mysql-5.0-rt-merge
      
      
      sql/sql_base.cc:
        Auto merged
      sql/sql_handler.cc:
        Auto merged
      3c52b2b3
    • unknown's avatar
      Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · d48e35b9
      unknown authored
      into  mysql.com:/home/gluh/MySQL/Merge/5.0-opt
      
      
      d48e35b9
    • unknown's avatar
      Bug#27629 Possible security flaw in INFORMATION_SCHEMA and SHOW statements · 29ee5ed0
      unknown authored
      added SUPER_ACL check for I_S.TRIGGERS
      
      
      mysql-test/r/information_schema.result:
        result fix
      mysql-test/r/information_schema_db.result:
        result fix
      mysql-test/t/information_schema.test:
        test case
      sql/sql_show.cc:
        added SUPER_ACL check for I_S.TRIGGERS
      29ee5ed0
  7. 18 Aug, 2007 1 commit
  8. 17 Aug, 2007 4 commits
    • unknown's avatar
      Merge adventure.(none):/home/thek/Development/cpp/bug30269/my50-bug30269 · 3ff26995
      unknown authored
      into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
      
      
      mysql-test/r/query_cache.result:
        Auto merged
      mysql-test/t/query_cache.test:
        Auto merged
      3ff26995
    • unknown's avatar
      Bug #30269 Query cache eats memory · bd80048f
      unknown authored
      Although the query cache doesn't support retrieval of statements containing
      column level access control, it was still possible to cache such statements
      thus wasting memory.
      
      This patch extends the access control check on the target tables to avoid
      caching a statement with column level restrictions. 
      
      
      mysql-test/r/query_cache.result:
        Added test
      mysql-test/t/query_cache.test:
        Added test
      sql/sql_cache.cc:
        The function check_table_access leaves the artifact
        grant.want_privileges= 1, if a statement refers to tables with column level
        privileges. To avoid the statement from being stored into the query cache,
        it is enough to check this flag and set 'safe_to_cache_query' to zero.
      sql/sql_cache.h:
        - Removed 'static' attribute or class methods
        - Added THD parameter to process_and_count_tables
      bd80048f
    • unknown's avatar
      Bug#30245: A wrong type of a BIT field is reported when grouped by it. · d280a06e
      unknown authored
      HEAP tables can't index BIT fields. Due to this when grouping by such fields is
      needed they are converted to a fields of the LONG type when temporary table
      is being created. But a side effect of this is that a wrong type of BIT
      fields is returned to a client.
      
      Now the JOIN::prepare and the create_distinct_group functions are create
      additional hidden copy of BIT fields to preserve original fields untouched.
      New hidden fields are used for grouping instead.
      
      
      mysql-test/t/type_bit.test:
        Added a test case for the bug#30245: A wrong type of a BIT field is reported when grouped by it.
      mysql-test/r/type_bit.result:
        Added a test case for the bug#30245: A wrong type of a BIT field is reported when grouped by it.
      sql/sql_select.cc:
        Bug#30245: A wrong type of a BIT field is reported when grouped by it.
        Now the JOIN::prepare and the create_distinct_group functions are create
        additional hidden copy of BIT fields to preserve original fields untouched.
        New hidden fields are used for grouping instead.
      d280a06e
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 92abaeee
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug30396
      
      
      92abaeee
  9. 16 Aug, 2007 3 commits
  10. 15 Aug, 2007 10 commits
    • unknown's avatar
      NULL MERGE this ChangeSet to 5.1 · 05dd9e49
      unknown authored
      Apply innodb-5.0-ss1696 snapshot
      
      Fixes:
      - Bug#20090: InnoDB: Error: trying to declare trx to enter InnoDB
      - Bug#23710: crash_commit_before fails if innodb_file_per_table=1
        At InnoDB startup consider the case where log scan went beyond
        checkpoint_lsn as a crash and initiate crash recovery code path.
      - Bug#28781: InnoDB increments auto-increment value incorrectly with ON DUPLICATE KEY UPDATE
        We need to do some special AUTOINC handling for the following case:
        INSERT INTO t (c1,c2) VALUES(x,y) ON DUPLICATE KEY UPDATE ...
        We need to use the AUTOINC counter that was actually used by
        MySQL in the UPDATE statement, which can be different from the
        value used in the INSERT statement.
      - Bug#29097: fsp_get_available_space_in_free_extents() is capped at 4TB
        Fix by typecasting the variables before multiplying them, so that the
        result of the multiplication is of type "unsigned long long".
      - Bug#29155: Innodb "Parallel recovery" is not prevented
        Fix by enabling file locking on FreeBSD.  It has been disabled because
        InnoDB has refused to start on FreeBSD & LinuxThreads, but now it
        starts just fine.
      
      
      innobase/fsp/fsp0fsp.c:
        Apply innodb-5.0-ss1696 snapshot
        
        Revision r1614:
        branches/5.0:
        
        Merge r1605 from trunk:
        
        Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
        by typecasting the variables before multiplying them, so that the result of
        the multiplication is of type "unsigned long long".
        
        I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
        use it without overwriting it with zeroes (by commenting the code that
        overwrites :newraw files).
        
        New type ullint is introduced with the sole purpose of shortening
        "unsigned long long", please do not define it to something else than
        "unsigned long long".
        
        Approved by:	Heikki
      innobase/include/fsp0fsp.h:
        Apply innodb-5.0-ss1696 snapshot
        
        Revision r1614:
        branches/5.0:
        
        Merge r1605 from trunk:
        
        Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
        by typecasting the variables before multiplying them, so that the result of
        the multiplication is of type "unsigned long long".
        
        I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
        use it without overwriting it with zeroes (by commenting the code that
        overwrites :newraw files).
        
        New type ullint is introduced with the sole purpose of shortening
        "unsigned long long", please do not define it to something else than
        "unsigned long long".
        
        Approved by:	Heikki
      innobase/include/univ.i:
        Apply innodb-5.0-ss1696 snapshot
        
        Revision r1614:
        branches/5.0:
        
        Merge r1605 from trunk:
        
        Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
        by typecasting the variables before multiplying them, so that the result of
        the multiplication is of type "unsigned long long".
        
        I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
        use it without overwriting it with zeroes (by commenting the code that
        overwrites :newraw files).
        
        New type ullint is introduced with the sole purpose of shortening
        "unsigned long long", please do not define it to something else than
        "unsigned long long".
        
        Approved by:	Heikki
      innobase/log/log0recv.c:
        Apply innodb-5.0-ss1696 snapshot
        
        Revision r1608:
        branches/5.0: Bug#23710
        Back port of r1607 from trunk
        
        At InnoDB startup consider the case where log scan went beyond checkpoint_lsn as a crash and initiate crash recovery code path.
        
        reviewed by: Heikki
      innobase/os/os0file.c:
        Apply innodb-5.0-ss1696 snapshot
        
        Revision r1615:
        branches/5.0:
        
        Merge r1613 from trunk:
        
        Fix Bug#29155 by enabling file locking on FreeBSD.
        It has been disabled because InnoDB has refused to start on
        FreeBSD & LinuxThreads, but now it starts just fine.
        
        Approved by:	Heikki
      innobase/srv/srv0srv.c:
        Apply innodb-5.0-ss1696 snapshot
        
        Revision r1552:
        branches/5.0:
        Fix Bug#20090 as suggested in the bug followup by Heikki.
        
        Approved by:	Heikki
      innobase/trx/trx0trx.c:
        Apply innodb-5.0-ss1696 snapshot
        
        Revision r1596:
        branches/5.0: Merge r1595 from trunk:
        
        trx_commit_for_mysql(): Avoid acquiring and releasing kernel_mutex when
        trx->sess or trx_dummy_sess is non-NULL.
      sql/ha_innodb.cc:
        Apply innodb-5.0-ss1696 snapshot
        
        Revision r1614:
        branches/5.0:
        
        Merge r1605 from trunk:
        
        Fix Bug#29097 "fsp_get_available_space_in_free_extents() is capped at 4TB"
        by typecasting the variables before multiplying them, so that the result of
        the multiplication is of type "unsigned long long".
        
        I verified this fix by creating a sparse file of 6TB and forcing InnoDB to
        use it without overwriting it with zeroes (by commenting the code that
        overwrites :newraw files).
        
        New type ullint is introduced with the sole purpose of shortening
        "unsigned long long", please do not define it to something else than
        "unsigned long long".
        
        Approved by:	Heikki
        
        
        Revision r1695:
        branches/5.0: Merge a change from MySQL AB:
        
        ChangeSet@1.2463.166.1  2007-06-20 19:22:27+03:00  monty@mysql.fi
        
        Allow multiple calls to mysql_server_end()
        (Part of fix for Bug 25621 Error in my_thread_global_end(): 1 threads
        didn't exit)
        Give correct error message if InnoDB table is not found
        (This allows us to drop a an innodb table that is not in the InnoDB registery)
        
        ha_innodb.cc:
          Give correct error message if InnoDB table is not found.
          (This allows us to drop a an innodb table that is not in the InnoDB
          registery)
        
        
        Revision r1606:
        branches/5.0: Formatting corrections.
        
        spotted by: Vasil
        
        
        Revision r1691:
        branches/5.0: Merge a change from MySQL AB:
        
        ChangeSet@1.2463.261.1  2007-07-20 14:17:15+03:00  gkodinov@magare.gmz
          Bug 29644: alter table hangs if records locked in share mode 
          by long running transaction
          
          On Windows opened files can't be deleted. There was a special
          upgraded lock mode (TL_WRITE instead of TL_WRITE_ALLOW_READ) 
          in ALTER TABLE to make sure nobody has the table opened
          when deleting the old table in ALTER TABLE. This special mode
          was causing ALTER TABLE to hang waiting on a lock inside InnoDB.
          This special lock is no longer necessary as the server is 
          closing the tables it needs to delete in ALTER TABLE.
          Fixed by removing the special lock.
          Note that this also reverses the fix for bug 17264 that deals with
          another consequence of this special lock mode being used.
        
        sql/ha_innodb.cc: Bug 29644: reverse the (now excessive) fix
        for bug 17264 (but leave the test case).
        
        
        Revision r1601:
        branches/5.0: Fix for bug#28781
        We need to do some special AUTOINC handling for the following case:
        
        INSERT INTO t (c1,c2) VALUES(x,y) ON DUPLICATE KEY UPDATE ...
        
        We need to use the AUTOINC counter that was actually used by
        MySQL in the UPDATE statement, which can be different from the
        value used in the INSERT statement.
        
        approved by: Sunny
        
        
        Revision r1692:
        branches/5.0: Merge a change from MySQL AB:
        
        ChangeSet@1.2463.267.1  2007-07-30 17:14:34+04:00  evgen@local
          Bug 24989: The DEADLOCK error is improperly handled by InnoDB.
          
          When innodb detects a deadlock it calls ha_rollback_trans() to rollback the 
          main transaction. But such action isn't allowed from inside of triggers and
          functions. When it happen the 'Explicit or implicit commit' error is thrown
          even if there is no commit/rollback statements in the trigger/function. This
          leads to the user confusion.
          
          Now the convert_error_code_to_mysql() function doesn't call the 
          ha_rollback_trans() function directly but rather calls the
          mark_transaction_to_rollback function and returns an error.
          The sp_rcontext::find_handler() now doesn't allow errors to be caught by the
          trigger/function error handlers when the thd->is_fatal_sub_stmt_error flag
          is set. Procedures are still allowed to catch such errors.
          The sp_rcontext::find_handler function now accepts a THD handle as a parameter.
          The transaction_rollback_request and the is_fatal_sub_stmt_error flags are 
          added to the THD class. The are initialized by the THD class constructor.
          Now the ha_autocommit_or_rollback function rolls back main transaction
          when not in a sub statement and the thd->transaction_rollback_request
          is set.
          The THD::restore_sub_statement_state function now resets the 
          thd->is_fatal_sub_stmt_error flag on exit from a sub-statement.
        
        innodb-big.test, innodb-big.result:
          Added a test case for the bug 24989: The DEADLOCK error is improperly
          handled by InnoDB.
        
        sql/ha_innodb.cc:
          Bug 24989: The DEADLOCK error is improperly handled by InnoDB.
          Now the convert_error_code_to_mysql() function doesn't call the
          ha_rollback_trans() function directly but rather calls the
          mark_transaction_to_rollback function and returns an error.
        
        
        Revision r1693:
        branches/5.0: Merge a change from MySQL AB:
        
        ChangeSet@1.2489.5.1  2007-07-31 17:42:48+04:00  evgen@local
          ha_innodb.cc:
            Warning fixed.
      05dd9e49
    • unknown's avatar
      Merge ramayana.hindu.god:/home/tsmith/m/bk/50 · 0739c70e
      unknown authored
      into  ramayana.hindu.god:/home/tsmith/m/bk/maint/50
      
      
      0739c70e
    • unknown's avatar
      Rework doxygen documentation for the function mysql_ha_close_table. · a0ed0ea1
      unknown authored
      
      sql/sql_handler.cc:
        Add missing parameter to the @param tag and fix style.
      a0ed0ea1
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge · 8c5bb9da
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      8c5bb9da
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl · c6f10a56
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      c6f10a56
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-4.1-rpl · 7a7674c8
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-4.1-merge
      
      
      7a7674c8
    • unknown's avatar
      Fixed bug #30396. · a8f8e548
      unknown authored
      The bug caused memory corruption for some queries with top OR level
      in the WHERE condition if they contained equality predicates and 
      other sargable predicates in disjunctive parts of the condition.
      
      The corruption happened because the upper bound of the memory
      allocated for KEY_FIELD and SARGABLE_PARAM internal structures
      containing info about potential lookup keys was calculated incorrectly
      in some cases. In particular it was calculated incorrectly when the
      WHERE condition was an OR formula with disjuncts being AND formulas
      including equalities and other sargable predicates.
      
      
      mysql-test/r/select.result:
        Added a test case for bug #30396.
      mysql-test/t/select.test:
        Added a test case for bug #30396.
      sql/item_cmpfunc.h:
        Removed max_members from the COND_EQUAL class as not useful anymore.
      sql/sql_base.cc:
        Added the max_equal_elems field to the st_select_lex structure.
      sql/sql_lex.cc:
        Added the max_equal_elems field to the st_select_lex structure.
      sql/sql_lex.h:
        Added the max_equal_elems field to the st_select_lex structure.
        The field contains the maximal number of elements in multiple equalities
        built for the query conditions.
      sql/sql_select.cc:
        Fixed bug #30396.
        The bug caused memory corruption for some queries with top OR level
        in the WHERE condition if they contained equality predicates and 
        other sargable predicates in disjunctive parts of the condition.
        
        The corruption happened because the upper bound of the memory
        allocated for KEY_FIELD and SARGABLE_PARAM internal structures
        containing info about potential lookup keys was calculated incorrectly
        in some cases. In particular it was calculated incorrectly when the
        WHERE condition was an OR formula with disjuncts being AND formulas
        including equalities and other sargable predicates.
         
        The max_equal_elems field to the st_select_lex structure is used now
        to calculate the above mentioned upper bound. The field contains the
        maximal number of elements in multiple equalities built for the query
        conditions.
      a8f8e548
    • unknown's avatar
      Bug#25856 (HANDLER table OPEN in one connection lock DROP TABLE in another one) · 9c1ffac0
      unknown authored
      mysql_ha_open calls mysql_ha_close on the error path (unsupported) to close the (opened) table before inserting it into the tables hash list handler_tables_hash) but mysql_ha_close only closes tables which are on the hash list, causing the table to be left open and locked.
      
      This change moves the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close (mysql_ha_close).
      
      
      mysql-test/r/handler.result:
        Bug#25856 test result
      mysql-test/t/handler.test:
        Bug#25856 test case
      sql/sql_handler.cc:
        Move the table close logic into a separate function that is always called on the error path of mysql_ha_open or on a normal handler close
      9c1ffac0
    • unknown's avatar
      mysql_client_test.c: · bbf2211b
      unknown authored
        Post fix for the bug#29948.
      
      
      tests/mysql_client_test.c:
        Post fix for the bug#29948.
      bbf2211b
    • unknown's avatar
      bug#28570: handler::index_read() is called with different find_flag when · 01f8130a
      unknown authored
      ORDER BY is used
      
      The range analysis module did not correctly signal to the 
      handler that a range represents a ref (EQ_RANGE flag). This causes 
      non-range queries like 
      SELECT ... FROM ... WHERE keypart_1=const, ..., keypart_n=const 
      ORDER BY ... FOR UPDATE
      to wait for a lock unneccesarily if another running transaction uses
      SELECT ... FOR UPDATE on the same table.
      
      Fixed by setting EQ_RANGE for all range accesses that represent 
      an equality predicate. 
      
      
      mysql-test/r/innodb_mysql.result:
        bug#28570: Test Result
      mysql-test/t/innodb_mysql.test:
        bug#28570: Test Case
      sql/handler.cc:
        bug#28570: Updated comment
      sql/opt_range.cc:
        bug#28570: Removed the criterion that key has to be unique (HA_NOSAME) in 
        order for the EQ_RANGE flag to be set. It is sufficient that the range 
        represent a ref access.
      01f8130a
  11. 14 Aug, 2007 3 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 83fdcb2b
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/29948-bug-5.0-opt-mysql
      
      
      tests/mysql_client_test.c:
        Manually merged
      83fdcb2b
    • unknown's avatar
      Bug#29948: Unchecked NULL pointer caused server crash. · e34aa82d
      unknown authored
      The cli_read_binary_rows function is used to fetch data from the server
      after a prepared statement execution. It accepts a statement handler and gets
      the connection handler from it. But when the auto-reconnect option is set
      the connection handler is reset to NULL after reconnection because the
      prepared statement is lost and the handler became useless. This case
      wasn't checked in the cli_read_binary_rows function and caused server crash.
      
      Now the cli_read_binary_rows function checks the connection handler to be
      not NULL and returns an error if it is.
      
      
      tests/mysql_client_test.c:
        Added a test case for the bug#29948: Unchecked NULL pointer caused server crash.
      libmysql/libmysql.c:
        Bug#29948: Unchecked NULL pointer caused server crash.
        Now the cli_read_binary_rows function checks the connection handler to be
        not NULL and returns an error if it is.
      e34aa82d
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0 · de619bd1
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      
      
      de619bd1
  12. 13 Aug, 2007 2 commits