1. 02 Jul, 2007 1 commit
    • unknown's avatar
      Merged with mysql-5.1 main tree. · 3f4faedb
      unknown authored
      
      BUILD/compile-pentium-debug-max:
        Added definition after macro was removed from main tree. This will
        be fixed back in main tree later.
      3f4faedb
  2. 27 Jun, 2007 2 commits
    • unknown's avatar
      Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 · 9e5c1fd6
      unknown authored
      into  hynda.mysql.fi:/home/my/mysql-maria
      
      
      configure.in:
        Auto merged
      mysql-test/r/view.result:
        Auto merged
      mysql-test/t/view.test:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/net_serv.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      9e5c1fd6
    • unknown's avatar
      Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1 · f2839e0f
      unknown authored
      into  hynda.mysql.fi:/home/my/mysql-maria
      
      
      BitKeeper/etc/ignore:
        auto-union
      Makefile.am:
        Auto merged
      BUILD/SETUP.sh:
        Auto merged
      BitKeeper/deleted/.del-init_db.sql~a77d572c39d5a1f8:
        Auto merged
      client/mysqldump.c:
        Auto merged
      include/Makefile.am:
        Auto merged
      include/m_string.h:
        Auto merged
      include/my_base.h:
        Auto merged
      include/my_dbug.h:
        Auto merged
      libmysql/CMakeLists.txt:
        Auto merged
      libmysql/Makefile.shared:
        Auto merged
      libmysqld/Makefile.am:
        Auto merged
      mysql-test/include/varchar.inc:
        Auto merged
      mysql-test/lib/mtr_cases.pl:
        Auto merged
      mysql-test/lib/mtr_io.pl:
        Auto merged
      mysql-test/lib/mtr_misc.pl:
        Auto merged
      mysql-test/mysql-test-run.pl:
        Auto merged
      mysql-test/lib/mtr_process.pl:
        Auto merged
      mysql-test/lib/mtr_report.pl:
        Auto merged
      mysql-test/r/events_logs_tests.result:
        Auto merged
      mysql-test/r/view.result:
        Auto merged
      mysql-test/t/disabled.def:
        Auto merged
      mysql-test/t/events_logs_tests.test:
        Auto merged
      mysql-test/t/myisam.test:
        Auto merged
      mysql-test/t/view.test:
        Auto merged
      mysys/Makefile.am:
        Auto merged
      mysys/my_create.c:
        Auto merged
      mysys/my_handler.c:
        Auto merged
      mysys/my_init.c:
        Auto merged
      mysys/my_open.c:
        Auto merged
      mysys/safemalloc.c:
        Auto merged
      plugin/daemon_example/daemon_example.cc:
        Auto merged
      sql/Makefile.am:
        Auto merged
      sql/filesort.cc:
        Auto merged
      sql/gen_lex_hash.cc:
        Auto merged
      sql/ha_ndbcluster.cc:
        Auto merged
      sql/handler.cc:
        Auto merged
      sql/handler.h:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/item_func.h:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/opt_range.cc:
        Auto merged
      sql/slave.cc:
        Auto merged
      sql/slave.h:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      sql/share/errmsg.txt:
        Auto merged
      sql/sql_table.cc:
        Auto merged
      sql/sql_test.cc:
        Auto merged
      sql/udf_example.c:
        Auto merged
      sql/uniques.cc:
        Auto merged
      sql/unireg.cc:
        Auto merged
      storage/csv/ha_tina.cc:
        Auto merged
      storage/myisam/ft_boolean_search.c:
        Auto merged
      storage/myisam/ft_nlq_search.c:
        Auto merged
      storage/myisam/ft_parser.c:
        Auto merged
      storage/myisam/ft_stopwords.c:
        Auto merged
      storage/myisam/ft_update.c:
        Auto merged
      storage/myisam/fulltext.h:
        Auto merged
      storage/myisam/ha_myisam.h:
        Auto merged
      storage/myisam/mi_checksum.c:
        Auto merged
      storage/myisam/mi_create.c:
        Auto merged
      storage/myisam/mi_delete.c:
        Auto merged
      storage/myisam/mi_delete_all.c:
        Auto merged
      storage/myisam/mi_key.c:
        Auto merged
      storage/myisam/mi_log.c:
        Auto merged
      storage/myisam/mi_open.c:
        Auto merged
      storage/myisam/mi_range.c:
        Auto merged
      storage/myisam/mi_rkey.c:
        Auto merged
      storage/myisam/mi_rsamepos.c:
        Auto merged
      storage/myisam/mi_search.c:
        Auto merged
      storage/myisam/mi_test1.c:
        Auto merged
      storage/myisam/mi_test2.c:
        Auto merged
      storage/myisam/mi_unique.c:
        Auto merged
      storage/myisam/mi_update.c:
        Auto merged
      storage/myisam/myisamlog.c:
        Auto merged
      storage/myisam/myisampack.c:
        Auto merged
      storage/myisam/rt_index.c:
        Auto merged
      storage/myisam/sort.c:
        Auto merged
      storage/myisam/sp_test.c:
        Auto merged
      storage/myisammrg/ha_myisammrg.h:
        Auto merged
      storage/ndb/src/mgmapi/mgmapi.cpp:
        Auto merged
      unittest/Makefile.am:
        Auto merged
      BitKeeper/triggers/post-commit:
        Manual merge from mysql-5.1 to mysql-maria
      configure.in:
        Manual merge from mysql-5.1 to mysql-maria
      include/ft_global.h:
        Manual merge from mysql-5.1 to mysql-maria
      include/keycache.h:
        Manual merge from mysql-5.1 to mysql-maria
      include/my_atomic.h:
        Manual merge from mysql-5.1 to mysql-maria
      include/my_global.h:
        Manual merge from mysql-5.1 to mysql-maria
      include/my_sys.h:
        Manual merge from mysql-5.1 to mysql-maria
      include/myisam.h:
        Manual merge from mysql-5.1 to mysql-maria
      mysys/array.c:
        Manual merge from mysql-5.1 to mysql-maria
      mysys/mf_keycache.c:
        Manual merge from mysql-5.1 to mysql-maria
      mysys/mf_keycaches.c:
        Manual merge from mysql-5.1 to mysql-maria
      mysys/my_pread.c:
        Manual merge from mysql-5.1 to mysql-maria
      sql/mysqld.cc:
        Manual merge from mysql-5.1 to mysql-maria
      sql/net_serv.cc:
        Manual merge from mysql-5.1 to mysql-maria
      sql/set_var.cc:
        Manual merge from mysql-5.1 to mysql-maria
      sql/set_var.h:
        Manual merge from mysql-5.1 to mysql-maria
      sql/sql_class.h:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisam/ft_static.c:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisam/ha_myisam.cc:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisam/mi_check.c:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisam/mi_dynrec.c:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisam/mi_packrec.c:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisam/mi_write.c:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisam/myisamchk.c:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisam/myisamdef.h:
        Manual merge from mysql-5.1 to mysql-maria
      storage/myisammrg/ha_myisammrg.cc:
        Manual merge from mysql-5.1 to mysql-maria
      unittest/mysys/Makefile.am:
        Manual merge from mysql-5.1 to mysql-maria
      unittest/mysys/my_atomic-t.c:
        Manual merge from mysql-5.1 to mysql-maria
      f2839e0f
  3. 25 Jun, 2007 11 commits
  4. 24 Jun, 2007 4 commits
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.1 · 9548afda
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.1-opt
      
      
      sql/item.h:
        Auto merged
      sql/log_event.cc:
        Auto merged
      sql/sp.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_delete.cc:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      sql/sql_trigger.cc:
        Auto merged
      sql/sql_view.cc:
        Auto merged
      mysql-test/r/rpl_change_master.result:
        Merge with 5.1.
      mysql-test/t/rpl_change_master.test:
        Merge with 5.1.
      sql/sql_acl.cc:
        Merge with 5.1.
      9548afda
    • unknown's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · 683a1119
      unknown authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug25602
      
      
      sql/sql_select.cc:
        Auto merged
      683a1119
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0 · 98646c96
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      
      
      sql/log_event.cc:
        Auto merged
      98646c96
    • unknown's avatar
      Fixed bug #25602. A query with DISTINCT in the select list to which · 09e2b603
      unknown authored
      the loose scan optimization for grouping queries was applied returned 
      a wrong result set when the query was used with the SQL_BIG_RESULT
      option.
      
      The SQL_BIG_RESULT option forces to use sorting algorithm for grouping
      queries instead of employing a suitable index. The current loose scan
      optimization is applied only for one table queries when the suitable
      index is covering. It does not make sense to use sort algorithm in this
      case. However the create_sort_index function does not take into account
      the possible choice of the loose scan to implement the DISTINCT operator
      which makes sorting unnecessary. Moreover the current implementation of
      the loose scan for queries with distinct assumes that sorting will
      never happen. Thus in this case create_sort_index should not call
      the function filesort.
      
      
      mysql-test/r/group_min_max.result:
        Added a test case for bug #25602.
      mysql-test/t/group_min_max.test:
        Added a test case for bug #25602.
      09e2b603
  5. 23 Jun, 2007 5 commits
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0-opt · 3fb40cd8
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.1-opt
      
      3fb40cd8
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/4.1-opt · 6688a54f
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      
      6688a54f
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0-opt · ddf53f6e
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.1-opt
      
      
      libmysql/libmysql.c:
        Merge with 5.0-opt.
      mysql-test/r/insert_select.result:
        Merge with 5.0-opt.
      mysql-test/r/mysqlbinlog.result:
        Merge with 5.0-opt.
      mysql-test/r/rpl_change_master.result:
        Merge with 5.0-opt.
      mysql-test/r/view.result:
        Merge with 5.0-opt.
      mysql-test/t/insert_select.test:
        Merge with 5.0-opt.
      mysql-test/t/mysqlbinlog.test:
        Merge with 5.0-opt.
      mysql-test/t/rpl_change_master.test:
        Merge with 5.0-opt.
      mysql-test/t/view.test:
        Merge with 5.0-opt.
      sql/item.cc:
        Merge with 5.0-opt.
      sql/item.h:
        Merge with 5.0-opt.
      sql/log_event.cc:
        Merge with 5.0-opt.
      sql/sql_select.cc:
        Merge with 5.0-opt.
      ddf53f6e
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0-opt-29095 · e45576ac
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      
      e45576ac
    • unknown's avatar
      Fixed bug #29095. · e7778b65
      unknown authored
      INSERT into table from SELECT from the same table
      with ORDER BY and LIMIT was inserting other data
      than sole SELECT ... ORDER BY ... LIMIT returns.
      
      One part of the patch for bug #9676 improperly pushed
      LIMIT to temporary table in the presence of the ORDER BY
      clause.
      That part has been removed.
      
      
      sql/sql_select.cc:
        Fixed bug #29095.
        One part of the patch for bug #9676 improperly pushed
        LIMIT to temporary table in the presence of the ORDER BY
        clause.
        That part has been removed.
      mysql-test/t/insert_select.test:
        Expanded the test case for bug #9676.
        Created a test case for bug #29095.
      mysql-test/r/insert_select.result:
        Expanded the test case for bug #9676.
        Created a test case for bug #29095.
      e7778b65
  6. 22 Jun, 2007 17 commits
    • unknown's avatar
      Merge trift2.:/MySQL/M50/push-5.0 · e4fd17d1
      unknown authored
      into  trift2.:/MySQL/M51/push-5.1
      
      e4fd17d1
    • unknown's avatar
      Merge trift2.:/MySQL/M51/mysql-5.1 · 69755041
      unknown authored
      into  trift2.:/MySQL/M51/push-5.1
      
      69755041
    • unknown's avatar
      Merge trift2.:/MySQL/M50/mysql-5.0 · 77825106
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      77825106
    • unknown's avatar
      Merge trift2.:/MySQL/M50/push-5.0 · d77cd439
      unknown authored
      into  trift2.:/MySQL/M51/push-5.1
      
      
      Makefile.am:
        Manual merge.
      d77cd439
    • unknown's avatar
      Merge maint1.mysql.com:/data/localhome/tsmith/bk/maint/50 · 828dddf1
      unknown authored
      into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/51
      
      828dddf1
    • unknown's avatar
      Add the "nist" suite to the "test-bt" target, · 21905996
      unknown authored
      to be run only if it is available on the machine.
      
      21905996
    • unknown's avatar
      - WL#3239 "log CREATE TABLE in Maria" · de28fd57
      unknown authored
      - WL#3240 "log DROP TABLE in Maria"
      - similarly, log RENAME TABLE, REPAIR/OPTIMIZE TABLE, and
      DELETE no_WHERE_clause (== the DELETE which just truncates the files)
      - create_rename_lsn added to MARIA_SHARE's state
      - all these operations (except DROP TABLE) also update the table's
      create_rename_lsn, which is needed for the correctness of
      Recovery (see function comment of _ma_repair_write_log_record()
      in ma_check.c)
      - write a COMMIT record when transaction commits.
      - don't log REDOs/UNDOs if this is an internal temporary table
      like inside ALTER TABLE (I expect this to be a big win). There was
      already no logging for user-created "CREATE TEMPORARY" tables.
      - don't fsync files/directories if the table is not transactional
      - in translog_write_record(), autogenerate a 2-byte-id for the table
      and log the "id->name" pair (LOGREC_FILE_ID); log
      LOGREC_LONG_TRANSACTION_ID; automatically store
      the table's 2-byte-id in any log record.
      - preparations for Checkpoint: translog_get_horizon(); pausing Checkpoint
      when some dirty pages are unknown; capturing trn->rec_lsn,
      trn->first_undo_lsn for Checkpoint and log's low-water-mark computing.
      - assertions, comments.
      
      
      storage/maria/Makefile.am:
        more files to build
      storage/maria/ha_maria.cc:
        - logging a REPAIR log record if REPAIR/OPTIMIZE was successful.
        - ha_maria::data_file_type does not have to be set in every info()
        call, just do it once in open().
        - if caller said that transactionality can be disabled (like if
        caller is ALTER TABLE) i.e. thd->transaction.on==FALSE, then we
        temporarily disable transactionality of the table in external_lock();
        that will ensure that no REDOs/UNDOs are logged for this possibly
        massive write operation (they are not needed, as if any write fails,
        the table will be dropped). We re-enable in external_lock(F_UNLCK),
        which in ALTER TABLE happens before the tmp table replaces the original
        one (which is good, as thus the final table will have a REDO RENAME
        and a correct create_rename_lsn).
        - when we commit we also have to write a log record, so
        trnman_commit_trn() calls become ma_commit() calls
        - at end of engine's initialization, we are potentially entering a
        multi-threaded dangerous world (clients are going to be accepted)
        and so some assertions of mutex-owning become enforceable, for that
        we set maria_multi_threaded=TRUE (see ma_control_file.c)
      storage/maria/ha_maria.h:
        new member ha_maria::save_transactional (see also ha_maria.cc)
      storage/maria/ma_blockrec.c:
        - fixing comments according to discussion with Monty
        - if a table is transactional but temporarily non-transactional
        (like in ALTER TABLE), we need to give a sensible LSN to the pages
        (and, if we give 0, pagecache asserts).
        - translog_write_record() now takes care of storing the share's
        2-byte-id in the log record
      storage/maria/ma_blockrec.h:
        fixing comment according to discussion with Monty
      storage/maria/ma_check.c:
        When REPAIR/OPTIMIZE modify the data/index file, if this is a
        transactional table, they must sync it; if they remove files or rename
        files, they must sync the directory, so that everything is durable.
        This is just applying to REPAIR/OPTIMIZE the logic already implemented
        in CREATE/DROP/RENAME a few months ago.
        Adding a function to write a LOGREC_REPAIR_TABLE at end of
        REPAIR/OPTIMIZE (called only by ha_maria, not by maria_chk), and
        to update the table's create_rename_lsn.
      storage/maria/ma_close.c:
        fix for a future bug
      storage/maria/ma_control_file.c:
        ensuring that if Maria is running in multi-threaded mode, anybody
        wanting to write to the control file and update
        last_checkpoint_lsn/last_logno owns the log's lock.
      storage/maria/ma_control_file.h:
        see ma_control_file.c
      storage/maria/ma_create.c:
        when creating a table:
        - sync it and its directory only if this is a transactional table
        and there is a log (no point in syncing in maria_chk)
        - decouple the two uses of linkname/linkname_ptr (for index file and
        for data file) into more variables, as we need to know all links
        until the moment we write the LOGREC_CREATE_TABLE.
        - set share.data_file_type early so that _ma_initialize_data_file()
        knows it (Monty's bugfix so that a table always has at least a bitmap
        page when it is created; so data-file is not 0 bytes anymore).
        - log a LOGREC_CREATE_TABLE; it contains the bytes which we have
        just written to the index file's header. Update table's
        create_rename_lsn.
        - syncing of kfile had been bugified in a previous merge, correcting
        - syncing of dfile is now needed as it's not empty anymore
        - in _ma_initialize_data_file(), use share's block_size and not the
        global one. This is a gratuitous change, both variables are equal,
        just that I find it more future-proof to use share-bound variable
        rather than global one.
      storage/maria/ma_delete_all.c:
        log a LOGREC_DELETE_ALL record when doing ma_delete_all_rows();
        update create_rename_lsn then.
      storage/maria/ma_delete_table.c:
        - logging LOGREC_DROP_TABLE; knowing if this is needed, requires
        knowing if the table is transactional, which requires opening the
        table.
        - we need to sync directories only if the table is transactional
      storage/maria/ma_extra.c:
        questions
      storage/maria/ma_init.c:
        when maria_end() is called, engine is not multithreaded
      storage/maria/ma_loghandler.c:
        - translog_inited has to be visible to ma_create() (see how it is used
        in ma_create())
        - checkpoint record will be a single record, not three
        - no REDO for TRUNCATE (TRUNCATE calls ma_create() internally so will
        log a REDO_CREATE)
        - adding REDO for DELETE no_WHERE_clause (fast DELETE of all rows by
        truncating the files), REPAIR.
        - MY_WAIT_IF_FULL to wait&retry if a log write hits a full disk
        - in translog_write_record(), if MARIA_SHARE does not yet have a
        2-byte-id, generate one for it and log LOGREC_FILE_ID; automatically
        store this short id into log records.
        - in translog_write_record(), if transaction has not logged its
        long trid, log LOGREC_LONG_TRANSACTION_ID.
        - For Checkpoint, we need to know the current end-of-log: adding
        translog_get_horizon().
        - For Control File, adding an assertion that the thread owns the
        log's lock (control file is protected by this lock)
      storage/maria/ma_loghandler.h:
        Changes in log records (see ma_loghandler.c).
        new prototypes, new functions.
      storage/maria/ma_loghandler_lsn.h:
        adding a type LSN_WITH_FLAGS especially for TRN::first_undo_lsn,
        where the most significant byte is used for flags.
      storage/maria/ma_open.c:
        storing the create_rename_lsn in the index file's header (in the
        state, precisely) and retrieving it from there.
      storage/maria/ma_pagecache.c:
        - my set_if_bigger was wrong, correcting it
        - if the first_in_switch list is not empty, it means that
        changed_blocks misses some dirty pages, so Checkpoint cannot run and
        needs to wait. A variable missing_blocks_in_changed_list is added to
        tell that (should it be named missing_blocks_in_changed_blocks?)
        - pagecache_collect_changed_blocks_with_lsn() now also tells the
        minimum rec_lsn (needed for low-water mark computation).
      storage/maria/ma_pagecache.h:
        see ma_pagecache.c
      storage/maria/ma_panic.c:
        comment
      storage/maria/ma_range.c:
        comment
      storage/maria/ma_rename.c:
        - logging LOGREC_RENAME_TABLE; knowing if this is needed, requires
        knowing if the table is transactional, which requires opening the
        table.
        - update create_rename_lsn
        - we need to sync directories only if the table is transactional
      storage/maria/ma_static.c:
        comment
      storage/maria/ma_test_all.sh:
        - tip for Valgrind-ing ma_test_all
        - do "export maria_path=somepath" before calling ma_test_all,
        if you want to run ma_test_all out of storage/maria (useful
        to have parallel runs, like one normal and one Valgrind, they
        must not use the same tables so need to run in different directories)
      storage/maria/maria_def.h:
        - state now contains, in memory and on disk, the create_rename_lsn
        - share now contains a 2-byte-id
      storage/maria/trnman.c:
        preparations for Checkpoint: capture trn->rec_lsn, trn->first_undo_lsn;
        minimum first_undo_lsn needed to know log's low-water-mark
      storage/maria/trnman.h:
        using most significant byte of first_undo_lsn to hold miscellaneous
        flags, for now TRANSACTION_LOGGED_LONG_ID.
        dummy_transaction_object is already declared in ma_static.c.
      storage/maria/trnman_public.h:
        dummy_transaction_object was declared in all files including
        trnman_public.h, while in fact it's a single object.
        new prototype
      storage/maria/unittest/ma_test_loghandler-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        update for new prototype
      storage/maria/unittest/ma_test_loghandler_pagecache-t.c:
        update for new prototype
      storage/maria/ma_commit.c:
        function which wraps:
        - writing a LOGREC_COMMIT record (==commit on disk)
        - calling trnman_commit_trn() (=commit in memory)
      storage/maria/ma_commit.h:
        new header file
      .tree-is-private:
        this file is now needed to keep our tree private (don't push it
        to public trees). When 5.1 is merged into mysql-maria, we can abandon
        our maria-specific post-commit trigger; .tree_is_private will take
        care of keeping commit mails private. Don't push this file to public
        trees.
      de28fd57
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 9f368072
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B28400-5.0-opt
      
      9f368072
    • unknown's avatar
      Bug #27383: Crash in test "mysql_client_test" · 0200ffc7
      unknown authored
      The C optimizer may decide that data access operations
      through pointer of different type are not related to 
      the original data (strict aliasing).
      This is what happens in fetch_long_with_conversion(),
      when called as part of mysql_stmt_fetch() : it tries 
      to check for truncation errors by first storing float
      (and other types of data) into a char * buffer and then 
      accesses them through a float pointer.
      This is done to prevent the effects of excess precision
      when using FPU registers.
      However the doublestore() macro converts a double pointer
      to an union pointer. This violates the strict aliasing rule.
      Fixed by making the intermediary variables volatile (
      to not re-introduce the excess precision bug) and using
      the intermediary value instead of the char * buffer.
      Note that there can be loss of precision for both signed
      and unsigned 64 bit integers converted to double and back,
      so the check must stay there (even for compatibility 
      reasons).
      Based on the excellent analysis in bug 28400.
      
      
      libmysql/libmysql.c:
        Bug #27383: avoid pointer aliasing problems while 
        not re-violating the Intel FPU gcc bug.
      0200ffc7
    • unknown's avatar
      Merge trift2.:/MySQL/M50/push-5.0 · dbcba7ce
      unknown authored
      into  trift2.:/MySQL/M51/push-5.1
      
      dbcba7ce
    • unknown's avatar
      Merge trift2.:/MySQL/M51/mysql-5.1 · 724baa97
      unknown authored
      into  trift2.:/MySQL/M51/push-5.1
      
      724baa97
    • unknown's avatar
      Merge trift2.:/MySQL/M50/mysql-5.0 · 49dcd6ec
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      49dcd6ec
    • unknown's avatar
      Merge tsmith@bk-internal.mysql.com:/home/bk/mysql-5.1-maint · 7382aa01
      unknown authored
      into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/51
      
      7382aa01
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint · 3300b8eb
      unknown authored
      into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50
      
      3300b8eb
    • unknown's avatar
      binlog_innodb.result: · c6683f4e
      unknown authored
        post-merge fix
      
      
      mysql-test/r/binlog_innodb.result:
        post-merge fix
      c6683f4e
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 0adc47a6
      unknown authored
      into  mysql.com:/home/hf/work/28839/my50-28839
      
      0adc47a6
    • unknown's avatar
      merging fix · e877ce1c
      unknown authored
      e877ce1c