An error occurred fetching the project authors.
  1. 13 Dec, 2011 1 commit
  2. 03 Nov, 2011 1 commit
  3. 26 Sep, 2011 1 commit
    • Michael Widenius's avatar
      Allow one to block an account by using GRANT max_user_connections = -1 · 88b03b95
      Michael Widenius authored
      One can set @@global.max_user_connections to -1 to block anyone, except SUPER user, to login.
      If max_user_connection is 0, one can't change it without a restart (needed to get user connections counting to work correctly)
      
      
      mysql-test/r/system_mysql_db.result:
        Changed max_user_connections to handle negative numbers.
      mysql-test/r/user_limits-2.result:
        New test case that one can't change max_user_connection if it was 0
      mysql-test/r/user_limits.result:
        Fixed wrong error messages.
      mysql-test/r/variables.result:
        Store / restore max_user_connections (needed as there is now a --master.opt file that changes it)
      mysql-test/t/subselect_mat_cost-master.opt:
        Enable slow query log (as this test found some errors in slow query logging)
      mysql-test/t/user_limits-2.test:
        New test case that one can't change max_user_connection if it was 0
      mysql-test/t/user_limits-master.opt:
        Set max_user_connections (as one can't change it if it was 0)
      mysql-test/t/user_limits.test:
        Test max_user_connections -1
      mysql-test/t/variables-master.opt:
        Set max_user_connections (as one can't change it if it was 0)
      mysql-test/t/variables.test:
        Set/restore max_user_connections
      scripts/Makefile.am:
        Add a text message to mysql_fix_privilege_tables.sql that it's automaticly generated
      scripts/mysql_system_tables.sql:
        Change max_user_connections to signed
      scripts/mysql_system_tables_fix.sql:
        Change max_user_connections to signed
      sql/item_func.cc:
        Change SHOW_INT to be signed.
        (Needed for max_user_connections and it's probably a bug that it was not originally signed)
      sql/log.cc:
        Remove some code that was not needed (All these variables are reset at start of query)
      sql/mysql_priv.h:
        Made max_user_connections signed.
        Added max_user_connections_checking
      sql/mysqld.cc:
        Added max_user_connections_checking so that we know if max_user_connections was 0 at startup
        (Which means that we will not do connection counting for accounts that don't have user resource limits)
        Set thd->start_utime at same time as thr_create_utime. (Before start_utime could be < thr_create_utime which lead to wrong query counting)
      sql/set_var.cc:
        Don't allow one to change 'max_user_connections' if it was 0 at startup.
      sql/sql_acl.cc:
        Change user_connection counting to be negative.
      sql/sql_connect.cc:
        If max_user_connections is < 0 then only SUPER user can login.
        Fixed wrong variable names for error messages.
        Fixed wrong initial value for questions.
        Set thd->start_utime and thd->thr_create_utime at startup.  Needed to get time_out_user_resource_limits() to work.
      sql/sql_show.cc:
        SHOW_INT is now negative
      sql/sql_yacc.yy:
        Support negative values for MAX_USER_CONNECTIONS
      sql/structs.h:
        Make user connect counting work with signed numbers.
      88b03b95
  4. 23 Sep, 2011 1 commit
  5. 01 Jul, 2011 2 commits
    • Michael Widenius's avatar
      Added progress reporting for alter table, LOAD DATA INFILE and for aria... · 16ee2074
      Michael Widenius authored
      Added progress reporting for alter table, LOAD DATA INFILE and for aria tables: check table, repair table, analyze table.
      - The client gets a progress report message that triggers a callback function if requested with mysql_options(MYSQL_PROGRESS_CALLBACK, function)
      - Added Progress field last to 'show processlist'
      - Stage, Max_stage and Progress field added to information_schema.progresslist
      - The 'mysql' client by defaults enables progress reports when the output is a tty.
      - Added progress_report_time time variable to configure how often progress reports is sent to client
      Added read only system variable 'in_transaction' which is 1 if we have executed a BEGIN statement.
      
      
      client/client_priv.h:
        Added OPT_REPORT_PROGRESS
      client/mysql.cc:
        Added option --progress-reports (on by default if not batch mode)
        Progress reports is written to stdout for long running commands
      include/Makefile.am:
        Added mysql/service_progress_report.h
      include/myisamchk.h:
        Added variables to be able to do progress reporting in Aria and later in MyISAM
      include/mysql.h:
        Added new mysql_options() parameter: MYSQL_PROGRESS_CALLBACK
      include/mysql.h.pp:
        Added new mysql_options() parameter: MYSQL_PROGRESS_CALLBACK
      include/mysql/plugin.h:
        Added functions for reporting progress.
      include/mysql/plugin_auth.h.pp:
        Added functions for reporting progress.
      include/mysql_com.h:
        Added CLIENT_PROGRESS mysql_real_connect() flag.
      include/sql_common.h:
        Added callback function for reporting progress
      mysql-test/r/old-mode.result:
        Ensure that SHOW PROGRESSLIST doesn't have the Progress column in old mode.
      mysql-test/suite/funcs_1/datadict/datadict_priv.inc:
        Added new column
      mysql-test/suite/funcs_1/datadict/processlist_priv.inc:
        Test all new PROCESSLIST columns
      mysql-test/suite/funcs_1/r/is_columns_is.result:
        Updated results
      mysql-test/suite/funcs_1/r/is_columns_is_embedded.result:
        Updated results
      mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result:
        Updated results
      mysql-test/suite/funcs_1/r/is_tables_is_embedded.result:
        Updated results
      mysql-test/suite/funcs_1/r/processlist_priv_no_prot.result:
        Updated results
      mysql-test/suite/funcs_1/r/processlist_priv_ps.result:
        Updated results
      mysql-test/suite/funcs_1/r/processlist_val_no_prot.result:
        Updated results
      mysql-test/suite/funcs_1/r/processlist_val_ps.result:
        Updated results
      mysql-test/suite/pbxt/r/pbxt_locking.result:
        Updated results
      mysql-test/suite/pbxt/r/skip_name_resolve.result:
        Updated results
      mysql-test/t/old-mode.test:
        Ensure that SHOW PROGRESSLIST doesn't have the Progress column in old mode.
      plugin/handler_socket/handlersocket/Makefile.am:
        Added -lmysqlservices
      scripts/mytop.sh:
        Made 'State' field width dynamic.
        Added 'Progress' to process list display.
      sql-common/client.c:
        Added handling of progress messages.
        Removed check_license() function.
      sql/mysql_priv.h:
        Added opt_progress_report_time
      sql/mysqld.cc:
        Added progress_report_time time variable to configure how often progress reports is sent to client
      sql/protocol.cc:
        Added net_send_progress_packet()
      sql/protocol.h:
        New prototypes
      sql/set_var.cc:
        Added variables progress_report_time and in_transaction
      sql/sql_acl.cc:
        Safety fix: Made client_capabilities ulonglong
      sql/sql_class.cc:
        Added interface functions for progress reporting
      sql/sql_class.h:
        Added varibles in THD for progress reporting.
        Added CF_REPORT_PROGRESS
      sql/sql_load.cc:
        Added progress reporting for LOAD DATA INFILE
      sql/sql_parse.cc:
        Added CF_REPORT_PROGRESS for top level commands for which it's safe to send progress reports to client
      sql/sql_show.cc:
        Added Progress field last to 'show processlist'
        Stage, Max_stage and Progress field added to information_schema.progresslist
      sql/sql_table.cc:
        Added progress reporting for ALTER TABLE
        Added THD as argument to copy_data_between_tables()
      storage/maria/ha_maria.cc:
        Added progress reporting for check table, repair table, analyze table
        Fixed a bug in start_bulk_insert() that caused alter table to always run with all keys enabled.
      storage/maria/ma_check.c:
        Added progress reporting
        Remember old state before starting repair. This removes some warnings from optimize_table if create-with-sort fails.
      storage/maria/ma_check_standalone.h:
        Added dummy reporting function for standalone Aria programs.
      storage/maria/ma_sort.c:
        Added progress reporting
      storage/maria/maria_chk.c:
        Updated version
      storage/maria/maria_def.h:
        Added new prototypes
      tests/mysql_client_test.c:
        Added test case for progress reporting
      16ee2074
    • Sergei Golubchik's avatar
      Added read only system variable 'in_transaction' which tells if there's · a1757e16
      Sergei Golubchik authored
      an active transaction.
      
      fixed a bug - not clearing "in transaction" status on set @@autocommit=1
      a1757e16
  6. 30 Jun, 2011 1 commit
  7. 09 Jun, 2011 1 commit
    • Michael Widenius's avatar
      Fixed compile failure when we don't use system zlib · 37bd3e31
      Michael Widenius authored
      Fixed crash when setting query_cache_type to 0.
      
      client/Makefile.am:
        Added zlib include (needed by checksum.c)
      sql/set_var.cc:
        Updated call to disable_query_cache()
      sql/sql_cache.cc:
        Don't give warning if we start mysqld with --query_cache_type=0 --query_cache-size=0
        Fixed crash when setting query_cache_type to 0 (we shouldn't call query_cache.disable_query_cache() when there is no current_thd)
      sql/sql_cache.h:
        Added THD to disable_query_cache()
      37bd3e31
  8. 06 Jun, 2011 1 commit
    • Sergei Golubchik's avatar
      revert a suggested "optimization" that introduced a bug · 8c52df67
      Sergei Golubchik authored
      compilation error in mysys/my_getsystime.c fixed
      some redundant code removed
      sec_to_time, time_to_sec, from_unixtime, unix_timestamp, @@timestamp now
        use decimal, not double for numbers with a fractional part.
      purge_master_logs_before_date() fixed
      many bugs in corner cases fixed
      
      mysys/my_getsystime.c:
        compilation failure fixed
      sql/sql_parse.cc:
        don't cut corners. it backfires.
      8c52df67
  9. 02 Jun, 2011 1 commit
  10. 28 May, 2011 1 commit
  11. 19 May, 2011 1 commit
    • Sergei Golubchik's avatar
      post review changes 2 · d0fae754
      Sergei Golubchik authored
      sql/event_parse_data.cc:
        don't use "not_used" variable
      sql/item_timefunc.cc:
        Item_temporal_func::fix_length_and_dec()
        and other changes
      sql/item_timefunc.h:
        introducing Item_timefunc::fix_length_and_dec()
      sql/share/errmsg.txt:
        don't say "column X" in the error message that used not only for columns
      d0fae754
  12. 18 May, 2011 1 commit
    • unknown's avatar
      Rewritten patch of percona - switching query cache on and off, removing comments. · 220c3bb4
      unknown authored
      client/mysqltest.cc:
        Column names.
      mysql-test/r/grant_cache_no_prot.result:
        fix of text.
      mysql-test/r/grant_cache_ps_prot.result:
        Fix of test.
      mysql-test/r/query_cache.result:
        Switching on and off query cache.
      mysql-test/t/query_cache.test:
        Switching on and off query cache.
      mysys/charset.c:
        Fix of parser.
      sql/handler.cc:
        thd added to parameters.
      sql/log_event.cc:
        thd added to parameters.
      sql/log_event_old.cc:
        thd added to parameters.
      sql/mysql_priv.h:
        Fixed functions definitions.
      sql/mysqld.cc:
        Comments stripping.
      sql/set_var.cc:
        Switching on and off query cache.
      sql/set_var.h:
        Switching on and off query cache.
      sql/share/errmsg.txt:
        New errors.
      sql/sql_cache.cc:
        Switching query cache on and off, removing comments.
      sql/sql_cache.h:
        thd added to parameters.
      sql/sql_class.h:
        Comments stripping.
      sql/sql_db.cc:
        thd added to parameters.
      sql/sql_lex.cc:
        lex fixed.
      sql/sql_parse.cc:
        thd added to parameters.
      220c3bb4
  13. 28 Mar, 2011 1 commit
  14. 25 Mar, 2011 1 commit
    • Georgi Kodinov's avatar
      Bug #11766769: 59959: SMALL VALUES OF --MAX-ALLOWED-PACKET · c463847a
      Georgi Kodinov authored
      ARE NOT BEING HONORED
      
      max_allowed_packet works in conjunction with net_buffer_length.
      max_allowed_packet is an upper bound of net_buffer_length.
      So it doesn't make sense to set the upper limit lower than the value.
      Added a warning (using ER_UNKNOWN_ERRROR and a specific message)
      when this is done (in the log at startup and when setting either 
      max_allowed_packet or the net_buffer_length variables)
      Added a test case.
      Fixed several tests that broke the above rule.
      c463847a
  15. 23 Mar, 2011 1 commit
    • Michael Widenius's avatar
      Added --log-basename to mysqld to allow one to set the prefix for all logs with one command · 2c9854a9
      Michael Widenius authored
      Changed test suite to use --log-basename (to get the code tested)
      Added --sync-sys=1 to test suite to speed it up.
      Better error messages if something goes wrong with mysql_install_db
      
      
      mysql-test/Makefile.am:
        Removed not existing directory
      mysql-test/lib/My/ConfigFactory.pm:
        Use log-basename
        We had to also set 'log_error' as some test was explicitely using the old name
        Added 'sync-sys=1' to speed up test suite
      mysql-test/r/variables-notembedded.result:
        Updated test results (variable relay_log is now set)
      mysql-test/suite/binlog/t/binlog_delete_and_flush_index-master.opt:
        Force specific names for some log files.
      mysql-test/suite/binlog/t/binlog_index-master.opt:
        Force specific names for some log files.
      mysql-test/suite/binlog/t/binlog_stm_unsafe_warning-master.opt:
        Force specific names for some log files.
      mysql-test/suite/binlog/t/binlog_stm_unsafe_warning.test:
        Better error message if something goes wrong
      mysql-test/suite/rpl/r/rpl_flushlog_loop.result:
        Updated results
      mysql-test/suite/rpl/rpl_1slave_base.cnf:
        Use --log-basename
      scripts/mysql_install_db.sh:
        More information to --help
        Write url to knowledge base if something goes wrong
        Fail at once if we can't create a database directory (no reason to continue and write a screenful of not related text)
      scripts/mysqld_safe.sh:
        Also allow one to use --data for --datadir (common shortening)
        Added support for --log-basename
        Fail at once if we can't create a log directory
        Fixed bug where we used a pid file name without '.pid' extension
      sql/log.cc:
        Create a log file name trough my_once_alloc()  (To get it automaticly freed at exit)
      sql/mysql_priv.h:
        Added new prototype
      sql/mysqld.cc:
        Added support for --log-basename
        Better help for a lot of log-filename related variables.
      sql/rpl_rli.cc:
        Write information that one can use --log-basename
      sql/set_var.cc:
        Add log_basename as a readonly variable
      2c9854a9
  16. 15 Mar, 2011 1 commit
    • Dmitry Shulga's avatar
      Fixed Bug#11764168 "56976: SEVERE DENIAL OF SERVICE IN PREPARED STATEMENTS". · 0dd27502
      Dmitry Shulga authored
      The problem was that server didn't check resulting size of prepared
      statement argument which was set using mysql_send_long_data() API.
      By calling mysql_send_long_data() several times it was possible
      to create overly big string and thus force server to allocate
      memory for it. There was no way to limit this allocation.
      
      The solution is to add check for size of result string against
      value of max_long_data_size start-up parameter. When intermediate
      string exceeds max_long_data_size value an appropriate error message
      is emitted.
      
      We can't use existing max_allowed_packet parameter for this purpose
      since its value is limited by 1GB and therefore using it as a limit
      for data set through mysql_send_long_data() API would have been an
      incompatible change. Newly introduced max_long_data_size parameter
      gets value from max_allowed_packet parameter unless its value is
      specified explicitly. This new parameter is marked as deprecated
      and will be eventually replaced by max_allowed_packet parameter.
      Value of max_long_data_size parameter can be set only at server
      startup.
      
      
      mysql-test/t/variables.test:
        Added checking for new start-up parameter max_long_data_size.
      sql/item.cc:
        Added call to my_message() when accumulated string exceeds
        max_long_data_size value. my_message() calls error handler
        that was installed in mysql_stmt_get_longdata before call
        to Item_param::set_longdata.
        
        The error handler then sets state, last_error and last_errno
        fields for current statement to values which correspond to
        error which was caught.
      sql/mysql_priv.h:
        Added max_long_data_size variable declaration.
      sql/mysqld.cc:
        Added support for start-up parameter 'max_long_data_size'.
        This parameter limits size of data which can be sent from
        client to server using mysql_send_long_data() API.
      sql/set_var.cc:
        Added variable 'max_long_data_size' into list of variables
        displayed by command 'show variables'.
      sql/sql_prepare.cc:
        Added error handler class Set_longdata_error_handler.
        This handler is used to catch any errors that can be
        generated during execution of Item_param::set_longdata().
        
        Source code snippet that makes checking for statement's state 
        during statement execution is moved from Prepared_statement::execute()
        to Prepared_statement::execute_loop() in order not to call
        set_parameters() when statement has failed during
        set_long_data() execution. If this hadn't been done
        the call to set_parameters() would have failed.
      tests/mysql_client_test.c:
        A testcase for the bug #56976 was added.
      0dd27502
  17. 01 Mar, 2011 1 commit
    • Sergei Golubchik's avatar
      wl#173 - temporal types with sub-second resolution · 6eceb7f5
      Sergei Golubchik authored
               and collateral changes.
      
      * introduce my_hrtime_t, my_timediff_t, and conversion macros
      * inroduce TIME_RESULT, but it can only be returned from Item::cmp_type(),
        never from Item::result_type()
      * pack_time/unpack_time function for "packed" representation of
        MYSQL_TIME in a longlong that can be compared
      * ADDTIME()/SUBTIME()/+- INTERVAL now work with TIME values
      * numbers aren't quoted in EXPLAIN EXTENDED
      * new column I_S.COLUMNS.DATETIME_PRECISION
      * date/time values are compares to anything as date/time, not as strings or numbers.
      * old timestamp(X) is no longer supported
      * MYSQL_TIME to string conversion functions take precision as an argument
      * unified the warnings from Field_timestamp/datetime/time/date/newdate store methods
      * Field_timestamp_hires, Field_datetime_hires, Field_time_hires
      * Field_temporal
      * Lazy_string class to pass a value (string, number, time) polymorphically down the stack
      * make_truncated_value_warning and Field::set_datetime_warning use Lazy_string as an argument, removed char*/int/double variants
      * removed Field::can_be_compared_as_longlong(). Use Field::cmp_type() == INT_RESULT instead
      * introduced Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong()
      * in many cases date/time types are treated like other types, not as special cases
      * greatly simplified Arg_comparator (regarding date/time/year code)
      * SEC_TO_TIME is real function, not integer.
      * microsecond precision in NOW, CURTIME, etc
      * Item_temporal. All items derived from it only provide get_date, but no val* methods
      * replication of NOW(6)
      * Protocol::store(time) now takes the precision as an argument
      * @@TIMESTAMP is a double
      
      client/mysqlbinlog.cc:
        remove unneded casts
      include/my_sys.h:
        introduce my_hrtime_t, my_timediff_t, and conversion macros
      include/my_time.h:
        pack_time/unpack_time, etc.
        convenience functions to work with MYSQL_TIME::second_part
      libmysql/libmysql.c:
        str_to_time() is gone. str_to_datetime() does it now.
        my_TIME_to_str() takes the precision as an argument
      mysql-test/include/ps_conv.inc:
        time is not equal to datetime anymore
      mysql-test/r/distinct.result:
        a test for an old MySQL bug
      mysql-test/r/explain.result:
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/r/func_default.result:
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/r/func_sapdb.result:
        when decimals=NOT_FIXED_DEC it means "not fixed" indeed
      mysql-test/r/func_test.result:
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/r/func_time.result:
        ADDTIME()/SUBTIME()/+- INTERVAL now work with TIME values
      mysql-test/r/having.result:
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/r/information_schema.result:
        new column I_S.COLUMNS.DATETIME_PRECISION
      mysql-test/r/join_outer.result:
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/r/metadata.result:
        TIMESTAMP no longer has zerofill flag
      mysql-test/r/range.result:
        invalid datetime is not compared with as a string
      mysql-test/r/select.result:
        NO_ZERO_IN_DATE, etc only affect storage - according to the manual
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/r/subselect.result:
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/r/sysdate_is_now.result:
        when decimals=NOT_FIXED_DEC it means "not fixed" indeed
      mysql-test/r/type_blob.result:
        TIMESTAMP(N) is not deprecated
      mysql-test/r/type_timestamp.result:
        old TIMESTAMP(X) semantics is not supported anymore
      mysql-test/r/union.result:
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/r/varbinary.result:
        numbers aren't quoted in EXPLAIN EXTENDED
      mysql-test/t/distinct.test:
        test for an old MySQL bug
      mysql-test/t/func_time.test:
        +- INTERVAL now works with TIME values
      mysql-test/t/select.test:
        typo
      mysql-test/t/subselect.test:
        only one error per statement, please
      mysql-test/t/system_mysql_db_fix40123.test:
        old timestamp(X) is no longer supported
      mysql-test/t/system_mysql_db_fix50030.test:
        old timestamp(X) is no longer supported
      mysql-test/t/system_mysql_db_fix50117.test:
        old timestamp(X) is no longer supported
      mysql-test/t/type_blob.test:
        old timestamp(X) is no longer supported
      mysql-test/t/type_timestamp.test:
        old timestamp(X) is no longer supported
      mysys/my_getsystime.c:
        functions to get the time with microsecond precision
      mysys/my_init.c:
        move the my_getsystime.c initialization code to my_getsystime.c
      mysys/my_static.c:
        no need to make these variables extern
      mysys/my_static.h:
        no need to make these variables extern
      scripts/mysql_system_tables.sql:
        old timestamp(X) is no longer supported
      scripts/mysql_system_tables_fix.sql:
        old timestamp(X) is no longer supported
      scripts/mysqlhotcopy.sh:
        old timestamp(X) is no longer supported
      sql-common/my_time.c:
        * call str_to_time from str_to_datetime, as appropriate
        * date/time to string conversions take precision as an argument
        * number_to_time()
        * TIME_to_double()
        * pack_time() and unpack_time()
      sql/event_data_objects.cc:
        cast is not needed
        my_datetime_to_str() takes precision as an argument
      sql/event_db_repository.cc:
        avoid dangerous downcast (because the pointer is
        not always Field_timestamp, see events_1.test)
      sql/event_queue.cc:
        avoid silly double-work for cond_wait
        (having an endpoint of wait, subtract the current time to get the timeout,
        and use set_timespec() macro to fill in struct timespec, by adding the current
        time to the timeout)
      sql/field.cc:
        * remove virtual Field::get_time(), everyone should use only Field::get_date()
        * remove lots of #ifdef WORDS_BIGENDIAN
        * unified the warnings from Field_timestamp/datetime/time/date/newdate store methods
        * Field_timestamp_hires, Field_datetime_hires, Field_time_hires
        * Field_temporal
        * make_truncated_value_warning and Field::set_datetime_warning use Lazy_string as an argument, removed char*/int/double variants
      sql/field.h:
        * remove virtual Field::get_time(), everyone should use only Field::get_date()
        * remove lots of #ifdef WORDS_BIGENDIAN
        * unified the warnings from Field_timestamp/datetime/time/date/newdate store methods
        * Field_timestamp_hires, Field_datetime_hires, Field_time_hires
        * Field_temporal
        * make_truncated_value_warning and Field::set_datetime_warning use Lazy_string as an argument, removed char*/int/double variants
        * removed Field::can_be_compared_as_longlong(). Use Field::cmp_type() == INT_RESULT instead
      sql/filesort.cc:
        TIME_RESULT, cmp_time()
      sql/item.cc:
        * numbers aren't quoted in EXPLAIN EXTENDED
        * Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong()
        * virtual Item::get_time() is gone
        * Item_param::field_type() is set correctly
        * Item_datetime, for a datetime constant
        * time to anything is compared as a time
        * Item_cache::print() prints the value is available
        * bug fixed in Item_cache_int::val_str()
      sql/item.h:
        * Item::print_value(), to be used from Item_xxx::print() when needed
        * Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong()
        * virtual Item::get_time() is gone
        * Item_datetime, for a datetime constant
        * better default for cast_to_int_type()
        * Item_cache objects now *always* have the field_type() set
      sql/item_cmpfunc.cc:
        * get_year_value, get_time_value are gone. get_datetime_value does it all
        * get_value_a_func, get_value_b_func are gone
        * can_compare_as_dates() is gone too, TIME_RESULT is used instead
        * cmp_type() instead or result_type() when doing a comparison
        * compare_datetime and compate_e_datetime in the comparator_matrix, is_nulls_eq is gone
        * Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong()
      sql/item_cmpfunc.h:
        greatly simplified Arg_comparator
      sql/item_create.cc:
        * fix a bug in error messages in CAST
      sql/item_func.cc:
        Item::cmp_result() instead of Item::is_datetime() and Item::result_as_longlong()
        mention all possibitiles in switch over Item_result values, or use default:
      sql/item_row.h:
        overwrite the default cmp_type() for Item_row,
        as no MYSQL_TYPE_xxx value corresponds to ROW_RESULT
      sql/item_timefunc.cc:
        rewrite make_datetime to support precision argument
        SEC_TO_TIME is real function, not integer.
        many functions that returned temporal values had duplicate code in val_* methods,
        some of them did not have get_date() which resulted in unnecessary date->str->date conversions. 
        Now they all are derived from Item_temporal_func and *only* provide get_date, not val* methods.
        many fixes to set decimals (datetime precision) correctly.
      sql/item_timefunc.h:
        SEC_TO_TIME is real function, not integer.
        many functions that returned temporal values had duplicate code in val_* methods,
        some of them did not have get_date() which resulted in unnecessary date->str->date conversions. 
        Now they all are derived from Item_temporal_func and *only* provide get_date, not val* methods.
        many fixes to set decimals (datetime precision) correctly.
      sql/log_event.cc:
        replication of NOW(6)
      sql/log_event.h:
        replication of NOW(6)
      sql/mysql_priv.h:
        Lazy_string class to pass a value (string, number, time) polymorphically down the stack.
        make_truncated_value_warning() that uses it.
      sql/mysqld.cc:
        datetime in Arg_comparator::comparator_matrix
      sql/opt_range.cc:
        cleanup: don't disable warnings before calling save_in_field_no_warnings()
      sql/protocol.cc:
        Protocol::store(time) now takes the precision as an argument
      sql/protocol.h:
        Protocol::store(time) now takes the precision as an argument
      sql/rpl_rli.cc:
        small cleanup
      sql/set_var.cc:
        SET TIMESTAMP=double
      sql/set_var.h:
        @@TIMESTAMP is a double
      sql/share/errmsg.txt:
        precision and scale are unsigned
      sql/slave.cc:
        replication of NOW(6)
      sql/sp_head.cc:
        cleanup
      sql/sql_class.cc:
        support for NOW(6)
      sql/sql_class.h:
        support for NOW(6)
      sql/sql_insert.cc:
        support for NOW(6)
      sql/sql_select.cc:
        use item->cmp_type().
        move a comment where it belongs
      sql/sql_show.cc:
        new column I_S.COLUMNS.DATETIME_PRECISION
      sql/sql_yacc.yy:
        TIME(X), DATETIME(X), cast, NOW(X), CURTIME(X), etc
      sql/time.cc:
        fix date_add_interval() to support MYSQL_TIMESTAMP_TIME argument
      storage/myisam/ha_myisam.cc:
        TIMESTAMP no longer carries ZEROFIELD flag, still we keep MYI file compatible.
      strings/my_vsnprintf.c:
        warnings
      tests/mysql_client_test.c:
        old timestamp(X) does not work anymore
        datetime is no longer equal to time
      6eceb7f5
  18. 28 Feb, 2011 1 commit
    • Michael Widenius's avatar
      Change TABLE->alias to String for less memory reallocation · d32246f8
      Michael Widenius authored
      Changed some String.ptr() -> String.c_ptr() for String that are not guaranteed to end with \0
      Removed some c_ptr() usage from parameters to functions that takes ptr & length
      Use preallocate buffers to avoid calling malloc() for most operations. 
      
      
      sql/event_db_repository.cc:
        alias is now a String
      sql/event_scheduler.cc:
        c_ptr -> c_ptr_safe() to avoid warnings from valgrind.
      sql/events.cc:
        c_ptr -> c_ptr_safe() to avoid warnings from valgrind.
        c_ptr -> ptr() as function takes ptr & length
      sql/field.cc:
        alias is now a String
      sql/field.h:
        alias is now a String
      sql/ha_partition.cc:
        alias is now a String
      sql/handler.cc:
        alias is now a String
        ptr() -> c_ptr() as string is not guaranteed to be \0 terminated
      sql/item.cc:
        Store error parameter in separarte buffer to ensure correct error message
      sql/item_func.cc:
        ptr() -> c_ptr_safe() as string is not guaranteed to be \0 terminated
      sql/item_sum.h:
        Use my_strtod() instead of my_atof() to not have to make string \0 terminated
      sql/lock.cc:
        alias is now a String
      sql/log.cc:
        c_ptr() -> ptr() as function takes ptr & length
      sql/log_event.cc:
        c_ptr_quick() -> ptr() as we only want to get the pointer to String buffer
      sql/opt_range.cc:
        ptr() -> c_ptr() as string is not guaranteed to be \0 terminated
      sql/opt_table_elimination.cc:
        alias is now a String
      sql/set_var.cc:
        ptr() -> c_ptr() as string is not guaranteed to be \0 terminated
        c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
        c_ptr() -> ptr() as function takes ptr & length
        Simplify some code.
      sql/sp.cc:
        c_ptr() -> ptr() as function takes ptr & length
      sql/sp_rcontext.cc:
        alias is now a String
      sql/sql_base.cc:
        alias is now a String.
        Here we win a realloc() for most alias usage.
      sql/sql_class.cc:
        Use size descriptor for printf() to avoid accessing bytes outside of buffer
      sql/sql_insert.cc:
        Change allocation of TABLE as it's now contains a String
        _ptr() -> ptr() as function takes ptr & length
      sql/sql_load.cc:
        Use preallocate buffers to avoid calling malloc() for most operations.
      sql/sql_parse.cc:
        Use c_ptr_safe() to ensure string is \0 terminated.
      sql/sql_plugin.cc:
        c_ptr_quick() -> ptr() as function takes ptr & length
      sql/sql_select.cc:
        alias is now a String
      sql/sql_show.cc:
        alias is now a String
      sql/sql_string.h:
        Added move() function to change who owns the string (owner does the free)
      sql/sql_table.cc:
        alias is now a String
        c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
      sql/sql_test.cc:
        c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
        alias is now a String
      sql/sql_trigger.cc:
        c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
        Use field->init() to setup pointers to alias.
      sql/sql_update.cc:
        alias is now a String
      sql/sql_view.cc:
        ptr() -> c_ptr_safe() as string is not guaranteed to be \0 terminated
      sql/sql_yacc.yy:
        r() -> c_ptr() as string is not guaranteed to be \0 terminated
      sql/table.cc:
        alias is now a String
      sql/table.h:
        alias is now a String
      storage/federatedx/ha_federatedx.cc:
        Remove extra 1 byte alloc that is automaticly done by strmake()
        Ensure that error message ends with \0
      storage/maria/ha_maria.cc:
        alias is now a String
      storage/myisam/ha_myisam.cc:
        alias is now a String
      d32246f8
  19. 18 Feb, 2011 1 commit
    • Alexander Barkov's avatar
      Bug#11765108 (Bug#58036) client utf32, utf16, ucs2 should be disallowed, they crash server · e4090f81
      Alexander Barkov authored
      A separate fix for 5.1 (as 5.1 and 5.5 have seriously
      differged in the related pieces of the code).
      A patch for 5.5 was approved earlier.
      
      Problem: ucs2 was correctly disallowed in "SET NAMES" only,
      while mysql_real_connect() and mysql_change_user() still allowed
      to use ucs2, which made server crash.
      
      Fix: disallow ucs2 in mysql_real_connect() and mysql_change_user().
      
        @ sql/sql_priv.h
          - changing return type for thd_init_client_charset() to bool,
            to return errors to the caller
      
        @ sql/sql_var.cc
          - using new function
      
        @ sql/sql_connect.cc
          - thd_client_charset_init:
            in case of unsupported client character set send error and return true;
            in case of success return false
          - check_connection:
            Return error if character set initialization failed
      
        @ sql/sql_parse.cc
          - check charset in the very beginnig of the CMD_CHANGE_USER handling code
      
        @ tests/mysql_client_test.c
          - adding tests
      e4090f81
  20. 17 Feb, 2011 1 commit
    • Magne Mahre's avatar
      Bug#48053 String::c_ptr has a race and/or does an invalid · a03af18e
      Magne Mahre authored
                memory reference
      
      There are two issues present here.
        1) There is a possibility that we test a byte beyond the
           allocated buffer
      
        2) We compare a byte that might never have been
           initalized to see if it's 0.
      
      The first issue is not triggered by existing code, but an
      ASSERT has been added to safe-guard against introducing
      new code that triggers it.
      
      The second issue is what triggers the Valgrind warnings
      reported in the bug report. A buffer is allocated in
      class String to hold the value. This buffer is populated
      by the character data constituting the string, but is not
      zero-terminated in most cases.  Testing if it is indeed
      zero-terminated means that we check a byte that has never
      been explicitly set, thus causing Valgrind to trigger.
      
      Note that issue 2 is not a serious problem.  The variable
      is read, and if it's not zero, we will set it to zero.
      There are no further consequences.
      
      Note that this patch does not fix the underlying problems
      with issue 1, as it is deemed too risky to fix at this
      point (as noted in the bug report).  As discussed in
      the report, the c_ptr() method should probably be
      replaced, but this requires a thorough analysis of the
      ~200 calls to the method.
      
      
      sql/set_var.cc:
        These two cases have been reported to fail
        with Valgrind.
      a03af18e
  21. 02 Feb, 2011 1 commit
    • Georgi Kodinov's avatar
      Fixes for Bug #55755 and Bug #52315 part 2 · 7edb13af
      Georgi Kodinov authored
      Bug #55755 : Date STD variable signness breaks server on FreeBSD and OpenBSD
      
      * Added a check to configure on the size of time_t
      * Created a macro to check for a valid time_t that is safe to use with datetime 
        functions and store in TIMESTAMP columns.
      * Used the macro consistently instead of the ad-hoc checks introduced by 52315
      * Fixed compliation warnings on platforms where the size of time_t is smaller than
        the size of a long (e.g. OpenBSD 4.8 64 amd64).
      
      Bug #52315: utc_date() crashes when system time > year 2037
      
      * Added a correct check for the timestamp range instead of just variable size check to
      SET TIMESTAMP.
      * Added overflow checking before converting to time_t. 
      * Using a correct localized error message in this case instead of the generic error.
      * Added a test suite.
      * fixed the checks so that they check for unsigned time_t as well. Used the checks 
        consistently across the source code.
      * fixed the original test case to expect the new error code.
      7edb13af
  22. 10 Jan, 2011 1 commit
  23. 28 Dec, 2010 1 commit
    • Kent Boortz's avatar
      - Added/updated copyright headers · a1a90798
      Kent Boortz authored
      - Removed files specific to compiling on OS/2
      - Removed files specific to SCO Unix packaging
      - Removed "libmysqld/copyright", text is included in documentation
      - Removed LaTeX headers for NDB Doxygen documentation
      - Removed obsolete NDB files
      - Removed "mkisofs" binaries
      - Removed the "cvs2cl.pl" script
      - Changed a few GPL texts to use "program" instead of "library"
      a1a90798
  24. 02 Dec, 2010 1 commit
    • unknown's avatar
      Fix problems seen in Buildbot: · 122491e4
      unknown authored
       - Make sure creation of t1 is replicated before trying to create trigger on it on slave
       - Use safe #ifdef for declaration as for definition to avoid warning about unused static function.
      122491e4
  25. 25 Nov, 2010 1 commit
    • Tatiana A. Nurnberg's avatar
      Assorted post-merge fixes, clean-up, integration, compat with 5.6. · 934ea4d1
      Tatiana A. Nurnberg authored
      43233/55794.
      
      mysql-test/r/change_user.result:
        Don't use -1 integer wrap around. It used to work, but now we do what's
        actually in the documentation. In tests, we now use DEFAULT or the
        numeral equivalent (as we do in the 5.6 tests).
      mysql-test/r/key_cache.result:
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      mysql-test/r/variables.result:
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      mysql-test/t/change_user.test:
        Don't use -1 integer wrap around. It used to work, but now we do what's
        actually in the documentation. In tests, we now use DEFAULT or the
        numeral equivalent (as we do in the 5.6 tests).
      mysql-test/t/key_cache.test:
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      mysql-test/t/variables.test:
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      sql/mysqld.cc:
        0 is a legal (albeit magic) value: "drop key cache."
      sql/set_var.cc:
        bound_unsigned() can go now, it was just a kludge until things are done
        The Right Way, which they are now.
        
        Can't drop default key case is an error now, not a warning, for compatibility
        with 5.6.
      tests/mysql_client_test.c:
        Don't use -1 integer wrap around. It used to work, but now we do what's
        actually in the documentation. In tests, we now use DEFAULT or the
        numeral equivalent (as we do in the 5.6 tests).
      934ea4d1
  26. 23 Nov, 2010 1 commit
    • Michael Widenius's avatar
      Code cleanup to get fewer reallocs() during execution. · 1ace5937
      Michael Widenius authored
      - Changed TABLE->alias to String to get fewer reallocs when alias are used.
      - Preallocate some buffers
      
      Changed some String->c_ptr() -> String->ptr() when \0 is not needed.
      Fixed wrong usage of String->ptr() when we need a \0 terminated string.
      Use my_strtod() instead of my_atof() to avoid having to add \0 to string.
      c_ptr() -> c_ptr_safe() to avoid warnings from valgrind.
      zr 
      
      sql/event_db_repository.cc:
        Update usage of TABLE->alias
      sql/event_scheduler.cc:
        c_ptr() -> c_ptr_safe()
      sql/events.cc:
        c_ptr() -> ptr() as \0 was not needed
      sql/field.cc:
        Update usage of TABLE->alias
      sql/field.h:
        Update usage of TABLE->alias
      sql/ha_partition.cc:
        Update usage of TABLE->alias
      sql/handler.cc:
        Update usage of TABLE->alias
        Fixed wrong usage of str.ptr()
      sql/item.cc:
        Fixed error where code wrongly assumed string was \0 terminated.
      sql/item_func.cc:
        c_ptr() -> c_ptr_safe()
        Update usage of TABLE->alias
      sql/item_sum.h:
        Use my_strtod() instead of my_atof() to avoid having to add \0 to string
      sql/lock.cc:
        Update usage of TABLE->alias
      sql/log.cc:
        c_ptr() -> ptr() as \0 was not needed
      sql/log_event.cc:
        c_ptr_quick() -> ptr() as \0 was not needed
      sql/opt_range.cc:
        ptr() -> c_ptr() as \0 is needed
      sql/opt_subselect.cc:
        Update usage of TABLE->alias
      sql/opt_table_elimination.cc:
        Update usage of TABLE->alias
      sql/set_var.cc:
        ptr() -> c_ptr() as \0 is needed
        c_ptr() -> c_ptr_safe()
      sql/sp.cc:
        c_ptr() -> ptr() as \0 was not needed
      sql/sp_rcontext.cc:
        
        Update usage of TABLE->alias
      sql/sql_base.cc:
        Preallocate buffers
        Update usage of TABLE->alias
      sql/sql_class.cc:
        Fix arguments to sprintf() to work even if string is not \0 terminated
      sql/sql_insert.cc:
        Update usage of TABLE->alias
        c_ptr() -> ptr() as \0 was not needed
      sql/sql_load.cc:
        Preallocate buffers
        Trivial optimizations
      sql/sql_parse.cc:
        Trivial optimization
      sql/sql_plugin.cc:
        c_ptr() -> ptr() as \0 was not needed
      sql/sql_select.cc:
        Update usage of TABLE->alias
      sql/sql_show.cc:
        Update usage of TABLE->alias
      sql/sql_string.h:
        Added move() function to move allocated memory from one object to another.
      sql/sql_table.cc:
        Update usage of TABLE->alias
        c_ptr() -> c_ptr_safe()
      sql/sql_test.cc:
        ptr() -> c_ptr_safe()
      sql/sql_trigger.cc:
        Update usage of TABLE->alias
        c_ptr() -> c_ptr_safe()
      sql/sql_update.cc:
        Update usage of TABLE->alias
      sql/sql_view.cc:
        ptr() -> c_ptr_safe()
      sql/sql_yacc.yy:
        ptr() -> c_ptr()
      sql/table.cc:
        
        Update usage of TABLE->alias
      sql/table.h:
        Changed TABLE->alias to String to get fewer reallocs when alias are used.
      storage/federatedx/ha_federatedx.cc:
        Use c_ptr_safe() to ensure strings are \0 terminated.
      storage/maria/ha_maria.cc:
        Update usage of TABLE->alias
      storage/myisam/ha_myisam.cc:
        Update usage of TABLE->alias
      storage/xtradb/row/row0sel.c:
        Ensure that null bits in record are properly reset.
        (Old code didn't work as row_search_for_mysql() can be called twice while reading fields from one row.
      1ace5937
  27. 11 Nov, 2010 1 commit
    • Tatiana A. Nurnberg's avatar
      Bug#43233: Some server variables are clipped during "update," not "check" stage · 94eb3cd4
      Tatiana A. Nurnberg authored
      Bug#55794: ulonglong options of mysqld show wrong values.
      
      Port the few remaining system variables to the correct mechanism --
      range-check in check-stage (and throw error or warning at that point
      as needed and depending on STRICTness), update in update stage.
      Fix some signedness errors when retrieving sysvar values for display.
      
      mysql-test/r/variables.result:
        Show that we throw warnings or errors depending on strictness
        even for "special" variables now.
      mysql-test/t/variables.test:
        Show that we throw warnings or errors depending on strictness
        even for "special" variables now.
      sql/item_func.cc:
        show sys_var_ulonglong_ptr and SHOW_LONGLONG type variables as unsigned.
      sql/set_var.cc:
        move range-checking from update stage to check stage for the remaining
        few sys-vars that broke the pattern
      sql/set_var.h:
        add check functions.
      94eb3cd4
  28. 02 Nov, 2010 1 commit
    • Michael Widenius's avatar
      Fix for: LP #634955: Assert in _ma_update_at_original_place() · 334cc518
      Michael Widenius authored
      Added locking of lock mutex when updating status in external_unlock() for Aria and MyISAM tables.
      Fixed that 'source' command doesn't cause mysql command line tool to exit on error.
      DEBUG_EXECUTE() and DEBUG_EVALUATE_IF() should not execute things based on wildcards. (Allows one to run --debug with mysql-test-run scripts that uses @debug)
      Fixed several core dump, deadlock and crashed table bugs in handling of LOCK TABLE with MERGE tables:
      - Added priority of locks to avoid crashes with MERGE tables.
      - Added thr_lock_merge() to allow one to merge two results of thr_lock().
      Fixed 'not found row' bug in REPLACE with Aria tables.
      Mark MyISAM tables that are part of MERGE with HA_OPEN_MERGE_TABLE and set the locks to have priority THR_LOCK_MERGE_PRIV.
      - By sorting MERGE tables last in thr_multi_unlock() it's safer to release and relock them many times (can happen when TRIGGERS are created)
      Avoid printing (null) in debug file (to easier find out wrong NULL pointer usage with %s).
      
      
      
      client/mysql.cc:
        Fixed that 'source' command doesn't cause mysql command line tool to exit on error.
      client/mysqltest.cc:
        Don't send NULL to fn_format(). (Can cause crash on Solaris when using --debug)
      dbug/dbug.c:
        DEBUG_EXECUTE() and DEBUG_EVALUATE_IF() should not execute things based on wildcards.
      include/my_base.h:
        Added flag to signal if one opens a MERGE table.
        Added extra() command to signal that one is not part of a MERGE table anymore.
      include/thr_lock.h:
        Added priority for locks (needed to fix bug in thr_lock when using MERGE tables)
        Added option to thr_unlock() if get_status() should be called.
        Added prototype for thr_merge_locks().
      mysql-test/mysql-test-run.pl:
        Ignore crashed table warnings for tables named 'crashed'.
      mysql-test/r/merge.result:
        Renamed triggers to make debugging easier.
        Added some CHECK TABLES to catch errors earlier.
        Additional tests.
      mysql-test/r/merge_debug.result:
        Test of error handling when reopening MERGE tables.
      mysql-test/r/udf_query_cache.result:
        Added missing flush status
      mysql-test/suite/parts/r/partition_repair_myisam.result:
        Update results
      mysql-test/t/merge.test:
        Renamed triggers to make debugging easier.
        Added some CHECK TABLES to catch errors earlier.
        Additional tests.
      mysql-test/t/merge_debug.test:
        Test of error handling when reopening MERGE tables.
      mysql-test/t/udf_query_cache.test:
        Added missing flush status
      mysys/my_getopt.c:
        Removed not used variable
      mysys/my_symlink2.c:
        Changed (null) to (NULL) to make it easier to find NULL arguments to DBUG_PRINT() functions.
        (On linux, NULL to sprintf is printed 'null')
      mysys/thr_lock.c:
        Added priority of locks to avoid crashes with MERGE tables.
        Added thr_lock_merge() to allow one to merge two results of thr_lock().
        - This is needed for MyISAM as all locked table must share the same status. If not, you will not see newly inserted rows in other instances of the table.
        If calling thr_unlock() with THR_UNLOCK_UPDATE_STATUS, call update_status() and restore_status() for the locks. This is needed in some rare cases where we call thr_unlock() followed by thr_lock() without calling external_unlock/external_lock in between.
        Simplify loop in thr_multi_lock().
        Added 'start_trans', which is called at end of thr_multi_lock() when all locks are taken.
        - This was needed by Aria to ensure that transaction is started when we got all locks, not at get_status(). Without this, some rows could not be visible when we lock two tables at the same time, causing REPLACE using two tables to fail unexpectedly.
      sql/handler.cc:
        Add an assert() in handler::print_error() for "impossible errors" (like table is crashed) when --debug-assert-if-crashed-table is used.
      sql/lock.cc:
        Simplify mysql_lock_tables() code if get_lock_data() returns 0 locks.
        Added new parameter to thr_multi_unlock()
        In mysql_unlock_read_tables(), call first externa_unlock(), then thr_multi_unlock();  This is same order as we do in mysql_unlock_tables().
        Don't abort locks in mysql_lock_abort() for merged tables when a MERGE table is deleted; Would cause a spin lock.
        Added call to thr_merge_locks() in mysql_lock_merge() to ensure consistency in thr_locks().
        - New locks of same type and table is stored after the old lock to ensure that we get the status from the original lock.
      sql/mysql_priv.h:
        Added debug_assert_if_crashed_table
      sql/mysqld.cc:
        Added --debug-assert-if-crashed-table
      sql/parse_file.cc:
        Don't print '(null)' in DBUG_PRINT of no dir given
      sql/set_var.cc:
        Increase default size of buffer for @debug variable.
      sql/sql_base.cc:
        In case of error from reopen_table() in reopen_tables(), call unlock_open_table() and restart loop.
        - This fixed bug when we twice deleted same table from open_cache.
        Don't take name lock for already name locked table in open_unireg_entry().
        - Fixed bug when doing repair in reopen_table().
        - In detach_merge_children(), always detach if 'clear_refs' is given. We can't trust parent->children_attached as this function can be called twice, first time with clear_refs set to 0.
      sql/sql_class.cc:
        Changed printing of (null) to "" in set_thd_proc_info()
      sql/sql_parse.cc:
        Added DBUG
      sql/sql_trigger.cc:
        Don't call unlink_open_table() if reopen_table() fails as the table may already be freed.
      storage/maria/ma_bitmap.c:
        Fixed DBUG_ASSERT() in allocate_tail()
      storage/maria/ma_blockrec.c:
        Fixed wrong calculation of row length for very small rows in undo_row_update().
        - Fixes ASSERT() when doing undo.
      storage/maria/ma_blockrec.h:
        Added _ma_block_start_trans() and _ma_block_start_trans_no_versioning()
      storage/maria/ma_locking.c:
        Call _ma_update_status_with_lock() when releasing write locks.
        - Fixes potential problem with updating status without the proper lock.
      storage/maria/ma_open.c:
        Changed to use start_trans() instead of get_status() to ensure that we see all rows in all locked tables when we got the locks.
        - Fixed 'not found row' bug in REPLACE with Aria tables.
      storage/maria/ma_state.c:
        Added _ma_update_status_with_lock() and _ma_block_start_trans().
        This is to ensure that we see all rows in all locked tables when we got the locks.
      storage/maria/ma_state.h:
        Added _ma_update_status_with_lock()
      storage/maria/ma_write.c:
        More DBUG_PRINT
      storage/myisam/mi_check.c:
        Fixed error message
      storage/myisam/mi_extra.c:
        Added HA_EXTRA_DETACH_CHILD:
        - Detach MyISAM table to not be part of MERGE table (remove flag & lock priority).
      storage/myisam/mi_locking.c:
        Call mi_update_status_with_lock() when releasing write locks.
        - Fixes potential problem with updating status without the proper lock.
        Change to use new HA_OPEN_MERGE_TABLE flag to test if MERGE table.
        Added mi_fix_status(), called by thr_merge().
      storage/myisam/mi_open.c:
        Added marker if part of MERGE table.
        Call mi_fix_status() in thr_lock() for transactional tables.
      storage/myisam/myisamdef.h:
        Change my_once_flag to uint, as it stored different values than just 0/1
        Added 'open_flag' to store state given to mi_open()
      storage/myisammrg/ha_myisammrg.cc:
        Add THR_LOCK_MERGE_PRIV to THR_LOCK_DATA to get MERGE locks sorted after other types of locks.
      storage/myisammrg/myrg_locking.c:
        Remove windows specific code.
      storage/myisammrg/myrg_open.c:
        Use HA_OPEN_MERGE_TABLE to mi_open().
        Set HA_OPEN_MERGE_TABLE for linked MyISAM tables.
      storage/xtradb/buf/buf0buf.c:
        Fixed compiler warning
      storage/xtradb/buf/buf0lru.c:
        Initialize variable that could be used not initialized.
      334cc518
  29. 27 Oct, 2010 1 commit
  30. 20 Oct, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#45288: pb2 returns a lot of compilation warnings · 031c5d92
      Davi Arnaut authored
      Fix assorted warnings that are generated in optimized builds.
      Most of it is silencing variables that are set but unused.
      
      This patch also introduces the MY_ASSERT_UNREACHABLE macro
      which helps the compiler to deduce that a certain piece of
      code is unreachable.
      
      include/my_compiler.h:
        Use GCC's __builtin_unreachable if available. It allows
        GCC to deduce the unreachability of certain code paths,
        thus avoiding warnings that, for example, accused that a
        variable could be used without being initialized (due to
        unreachable code paths).
      031c5d92
  31. 12 Sep, 2010 1 commit
  32. 31 Aug, 2010 1 commit
  33. 02 Jul, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#53445: Build with -Wall and fix warnings that it generates · 1113efea
      Davi Arnaut authored
      Apart strict-aliasing warnings, fix the remaining warnings
      generated by GCC 4.4.4 -Wall and -Wextra flags.
      
      One major source of warnings was the in-house function my_bcmp
      which (unconventionally) took pointers to unsigned characters
      as the byte sequences to be compared. Since my_bcmp and bcmp
      are deprecated functions whose only difference with memcmp is
      the return value, every use of the function is replaced with
      memcmp as the special return value wasn't actually being used
      by any caller.
      
      There were also various other warnings, mostly due to type
      mismatches, missing return values, missing prototypes, dead
      code (unreachable) and ignored return values.
      
      BUILD/SETUP.sh:
        Remove flags that are implied by -Wall and -Wextra.
        Do not warn about unused parameters in C++.
      BUILD/check-cpu:
        Print only the compiler version instead of verbose banner.
        Although the option is gcc specific, the check was only
        being used for GCC specific checks anyway.
      client/mysql.cc:
        bcmp is no longer defined.
      client/mysqltest.cc:
        Pass a string to function expecting a format string.
        Replace use of bcmp with memcmp.
      cmd-line-utils/readline/Makefile.am:
        Always define _GNU_SOURCE when compiling GNU readline.
        Required to make certain prototypes visible.
      cmd-line-utils/readline/input.c:
        Condition for the code to be meaningful.
      configure.in:
        Remove check for bcmp.
      extra/comp_err.c:
        Use appropriate type.
      extra/replace.c:
        Replace use of bcmp with memcmp.
      extra/yassl/src/crypto_wrapper.cpp:
        Do not ignore the return value of fgets. Retrieve the file
        position if fgets succeed -- if it fails, the function will
        bail out and return a error.
      extra/yassl/taocrypt/include/blowfish.hpp:
        Use a single array instead of accessing positions of the sbox_
        through a subscript to pbox_.
      extra/yassl/taocrypt/include/runtime.hpp:
        One definition of such functions is enough.
      extra/yassl/taocrypt/src/aes.cpp:
        Avoid potentially ambiguous conditions.
      extra/yassl/taocrypt/src/algebra.cpp:
        Rename arguments to avoid shadowing related warnings.
      extra/yassl/taocrypt/src/blowfish.cpp:
        Avoid potentially ambiguous conditions.
      extra/yassl/taocrypt/src/integer.cpp:
        Do not define type within a anonymous union.
        Use a variable to return a value instead of
        leaving the result in a register -- compiler
        does not know the logic inside the asm.
      extra/yassl/taocrypt/src/misc.cpp:
        Define handler for pure virtual functions.
        Remove unused code.
      extra/yassl/taocrypt/src/twofish.cpp:
        Avoid potentially ambiguous conditions.
      extra/yassl/testsuite/test.hpp:
        Function must have C language linkage.
      include/m_string.h:
        Remove check which relied on bcmp being defined -- they weren't
        being used as bcmp is only visible when _BSD_SOURCE is defined.
      include/my_bitmap.h:
        Remove bogus helpers which were used only in a few files and
        were causing warnings about dead code.
      include/my_global.h:
        Due to G++ bug, always silence false-positive uninitialized
        variables warnings when compiling C++ code with G++.
        Remove bogus helper.
      libmysql/Makefile.shared:
        Remove built-in implementation of bcmp.
      mysql-test/lib/My/SafeProcess/safe_process.cc:
        Cast pid to largest possible type for a process identifier.
      mysys/mf_loadpath.c:
        Leave space of the ending nul.
      mysys/mf_pack.c:
        Replace bcmp with memcmp.
      mysys/my_bitmap.c:
        Dead code removal.
      mysys/my_gethwaddr.c:
        Remove unused variable.
      mysys/my_getopt.c:
        Silence bogus uninitialized variable warning.
        Do not cast away the constant qualifier.
      mysys/safemalloc.c:
        Cast to expected type.
      mysys/thr_lock.c:
        Silence bogus uninitialized variable warning.
      sql/field.cc:
        Replace bogus helper with a more appropriate logic which is
        used throughout the code.
      sql/item.cc:
        Remove bogus logical condition which always evaluates to TRUE.
      sql/item_create.cc:
        Simplify code to avoid signedness related warnings.
      sql/log_event.cc:
        Replace use of bcmp with memcmp.
        No need to use helpers for simple bit operations.
      sql/log_event_old.cc:
        Replace bmove_align with memcpy.
      sql/mysqld.cc:
        Move use declaration of variable to the ifdef block where it
        is used. Remove now-unnecessary casts and arguments.
      sql/set_var.cc:
        Replace bogus helpers with simple and classic bit operations.
      sql/slave.cc:
        Cast to expected type and silence bogus warning.
      sql/sql_class.h:
        Don't use enum values as bit flags, the supposed type safety is
        bogus as the combined bit flags are not a value in the enumeration.
      sql/udf_example.c:
        Only declare variable when necessary.
      sql/unireg.h:
        Replace use of bmove_align with memcpy.
      storage/innobase/os/os0file.c:
        Silence bogus warning.
      storage/myisam/mi_open.c:
        Remove bogus cast, DBUG_DUMP expects a pointer to unsigned
        char.
      storage/myisam/mi_page.c:
        Remove bogus cast, DBUG_DUMP expects a pointer to unsigned
        char.
      strings/bcmp.c:
        Remove built-in bcmp.
      strings/ctype-ucs2.c:
        Silence bogus warning.
      tests/mysql_client_test.c:
        Use a appropriate type as expected by simple_command().
      1113efea
  34. 16 Jun, 2010 1 commit
  35. 04 Jun, 2010 1 commit
    • Georgi Kodinov's avatar
      Bug #52315: utc_date() crashes when system time > year 2037 · a4cd7f2c
      Georgi Kodinov authored
                  
      Some of the server implementations don't support dates later
      than 2038 due to the internal time type being 32 bit.
      Added checks so that the server will refuse dates that cannot
      be handled by either throwing an error when setting date at 
      runtime or by refusing to start or shutting down the server if 
      the system date cannot be stored in my_time_t.
      a4cd7f2c
  36. 26 May, 2010 1 commit
  37. 20 May, 2010 1 commit
    • Sergey Glukhov's avatar
      Bug#52884 mysql-test-run does not work with --debug option · 7fab5c0b
      Sergey Glukhov authored
      Server crashes on 64bit linux with 'double free or corruption'
      message, on 32bit mysql-test-run silently fails on bootstrap
      stage. The problem is that FreeState() is called twice
      for init_settings struct in _db_end_ function.
      The fix is to remove superfluous FreeState() call.
      Additional fix:
      fixed discrepancy of result file when
      debug & valgrind options are enabled
      for MTR.
      
      dbug/dbug.c:
        The problem is that FreeState() is called twice
        for init_settings struct in _db_end_ function.
        The fix is to remove superfluous FreeState() call.
      mysql-test/r/variables_debug.result:
        fixed discrepancy of result file when
        debug & valgrind options are enabled
        for MTR.
      mysql-test/t/variables_debug.test:
        fixed discrepancy of result file when
        debug & valgrind options are enabled
        for MTR.
      sql/set_var.cc:
        fixed discrepancy of result file when
        debug & valgrind options are enabled
        for MTR.
      7fab5c0b
  38. 06 Apr, 2010 2 commits
    • Michael Widenius's avatar
      Removed compiler warnings · c8b3cd4a
      Michael Widenius authored
      Removed random failures from test suite
      
      mysql-test/extra/rpl_tests/rpl_insert_id_pk.test:
        Make test predicatable.
      mysql-test/include/maria_empty_logs.inc:
        We can't use 'Threads_connected' for syncronization, as the 'check_warnings' thread that just quit may still be counted in 'Threads_connected'
        Now we just wait until MySQLD answers again, which should be good enough for our purposes
      mysql-test/suite/binlog/r/binlog_index.result:
        Updated results file
      mysql-test/suite/binlog/t/binlog_index-master.opt:
        Added option file to not get stack traces in .err file.
      mysql-test/suite/binlog/t/binlog_index.test:
        Added 'flush tables' to remove warning about crashed suppression file from logs
      mysql-test/suite/pbxt/r/multi_statement.result:
        Updated results
      mysql-test/suite/pbxt/t/multi_statement-master.opt:
        Added options so that slow query testing makes sense
      sql/events.cc:
        Don't write Event Scheduler startup message if warnings are turned off.
      sql/handler.cc:
        Removed compiler warning
      sql/log.cc:
        Removed compiler warning
      sql/mysqld.cc:
        Added option 'test-expect-abort'; If this is set, we don't write message to log in case of 'DBUG_ABORT'.
        (Gives us smaller, easier to read log files)
      sql/set_var.cc:
        Removed compiler warning
      sql/slave.cc:
        Removed compiler warning
      sql/sql_plugin.cc:
        Don't write warnings about disabled plugin if using --log_warnings=0
      storage/xtradb/include/ut0lst.h:
        Removed compiler warning
      support-files/compiler_warnings.supp:
        Supress warning from xtradb
      c8b3cd4a
    • Sergei Golubchik's avatar
      fixes for builbot failures · 1c8278ba
      Sergei Golubchik authored
      mysql-test/t/connect.test:
        replace the port correctly
      sql/set_var.cc:
        opensolaris gcc (or just an old gcc ?) does not like offsetof() as a case label.
      1c8278ba