1. 16 May, 2007 4 commits
    • unknown's avatar
      Merge trift2.:/MySQL/M50/mysql-5.0 · 2d38d4d6
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      
      2d38d4d6
    • unknown's avatar
      Fix a failing assert. · 75392f37
      unknown authored
      
      sql/sql_insert.cc:
        Do not access delayed thread memory without a mutex.
      75392f37
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · 7e628372
      unknown authored
      into  vajra.(none):/opt/local/work/mysql-5.0-21483
      
      
      sql/sp_head.cc:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      sql/sql_lex.h:
        Auto merged
      7e628372
    • unknown's avatar
      A fix and a test case for · 3395c53e
      unknown authored
      Bug#21483 "Server abort or deadlock on INSERT DELAYED with another
      implicit insert"
      Also fixes and adds test cases for bugs:
      20497 "Trigger with INSERT DELAYED causes Error 1165"
      21714 "Wrong NEW.value and server abort on INSERT DELAYED to a
      table with a trigger".
      Post-review fixes.
      
      Problem:
      In MySQL INSERT DELAYED is a way to pipe all inserts into a
      given table through a dedicated thread. This is necessary for
      simplistic storage engines like MyISAM, which do not have internal
      concurrency control or threading and thus can not
      achieve efficient INSERT throughput without support from SQL layer.
      DELAYED INSERT works as follows:
      For every distinct table, which can accept DELAYED inserts and has
      pending data to insert, a dedicated thread is created to write data
      to disk. All user connection threads that attempt to
      delayed-insert into this table interact with the dedicated thread in
      producer/consumer fashion: all records to-be inserted are pushed
      into a queue of the dedicated thread, which fetches the records and 
      writes them.
      In this design, client connection threads never open or lock
      the delayed insert table.
      This functionality was introduced in version 3.23 and does not take 
      into account existence of triggers, views, or pre-locking.
      E.g. if INSERT DELAYED is called from a stored function, which,
      in turn, is called from another stored function that uses the delayed
      table, a deadlock can occur, because delayed locking by-passes
      pre-locking. Besides:
       * the delayed thread works directly with the subject table through
         the storage engine API and does not invoke triggers
       * even if it was patched to invoke triggers, if triggers,
         in turn, used other tables, the delayed thread would
         have to open and lock involved tables (use pre-locking).
       * even if it was patched to use pre-locking, without deadlock
         detection the delayed thread could easily lock out user 
         connection threads in case when the same table is used both
         in a trigger and on the right side of the insert query: 
         the delayed thread would not release locks until all inserts 
         are complete, and user connection can not complete inserts 
         without having locks on the tables used on the right side of the
         query.
      
      Solution:
      
      These considerations suggest two general alternatives for the
      future of INSERT DELAYED:
       * it is considered a full-fledged alternative to normal INSERT
       * it is regarded as an optimisation that is only relevant 
         for simplistic engines.
      Since we missed our chance to provide complete support of new
      features when 5.0 was in development, the first alternative
      currently renders infeasible.
      However, even the second alternative, which is to detect
      new features and convert DELAYED insert into a normal insert, 
      is not easy to implement.
      The catch-22 is that we don't know if the subject table has triggers
      or is a view before we open it, and we only open it in the
      delayed thread. We don't know if the query involves pre-locking
      until we have opened all tables, and we always first create
      the delayed thread, and only then open the remaining tables.
      This patch detects the problematic scenarios and converts
      DELAYED INSERT to a normal INSERT using the following approach:
       * if the statement is executed under pre-locking (e.g. from
         within a stored function or trigger) or the right
         side may require pre-locking, we detect the situation
         before creating a delayed insert thread and convert the statement
         to a conventional INSERT.
        * if the subject table is a view or has triggers, we shutdown
         the delayed thread and convert the statement to a conventional
         INSERT.
      
      
      mysql-test/r/insert.result:
        Update test results.
      mysql-test/t/insert.test:
        Add a test case for Bug#21483, Bug#20497, Bug#21714 (INSERT DELAYED
        and stored routines, triggers).
      sql/sp_head.cc:
        Upgrade lock type to TL_WRITE when computing the pre-locking set.
      sql/sql_base.cc:
        Use a new method.
      sql/sql_insert.cc:
        INSERT DELAYED and pre-locking:
        - if  under pre-locking, upgrade the lock type to TL_WRITE
        and proceed as a normal write
        - if DELAYED table has triggers, also request a lock upgrade.
        - make sure errors in the delayed thread are propagated
        correctly
      sql/sql_lex.h:
        Add a method to check if a parsed tree refers to stored
        routines.
      3395c53e
  2. 15 May, 2007 4 commits
    • unknown's avatar
      Fix bug#27833 "Bourne shell string comparison issue in scripts/make_win_bin_dist": · 09fb739b
      unknown authored
      Several string comparisons could never yield true because they had an 'x' guard
      added to the variable but not to the constant value. Fix that by guarding both sides.
      
      
      scripts/make_win_bin_dist:
        Fix bug#27833 "Bourne shell string comparison issue in scripts/make_win_bin_dist":
        
        Several string comparisons could never yield true because they had an 'x' guard
        added to the variable but not to the constant value. Fix that by guarding both sides.
        
        Use this occasion to apply some corrections to the comments and the usage text.
        
        Also, ensure the ".pdb" file is always optional.
      09fb739b
    • unknown's avatar
      Merge vajra.(none):/opt/local/work/mysql-4.1-runtime · b763ff9a
      unknown authored
      into  vajra.(none):/opt/local/work/mysql-5.0-runtime
      
      
      b763ff9a
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · 655efae8
      unknown authored
      into  vajra.(none):/opt/local/work/mysql-5.0-runtime
      
      
      sql/item.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/set_var.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/sql_prepare.cc:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      655efae8
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-4.1 · c3c64f1a
      unknown authored
      into  vajra.(none):/opt/local/work/mysql-4.1-runtime
      
      
      c3c64f1a
  3. 14 May, 2007 5 commits
  4. 12 May, 2007 2 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/data0/bk/mysql-5.0 · 6e3cff22
      unknown authored
      into  bk-internal.mysql.com:/data0/bk/mysql-5.0-opt
      
      
      6e3cff22
    • unknown's avatar
      Fixed bug #28375: a query with an NOT IN subquery predicate may cause · d886ea8f
      unknown authored
      a crash when the left operand of the predicate is evaluated to NULL.
      It happens when the rows from the inner tables (tables from the subquery)
      are accessed by index methods with key values obtained by evaluation of
      the left operand of the subquery predicate. When this predicate is
      evaluated to NULL an alternative access with full table scan is used
      to check whether the result set returned by the subquery is empty or not.
      The crash was due to the fact the info about the access methods used for
      regular key values was not properly restored after a switch back from the
      full scan access method had occurred.
      The patch restores this info properly.
      The same problem existed for queries with IN subquery predicates if they
      were used not at the top level of the queries.
      
      
      mysql-test/r/subselect3.result:
        Added a test case for bug #28375.
      mysql-test/t/subselect3.test:
        Added a test case for bug #28375.
      sql/item_subselect.cc:
        Fixed bug #28375: a query with an NOT IN subquery predicate may cause
        a crash when the left operand of the predicate is evaluated to NULL.
        It happens when the rows from the inner tables (tables from the subquery)
        are accessed by index methods with key values obtained by evaluation of
        the left operand of the subquery predicate. When this predicate is
        evaluated to NULL an alternative access with full table scan is used
        to check whether the result set returned by the subquery is empty or not.
        The crash was due to the fact the info about the access methods used for
        regular key values was not properly restored after a switch back from the
        full scan access method had occurred.
        The patch restores this info properly.
      sql/sql_select.h:
        Fixed bug #28375: a query with an NOT IN subquery predicate may cause
        a crash when the left operand of the predicate is evaluated to NULL.
        In the JOIN_TAB structure two fields have been added to save info about
        index methods used to access the subquery rows. The saved info is used
        after a switch back from the alternative full scan access method has 
        occurred. The full scan is used when the left operand of the subquery
        predicate is evaluated to NULL.
      d886ea8f
  5. 11 May, 2007 12 commits
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 50c5b549
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/27878-bug-5.0-opt-mysql
      
      
      50c5b549
    • unknown's avatar
      grant.result, grant.test: · f0ddabc5
      unknown authored
        Corrected test case for the bug#27878.
      
      
      mysql-test/t/grant.test:
        Corrected test case for the bug#27878.
      mysql-test/r/grant.result:
        Corrected test case for the bug#27878.
      f0ddabc5
    • unknown's avatar
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · bd311c0c
      unknown authored
      into  mysql.com:/home/hf/work/27957/my50-27957
      
      
      bd311c0c
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 86dccd92
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/27878-bug-5.0-opt-mysql
      
      
      86dccd92
    • unknown's avatar
      Bug#27878: Unchecked privileges on a view referring to a table from another · 04efdb15
      unknown authored
      database.
      
      If a user has a right to update anything in the current database then the 
      access was granted and further checks of access rights for underlying tables
      wasn't done correctly. The check is done before a view is opened and thus no
      check of access rights for underlying tables can be carried out.
      This allows a user to update through a view a table from another database for
      which he hasn't enough rights.
      
      Now the mysql_update() and the mysql_test_update() functions are forces
      re-checking of access rights after a view is opened.
      
      
      mysql-test/t/grant.test:
        Added a test case for the bug#27878: Unchecked privileges on a view referring to a table from another database.
      mysql-test/r/grant.result:
        Added a test case for the bug#27878: Unchecked privileges on a view referring to a table from another database.
      sql/sql_update.cc:
        Bug#27878: Unchecked privileges on a view referring to a table from another 
        database.
        Now the mysql_update() function forces re-checking of access rights after 
        the view is opened.
      sql/sql_prepare.cc:
        Bug#27878: Unchecked privileges on a view referring to a table from another 
        database.
        Now the mysql_test_update() function forces re-checking of access rights after
        the view is opened.
      04efdb15
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · 5c562377
      unknown authored
      into  mockturtle.local:/home/dlenev/src/mysql-5.0-cts-3
      
      
      sql/mysql_priv.h:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      sql/sql_prepare.cc:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      5c562377
    • unknown's avatar
      Fix for: · c5a82455
      unknown authored
        Bug #20662 "Infinite loop in CREATE TABLE IF NOT EXISTS ... SELECT
                    with locked tables"
        Bug #20903 "Crash when using CREATE TABLE .. SELECT and triggers"
        Bug #24738 "CREATE TABLE ... SELECT is not isolated properly"
        Bug #24508 "Inconsistent results of CREATE TABLE ... SELECT when
                    temporary table exists"
       
      Deadlock occured when one tried to execute CREATE TABLE IF NOT
      EXISTS ... SELECT statement under LOCK TABLES which held
      read lock on target table.
      Attempt to execute the same statement for already existing
      target table with triggers caused server crashes.
      Also concurrent execution of CREATE TABLE ... SELECT statement
      and other statements involving target table suffered from
      various races (some of which might've led to deadlocks).
      Finally, attempt to execute CREATE TABLE ... SELECT in case
      when a temporary table with same name was already present
      led to the insertion of data into this temporary table and
      creation of empty non-temporary table.
       
      All above problems stemmed from the old implementation of CREATE
      TABLE ... SELECT in which we created, opened and locked target
      table without any special protection in a separate step and not
      with the rest of tables used by this statement.
      This underminded deadlock-avoidance approach used in server
      and created window for races. It also excluded target table
      from prelocking causing problems with trigger execution.
        
      The patch solves these problems by implementing new approach to
      handling of CREATE TABLE ... SELECT for base tables.
      We try to open and lock table to be created at the same time as
      the rest of tables used by this statement. If such table does not
      exist at this moment we create and place in the table cache special
      placeholder for it which prevents its creation or any other usage
      by other threads.
      
      We still use old approach for creation of temporary tables.
      
      Also note that we decided to postpone introduction of some tests
      for concurrent behaviour of CREATE TABLE ... SELECT till 5.1.
      The main reason for this is absence in 5.0 ability to set @@debug
      variable at runtime, which can be circumvented only by using several
      test files with individual .opt files. Since the latter is likely
      to slowdown test-suite unnecessary we chose not to push this tests
      into 5.0, but run them manually for this version and later push
      their optimized version into 5.1
      
      
      mysql-test/r/create.result:
        Extended test coverage for CREATE TABLE ... SELECT. In particular added
        tests for bug #24508 "Inconsistent results of CREATE TABLE ... SELECT
        when temporary table exists" and bug #20662 "Infinite loop in CREATE
        TABLE IF NOT EXISTS ... SELECT with locked tables".
      mysql-test/r/trigger.result:
        Added test case for bug #20903 "Crash when using CREATE TABLE .. SELECT
        and triggers"
      mysql-test/t/create.test:
        Extended test coverage for CREATE TABLE ... SELECT. In particular added
        tests for bug #24508 "Inconsistent results of CREATE TABLE ... SELECT
        when temporary table exists" and bug #20662 "Infinite loop in CREATE
        TABLE IF NOT EXISTS ... SELECT with locked tables".
      mysql-test/t/trigger.test:
        Added test case for bug #20903 "Crash when using CREATE TABLE .. SELECT
        and triggers"
      sql/lock.cc:
        Now for creation of name-lock placeholder in lock_table_name() we use
        auxiliary function table_cache_insert_placeholder().
      sql/mysql_priv.h:
        Made build_table_path() function available outside of sql_table.cc file.
        reopen_name_locked_table() now has 3rd argument which controls linking
        in of table being opened into THD::open_tables (this is useful in
        cases when placeholder used for name-locking is already linked into
        this list).
        Added declaration of auxiliary function table_cache_insert_placeholder()
        which is used for creation of table placeholders for name-locking.
        Added declaration of table_cache_has_open_placeholder() function which
        can be used for checking if table cache contains an open placeholder for
        the table and if this placeholder was created by another thread.
        (This function is needed only in 5.0 where we use it in various versions
         of CREATE TABLE in order to protect it from concurrent CREATE TABLE
         ... SELECT operations for the table. Starting from 5.1 we use different
         approach so it is going to be removed there).
        Made close_old_data_files() static within sql_base.cc file. 
        Added auxiliary drop_open_table() routine.
        Moved declaration of refresh_version to table.h header to make it
        accessible from inline methods of TABLE class.
        MYSQL_OPEN_IGNORE_LOCKED_TABLES flag is no longer used. Instead
        MYSQL_OPEN_TEMPORARY_ONLY option was added.
      sql/sql_base.cc:
        Added support for the new approach to the handling of CREATE TABLE
        ... SELECT for base tables.
        
        Now we try to open and lock table to be created at the same time as
        the rest of tables used by this statement. If such table does not
        exist at this moment we create and place in the table cache special
        placeholder for it which prevents its creation or any other usage
        by other threads.
        
        Note significant distinctions of this placeholder from the placeholder
        used for normal name-lock: 1) It is treated like open table by other
        name-locks so it does not allow name-lock taking operations like DROP
        TABLE or RENAME TABLE to proceed. 2) it is linked into THD::open_tables
        list and automatically removed during close_thread_tables() call.
        
        open_tables():
          Implemented logic described above. To do this added
          auxiliary check_if_table_exists() function.
          Removed support for MYSQL_OPEN_IGNORE_LOCKED_TABLES option
          which is no longer used.
          Added MYSQL_OPEN_TEMPORARY_ONLY which is used to restrict
          search for temporary tables only.
        close_cached_tables()/close_thread_table()/reopen_tables()/
        close_old_data_files()/table_is_used()/remove_table_from_cache():
          Added support for open placeholders (note that we also use them
          when we need to re-open tables during flush).
        Added auxiliary drop_open_table() routine.
        reopen_name_locked_table():
          Now has 3rd argument which controls linking in of table being
          opened into THD::open_tables (this is useful in cases when
          placeholder used for name-locking is already linked into
          this list).
        Added auxiliary table_cache_insert_placeholder() routine which
        simplifies creation of placeholders used for name-locking.
        Added table_cache_has_open_placeholder() function which can be
        used for checking if table cache contains an open placeholder for
        the table and if this placeholder was created by another thread.
        (This function is needed only in 5.0 where we use it in various versions
         of CREATE TABLE in order to protect it from concurrent CREATE TABLE
         ... SELECT operations for the table. Starting from 5.1 we use different
         approach so it is going to be removed there).
      sql/sql_handler.cc:
        Adjusted mysql_ha_mark_tables_for_reopen() routine to properly
        handle placeholders which now can be linked into open tables
        list.
      sql/sql_insert.cc:
        Introduced new approach to handling of base tables in CREATE TABLE
        ... SELECT statement.
        
        Now we try to open and lock table to be created at the same time as
        the rest of tables used by this statement. If such table does not
        exist at this moment we create and place in the table cache special
        placeholder for it which prevents its creation or any other usage
        by other threads. By doing this we avoid races which existed with
        previous approach in which we created, opened and locked target in
        separate step without any special protection.
        This also allows properly calculate prelocking set in cases when
        target table already exists and has some on insert triggers.
          
        Note that we don't employ the same approach for temporary tables
        (this is okay as such tables are unaffected by other threads).
        
        Changed create_table_from_items() and select_create methods to
        implement this approach.
      sql/sql_parse.cc:
        The new approach to handling of CREATE TABLE ... SELECT for
        base tables assumes that all tables (including table to be
        created) are opened and (or) locked at the same time.
        So in cases when we create base table we have to pass to
        open_and_lock_tables() table list which includes target table.
      sql/sql_prepare.cc:
        The new approach to handling of CREATE TABLE ... SELECT for
        base tables assumes that all tables (including table to be
        created) are opened and (or) locked at the same time.
        So in cases when we create base table we have to pass to
        open_and_lock_tables() table list which includes target table.
      sql/sql_table.cc:
        Now mysql_create_table_internal(), mysql_create_like_table() and
        mysql_alter_table() not only check that destination table doesn't
        exist on disk but also check that there is no create placeholder
        in table cache for it (i.e. there is no CREATE TABLE ... SELECT
        operation in progress for it). Note that starting from 5.1 we
        use different approach in order to to protect CREATE TABLE ... SELECT
        from concurrent CREATE TABLE (ALTER TABLE ... RENAME) operations,
        the latter simply take name-locks on table before its creation
        (on target table name before renaming).
        
        Also made build_table_path() available from other files and
        asjusted calls to reopen_name_locked_table(), which now takes
        extra argument, which controls linking of open table into
        THD::open_tables list.
      sql/sql_trigger.cc:
        reopen_name_locked_tables() now has one more argument which controls
        linking of opened table into the THD::open_tables list.
      sql/sql_yacc.yy:
        The new approach to handling of CREATE TABLE ... SELECT statement
        for base tables assumes that all tables including table to be
        created are open and (or) locked at the same time. Therefore
        we need to set correct lock for target table.
      sql/table.h:
        Moved declaration of refresh_version variable from mysql_priv.h
        to make it accessible from inline methods of TABLE class. 
        Renamed TABLE::locked_by_flush member to open_placeholder since
        now it is also used for taking exclusive name-lock and not only
        by flush. 
        Introduced TABLE::is_name_opened() helper method which can be used
        to distinguish TABLE instances corresponding to open tables or
        placeholders for them from closed instances (e.g. due to their old
        version). Also introduced TABLE::needs_reopen_or_name_lock() helper
        which allows to check if TABLE instance corresponds to outdated
        version of table or to name-lock placeholder.
        Introduced TABLE_LIST::create member which marks elements of
        table list corresponds to the table to be created.
        Adjusted TABLE_LIST::placeholder() method to take into account 
        name-lock placeholders for tables to be created (this, for example,
        allows to properly handle such placeholders in lock_tables()).
      c5a82455
    • unknown's avatar
      merging fixes · 8bbe6f23
      unknown authored
      
      mysql-test/r/type_datetime.result:
        result fixed
      mysql-test/t/type_datetime.test:
        testcase fixed
      sql/item_func.cc:
        my_decimal_length_to_precision used
      sql/my_decimal.h:
        merging fix
      8bbe6f23
    • unknown's avatar
      Cleanup: now that we have Lex_input_stream, finish the transition · a0567199
      unknown authored
      by moving yet another relevant flag to it from struct LEX.
      
      
      mysql-test/r/ps.result:
        Update result.
      mysql-test/r/ps_1general.result:
        Update result.
      mysql-test/t/ps.test:
        New error code.
      mysql-test/t/ps_1general.test:
        New error code.
      sql/sql_lex.cc:
        Move stmt_prepare_mode to Lex_input_stream.
      sql/sql_lex.h:
        Move stmt_prepare_mode to class Lex_input_stream
      sql/sql_prepare.cc:
        Move stmt_prepare_mode to Lex_input_stream
      sql/sql_yacc.yy:
        Remove dead code.
      a0567199
    • unknown's avatar
      Merge mysql.com:/home/hf/work/27921/my50-27921 · 78ed69c3
      unknown authored
      into  mysql.com:/home/hf/work/27957/my50-27957
      
      
      mysql-test/r/cast.result:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/item_func.h:
        Auto merged
      sql/my_decimal.h:
        merging
      78ed69c3
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 563b1297
      unknown authored
      into  mysql.com:/home/hf/work/27957/my50-27957
      
      
      sql/item_func.cc:
        Auto merged
      563b1297
  6. 10 May, 2007 10 commits
    • unknown's avatar
      Fixed bug #28000. · 36190568
      unknown authored
      Bug occurs in INSERT IGNORE ... SELECT ... ON DUPLICATE KEY UPDATE
      statements, when SELECT returns duplicated values and UPDATE clause
      tries to assign NULL values to NOT NULL fields.
      NOTE: By current design MySQL server treats INSERT IGNORE ... ON
      DUPLICATE statements as INSERT ... ON DUPLICATE with update of
      duplicated records, but MySQL manual lacks this information.
      After this fix such behaviour becomes legalized.
      
      The write_record() function was returning error values even within
      INSERT IGNORE, because ignore_errors parameter of
      the fill_record_n_invoke_before_triggers() function call was
      always set to FALSE. FALSE is replaced by info->ignore.
      
      
      sql/sql_insert.cc:
        Fixed bug #28000:
        The write_record() function was returning error values even within
        INSERT IGNORE, because ignore_errors parameter of
        the fill_record_n_invoke_before_triggers() function call was
        always set to FALSE. FALSE is replaced by info->ignore.
      mysql-test/t/insert_update.test:
        Added test case for bug #28000.
      mysql-test/r/insert_update.result:
        Added test case for bug #28000.
      36190568
    • unknown's avatar
      Follow the coding style with class names. · 30184f96
      unknown authored
      
      sql/sql_insert.cc:
        delayed_insert -> Delayed_insert
      30184f96
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · 9ca0e703
      unknown authored
      into  vajra.(none):/opt/local/work/mysql-5.0-21483
      
      
      9ca0e703
    • unknown's avatar
      Merge whalegate.ndb.mysql.com:/home/tomas/mysql-4.1-ndb · 28d9a827
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
      
      
      ndb/src/mgmclient/CommandInterpreter.cpp:
        Auto merged
      28d9a827
    • unknown's avatar
      50aa9d2b
    • unknown's avatar
      No semantical change. Move checks of compatibility · d12a8413
      unknown authored
      of requested lock type and requested table operation from 
      mysql_insert into a separate function.
      
      
      sql/sql_insert.cc:
        Cleanup: move a number of locking related checks from mysql_insert 
        to a separate function.
        Add comments.
      d12a8413
    • unknown's avatar
      Fixed bug #28189: in some rare cases optimizer preferred a more expensive · 184cc3b5
      unknown authored
      ref access to a less expensive range access. 
      This occurred only with InnoDB tables.
      
      
      mysql-test/r/innodb_mysql.result:
        Added a test case for bug #28189.
      mysql-test/t/innodb_mysql.test:
        Added a test case for bug #28189.
      184cc3b5
    • unknown's avatar
      Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1 · 47430268
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-4.1-ndb
      
      
      47430268
    • unknown's avatar
      Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-opt · 27ce25cd
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
      
      
      27ce25cd
    • unknown's avatar
      bug 27921 (Views ignore precision for CAST) · a6da564a
      unknown authored
      test result fixed
      
      
      a6da564a
  7. 09 May, 2007 3 commits
    • unknown's avatar
      Bug #27921 View ignores precision for CAST() · f2a52dd0
      unknown authored
      Item_decimal_typecast::print properly implemented
      
      
      mysql-test/r/view.result:
        Bug #27921 View ignores precision for CAST()
        test result
      mysql-test/t/view.test:
        Bug #27921 View ignores precision for CAST()
        test case
      sql/field.cc:
        zero decimals handling unified
      sql/item_create.cc:
        Bug #27921 View ignores precision for CAST()
        create_func_cast parameters changed, zero precision handling unified
      sql/item_create.h:
        Bug #27921 View ignores precision for CAST()
        create_func_cast parameters changed
      sql/item_func.cc:
        Bug #27921 View ignores precision for CAST() 
        Item_decimal_typecast::print properly implemented
      sql/item_func.h:
        Bug #27921 View ignores precision for CAST()
        max_length counting fixed
      sql/my_decimal.h:
        Bug #27921 View ignores precision for CAST()
        my_decimal_trim() implemented to unify zero precision handling
      sql/sql_yacc.yy:
        Bug #27921 View ignores precision for CAST()
        create_func_cast calls simplified
      f2a52dd0
    • unknown's avatar
      enable setting api reg req frequency to be higher than heartbeat setting to... · 198a7991
      unknown authored
      enable setting api reg req frequency to be higher than heartbeat setting to ensure we have reasonably up-to-date info from ndb nodes
      + do this for management server
      
      
      
      198a7991
    • unknown's avatar
      Bug #28287 Sign problem in test "ndb_restore_print" · 7ef22d8d
      unknown authored
        - corrected previous patch
        - some platforms do strange things with char... use Int8 to be sure of signedness
      
      
      7ef22d8d