1. 09 Feb, 2007 1 commit
  2. 23 Dec, 2006 1 commit
    • unknown's avatar
      Many files: · 2d27fea5
      unknown authored
        Changed header to GPL version 2 only
      
      
      BUILD/Makefile.am:
        Changed header to GPL version 2 only
      Docs/Makefile.am:
        Changed header to GPL version 2 only
      Makefile.am:
        Changed header to GPL version 2 only
      SSL/Makefile.am:
        Changed header to GPL version 2 only
      bdb/Makefile.in:
        Changed header to GPL version 2 only
      client/Makefile.am:
        Changed header to GPL version 2 only
      client/client_priv.h:
        Changed header to GPL version 2 only
      client/completion_hash.cc:
        Changed header to GPL version 2 only
      client/completion_hash.h:
        Changed header to GPL version 2 only
      client/get_password.c:
        Changed header to GPL version 2 only
      client/my_readline.h:
        Changed header to GPL version 2 only
      client/mysql.cc:
        Changed header to GPL version 2 only
      client/mysql_upgrade.c:
        Changed header to GPL version 2 only
      client/mysqladmin.cc:
        Changed header to GPL version 2 only
      client/mysqlbinlog.cc:
        Changed header to GPL version 2 only
      client/mysqlcheck.c:
        Changed header to GPL version 2 only
      client/mysqld...
      2d27fea5
  3. 04 Dec, 2006 1 commit
    • unknown's avatar
      item_func.cc: · 050d9de6
      unknown authored
         fixed a valgrind warning
      type_varchar.test:
        fixed a valgrind warning
      
      
      mysql-test/t/type_varchar.test:
        fixed a valgrind warning
      sql/item_func.cc:
         fixed a valgrind warning
      050d9de6
  4. 02 Dec, 2006 1 commit
    • unknown's avatar
      This finishes the work (someone) started to remove FIELD_ types and use the... · e9440cd0
      unknown authored
      This finishes the work (someone) started to remove FIELD_ types and use the Enum MYSQL types. The second part to this is to actually deprecate the FIELD defines in mysql_com.h
      
      
      client/mysql.cc:
        Field update to MYSQL
      client/mysqldump.c:
        Field -> MySQL
      include/mysql.h:
        Field -> MySQL
      server-tools/instance-manager/protocol.cc:
        Field -> MySQL
      sql/field.cc:
        Field -> MySQL
      sql/field.h:
        Field -> MySQL
      sql/field_conv.cc:
        Field -> MySQL
      sql/handler.cc:
        Field -> MySQL
      sql/item.cc:
        Field -> MYSQL
      sql/item_func.cc:
        Field -> MySQL
      sql/item_subselect.cc:
        Field -> MySQL
      sql/item_subselect.h:
        Field -> MySQL
      sql/item_sum.h:
        Field -> MySQL
      sql/item_timefunc.cc:
        Field -> MySQL
      sql/log_event.cc:
        Field -> MySQL
      sql/opt_range.cc:
        Field -> MySQL
      sql/sp.cc:
        Field -> MySQL
      sql/sql_acl.cc:
        Field -> MYSQL
      sql/sql_analyse.cc:
        Field -> MYSQL
      sql/sql_insert.cc:
        Field -> MySQL
      sql/sql_load.cc:
        Field -> MySQL
      sql/sql_parse.cc:
        Field -> MySQL
      sql/sql_select.cc:
        Field -> MySQL
      sql/sql_select.h:
        Field -> MySQL
      sql/sql_show.cc:
        Field -> MySQL
      sql/sql_table.cc:
        Field -> MySQL
      sql/sql_yacc.yy:
        Field -> MySQL
      sql/table.cc:
        Field -> MySQL
      sql/unireg.cc:
        Field -> MySQL
      storage/innobase/handler/ha_innodb.cc:
        Field -> MySQL
      storage/myisam/ha_myisam.cc:
        Field -> MySQL
      tests/mysql_client_test.c:
        Field -> MySQL
      e9440cd0
  5. 30 Nov, 2006 2 commits
    • unknown's avatar
      Fixed portability issue in my_thr_init.c (was added in my last push) · 47cca173
      unknown authored
      Fixed compiler warnings (detected by VC++):
      - Removed not used variables
      - Added casts
      - Fixed wrong assignments to bool
      - Fixed wrong calls with bool arguments
      - Added missing argument to store(longlong), which caused wrong store method to be called.
      
      
      
      client/mysqldump.c:
        Removed compiler warning
      heap/hp_clear.c:
        Removed compiler warning
      include/my_global.h:
        Removed compiler warning
      include/my_tree.h:
        Changed memory limits from int to ulong
        (Allowed me to get rid of some compiler warnings)
      myisam/mi_create.c:
        Removed compiler warning
      myisam/myisampack.c:
        Removed compiler warning
      mysys/base64.c:
        Removed compiler warning
      mysys/my_thr_init.c:
        Fixed portability issue (detected on windows)
        Added DBUG_ASSERT to detect if we call my_thread_end() too many times
        Don't wait if THR_thread_count == -1 (error condition)
      mysys/tree.c:
        Removed compiler warning
      sql/field.cc:
        Removed compiler warning
        Fixed wrong parameter to check_date()
        Added missing argument to store(longlong)
      sql/ha_archive.cc:
        Removed compiler warning
      sql/ha_federated.cc:
        Removed compiler warning
      sql/ha_innodb.cc:
        Removed not used variable
      sql/handler.cc:
        Removed not used variable
        Fixed wrong if (we didn't detect if rollback or commit failed). Not critical as value is not yet used
      sql/item.cc:
        Removed compiler warning
      sql/item_func.cc:
        Removed compiler warning
      sql/item_strfunc.cc:
        Removed compiler warning
      sql/item_timefunc.cc:
        Removed compiler warning
      sql/log.cc:
        Removed compiler warning
      sql/mysql_priv.h:
        Removed compiler warning
      sql/opt_range.cc:
        Removed compiler warning
      sql/password.c:
        Removed compiler warning
      sql/set_var.cc:
        Removed compiler warning
      sql/slave.cc:
        Removed compiler warning
      sql/sp.cc:
        Removed compiler warning
      sql/sp_cache.cc:
        Removed compiler warning
      sql/sp_head.cc:
        Removed compiler warning
        Adjusted argument to reserve() to not use up too much memory that we are probably not going to need
      sql/sql_acl.cc:
        Added missing argument to store(longlong)
      sql/sql_base.cc:
        Removed compiler warning
      sql/sql_db.cc:
        Removed compiler warning
      sql/sql_delete.cc:
        Removed compiler warning
      sql/sql_handler.cc:
        Removed not used variable
      sql/sql_lex.h:
        Removed not used variable
      sql/sql_prepare.cc:
        Removed not used variable
      sql/sql_rename.cc:
        Removed not used variable
      sql/sql_select.cc:
        Fixed that select_options are not 'cut'
        Removed some not used variables
        Removed compiler warnings by adding cast
      sql/sql_show.cc:
        Removed not used variables
        Added missing argument to store(longlong)
        Removed compiler warnings
      sql/sql_trigger.cc:
        Removed not used variables
        Added cast to remove compiler warnings
      sql/sql_update.cc:
        Fixed wrong set of bool variable
      sql/sql_view.cc:
        Removed not used variables
        Added cast to get rid of compiler warnings
      sql-common/client.c:
        Fixed compiler warning
      sql-common/my_time.c:
        Fixed wrong argument to check_date()
        Added casts to get rid of compiler warnings
      sql/sql_yacc.yy:
        Removed not used variable
      sql/uniques.cc:
        Changes memory size from uint to ulong
        Added casts to get rid of compiler warnings
      strings/ctype-simple.c:
        Fixed cast to get rid of compiler warnings
      47cca173
    • unknown's avatar
      Fixed compiler warnings (Mostly VC++): · d2e04479
      unknown authored
      - Removed not used variables
      - Changed some ulong parameters/variables to ulonglong (possible serious bug)
      - Added casts to get rid of safe assignment from longlong to long (and similar)
      - Added casts to function parameters
      - Fixed signed/unsigned compares
      - Added some constructores to structures
      - Removed some not portable constructs
      
      Better fix for bug Bug #21428 "skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown"
      (Added new parameter to net_clear() to define when we want the communication buffer to be emptied)
      
      
      client/mysql.cc:
        Removed not used variable
      client/mysqldump.c:
        Fixed compiler warning
      client/mysqlslap.c:
        Fixed compiler warning
      client/mysqltest.c:
        Fixed compiler warning
      extra/replace.c:
        Fixed compiler warning
      include/my_global.h:
        Fixed compiler warning
      include/mysql_com.h:
        Changed prototype for net_clear()
      libmysql/libmysql.c:
        Changed prototype for net_clear()
      mysys/base64.c:
        Fixed compiler warning (function definition and prototype didn't match)
      mysys/my_thr_init.c:
        AFter merge fixes
      mysys/my_vle.c:
        Fixed compiler warning
      sql/event_data_objects.cc:
        Fixed compiler warning
      sql/event_scheduler.cc:
        Removed not used variable
      sql/field.cc:
        Removed not used variables
        Fixed compiler warning
      sql/gen_lex_hash.cc:
        Fixed compiler warning
      sql/ha_partition.h:
        Fixed compiler warning
      sql/handler.cc:
        Fixed compiler warning
      sql/item.cc:
        Fixed compiler warning
      sql/item_create.cc:
        Fixed compiler warning
      sql/item_func.cc:
        Fixed compiler warning
      sql/item_strfunc.cc:
        Fixed compiler warning
      sql/item_timefunc.cc:
        Fixed compiler warning
      sql/item_xmlfunc.cc:
        Fixed compiler warning
      sql/log.cc:
        Fixed compiler warning
      sql/log_event.cc:
        Fixed compiler warning
      sql/log_event.h:
        Fixed compiler warning
      sql/mysql_priv.h:
        Fixed too short 'select_type'
      sql/net_serv.cc:
        Added argument to net_clear() if we should empty the communication buffer.
      sql/opt_range.cc:
        Fixed compiler warning
      sql/partition_info.cc:
        Fixed compiler warning
      sql/rpl_injector.h:
        Fixed compiler warning
      sql/set_var.cc:
        Fixed compiler warning
      sql/slave.cc:
        Fixed compiler warning
      sql/sp_head.cc:
        Fixed compiler warning
      sql/sql_base.cc:
        Fixed compiler warning
      sql/sql_db.cc:
        Fixed compiler warning
      sql/sql_delete.cc:
        Fixed compiler warning
      sql/sql_insert.cc:
        Fixed compiler warning
      sql/sql_lex.h:
        Fixed compiler warning
      sql/sql_parse.cc:
        Fixed compiler warning
      sql/sql_partition.cc:
        Fixed compiler warning
      sql/sql_plugin.cc:
        Fixed compiler warning
      sql/sql_prepare.cc:
        Fixed compiler warning
      sql/sql_rename.cc:
        Fixed compiler warning
      sql/sql_select.cc:
        Fixed compiler warning
      sql/sql_show.cc:
        Fixed compiler warning
      sql/sql_table.cc:
        Fixed compiler warning
      sql/sql_trigger.cc:
        Fixed compiler warning
      sql-common/client.c:
        Better fix for bug Bug #21428 "skipped 9 bytes from file: socket (3)" on "mysqladmin shutdown"
      sql-common/my_time.c:
        Fixed compiler warning
      sql/sql_union.cc:
        Fixed compiler warning
      sql/sql_update.cc:
        Fixed compiler warning
      sql/sql_view.cc:
        Fixed compiler warning
      sql/sql_yacc.yy:
        Fixed compiler warning
      sql/table.cc:
        Fixed compiler warning
      storage/archive/azio.c:
        Fixed compiler warning
      storage/csv/ha_tina.cc:
        Removed not used code
      storage/myisam/mi_unique.c:
        Fixed compiler warning
      storage/ndb/include/util/OutputStream.hpp:
        Fixed compiler warning
      storage/ndb/include/util/SocketAuthenticator.hpp:
        Fixed compiler warning
      storage/ndb/src/kernel/vm/Pool.hpp:
        Fixed compiler warning
      strings/ctype-simple.c:
        Fixed compiler warning
      strings/my_strchr.c:
        Fixed compiler warning
      d2e04479
  6. 26 Nov, 2006 1 commit
    • unknown's avatar
      Fixed a LOT of compiler warnings · cb4895d2
      unknown authored
      Added missing DBUG_RETURN statements (in mysqldump.c)
      Added missing enums
      Fixed a lot of wrong DBUG_PRINT() statements, some of which could cause crashes
      Removed usage of %lld and %p in printf strings as these are not portable or produces different results on different systems.
      
      
      client/mysqldump.c:
        Fixed some compiler warnings
        Added some missing DBUG_RETURN
        Remove copying of 'cluster' database
      client/mysqlslap.c:
        Fixed compiler warnings
      client/mysqltest.c:
        After merge fix
      extra/yassl/taocrypt/include/algebra.hpp:
        Removed compiler warning
      mysql-test/include/im_check_env.inc:
        Fixed race condition (mysqld1 could report 'starting' or 'online'
      mysql-test/mysql-test-run.pl:
        After merge fixes
        Added missing directory to LD_LIBRARY_PATH
      mysql-test/r/ctype_cp1250_ch.result:
        After merge fix
      mysql-test/r/im_cmd_line.result:
        Fixed race condition
      mysql-test/r/im_daemon_life_cycle.result:
        Fixed race condition
      mysql-test/r/im_instance_conf.result:
        Fixed race condition
      mysql-test/r/im_life_cycle.result:
        Fixed race condition
      mysql-test/r/im_utils.result:
        Fixed race condition
      mysql-test/r/log_tables.result:
        Fixed wrong result
      mysql-test/t/disabled.def:
        Disabled ndb_restore_partion, as ndb_restore_compate caused it to fail, becasue of table 'cluster/def/schema' which is stored in ndb_backup50
      mysys/my_compress.c:
        Removed compiler warnings
      mysys/my_getopt.c:
        Ensure we always have at least one space between option name and value
      plugin/fulltext/plugin_example.c:
        Removed compiler warnings
      server-tools/instance-manager/mysql_connection.cc:
        After merge fix
      sql/event_data_objects.cc:
        Fixed compiler warnings
        Fixed platform compatibility issues (%lld is not portable)
      sql/event_data_objects.h:
        Fixed compiler warnings
      sql/event_db_repository.cc:
        Fixed compiler warnings
      sql/event_queue.cc:
        Fixed compiler warnings
      sql/event_scheduler.cc:
        Fixed compiler warnings
      sql/events.cc:
        Fixed compiler warnings
      sql/field.cc:
        Fixed compiler warnings
      sql/ha_ndbcluster.cc:
        Fixed compiler warnings
      sql/ha_ndbcluster_binlog.cc:
        Fixed compiler warnings
      sql/ha_partition.cc:
        Fixed compiler warnings
      sql/handler.cc:
        Fixed compiler warnings
      sql/item_cmpfunc.cc:
        Fixed DBUG_PRINT style
      sql/item_func.cc:
        Fixed compiler warnings
      sql/log.cc:
        Fixed compiler warnings
      sql/log_event.cc:
        Fixed compiler warnings
      sql/mysqld.cc:
        Fixed compiler warnings
      sql/opt_range.cc:
        Fixed compiler warnings
      sql/repl_failsafe.cc:
        Indentation fixes
      sql/rpl_rli.cc:
        Fixed compiler warnings
      sql/rpl_tblmap.cc:
        Fixed compiler warnings
      sql/set_var.cc:
        Fixed compiler warnings
      sql/slave.cc:
        Fixed compiler warnings
      sql/sp_head.cc:
        Fixed compiler warnings
      sql/sql_base.cc:
        Fixed compiler warnings
        Fixed indentation
      sql/sql_binlog.cc:
        Fixed compiler warnings
      sql/sql_cache.cc:
        Fixed compiler warnings
      sql/sql_class.cc:
        Fixed compiler warnings
      sql/sql_handler.cc:
        Fixed compiler warnings
      sql/sql_lex.cc:
        Fixed compiler warnings
      sql/sql_parse.cc:
        Fixed compiler warnings
      sql/sql_partition.cc:
        Fixed compiler warnings
      sql/sql_prepare.cc:
        Fixed compiler warnings
      sql/sql_table.cc:
        Fixed compiler warnings
      sql/sql_test.cc:
        Fixed DBUG_PRINT style
      sql/sql_trigger.cc:
        Fixed DBUG_PRINT style
      sql/table.cc:
        Fixed compiler warnings
      storage/federated/ha_federated.cc:
        Fixed compiler warnings
      storage/myisam/mi_rsamepos.c:
        Fixed compiler warnings
      storage/ndb/include/ndb_global.h.in:
        After merge fix
      storage/ndb/include/util/NdbOut.hpp:
        Inform gcc that ndbout_c takes a printf() string as argument
      storage/ndb/include/util/SimpleProperties.hpp:
        After merge fixes
      storage/ndb/src/kernel/blocks/backup/Backup.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
        Fixed compiler warnings
        Fixed usage of uninitialized value (Got help from Jonas with patch)
      storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/lgman.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/pgman.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/restore.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/blocks/suma/Suma.cpp:
        Fixed compiler warnings
        Added missing enum's to switch
      storage/ndb/src/kernel/vm/Configuration.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/vm/DLHashTable.hpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/vm/RWPool.hpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/vm/SimulatedBlock.cpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/vm/WOPool.hpp:
        Fixed compiler warnings
      storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp:
        Fixed compiler warnings
      storage/ndb/src/mgmclient/CommandInterpreter.cpp:
        Fixed compiler warnings
      storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/DictCache.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/NdbIndexOperation.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/NdbIndexStat.cpp:
        Initialize possible uninitialized variable
      storage/ndb/src/ndbapi/NdbOperationInt.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/NdbRecAttr.cpp:
        Added missing enum's (To avoid compiler warnings)
      storage/ndb/src/ndbapi/NdbScanOperation.cpp:
        Fixed compiler warnings
      storage/ndb/src/ndbapi/ObjectMap.hpp:
        Fixed compiler warnings
      storage/ndb/tools/desc.cpp:
        Fixed compiler warnings
      storage/ndb/tools/restore/Restore.cpp:
        Fixed compiler warnings
      storage/ndb/tools/restore/consumer_restore.cpp:
        Fixed compiler warnings
      unittest/mytap/t/basic-t.c:
        Fixed compiler warnings
      unittest/mytap/tap.c:
        Fixed compiler warnings
      cb4895d2
  7. 17 Nov, 2006 1 commit
    • unknown's avatar
      Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR · 97608597
      unknown authored
      Fix tests for new behaviour: an error is thrown if a NON DETERMINISTIC
      stored function (SF) is called during statement-based replication (SBR).
      
      
      mysql-test/r/func_time.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/r/gis.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Mark function as DETERMINISTIC so it can be called with no error while
        doing statement-based replication (SBR).
      mysql-test/r/grant2.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/r/innodb_notembedded.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/r/ps.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Mark function as DETERMINISTIC so it can be called with no error while
        doing statement-based replication (SBR).
      mysql-test/r/query_cache.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/r/query_cache_notembedded.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/r/rpl_sp.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Move test for SF-calls in different replication modes to its own file, rpl_sf.
      mysql-test/r/rpl_sp_effects.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/r/sp.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Mark function as DETERMINISTIC so it can be called with no error while
        doing statement-based replication (SBR).
      mysql-test/r/timezone2.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/func_time.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/gis.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Mark function as DETERMINISTIC so it can be called with no error while
        doing statement-based replication (SBR).
      mysql-test/t/grant2.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/innodb_notembedded.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/ps.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/query_cache.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/query_cache_notembedded.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/rpl_sp.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/rpl_sp_effects.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      mysql-test/t/sp.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Mark function as DETERMINISTIC so it can be called with no error while
        doing statement-based replication (SBR).
      mysql-test/t/timezone2.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Modify test that contains non-deterministic functions so it can still be
        called with no error while doing statement-based replication (SBR).
      sql/item_func.cc:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        If 'log_bin_trust_function_creators' variable is set, don't throw an error
        on calling a non-deterministc function in statement-based replication (SBR).
      sql/sql_parse.cc:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Do not throw an error on calling a NON DETERMINISTIC stored procedure (SP)
        while doing statement-based replication (SBR), as the routine body is
        executed statement-by-statement.
      mysql-test/r/rpl_sf.result:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Test for stored function (SF) calls in different replication modes.
        NON DETERMINISTIC SFs are not allowed while doing
        statement-based replication (SBR).
      mysql-test/t/rpl_sf.test:
        Bug#16456 RBR: rpl_sp.test expects query to fail, but passes in RBR
        
        Test for stored function (SF) calls in different replication modes.
        NON DETERMINISTIC SFs are not allowed while doing
        statement-based replication (SBR).
      97608597
  8. 16 Nov, 2006 1 commit
    • unknown's avatar
      Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions) · 84391f91
      unknown authored
      Before this change, the functions BENCHMARK, ENCODE, DECODE and FORMAT could
      only accept a constant for some parameters.
      
      After this change, this restriction has been removed. An implication is that
      these functions can also be used in prepared statements.
      
      The change consist of changing the following classes:
      - Item_func_benchmark
      - Item_func_encode
      - Item_func_decode
      - Item_func_format
      to:
      - only accept Item* in the constructor,
      - and evaluate arguments during calls to val_xxx()
      which fits the general design of all the other functions.
      
      The 'TODO' items identified in item_create.cc during the work done for
      Bug 21114 are addressed by this fix, as a natural consequence of aligning
      the design.
      
      In the 'func_str' test, a single very long test line involving an explain
      extended select with many functions has been rewritten into multiple
      separate tests, to improve maintainability.
      The result of explain extended select decode(encode(...)) has changed,
      since the encode and decode functions now print all their parameters.
      
      
      mysql-test/r/func_str.result:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      mysql-test/r/parser.result:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      mysql-test/r/ps.result:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      mysql-test/t/func_str.test:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      mysql-test/t/parser.test:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      mysql-test/t/ps.test:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      sql/item_create.cc:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      sql/item_func.cc:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      sql/item_func.h:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      sql/item_strfunc.cc:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      sql/item_strfunc.h:
        Bug#22684 (BENCHMARK, ENCODE, DECODE and FORMAT are not real functions)
      84391f91
  9. 15 Nov, 2006 2 commits
    • unknown's avatar
      Bug#19955: unsigned bigint used as signed with MOD function · 0d18a405
      unknown authored
      Problem:  When we have a really large number (between 2^63 and 2^64)
      as the left side of the mod operator, it gets improperly corerced
      into a signed value.
      
      Solution:  Added check to see if the "negative" number is really
      positive, and if so, cast it.
      
      
      mysql-test/r/bigint.result:
        Added test case result
      mysql-test/t/bigint.test:
        Added test case
      sql/item_func.cc:
        Added check to see if we have an unsigned number that looks like a
        signed number.
      0d18a405
    • unknown's avatar
      Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR" · 788e965c
      unknown authored
      calling (rather than defining) non-deterministic SP in SBR (as opposed
      to RBR or mixed) will throw an error now.
      
      require mixed mode for tests now. SBR will now fail when calling
      non-deter SPs and SFs (as it should), and RBR already failed by virtue of
      giving different results for "show binlog" than the results-file has.
      also test for 16456 now. lastly make amends because one of the tests
      fails with a new error # now as code was added to sql_trigger.cc while
      test was disabled.
      
      
      mysql-test/mysql-test-run.pl:
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        mtr falsely assumed that default rep mode is stmt i/o mixed?
      mysql-test/r/func_time.result:
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        rpl_sp.test was disabled for a while; update results where wording has
        changed and add results for #16456
      mysql-test/r/rpl_sp.result:
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        rpl_sp.test was disabled for a while; update results where wording has
        changed and add results for #16456
        ---
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        calling (rather than defining) non-deterministic SP or SF in SBR
        (as opposed to RBR or mixed) will throw an error now.
      mysql-test/t/disabled.def:
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        re-enable rpl_sp.test
      mysql-test/t/rpl_sp.test:
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        require mixed mode for tests now. SBR will now fail when calling
        non-deter SPs (as it should), and RBR already failed by virtue of
        giving different results for "show binlog" than the results-file has.
        also test for 16456 now. lastly make amends because one of the tests
        fails with a new error # now as code was added to sql_trigger.cc while
        test was disabled.
        ---
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        calling (rather than defining) non-deterministic SP or SF in SBR
        (as opposed to RBR or mixed) will throw an error now.
      sql/item_func.cc:
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        calling (rather than defining) non-deterministic SF in SBR
        (as opposed to RBR or mixed) will throw an error now.
      sql/sql_parse.cc:
        Bug#16456 "RBR: rpl_sp.test expects query to fail, but passes in RBR"
        
        calling (rather than defining) non-deterministic SP in SBR (as opposed
        to RBR or mixed) will throw an error now.
      788e965c
  10. 13 Nov, 2006 3 commits
    • unknown's avatar
      Bug#18761: constant expression as UDF parameters not passed in as constant · e375f6e2
      unknown authored
      The code that set up data to be passed to user-defined functions was very
      old and analyzed the "Type" of the data that was passed into the UDF, when
      it really should analyze the "return_type", which is hard-coded for simple
      Items and works correctly for complex ones like functions.
      ---
      Added test at Sergei's behest.
      
      
      mysql-test/r/udf.result:
        Verify that various arguments work.
        ---
        Added test at Sergei's behest.
      mysql-test/t/udf.test:
        Verify that various arguments work.
        ---
        Added test at Sergei's behest.
      sql/item_func.cc:
        For function-Items, test whether it is constant and set the struct members 
        for the UDF parameter appropriately.
        
        Replace tabs with spaces in affected code.
      sql/udf_example.c:
        Include a simple function that is useful in testing.
      e375f6e2
    • unknown's avatar
      Small adjustment after merging fix for bug#23651 "Server crashes when · 7f7292f8
      unknown authored
      trigger which uses stored function invoked from different connections"
      into 5.1.
      
      
      sql/item_func.cc:
        After merge fix. Starting from 5.1 TABLE_SHARE for dummy TABLE object
        is also allocated in Item_func_sp constructor, so we use TABLE::alias
        instead of TABLE::s to check that dummy TABLE was not initialized yet
        or requires re-initialization.
      7f7292f8
    • unknown's avatar
      Fix for bug bug#23651 "Server crashes when trigger which uses · 95390bef
      unknown authored
      stored function invoked from different connections".
      
      Invocation of trigger which was using stored function from different
      connections caused server crashes (for non-debug server this happened
      in highly concurrent environment, but debug server failed on assertion
      in relatively simple scenario).
      
      Item_func_sp was not safe to use in triggers (in other words for
      re-execution from different threads) as artificial TABLE object
      pointed by Item_func_sp::dummy_table referenced incorrect THD
      object. To fix the problem we force re-initialization of this
      object for each re-execution of statement.
      
      
      mysql-test/r/trigger.result:
        Added test for bug#23651 "Server crashes when trigger which uses
        stored function invoked from different connections".
      mysql-test/t/trigger.test:
        Added test for bug#23651 "Server crashes when trigger which uses
        stored function invoked from different connections".
      sql/item_func.cc:
        To make Item_func_sp safe for usage in triggers (in other words safe
        for re-execution in different threads) we need to ensure that artificial
        TABLE object pointed by Item_func_sp::dummy_table references correct
        THD object. To achieve this we simply force its re-initialization for
        each re-execution of statement.
      95390bef
  11. 08 Nov, 2006 1 commit
    • unknown's avatar
      Bug#10963: LEFT/RIGHT/SUBSTR/.. string functions returns wrong result \ · a86a98ba
      unknown authored
        on large length
        
      Problem:  Most (all) of the numeric inputs were being coerced into
      int (32 bit) sized variables.  Works OK for sane inputs; any input
      larger than 2^32 (or 2^31 for signed vars) exihibited predictable
      wrapping behavior (up to about 10^18) and then started having really
      strange behaviour past that point (since the conversion to 64 bit int
      from the DECIMAL type can do weird things on out of range numbers).
      
      Solution: 1)  Add many tests.  2)  Convert input from (u)long type to
      (u)longlong.  3)  Do (sometimes multiple) sanity checks on input,
      keeping in mind that sometimes a negative longlong is not a negative
      longlong (if the unsigned_flag is set).  4) Emulate existing behavior
      w/rt negative and "small" out-of-bounds values.
      
      
      mysql-test/r/func_str.result:
        Additional test results for #10963
      mysql-test/t/func_str.test:
        Additional test results for #10963
      sql/item_func.cc:
        Used larger type for counting, to avoid truncation.
      sql/item_strfunc.cc:
        Fix for #10963, including comments and cleaned up logic
      a86a98ba
  12. 06 Nov, 2006 1 commit
    • unknown's avatar
      Bug#23411: ... MOD-ing zero returns strange result · 97610ded
      unknown authored
        
      The Item_func_mod objects never had maybe_null set, so users had no reason 
      to expect that they can be NULL, and may therefore deduce wrong results.
      Now, set maybe_null.
      
      
      mysql-test/r/func_test.result:
        Verify that the predictions are true.
      mysql-test/t/func_test.test:
        Verify that the predictions are true.
      sql/item_func.cc:
        MOD functions may be NULL.
      97610ded
  13. 30 Oct, 2006 1 commit
    • unknown's avatar
      Bug #8663 (cant use bigint as input to CAST) · 1344ff87
      unknown authored
      decimal->ulong conversion fixed to assign max possible ULONG if decimal
      is bigger
      Item_func_unsigned now handles DECIMAL parameter separately as we can't
      rely on decimal::val_int result here.
      
      
      mysql-test/r/type_newdecimal.result:
        result fixed
      mysql-test/t/type_newdecimal.test:
        testcase
      sql/item_func.cc:
        DECIMAL_RESULT should be handled separately here as it's
        always signed.
      strings/decimal.c:
        here we assign max possible ULONG if the decimal value is bigger
      1344ff87
  14. 24 Oct, 2006 1 commit
    • unknown's avatar
      Bug #21809: Error 1356 while selecting from view with grouping though underlying · bf3ff2ea
      unknown authored
                  select OK.
      The SQL parser was using Item::name to transfer user defined function attributes
      to the user defined function (udf). It was not distinguishing between user defined 
      function call arguments and stored procedure call arguments. Setting Item::name 
      was causing Item_ref::print() method to print the argument as quoted identifiers 
      and caused views that reference aggregate functions as udf call arguments (and 
      rely on Item::print() for the text of the view to store) to throw an undefined 
      identifier error.
      Overloaded Item_ref::print to print aggregate functions as such when printing
      the references to aggregate functions taken out of context by split_sum_func2()
      Fixed the parser to properly detect using AS clause in stored procedure arguments
      as an error.
      Fixed printing the arguments of udf call to print properly the udf attribute.
      
      
      mysql-test/r/udf.result:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - test cases
      mysql-test/t/udf.test:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - test cases
      sql/item.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - Don't print the refs to SUM functions as refs.
      sql/item_func.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - print the aliases in the udf calls
      sql/item_func.h:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - print the aliases in the udf calls
      sql/sql_lex.cc:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
      sql/sql_lex.h:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
      sql/sql_yacc.yy:
        Bug #21809: Error 1356 while selecting from view with grouping though underlying
                    select OK.
         - disable aliases for arguments in stored routine calls
         - fix bison duplicate symbol warnings
      bf3ff2ea
  15. 06 Oct, 2006 1 commit
    • unknown's avatar
      BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID. · 7820e189
      unknown authored
      Note: bug#21726 does not directly apply to 4.1, as it doesn't have stored
      procedures.  However, 4.1 had some bugs that were fixed in 5.0 by the
      patch for bug#21726, and this patch is a backport of those fixes.
      Namely, in 4.1 it fixes:
      
        - LAST_INSERT_ID(expr) didn't return value of expr (4.1 specific).
      
        - LAST_INSERT_ID() could return the value generated by current
          statement if the call happens after the generation, like in
      
            CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
            INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
      
        - Redundant binary log LAST_INSERT_ID_EVENTs could be generated.
      
      
      mysql-test/r/rpl_insert_id.result:
        Add result for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      mysql-test/t/rpl_insert_id.test:
        Add test case for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      sql/item_func.cc:
        Add implementation of Item_func_last_insert_id::fix_fields(), where we
        set THD::last_insert_id_used when statement calls LAST_INSERT_ID().
        In Item_func_last_insert_id::val_int(), return THD::current_insert_id
        if called like LAST_INSERT_ID(), otherwise return value of argument if
        called like LAST_INSERT_ID(expr).
      sql/item_func.h:
        Add declaration of Item_func_last_insert_id::fix_fields().
      sql/log_event.cc:
        Do not set THD::last_insert_id_used on LAST_INSERT_ID_EVENT.  Though we
        know the statement will call LAST_INSERT_ID(), it wasn't called yet.
      sql/set_var.cc:
        In sys_var_last_insert_id::value_ptr(), set THD::last_insert_id_used,
        and return THD::current_insert_id for @@LAST_INSERT_ID.
      sql/sql_class.h:
        Update comments.
        Remove THD::insert_id(), as it has lost its purpose now.
      sql/sql_insert.cc:
        Now it is OK to read THD::last_insert_id directly.
      sql/sql_load.cc:
        Now it is OK to read THD::last_insert_id directly.
      sql/sql_parse.cc:
        In mysql_execute_command(), remember THD::last_insert_id (first
        generated value of the previous statement) in THD::current_insert_id,
        which then will be returned for LAST_INSERT_ID() and @@LAST_INSERT_ID.
      sql/sql_select.cc:
        If "IS NULL" is replaced with "= <LAST_INSERT_ID>", use right value,
        which is THD::current_insert_id, and also set THD::last_insert_id_used
        to issue binary log LAST_INSERT_ID_EVENT.
      sql/sql_update.cc:
        Now it is OK to read THD::last_insert_id directly.
      tests/mysql_client_test.c:
        Add test case for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      7820e189
  16. 03 Oct, 2006 1 commit
    • unknown's avatar
      Fix for the patch for bug#21726: Incorrect result with multiple · 5f502963
      unknown authored
      invocations of LAST_INSERT_ID.
      
      Reding of LAST_INSERT_ID inside stored function wasn't noted by caller,
      and no LAST_INSERT_ID_EVENT was issued for binary log.
      
      The solution is to add THD::last_insert_id_used_bin_log, which is much
      like THD::last_insert_id_used, but is reset only for upper-level
      statements.  This new variable is used to issue LAST_INSERT_ID_EVENT.
      
      
      mysql-test/r/rpl_insert_id.result:
        For bug#21726, add result for statement-based replication of function
        calls.
      mysql-test/t/rpl_insert_id.test:
        For bug#21726, add test case for statement-based replication of function
        calls.
      sql/item_func.cc:
        Set THD::last_insert_id_used_bin_log for issuing of LAST_INSERT_ID_EVENT.
      sql/log.cc:
        Issue LAST_INSERT_ID_EVENT if THD::last_insert_id_used_bin_log is set.
      sql/set_var.cc:
        Set THD::last_insert_id_used_bin_log for issuing of LAST_INSERT_ID_EVENT.
      sql/sql_class.cc:
        Initialize THD::last_insert_id_used_bin_log.
        Fix typo, add whitespace.
      sql/sql_class.h:
        Add THD::last_insert_id_used_bin_log.
      sql/sql_parse.cc:
        Reset THD::last_insert_id_used_bin_log for upper-level statements.
      sql/sql_select.cc:
        Set THD::last_insert_id_used_bin_log for issuing of LAST_INSERT_ID_EVENT.
      5f502963
  17. 02 Oct, 2006 1 commit
    • unknown's avatar
      BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID · 09c5c3e7
      unknown authored
      Non-upper-level INSERTs (the ones in the body of stored procedure,
      stored function, or trigger) into a table that have AUTO_INCREMENT
      column didn't affected the result of LAST_INSERT_ID() on this level.
      
      The problem was introduced with the fix of bug 6880, which in turn was
      introduced with the fix of bug 3117, where current insert_id value was
      remembered on the first call to LAST_INSERT_ID() (bug 3117) and was
      returned from that function until it was reset before the next
      _upper-level_ statement (bug 6880).
      
      The fix for bug#21726 brings back the behaviour of version 4.0, and
      implements the following: remember insert_id value at the beginning
      of the statement or expression (which at that point equals to
      the first insert_id value generated by the previous statement), and
      return that remembered value from LAST_INSERT_ID() or @@LAST_INSERT_ID.
      
      Thus, the value returned by LAST_INSERT_ID() is not affected by values
      generated by current statement, nor by LAST_INSERT_ID(expr) calls in
      this statement.
      
      Version 5.1 does not have this bug (it was fixed by WL 3146).
      
      
      mysql-test/r/rpl_insert_id.result:
        Add results for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID, and bug#20339: stored procedure using LAST_INSERT_ID()
        does not replicate statement-based.
      mysql-test/t/rpl_insert_id.test:
        Add test cases for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID, and bug#20339: stored procedure using LAST_INSERT_ID()
        does not replicate statement-based.
      sql/item_func.cc:
        Add implementation of Item_func_last_insert_id::fix_fields(), where we
        remember in THD::current_insert_id the first value generated during
        execution of the previous statement, which is returned then from
        Item_func_last_insert_id::val_int().
      sql/item_func.h:
        Add declaration of Item_func_last_insert_id::fix_fields().
      sql/log_event.cc:
        Do not set THD::last_insert_id_used on LAST_INSERT_ID_EVENT.  Though we
        know the statement will call LAST_INSERT_ID(), it wasn't called yet.
      sql/set_var.cc:
        In sys_var_last_insert_id::value_ptr() remember in
        THD::current_insert_id the first value generated during execution of the
        previous statement, and return this value for @@LAST_INSERT_ID.
      sql/sql_class.cc:
        Reset THD::last_insert_id_used after each statement execution.
      sql/sql_class.h:
        Rather then remember current insert_id value on first invocation of
        THD::insert_id(), remember it in Item_func_last_insert_id::fix_fields(),
        sys_var_last_insert_id::value_ptr(), or mysql_execute_command().
        Remove THD::insert_id(), as it lost its value now.
      sql/sql_insert.cc:
        THD::insert_id() is removed, use THD::last_insert_id directly.
      sql/sql_load.cc:
        THD::insert_id() is removed, using THD::last_insert_id directly is OK.
      sql/sql_parse.cc:
        Remember in THD::current_insert_id first generated insert id value of
        the previous statement in mysql_execute_command().
        No need to reset THD::last_insert_id_used in
        mysql_reset_thd_for_next_command(), it will be reset after each
        statement.
      sql/sql_select.cc:
        If "IS NULL" is replaced with "= <LAST_INSERT_ID>", use right value,
        which is THD::current_insert_id, and also set THD::last_insert_id_used
        to issue binary log LAST_INSERT_ID_EVENT.
      sql/sql_update.cc:
        THD::insert_id() is removed, use THD::last_insert_id directly.
      tests/mysql_client_test.c:
        Add test case for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      09c5c3e7
  18. 13 Sep, 2006 3 commits
    • unknown's avatar
      Fixed the faulty merge · e2db2de5
      unknown authored
      e2db2de5
    • unknown's avatar
      Fixed the faulty merge · a760a584
      unknown authored
      a760a584
    • unknown's avatar
      Cset exclude: kaa@polly.local|ChangeSet|20060912122540|09861 · 27fe6590
      unknown authored
      Cset exclude: kaa@polly.local|ChangeSet|20060908100829|09983
      
      
      sql/item_cmpfunc.cc:
        Exclude
      sql/item_cmpfunc.h:
        Exclude
      sql/item_func.cc:
        Exclude
      sql/item_func.h:
        Exclude
      sql/log_event.cc:
        Exclude
      sql/sql_class.h:
        Exclude
      mysql-test/r/case.result:
        Exclude
      mysql-test/r/func_if.result:
        Exclude
      mysql-test/r/func_test.result:
        Exclude
      mysql-test/r/user_var.result:
        Exclude
      mysql-test/t/case.test:
        Exclude
      mysql-test/t/func_if.test:
        Exclude
      mysql-test/t/func_test.test:
        Exclude
      mysql-test/t/user_var.test:
        Exclude
      27fe6590
  19. 12 Sep, 2006 2 commits
    • unknown's avatar
      Fixed compilation · 40d292ad
      unknown authored
      40d292ad
    • unknown's avatar
      Post-review fixes for bug #20924 · c839cd8e
      unknown authored
      mysql-test/r/case.result:
        Post-review fix for bug #20924
      mysql-test/r/func_if.result:
        Post-review fix for bug #20924
      mysql-test/r/func_test.result:
        Post-review fix for bug #20924
      mysql-test/r/user_var.result:
        Post-review fix for bug #20924
      mysql-test/t/case.test:
        Post-review fix for bug #20924
      mysql-test/t/func_if.test:
        Post-review fix for bug #20924
      mysql-test/t/func_test.test:
        Post-review fix for bug #20924
      mysql-test/t/user_var.test:
        Post-review fix for bug #20924
      sql/item_func.cc:
        Post-review fix for bug #20924
      sql/item_func.h:
        Post-review fix for bug #20924
      sql/log_event.cc:
        Post-review fix for bug #20924
      c839cd8e
  20. 09 Sep, 2006 1 commit
  21. 08 Sep, 2006 1 commit
    • unknown's avatar
      Bug #20924: CAST(expr as UNSIGNED) returns SIGNED value when used in various functions · 8e14a50a
      unknown authored
      - Honor unsigned_flag in the corresponding functions
      - Use compare_int_signed_unsigned()/compare_int_unsigned_signed() instead of explicit comparison in GREATEST() and LEAST()
      
      
      mysql-test/r/case.result:
        Added test case for bug #20924
      mysql-test/r/func_if.result:
        Added test case for bug #20924
      mysql-test/r/func_test.result:
        Added test case for bug #20924
      mysql-test/r/user_var.result:
        Added test case for bug #20924
      mysql-test/t/case.test:
        Added test case for bug #20924
      mysql-test/t/func_if.test:
        Added test case for bug #20924
      mysql-test/t/func_test.test:
        Added test case for bug #20924
      mysql-test/t/user_var.test:
        Added test case for bug #20924
      sql/item_cmpfunc.cc:
        Bug #20924: CAST(expr as UNSIGNED) returns SIGNED value when used in various functions
        
        - Moved some code out of Arg_comparator to external functions to be reused in Item_func_min_max
        - Fixed IFNULL(), IF(), CASE() and COALESCE()
      sql/item_cmpfunc.h:
        Bug #20924: CAST(expr as UNSIGNED) returns SIGNED value when used in various functions
        
        - Moved some code out of Arg_comparator to external functions to be reused in Item_func_min_max
      sql/item_func.cc:
        Bug #20924: CAST(expr as UNSIGNED) returns SIGNED value when used in various functions
        
        Fixed LEAST(), GREATEST() and "SET @A=..." parts
      sql/item_func.h:
        Bug #20924: CAST(expr as UNSIGNED) returns SIGNED value when used in various functions
        
        Fixed "SET @A=..." part
      sql/sql_class.h:
        Bug #20924: CAST(expr as UNSIGNED) returns SIGNED value when used in various functions
        
        Fixed "SET @A=..." part
      8e14a50a
  22. 07 Sep, 2006 1 commit
    • unknown's avatar
      Fixed bug #21698: erroneously a field could be replaced by an · f06e3012
      unknown authored
      equal constant under any circumstances.
      In fact this substitution can be allowed if the field is
      not of a type string or if the field reference serves as 
      an argument of a comparison predicate.  
      
      
      mysql-test/r/func_str.result:
        Added test cases for bug #21698.
      mysql-test/r/heap_hash.result:
        Adjusted results after the fix for bug #21198.
      mysql-test/t/func_str.test:
        Added test cases for bug #21698.
      sql/item.cc:
        Fixed bug #21198.
        Added a method to check whether a field reference can be 
        substituted for a constant equal to the field.
        This substitution is allowed if the field is not of a type string
        or if the field reference serves as an argument of a comparison
        predicate.
      sql/item.h:
        Fixed bug #21698.
        Added a new virtual transformation method for a item 'compile'
        with two callback function parameters.
        Added a new virtual method 'subst_argument_checker' to be used
        as an amnalyzer method.
        This method is supposed to set it...
      f06e3012
  23. 24 Aug, 2006 1 commit
    • unknown's avatar
      BUG#21166: Prepared statement causes signal 11 on second execution · f98a9109
      unknown authored
      Changes in an item tree done by optimizer weren't properly
      registered and went unnoticed, which resulted in preliminary freeing
      of used memory.
      
      
      mysql-test/r/ps.result:
        Add result for bug#21166: Prepared statement causes signal 11
        on second execution.
      mysql-test/t/ps.test:
        Add test case for bug#21166: Prepared statement causes signal 11
        on second execution.
      sql/item.cc:
        Move Item::transform() and Item_default_value::transform() from
        item.h here and use THD::change_item_tree() instead of plain
        assignment.
        Change Item_field::set_no_const_sub() to be used with Item::walk()
        instead of Item::transform().
      sql/item.h:
        Move definition of Item::transform() and Item_default_value::transform()
        to item.cc.
        Change Item::set_no_const_sub() to be used with Item::walk()
        instead of Item::transform().
      sql/item_cmpfunc.cc:
        Use Item::walk() to execute Item::set_no_const_sub().
        Use THD::change_item_tree() instead of plain assignment.
      sql/item_func.cc:
        Add assert and comment to Item_func::traverse_cond().
      sql/item_row.cc:
        Use THD::change_item_tree() instead of plain assignment.
      sql/item_strfunc.cc:
        Move Item_func_make_set::transform() from item_strfunc.h here and use
        THD::change_item_tree() instead of plain assignment.
      sql/item_strfunc.h:
        Move definition of Item_func_make_set::transform() to item_strfunc.cc.
      f98a9109
  24. 22 Aug, 2006 2 commits
    • unknown's avatar
      item_cmpfunc.cc, item.cc: · a989cf0b
      unknown authored
        Additional fix for bug #21475
      item_func.h, item_func.cc:
        Additional fix for bug#16861
      
      
      sql/item_func.h:
        Additional fix for bug#16861
      sql/item_func.cc:
        Additional fix for bug#16861
      sql/item_cmpfunc.cc:
        Additional fix for bug #21475
      sql/item.cc:
        Additional fix for bug #21475
      a989cf0b
    • unknown's avatar
      Fixed bug#16861: User defined variable can have a wrong value if a tmp table was · 00b9b859
      unknown authored
      used.
      
      Sorting by RAND() uses a temporary table in order to get a correct results.
      User defined variable was set during filling the temporary table and later
      on it is substituted for its value from the temporary table. Due to this
      it contains the last value stored in the temporary table.
      
      Now if the result_field is set for the Item_func_set_user_var object it 
      updates variable from the result_field value when being sent to a client.
      
      The Item_func_set_user_var::check() now accepts a use_result_field
      parameter. Depending on its value the result_field or the args[0] is used
      to get current value.
      
      
      mysql-test/r/user_var.result:
        Added a test case for bug#16861: User defined variable can have a wrong value if a tmp table was used.
      mysql-test/t/user_var.test:
        Added a test case for bug#16861: User defined variable can have a wrong value if a tmp table was used.
      sql/item_func.cc:
        Fixed bug#16861: User defined variable can have a wrong value if a tmp table was used.
        Now if the result_field is set for the Item_func_set_user_var object it 
        updates variable from the result_field value when being sent to a client.
        
        The Item_func_set_user_var::check() now accepts a use_result_field
        parameter. Depending on its value the result_field or the args[0] is used
        to get current value.
      sql/item_func.h:
        Fixed bug#16861: User defined variable can have a wrong value if a tmp table was used.
        Added a new SUSERVAR_FUNC function type.
        Updated the Item_func_set_user_var::check() function declaration.
        Added the Item_func_set_user_var::send() member function.
      sql/set_var.cc:
        Fixed bug#16861: User defined variable can have a wrong value if a tmp table was used.
        Modified to use updated Item_func_set_user_var::check() function.
      sql/sql_class.cc:
        Fixed bug#16861: User defined variable can have a wrong value if a tmp table was used.
        Modified to use updated Item_func_set_user_var::check() function.
      sql/sql_select.cc:
        Fixed bug#16861: User defined variable can have a wrong value if a tmp table was used.
        Now an Item_func_set_user_var object isn't substituted for an Item_field object after filling a temporary table.
      00b9b859
  25. 08 Aug, 2006 1 commit
    • unknown's avatar
      Bug#16172 DECIMAL data type processed incorrectly · 7c3dc6c5
      unknown authored
      issue an 'overflow warning' if result value is bigger than max possible value
      
      
      include/decimal.h:
        Bug#16172 DECIMAL data type processed incorrectly
        new function decimal_intg()
      mysql-test/r/cast.result:
        Bug#16172 DECIMAL data type processed incorrectly
        result fix
      mysql-test/r/type_newdecimal.result:
        Bug#16172 DECIMAL data type processed incorrectly
        test result
      mysql-test/r/view.result:
        Bug#16172 DECIMAL data type processed incorrectly
        result fix
      mysql-test/t/type_newdecimal.test:
        Bug#16172 DECIMAL data type processed incorrectly
        test case
      sql/item_create.cc:
        Bug#16172 DECIMAL data type processed incorrectly
        do not increase decimal part on 2(according to manual)
      sql/my_decimal.h:
        Bug#16172 DECIMAL data type processed incorrectly
        new function my_decimal_intg()
      strings/decimal.c:
        Bug#16172 DECIMAL data type processed incorrectly
        new function decimal_intg()
      7c3dc6c5
  26. 26 Jul, 2006 1 commit
    • unknown's avatar
      item_func.h, item_func.cc, sql_select.cc, item.h: · eb38c451
      unknown authored
        Post review changes for bug#19862.
      
      
      sql/sql_select.cc:
        Post review changes for bug#19862.
      sql/item_func.h:
        Post review changes for bug#19862.
      sql/item_func.cc:
        Post review changes for bug#19862.
      sql/item.h:
        Post review changes for bug#19862.
      eb38c451
  27. 25 Jul, 2006 1 commit
    • unknown's avatar
      Fixed bug#19862: Sort with filesort by function evaluates function twice · 7af7bd48
      unknown authored
      When there is no index defined filesort is used to sort the result of a
      query. If there is a function in the select list and the result set should be
      ordered by it's value then this function will be evaluated twice. First time to
      get the value of the sort key and second time to send its value to a user.
      This happens because filesort when sorts a table remembers only values of its
      fields but not values of functions.
      All functions are affected. But taking into account that SP and UDF functions
      can be both expensive and non-deterministic a temporary table should be used 
      to store their results and then sort it to avoid twice SP evaluation and to 
      get a correct result.
      
      If an expression referenced in an ORDER clause contains a SP or UDF 
      function, force the use of a temporary table.
      
      A new Item_processor function called func_type_checker_processor is added
      to check whether the expression contains a function of a particular type.
      
      
      mysql-test/t/udf.test:
        Added test case for bug#19862: Sort with filesort by function evaluates function twice
      mysql-test/t/sp.test:
        Added test case for bug#19862: Sort with filesort by function evaluates function twice
      mysql-test/r/sp.result:
        Added test case for bug#19862: Sort with filesort by function evaluates function twice
      mysql-test/r/udf.result:
        Added test case for bug#19862: Sort with filesort by function evaluates function twice
      sql/sql_select.cc:
        Fixed bug#19862: Sort with filesort by function evaluates function twice
        If an expression referenced in an ORDER clause contains a SP or UDF
        function, force the use of a temporary table.
      sql/item_func.h:
        Fixed bug#19862: Sort with filesort by function evaluates function twice
        A new Item_processor function called func_type_checker_processor is added
        to check whether the expression contains a function of a particular type.
      sql/item.h:
        Fixed bug#19862: Sort with filesort by function evaluates function twice
        A new Item_processor function called func_type_checker_processor is added
        to check whether the expression contains a function of a particular type.
      sql/item_func.cc:
        Fixed bug#19862: Sort with filesort by function evaluates function twice
        A new Item_processor function called func_type_checker_processor is added
        to check whether the expression contains a function of a particular type.
      7af7bd48
  28. 13 Jul, 2006 1 commit
    • unknown's avatar
      Bug#18630: Arguments of suid routine calculated in wrong security · cd05976d
      unknown authored
                 context.
      
      Routine arguments were evaluated in the security context of the routine
      itself, not in the caller's context.
      
      The bug is fixed the following way:
      
        - Item_func_sp::find_and_check_access() has been split into two
          functions: Item_func_sp::find_and_check_access() itself only
          finds the function and check that the caller have EXECUTE privilege
          on it.  New function set_routine_security_ctx() changes security
          context for SUID routines and checks that definer have EXECUTE
          privilege too.
      
        - new function sp_head::execute_trigger() is called from
          Table_triggers_list::process_triggers() instead of
          sp_head::execute_function(), and is effectively just as the
          sp_head::execute_function() is, with all non-trigger related code
          removed, and added trigger-specific security context switch.
      
        - call to Item_func_sp::find_and_check_access() stays outside
          of sp_head::execute_function(), and there is a code in
          sql_parse.cc before the call to sp_head::execute_procedure() that
          checks that the caller have EXECUTE privilege, but both
          sp_head::execute_function() and sp_head::execute_procedure() call
          set_routine_security_ctx() after evaluating their parameters,
          and restore the context after the body is executed.
      
      
      mysql-test/r/sp-security.result:
        Add test case for bug#18630: Arguments of suid routine calculated
        in wrong security context.
      mysql-test/t/sp-security.test:
        Add result for bug#18630: Arguments of suid routine calculated
        in wrong security context.
      sql/item_func.cc:
        Do not change security context before executing the function, as it
        will be changed after argument evaluation.
        Do not change security context in Item_func_sp::find_and_check_access().
      sql/item_func.h:
        Change prototype for Item_func_sp::find_and_check_access().
      sql/sp_head.cc:
        Add set_routine_security_ctx() function.
        Add sp_head::execute_trigger() method.
        Change security context in sp_head::execute_trigger(), and in
        sp_head::execute_function() and sp_head::execute_procedure()
        after argument evaluation.
        Move pop_all_cursors() call to sp_head::execute().
      sql/sp_head.h:
        Add declaration for sp_head::execute_trigger() and
        set_routine_security_ctx().
      sql/sql_parse.cc:
        Do not change security context before executing the procedure, as it
        will be changed after argument evaluation.
      sql/sql_trigger.cc:
        Call new sp_head::execute_trigger() instead of
        sp_head::execute_function(), which is responsible to switch
        security context.
      cd05976d
  29. 09 Jul, 2006 2 commits
    • unknown's avatar
      WL#3146 "less locking in auto_increment": · 6e9f084c
      unknown authored
      this is a cleanup patch for our current auto_increment handling:
      new names for auto_increment variables in THD, new methods to manipulate them
      (see sql_class.h), some move into handler::, causing less backup/restore
      work when executing substatements. 
      This makes the logic hopefully clearer, less work is is needed in
      mysql_insert().
      By cleaning up, using different variables for different purposes (instead
      of one for 3 things...), we fix those bugs, which someone may want to fix
      in 5.0 too:
      BUG#20339 "stored procedure using LAST_INSERT_ID() does not replicate
      statement-based"
      BUG#20341 "stored function inserting into one auto_increment puts bad
      data in slave"
      BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY UPDATE"
      (now if a row is updated, LAST_INSERT_ID() will return its id)
      and re-fixes:
      BUG#6880 "LAST_INSERT_ID() value changes during multi-row INSERT"
      (already fixed differently by Ramil in 4.1)
      Test of documented behaviour of mysql_insert_id() (there was no test).
      The behaviour changes introduced are:
      - LAST_INSERT_ID() now returns "the first autogenerated auto_increment value
      successfully inserted", instead of "the first autogenerated auto_increment
      value if any row was successfully inserted", see auto_increment.test.
      Same for mysql_insert_id(), see mysql_client_test.c.
      - LAST_INSERT_ID() returns the id of the updated row if ON DUPLICATE KEY
      UPDATE, see auto_increment.test. Same for mysql_insert_id(), see
      mysql_client_test.c.
      - LAST_INSERT_ID() does not change if no autogenerated value was successfully 
      inserted (it used to then be 0), see auto_increment.test.
      - if in INSERT SELECT no autogenerated value was successfully inserted,
      mysql_insert_id() now returns the id of the last inserted row (it already
      did this for INSERT VALUES), see mysql_client_test.c.
      - if INSERT SELECT uses LAST_INSERT_ID(X), mysql_insert_id() now returns X
      (it already did this for INSERT VALUES), see mysql_client_test.c.
      - NDB now behaves like other engines wrt SET INSERT_ID: with INSERT IGNORE,
      the id passed in SET INSERT_ID is re-used until a row succeeds; SET INSERT_ID
      influences not only the first row now.
      
      Additionally, when unlocking a table we check that the thread is not keeping
      a next_insert_id (as the table is unlocked that id is potentially out-of-date);
      forgetting about this next_insert_id is done in a new
      handler::ha_release_auto_increment().
      
      Finally we prepare for engines capable of reserving finite-length intervals
      of auto_increment values: we store such intervals in THD. The next step
      (to be done by the replication team in 5.1) is to read those intervals from
      THD and actually store them in the statement-based binary log. NDB
      will be a good engine to test that.
      
      
      mysql-test/extra/binlog_tests/binlog.test:
        Testing that if INSERT_ID is set to a value too big for the
        column's type, the binlogged INSERT_ID is the truncated value
        (important if slave has a column of a "wider" numeric type).
        Testing binlogging of INSERT_ID with INSERT DELAYED, to be sure that 
        we binlog an INSERT_ID event only for the delayed rows which use one.
      mysql-test/extra/rpl_tests/rpl_insert_id.test:
        Testcase for BUG#20339 "stored procedure using
        LAST_INSERT_ID() does not replicate statement-based".
        Testcase for BUG#20341 "stored function inserting into one
        auto_increment puts bad data in slave".
      mysql-test/extra/rpl_tests/rpl_loaddata.test:
        Test that LOAD DATA INFILE sets a value for a future LAST_INSERT_ID().
      mysql-test/r/auto_increment.result:
        behaviour change: when INSERT totally fails (not even succeeds
        partially and then rolls back), don't change last_insert_id().
        Behaviour change: LAST_INSERT_ID() is now the first successfully inserted,
        autogenerated, id.
        Behaviour change: if INSERT ON DUPLICATE KEY UPDATE, if the table has auto_increment
        and a row is updated, then LAST_INSERT_ID() returns the id of this row.
      mysql-test/r/binlog_row_binlog.result:
        result update
      mysql-test/r/binlog_stm_binlog.result:
        result update
      mysql-test/r/insert.result:
        result update
      mysql-test/r/rpl_insert_id.result:
        result update
      mysql-test/r/rpl_loaddata.result:
        result update
      mysql-test/r/rpl_ndb_auto_inc.result:
        ndb's behaviour is now like other engines wrt SET INSERT_ID
        in a multi-row INSERT:
        - with INSERT IGNORE: the id passed in SET INSERT_ID is re-used until
        a row succeeds.
        - generally, SET INSERT_ID sets the first value and other values are
        simply computed from this first value, instead of previously where
        the 2nd and subsequent values where not influenced by SET INSERT_ID;
        this good change is due to the removal of "thd->next_insert_id=0"
        from ha_ndbcluster.
      mysql-test/t/auto_increment.test:
        A testcase of BUG#19243: if ON DUPLICATE KEY UPDATE updates a row,
        LAST_INSERT_ID() now returns the id of the row.
        Test of new behaviour of last_insert_id() when no autogenerated value was
        inserted, or when only some autogenerated value (not the first of them) was
        inserted.
      mysql-test/t/insert.test:
        testing INSERT IGNORE re-using generated values
      sql/ha_federated.cc:
        update for new variables.
      sql/ha_ndbcluster.cc:
        handler::auto_increment_column_changed not needed, equivalent to
        (insert_id_for_cur_row > 0).
        thd->next_insert_id=0 not needed anymore; it was used to force
        handler::update_auto_increment() to call ha_ndbcluster::get_auto_increment()
        for each row of a multi-row INSERT, now this happens naturally
        because NDB says "I have reserved you *one* value" in get_auto_increment(),
        so handler::update_auto_increment() calls again for next row.
      sql/handler.cc:
        More comments, use of new methods and variables. Hopes to be clearer
        than current code.
        thd->prev_insert_id not in THD anymore: it is managed locally by inserters
        (like mysql_insert()).
        THD::clear_next_insert_id is now equivalent to
        handler::next_insert_id > 0.
        get_auto_increment() reserves an interval of values from the engine,
        uses this interval for next rows of the statement, until interval
        is exhausted then it asks for another interval (of a bigger size
        than the first one; size doubles until reaching 65535 then it stays constant).
        If doing statement-based binlogging, intervals are remembered in a list
        for storage in the binlog.
        For "forced" insert_id values (SET INSERT_ID or replication slave),
        forced_auto_inc_intervals is non-empty and the handler takes its intervals
        from there, without calling get_auto_increment().
        ha_release_auto_increment() resets the handler's auto_increment variables;
        it calls release_auto_increment() which is handler-dependent and
        serves to return to the engine any unused tail of the last used
        interval.
        If ending a statement, next_insert_id>0 means that autoinc values have been
        generated or taken from the master's binlog (in a replication slave) so
        we clear those values read from binlog, so that next top- or sub-
        statement does not use them.
      sql/handler.h:
        handler::auto_increment_changed can be replaced by
        (handler::insert_id_for_cur_row > 0).
        THD::next_insert_id moves into handler (more natural, and prepares
        for the day when we'll support a single statement inserting into
        two tables - "multi-table INSERT" like we have UPDATE - will this
        happen?).
        This move makes the backup/restore of THD::next_insert_id when entering
        a substatement unneeded, as each substatement has its own handler
        objects.
      sql/item_func.cc:
        new names for variables.
        For the setting of what mysql_insert_id() will return to the client,
        LAST_INSERT_ID(X) used to simply pretend that the generated autoinc
        value for the current row was X, but this led to having no reliable
        way to know the really generated value, so we now have a bool:
        thd->arg_of_last_insert_id_function which enables us to know that
        LAST_INSERT_ID(X) was called (and then X can be found in
        thd->first_successful_insert_id_in_prev_stmt).
      sql/log.cc:
        new variable names for insert_ids. Removing some unused variables in the slow
        log.
      sql/log_event.cc:
        new variable names, comments. Preparing for when master's won't binlog
        LAST_INSERT_ID if it was 0.
      sql/set_var.cc:
        new variable names.
        The last change repeats how Bar fixed BUG#20392
        "INSERT_ID session variable has weird value" in 5.0.
      sql/sql_class.cc:
        new variables for insert_id. In THD::cleanup_after_query() we fix
        BUG#20339 "stored procedure using LAST_INSERT_ID() does not replicate
        statement-based" (will one want to fix it in 5.0?). Many comments
        about what stored functions do to auto_increment.
        In reset|restore_sub_statement_state(), we need to backup less
        auto_inc variables as some of them have moved to the handler;
        we backup/restore those which are about the current top- or sub-
        statement, *not* those about the statement-based binlog
        (which evolve as the top- and sub-statement execute).
        Because we split THD::last_insert_id into 
        THD::first_successful_insert_id_in_prev_stmt and
        THD::auto_inc_intervals_for_binlog (among others), we fix
        BUG#20341 "stored function inserting into one auto_increment
        puts bad data in slave": indeed we can afford to not backup/restore
        THD::auto_inc_intervals_for_binlog (which fixes the bug) while still
        backing up / restoring THD::first_successful_insert_id_in_prev_stmt
        (ensuring that the top-level LAST_INSERT_ID() is not affected by INSERTs
        done by sub-statements, as is desirable and tested in rpl_insert_id.test).
      sql/sql_class.h:
        new variables and methods for auto_increment.
        Some THD members move into handler (those which are really about
        the table being inserted), some stay in THD (those which are
        about what a future LAST_INSERT_ID() should return, or about
        what should be stored into the statement-based binlog).
        THD::next_insert_id moves to handler::.
        THD::clear_next_insert_id removed (had become equivalent
        to next_insert_id > 0).
        THD::last_insert_id becomes four:
        THD::first_successful_insert_id_in_cur_stmt,
        THD::auto_inc_intervals_for_binlog,
        handler::insert_id_for_cur_row,
        THD::first_successful_insert_id_in_prev_stmt.
        THD::current_insert_id becomes:
        THD::first_successful_insert_id_in_prev_stmt_for_binlog
        THD::prev_insert_id is removed, handler can just use
        handler::insert_id_for_cur_row instead (which is more accurate:
        for the first row, prev_insert_id was set before get_auto_increment
        was called, so was 0, causing a call to
        get_auto_increment() for the 2nd row if the 1st row fails;
        here we don't need the call as insert_id_for_cur_row has
        the value of the first row).
        THD::last_insert_id_used becomes: stmt_depends_on_first_row_in_prev_stmt
        THD::insert_id_used is removed (equivalent to
        auto_inc_intervals_for_binlog non empty).
        The interval returned by get_auto_increment() and currently being
        consumed is handler::auto_inc_interval_for_cur_row.
        Comments to explain each of them.
        select_insert::last_insert_id becomes autoinc_value_of_last_inserted_row.
      sql/sql_insert.cc:
        the "id" variable is not changed for each row now; it used to compensate for
        this contradiction:
        - thd->last_insert_id supposed job was to keep the id of the first row
        - but it was updated for every row
        - so mysql_insert() made sure to catch its first value and restore it at the end of stmt.
        Now THD keeps the first value in first_successful_insert_id_in_cur_stmt,
        and value of the row in insert_id_for_cur_row. So "id" only serves to fill
        mysql_insert_id(), as depending on some conditions, "id" must be different
        values.
        Prev_insert_id moves from THD to write_record().
        We now set LAST_INSERT_ID() in ON DUPLICATE KEY UPDATE too (BUG#19243).
        In an INSERT DELAYED, we still "reset auto-increment caching" but differently
        (by calling ha_release_auto_increment()).
      sql/sql_load.cc:
        no need to fiddle with "id", THD maintains
        THD::first_successful_insert_id_in_cur_stmt by itself and correctly now.
        ha_release_auto_increment() is now (logically) called before we unlock
        the table.
      sql/sql_parse.cc:
        update to new variable names.
        Assertion that reset_thd_for_next_command() is not called for every
        substatement of a routine (I'm not against it, but if we do this change,
        statement-based binlogging needs some adjustments).
      sql/sql_select.cc:
        update for new variable names
      sql/sql_table.cc:
        next_insert_id not needed in mysql_alter_table(), THD manages.
      sql/sql_update.cc:
        update for new variable names.
        Even though this is UPDATE, an insert id can be generated (by
        LAST_INSERT_ID(X)) and should be recorded because mysql_insert_id() wants
        to know about it.
      sql/structs.h:
        A class for "discrete" intervals (intervals of integer numbers with a certain
        increment between them): Discrete_interval, and a class for a list of such
        intervals: Discrete_intervals_list
      tests/mysql_client_test.c:
        tests of behaviour of mysql_insert_id(): there were no such tests, while in
        our manual we document its behaviour. In comments you'll notice the behaviour
        changes introduced (there are 5).
      6e9f084c
    • unknown's avatar
      Fix compiler warnings in sql_udf.h: ISO C++ forbids casting · 42ec208d
      unknown authored
      between pointer to function and pointer to object.
      
      
      sql/item_func.cc:
        Use typedef names instead of hard-coded types for udf init/deinit
        functions.
      sql/sql_udf.cc:
        Use typedef names for udf function types.
      42ec208d
  30. 30 Jun, 2006 1 commit
    • unknown's avatar
      BUG#20769: Dangling pointer in ctype_recoding test case. · 17c4a2ea
      unknown authored
      In some functions dealing with strings and character sets, the wrong
      pointers were saved for restoration in THD::rollback_item_tree_changes().
      This could potentially cause random corruption or crashes.
      
      Fixed by passing the original Item ** locations, not local stack copies.
      
      Also remove unnecessary use of default arguments.
      
      
      sql/item.cc:
        Function agg_item_charsets() now handles non-consequtive Item *'s.
      sql/item.h:
        Remove use of default argument.
      sql/item_cmpfunc.cc:
        Remove use of default argument.
      sql/item_func.cc:
        Remove use of default argument.
      sql/item_func.h:
        Function agg_item_charsets() now handles non-consequtive Item *'s.
      sql/item_strfunc.cc:
        Pass original Item **'s to agg_arg_charsets(), not local copies, to ensure
        proper restoration in THD::rollback_item_tree_changes().
      sql/item_sum.cc:
        Remove use of default argument.
      17c4a2ea
  31. 16 Jun, 2006 1 commit