An error occurred fetching the project authors.
  1. 23 Feb, 2009 1 commit
    • Alexey Kopytov's avatar
      Fix for bug #15936: "round" differs on Windows to Unix · 1b5d173b
      Alexey Kopytov authored
      Both of our own implementations of rint(3) were inconsistent with the
      most common behavior of rint() on those platforms that have it: round
      to nearest, break ties by rounding to nearest even.
      
      Fixed by leaving just one implementation of rint() in our source tree,
      and changing its behavior to match the most common native
      implementations on other platforms.
      
      configure.in:
        Added checks for fenv.h and fesetround().
      include/config-win.h:
        Removed the incorrect implementation of rint() for Windows.
      include/my_global.h:
        Added an rint() implementation for platforms that do not have it.
      mysql-test/r/func_math.result:
        Added a test case for bug #15936.
      mysql-test/t/func_math.test:
        Added a test case for bug #15936.
      sql/mysqld.cc:
        Explicitly set the FPU rounding mode with fesetround().
      1b5d173b
  2. 16 Feb, 2009 1 commit
  3. 10 Feb, 2009 1 commit
    • Chad MILLER's avatar
      Bug#30261: "mysqld --help" no longer possible for root · b8b9d723
      Chad MILLER authored
      The check for root-ness would signal an error.  Errors would make the
      server exit before usage (help) information was printed.
      
      Now, test for whether we want help regardless of whether we're going
      to exit with an error.  If plugins are not initialized by the time we 
      print usage information, inform the user that some parameters are 
      missing.
      b8b9d723
  4. 09 Feb, 2009 1 commit
    • Sergey Glukhov's avatar
      Bug#42610 Dynamic plugin broken in 5.1.31 · 5d2a707d
      Sergey Glukhov authored
      added ignore-builtin-innodb option which disabled
      initialization of builtin InnoDB plugin
      
      mysql-test/r/innodb_ignore_builtin.result:
        test case
      mysql-test/t/innodb_ignore_builtin-master.opt:
        test case
      mysql-test/t/innodb_ignore_builtin.test:
        test case
      sql/mysql_priv.h:
        added ignore-builtin-innodb option which disabled
        initialization of builtin InnoDB plugin
      sql/mysqld.cc:
        added ignore-builtin-innodb option which disabled
        initialization of builtin InnoDB plugin
      sql/set_var.cc:
        added ignore-builtin-innodb option which disabled
        initialization of builtin InnoDB plugin
      sql/sql_plugin.cc:
        added ignore-builtin-innodb option which disabled
        initialization of builtin InnoDB plugin
      5d2a707d
  5. 12 Jan, 2009 1 commit
    • Tatiana A. Nurnberg's avatar
      Bug#31177: Server variables can't be set to their current values · 7a3c3619
      Tatiana A. Nurnberg authored
      Bounds-checks and blocksize corrections were applied to user-input,
      but constants in the server were trusted implicitly. If these values
      did not actually meet the requirements, the user could not set change
      a variable, then set it back to the (wonky) factory default or maximum
      by explicitly specifying it (SET <var>=<value> vs SET <var>=DEFAULT).
      
      Now checks also apply to the server's presets. Wonky values and maxima
      get corrected at startup. Consequently all non-offsetted values the user
      sees are valid, and users can set the variable to that exact value if
      they so desire.
      
      mysql-test/r/read_buffer_size_basic.result:
        test sets out of bounds value; we now throw a warning for this.
        This is a side-effect: before, the maximum was higher than the
        value we set here. The value was corrected to block-size, the
        maximum was not, hence the value was smaller than the maximum
        in this particular case. Now that we align the maxima at startup,
        the value in SET is larger than the (corrected) maximum, and we
        see a warning in this particular case. "This means we're doing it right."
      mysql-test/r/read_rnd_buffer_size_basic.result:
        test sets out of bounds value; we now throw a warning for this.
        This is a side-effect: before, the maximum was higher than the
        value we set here. The value was corrected to block-size, the
        maximum was not, hence the value was smaller than the maximum
        in this particular case. Now that we align the maxima at startup,
        the value in SET is larger than the (corrected) maximum, and we
        see a warning in this particular case. "This means we're doing it right."
      mysys/my_getopt.c:
        Do bounds-checking at start-up time so we'll catch and correct
        wonky default values and upper limits.
      sql/mysqld.cc:
        If 0 is a legal value per the docs, not to mention the default, we shouldn't give 1 as
        the lower limit.
      storage/innobase/handler/ha_innodb.cc:
        We are setting upper bounds here.
        ~0L gives -1. That is NOT what we want!
      7a3c3619
  6. 07 Jan, 2009 1 commit
  7. 29 Dec, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#41131 "Questions" fails to increment - ignores statements instead stored procs(5.0 ver) · 397a36c7
      Sergey Glukhov authored
      Added global status variable 'Queries' which represents
      total amount of queries executed by server including
      statements executed by SPs.
      note: It's old behaviour of 'Questions' variable.
      
      
      mysql-test/r/status.result:
        test result
      mysql-test/t/status.test:
        test case
      sql/mysqld.cc:
        Added global status variable 'Queries' which represents
        total amount of queries executed by server including
        statements executed by SPs.
        note: It's old behaviour of 'Questions' variable.
      sql/sql_show.cc:
        Added global status variable 'Queries' which represents
        total amount of queries executed by server including
        statements executed by SPs.
        note: It's old behaviour of 'Questions' variable.
      sql/structs.h:
        Added global status variable 'Queries' which represents
        total amount of queries executed by server including
        statements executed by SPs.
        note: It's old behaviour of 'Questions' variable.
      397a36c7
  8. 24 Dec, 2008 1 commit
  9. 23 Dec, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#37575 UCASE fails on monthname · 43ee0f9f
      Sergey Glukhov authored
      The MONTHNAME/DAYNAME functions
      returns binary string, so the LOWER/UPPER functions
      are not effective on the result of MONTHNAME/DAYNAME call.  
      Character set of the MONTHNAME/DAYNAME function
      result has been changed to connection character set.
      
      
      include/m_ctype.h:
        added my_charset_repertoire function
      mysql-test/r/ctype_ucs.result:
        test result
      mysql-test/r/func_time.result:
        test result
      mysql-test/t/ctype_ucs.test:
        test case
      mysql-test/t/func_time.test:
        test case
      sql/item_timefunc.cc:
        Item_func_monthname::fix_length_and_dec and
        Item_func_dayname::fix_length_and_dec methods have been
        modified to use connection character set
      sql/item_timefunc.h:
        Item_func_monthname::fix_length_and_dec and
        Item_func_dayname::fix_length_and_dec methods have been
        modified to use connection character set
      sql/mysql_priv.h:
        added max_month_name_length, max_day_name_length fields into MY_LOCALE struct
      sql/mysqld.cc:
        The test_lc_time_sz function controls modifications
        of the locale database in debugging mode.
      sql/sql_locale.cc:
        initialization of max_month_name_length, max_day_name_length fields
      strings/ctype.c:
        added my_charset_repertoire function
      43ee0f9f
  10. 17 Dec, 2008 1 commit
  11. 05 Dec, 2008 1 commit
    • Vladislav Vaintroub's avatar
      Bug#39750 -cannot create temp file on Windows. · ac00df9a
      Vladislav Vaintroub authored
      The problem appears often in conjuction with temp files, when temp-pool is used, so that names of temp files are not unique.
      
      The reason is that rapid deletiion and creation of fiiles with the same name on Windows is not guaranteed to succeed. File disappears from the file system only when the last handle to it is closed. If for example  a virus scanner, a backup or indexing  application  opens the  temp file just before MySQL deletes it, the file will enter "delete pending" state. In this state,it is not possible to open the file , or create a file with the same name (CreateFile returns  ERROR_ACCESS_DENED, posix open returns EACESS)
      
      Fix (rather a cheap workarounf) is not to use temp-pool when working with temporary files- this will make filenames unique. 
      With this patch , temp- pool setting will be ignored on anything but Linux(the option only made sense for Linux since its invention anyway).
      ac00df9a
  12. 04 Dec, 2008 1 commit
    • Vladislav Vaintroub's avatar
      Bug#38522: 5 seconds delay when closing application using embedded server · ec5ce9b0
      Vladislav Vaintroub authored
                        
      The problem here is that embedded server starts handle_thread manager 
      thread  on mysql_library_init() does not stop it on mysql_library_end().
      At shutdown, my_thread_global_end() waits for thread count to become 0,
      but since we did not stop the thread it will give up after 5 seconds.
                   
      Solution is to move shutdown for handle_manager thread from kill_server()
      (mysqld specific) to clean_up() that is used by both embedded and mysqld.
                  
      This patch also contains some refactorings - to avoid duplicate code,
      start_handle_manager() and stop_handle_manager() functions are introduced.
      Unused variables are eliminated. handle_manager does not rely on global
      variable abort_loop anymore to stop (abort_loop is not set for embedded).
                  
      Note: Specifically on Windows and when using DBUG version of libmysqld, 
      the complete solution requires removing obsolete code my_thread_init() 
      from my_thread_var(). This has a side effect that a DBUG statement 
      after my_thread_end() can cause thread counter to be incremented, and 
      embedded will hang for some seconds. Or worse, my_thread_init() will 
      crash if critical sections have been deleted by the global cleanup 
      routine that runs in a different thread. 
      
      This patch also fixes and revert prior changes for Bug#38293 
      "Libmysqld crash in mysql_library_init if language file missing".
      
      Root cause of the crash observed in Bug#38293  was bug in my_thread_init() 
      described above
      
      
      
      
      client/mysql.cc:
        sql_protocol_typelib is not exported from libmysqld
        (does not make sense either)
        thus excluded from embedded client
      dbug/dbug.c:
        revert changes for Bug#38293
      include/my_dbug.h:
        revert changes for Bug#38293
      libmysql/libmysql.c:
        Removed DBUG_POP call, because when called after my_end(), will access
        THR_key_mysys that is already deleted. The result of pthread_get_specific
        is not predictable in this case and hence DBUG_POP can crash.
      libmysqld/examples/CMakeLists.txt:
        Revert changes for Bug#38293.
      libmysqld/lib_sql.cc:
        code to start handle manager is factored out into 
        start_handle_manager() function
      libmysqld/libmysqld.def:
        Revert changes for Bug #38293
        Remove excessive exports from libmysqld, export what API documents.
      mysys/my_thr_init.c:
        Remove windows-DLL-specific workaround for something (old code, no documentation for
        what specifically). The problem is that even after my_thread_end() is finished, 
        DBUG statement can initiate my_thread_init(). This does not happen anywhere else and 
        should not happen on  Windows either.
      sql/mysql_priv.h:
        - new functions start_handle_manager() and stop_handle_manager()
        - move manager_thread_in_use  variable to sql_manager.cc and made
        it static
        - remove manager_status, as it is unused
      sql/mysqld.cc:
        Code to start/stop handle_manager thread is factored out into start_handle_manager()
      ec5ce9b0
  13. 28 Nov, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug #37339: SHOW VARIABLES not working properly with multi-byte datadir · 171ef77f
      Georgi Kodinov authored
            
      The SHOW VARIABLES LIKE .../SELECT @@/SELECT ... FROM INFORMATION_SCHEMA.VARIABLES
      were assuming that all the system variables are in system charset (UTF-8).
      However the variables that are settable through command line will have a different
      character set (character_set_filesystem).
      Fixed the server to remember the correct character set of basedir, datadir, tmpdir,
      ssl, plugin_dir, slave_load_tmpdir, innodb variables; init_connect and init_slave 
      variables and use it when processing data.
      
      mysql-test/r/ctype_filesystem.result:
        Bug #37339: test case (should be in utf-8)
      mysql-test/t/ctype_filesystem-master.opt:
        Bug #37339: test case (should be in ISO-8859-1)
      mysql-test/t/ctype_filesystem.test:
        Bug #37339: test case
      sql/mysqld.cc:
        Bug #37339: remember the correct character set for init_slave and init_connect
      sql/set_var.cc:
        Bug #37339: 
          - remember the character set of the relevant variables
          - implement storing and using the correct 
            character set
      sql/set_var.h:
        Bug #37339: implement storing and using the correct 
        character set
      sql/sql_show.cc:
        Bug #37339: implement storing and using the correct 
        character set
      171ef77f
  14. 21 Nov, 2008 1 commit
  15. 19 Nov, 2008 1 commit
    • Alexey Botchkov's avatar
      Bug#38293 Libmysqld crash in mysql_library_init if language file missing · 33774bdd
      Alexey Botchkov authored
          That's a Win-specific error.
          When we create libmysqld.dll we have many libraries like mysys, dbug,
          strings, etc linked into that dll, so the application built upon
          this library shouldn't link these libraries to itself, rather use
          those inside the dll.
      
          Fixed by redirecting calls into the libmysqld.dll
      
      per-file comments:
        dbug/dbug.c
      Bug#38293 Libmysqld crash in mysql_library_init if language file missing
          fake _db_something definitions added
      
        include/my_dbug.h
      Bug#38293 Libmysqld crash in mysql_library_init if language file missing
        fake _db_something declarations added
      
        libmysqld/examples/CMakeLists.txt
      Bug#38293 Libmysqld crash in mysql_library_init if language file missing
          superfluous libraries removed from linking
      
        libmysqld/libmysqld.def
      Bug#38293 Libmysqld crash in mysql_library_init if language file missing
          set of mysys functions added to the export section
      33774bdd
  16. 14 Nov, 2008 1 commit
    • Vladislav Vaintroub's avatar
      Bug #20430 mysqld.exe windows service stuck in "SERVICE_STOP_PENDING" · 3305a68b
      Vladislav Vaintroub authored
      status
      
      The problem appears to be a race condition, when service is being
      stopped right after startup. We set the service status to SERVICE_RUNNING
      way too early it cannot yet handle stop requests -  initialization has
      not finished and  hEventShutdown  that signals server to stop is not yet
      created. If somebody issues "net stop MySQL" at this time, MySQL is not
      informed about the stop and continues to run as usual, while
      NTService::ServiceMain() stucks forever waiting for mysql's "main" thread
      to finish.
      
      Solution is to remain in SERVICE_START_PENDING status until after server
      initialization  is fully complete and only then change the status to
      SERVICE_RUNNING. In  SERVICE_START_PENDING we do not accept service control
      requests, i.e it is not possible to stop service in that time.
      
      sql/mysqld.cc:
        Set service status to running after all initialization is complete
      sql/nt_servc.cc:
        New method SetRunning() to be called  by application
        to set service status to SERVICE_RUNNING when apllication
        has finished initialization.
      sql/nt_servc.h:
        New method SetRunning() to be called  by application
        when initialization completes
      3305a68b
  17. 10 Nov, 2008 1 commit
  18. 04 Nov, 2008 1 commit
  19. 23 Oct, 2008 1 commit
  20. 09 Oct, 2008 2 commits
    • Georgi Kodinov's avatar
      WL4403: --general_log and --slow_query_log don't turn on the logging. · 9385ff35
      Georgi Kodinov authored
      Fixed a compilation warning
      9385ff35
    • Kristofer Pettersson's avatar
      Bug#24289 Status Variable "Questions" gets wrong values with Stored Routines · cdc1ca9e
      Kristofer Pettersson authored
                       
      When running Stored Routines the Status Variable "Questions" was wrongly
      incremented. According to the manual it should contain the "number of
      statements that clients have sent to the server"
                    
      Introduced a new status variable 'questions' to replace the query_id
      variable which currently corresponds badly with the number of statements
      sent by the client.
                  
      The new behavior is ment to be backward compatible with 4.0 and at the
      same time work with new features in a similar way.
                  
      This is a backport from 6.0
      
      mysql-test/r/status2.result:
        Added test case
      mysql-test/t/status2.test:
        Added test case
      sql/mysqld.cc:
        Introduced a new status variable 'questions' to replace the query_id
        variable which currently corresponds badly with the number of statements
        sent by the client.
      sql/sql_class.h:
        Introduced a new status variable 'questions' to replace the query_id
        variable which currently corresponds badly with the number of statements
        sent by the client.
      sql/sql_parse.cc:
        To be backward compatible with 4.0 and at the same time extend the 
        interpretation of the Question variable, it should be increased on
        all COM-commands but COM_STATISTICS, COM_PING, COM_STMT_PREPARE,
        COM_STMT_CLOSE and COM_STMT_RESET.
        Since COM_QUERY can process multiple statements, there has to be an
        extra increase there as well.
      sql/sql_show.cc:
        Removed deprecated SHOW_QUESTION status code.
      sql/structs.h:
        Removed deprecated SHOW_QUESTION status code.
      cdc1ca9e
  21. 06 Oct, 2008 2 commits
    • Marc Alff's avatar
      Bug#36768 (partition_info::check_partition_info() reports mal formed · 3a7ea8b2
      Marc Alff authored
      warnings)
      
      Before this fix, several places in the code would raise a warning with an
      error code 0, making it impossible for a stored procedure, a connector,
      or a client application to trigger logic to handle the warning.
      Also, the warning text was hard coded, and therefore not translated.
      
      With this fix, new errors numbers have been created to represent these
      warnings, and the warning text is coded in the errmsg.txt file.
      3a7ea8b2
    • Tatiana A. Nurnberg's avatar
      WL#4403 deprecate @log and @slow_log_queries variables · f3082d93
      Tatiana A. Nurnberg authored
      Adds --general_log_file, --slow_query_log_file command-
      line options to match system variables of the same names.
      
      Deprecates --log, --log-slow-queries command-line options
      and log, log_slow_queries system-variables for v7.0; they
      are superseded by general_log/general_log_file and
      slow_query_log/slow_query_log_file, respectively.
      
      mysql-test/r/log_basic.result:
        Change deprecated system variable "log" to
        general log.
      mysql-test/r/log_state.result:
        Show that all log-related server variables that
        should throw deprecation warnings do, and the
        others don't.
      mysql-test/t/log_basic.test:
        Change deprecated system variable "log" to
        general log.
      mysql-test/t/log_state.test:
        Show that all log-related server variables that
        should throw deprecation warnings do, and the
        others don't.
      sql/mysqld.cc:
        Add command-line options --general_log_file and
        --slow_query_log_file to match server options of
        the same name.
        
        Deprecated --log and --log-slow-queries command-line
        options; they are superseded by --general-log/
        --general-log-file and --slow-query-log/--slow-query-log-file,
        respectively
      sql/set_var.cc:
        Deprecate system-variables log in favour of general_log,
        log_slow_queries in favour of slow_query_log for 7.0,
        both for value- and DEFAULT-setting.
      f3082d93
  22. 03 Oct, 2008 2 commits
    • Georgi Kodinov's avatar
      Bug #39812: Make statement replication default for 5.1 (to match 5.0) · c688c8d8
      Georgi Kodinov authored
      Make STMT replication default for 5.1.
      Add a default of MIXED into the config files
      Fix the tests that needed MIXED replication mode.
      
      mysql-test/include/mix1.inc:
        Bug #39812: Fix the tests that needed MIXED replication mode.
      mysql-test/r/innodb-semi-consistent.result:
        Bug #39812: Fix the tests that needed MIXED replication mode.
      mysql-test/r/innodb.result:
        Bug #39812: Fix the tests that needed MIXED replication mode.
      mysql-test/r/innodb_mysql.result:
        Bug #39812: Fix the tests that needed MIXED replication mode.
      mysql-test/r/tx_isolation_func.result:
        Bug #39812: Fix the tests that needed MIXED replication mode.
      mysql-test/t/innodb-semi-consistent.test:
        Bug #39812: Fix the tests that needed MIXED replication mode.
      mysql-test/t/innodb.test:
        Bug #39812: Fix the tests that needed MIXED replication mode.
      mysql-test/t/tx_isolation_func.test:
        Bug #39812: Fix the tests that needed MIXED replication mode.
      sql/mysqld.cc:
        Bug #39812: Make STMT replication default for 5.1.
      support-files/my-huge.cnf.sh:
        Bug #39812: Add a default of MIXED into the config files
      support-files/my-innodb-heavy-4G.cnf.sh:
        Bug #39812: Add a default of MIXED into the config files
      support-files/my-large.cnf.sh:
        Bug #39812: Add a default of MIXED into the config files
      support-files/my-medium.cnf.sh:
        Bug #39812: Add a default of MIXED into the config files
      support-files/my-small.cnf.sh:
        Bug #39812: Add a default of MIXED into the config files
      c688c8d8
    • Georgi Kodinov's avatar
      Bug #38370: The test ndb.ndb_index_ordered fails with the community features on · 3adfa465
      Georgi Kodinov authored
      The problem was caused by a wrong merge. Fixed by enabling the correct ndb variables
      initialization.
      
      mysql-test/suite/ndb/t/disabled.def:
        Bug #38370: remove disabled test case
      sql/mysqld.cc:
        Bug #38370: corrected a wrong merge to have all the NDB variables intiialized
        correctly
      3adfa465
  23. 01 Oct, 2008 1 commit
    • Davi Arnaut's avatar
      Bug#35164: Large number of invalid pthread_attr_setschedparam calls · b98c2cbb
      Davi Arnaut authored
      Bug#37536: Thread scheduling causes performance degradation at low thread count
      
      Deprecated --skip-thread-priority startup option as newer versions of
      the server won't change the thread priorities by default.
      
      Giving threads different priorities might yield marginal improvements
      in some platforms (where it actually works) but on the other hand it
      might cause significant degradation depending on the thread count and
      number of processors. Meddling with the thread priorities is a not a
      safe bet as it is very dependent on the behavior of the cpu scheduler
      and system where MySQL is being run.
      
      From MySQL 6.0 and up the default behavior is that of not modifying
      the threads priorities.
      
      sql/mysqld.cc:
        Deprecate --skip-thread-priority
      b98c2cbb
  24. 29 Sep, 2008 1 commit
    • Davi Arnaut's avatar
      Bug#34306: Can't make copy of log tables when server binary log is enabled · 8d6cbf20
      Davi Arnaut authored
      The problem is that when statement-based replication was enabled,
      statements such as INSERT INTO .. SELECT FROM .. and CREATE TABLE
      .. SELECT FROM need to grab a read lock on the source table that
      does not permit concurrent inserts, which would in turn be denied
      if the source table is a log table because log tables can't be
      locked exclusively.
      
      The solution is to not take such a lock when the source table is
      a log table as it is unsafe to replicate log tables under statement
      based replication. Furthermore, the read lock that does not permits
      concurrent inserts is now only taken if statement-based replication
      is enabled and if the source table is not a log table.
      
      include/thr_lock.h:
        Introduce yet another lock type that my get upgraded depending
        on the binary log format. This is not a optimal solution but
        can be easily improved later.
      mysql-test/r/log_tables.result:
        Add test case result for Bug#34306
      mysql-test/suite/binlog/r/binlog_stm_row.result:
        Add test case result for Bug#34306
      mysql-test/suite/binlog/t/binlog_stm_row.test:
        Add test case for Bug#34306
      mysql-test/t/log_tables.test:
        Add test case for Bug#34306
      sql/lock.cc:
        Assert that TL_READ_DEFAULT is not a real lock type.
      sql/mysql_priv.h:
        Export new function.
      sql/mysqld.cc:
        Remove using_update_log.
      sql/sql_base.cc:
        Introduce function that returns the appropriate read lock type
        depending on how the statement is going to be replicated. It will
        only take a TL_READ_NO_INSERT log if the binary is enabled and the
        binary log format is statement-based and the table is not a log table.
      sql/sql_parse.cc:
        Remove using_update_log.
      sql/sql_update.cc:
        Use new function to choose read lock type.
      sql/sql_yacc.yy:
        The lock type is now decided at open_tables time. This old behavior was
        actually misleading as the binary log format can be dynamically switched
        and this would not change for statements that have already been parsed
        when the binary log format is changed (ie: prepared statements).
      8d6cbf20
  25. 25 Aug, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#37428 Potential security issue with UDFs - linux shellcode execution. · 43847871
      Sergey Glukhov authored
      plugin_dir option backported from 5.1
      
      mysql-test/r/udf.result:
        result fix
      sql/mysql_priv.h:
        opt_plugin_dir and opt_plugin_dir_ptr declared.
      sql/mysqld.cc:
        'plugin_dir' option added
      sql/set_var.cc:
        'plugin_dir' option added.
      sql/sql_udf.cc:
        opt_plugin_dir added to the udf->dl path. Warn if it's not specified.
      sql/unireg.h:
        PLUGINDIR defined.
      43847871
  26. 22 Aug, 2008 1 commit
    • Alexey Botchkov's avatar
      Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY. · 69aa70b6
      Alexey Botchkov authored
                  
                  test_if_data_home_dir fixed to look into real path.
                  Checks added to mi_open for symlinks into data home directory.
      
      per-file messages:
              include/my_sys.h
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                my_is_symlink interface added
              include/myisam.h
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                myisam_test_invalid_symlink interface added
              myisam/mi_check.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                mi_open_datafile calls modified
              myisam/mi_open.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                code added to mi_open to check for symlinks into data home directory.
                mi_open_datafile now accepts 'original' file path to check if it's
                an allowed symlink.
              myisam/mi_static.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                myisam_test_invlaid_symlink defined
              myisam/myisamchk.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                mi_open_datafile call modified
              myisam/myisamdef.h
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                mi_open_datafile interface modified - 'real_path' parameter added
              mysql-test/r/symlink.test
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                error codes corrected as some patch now rejected pointing inside datahome
              mysql-test/r/symlink.result
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                error messages corrected in the result
              mysys/my_symlink.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                my_is_symlink() implementsd
                my_realpath() now returns the 'realpath' even if a file isn't a symlink
              sql/mysql_priv.h
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                test_if_data_home_dir interface
              sql/mysqld.cc
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                myisam_test_invalid_symlik set with the 'test_if_data_home_dir'
              sql/sql_parse.cc
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                error messages corrected
                test_if_data_home_dir code fixed
      69aa70b6
  27. 19 Jun, 2008 1 commit
    • Davi Arnaut's avatar
      Bug#37003 Tests sporadically crashes with embedded server · f51127e6
      Davi Arnaut authored
      Another problem is that the backtrace facility wasn't being
      enabled for non-Linux targets even if the target OS has the
      backtrace functions. Also, the stacktrace functions inside
      mysqltest were being used without proper checks for their
      presence in the build.
      
      
      client/mysqltest.c:
        Only use stacktrace functions if they are available.
      configure.in:
        Check if the compiler defines __bss_start
      include/my_stacktrace.h:
        Enable stacktrace if system has backtrace functions.
      mysys/stacktrace.c:
        Use backtrace functions if the system supports it.
      sql/mysqld.cc:
        Only use stacktrace functions if they are available.
      f51127e6
  28. 18 Jun, 2008 1 commit
    • Davi Arnaut's avatar
      Bug#37003 Tests sporadically crashes with embedded server · 65969723
      Davi Arnaut authored
      The problem was that when a embedded linked version of mysqltest
      crashed there was no way to obtain a stack trace if no core file
      is available. Another problem is that the embedded version of
      libmysql was not behaving (crash) the same as the non-embedded with
      respect to sending commands to a explicitly closed connection.
      
      The solution is to generate a mysqltest's stack trace on crash
      and to enable "reconnect" if the connection handle was explicitly
      closed so the behavior matches the non-embedded one.
      
      client/CMakeLists.txt:
        Link mysys to mysqltest.
      client/Makefile.am:
        Link mysys to mysqltest.
      client/mysqltest.c:
        Add fatal signal handling with backtracing for Unix and Windows.
      configure.in:
        Add check for weak symbols support and remove a spurious word.
      include/Makefile.am:
        Add new header with prototype for stack tracing functions.
      include/my_stacktrace.h:
        Add new header with prototype for stack tracing functions.
      libmysqld/CMakeLists.txt:
        stack tracing is now part of mysys.
      libmysqld/Makefile.am:
        stack tracing is now part of mysys.
      libmysqld/lib_sql.cc:
        Re-connect if connection was explicitly closed. This is
        done to match the behavior of the non-embeded libmysql.
      mysql-test/t/sql_low_priority_updates_func.test:
        Test expects parallelism between queries that cannot be
        guaranteed under embedded.
      mysys/CMakeLists.txt:
        Add stacktrace to mysys.
      mysys/Makefile.am:
        Add stacktrace to mysys.
      mysys/stacktrace.c:
        Move stacktrace to mysys and add weak symbol for the
        C++ name de-mangling function so that it can later be
        overridden in C++ code. Also add my_ prefix to exported
        functions.
      sql/CMakeLists.txt:
        stacktrace was moved to mysys.
      sql/Makefile.am:
        stacktrace was moved to mysys.
      sql/mysqld.cc:
        Add my_ prefix to mysys functions.
      65969723
  29. 03 Jun, 2008 1 commit
    • Georgi Kodinov's avatar
      Bug#37069 (5.0): implement --skip-federated · 9c5b3514
      Georgi Kodinov authored
      mysql-test/r/federated_disabled.result:
        Bug#37069 (5.0): test case
      mysql-test/t/federated_disabled-master.opt:
        Bug#37069 (5.0): test case
      mysql-test/t/federated_disabled.test:
        Bug#37069 (5.0): test case
      9c5b3514
  30. 17 May, 2008 1 commit
    • unknown's avatar
      Implement some code review fixes for the fix for Bug#27430 · 724f1d9c
      unknown authored
      "Crash in subquery code when in PS and table DDL changed after PREPARE"
      
      
      include/my_sys.h:
        Add two new flags for my_error(). These flags help parameterize
        behavoiur of my_message_sql()
      sql/item.cc:
        Update comments.
        Fix a typo in Item_param::set_param_type_and_swap_value()
      sql/mysqld.cc:
        Implement two additional flags for my_error():
         - if ME_NO_SP_HANDLER is specified, ignore stored procedure continue/
            exit handlers
         - if ME_NO_WARNING_FOR_ERROR is specified, do not push warning
      sql/sql_base.cc:
        Update comments.
        Rename a few methods.
      sql/sql_class.h:
        Update and improve comments.
      sql/sql_prepare.cc:
        Update comments.
        Style changes.
      sql/table.h:
        Update comments.
        Style changes.
        Rename a few methods.
      tests/mysql_client_test.c:
        Zero the bind array, to follow C API requirements.
      724f1d9c
  31. 09 May, 2008 1 commit
    • unknown's avatar
      Bug#35997 Event scheduler seems to let the server crash, if it is embedded. · a2ff146f
      unknown authored
      The event scheduler was not designed to work in embedded mode. This
      patch disables and excludes the event scheduler when the server is
      compiled for embedded build.
      
      
      libmysqld/Makefile.am:
        Reduce the amount of event code in an embedded build.
      mysql-test/t/events_trans.test:
        Disable test if run in embedded mode.
      sql/Makefile.am:
        Introduce definition HAVE_EVENT_SCHEDULER and one new source file.
      sql/event_data_objects.cc:
        Refactor Event_parse_data to new file.
      sql/event_data_objects.h:
        Refactor Event_parse_data to new file.
        Move global definitions to new file.
      sql/event_queue.cc:
        Move all parsed items to Event_parse_data for easier modularization.
      sql/events.cc:
        Move all parsed items to Event_parse_data for easier modularization.
      sql/mysqld.cc:
        Disable the event schedular subsystem if the server is compiled in
        embedded mode.
      sql/set_var.cc:
        Disable the event schedular subsystem if the server is compiled in
        embedded mode.
      sql/set_var.h:
        Disable the event schedular subsystem if the server is compiled in
        embedded mode.
      sql/sql_db.cc:
        Disable the event schedular subsystem if the server is compiled in
        embedded mode.
      sql/sql_parse.cc:
        Disable the event schedular subsystem if the server is compiled in
        embedded mode.
      sql/sql_show.cc:
        Disable the event schedular subsystem if the server is compiled in
        embedded mode.
      sql/sql_test.cc:
        Disable the event schedular subsystem if the server is compiled in
        embedded mode.
      sql/sql_yacc.yy:
        Only include event-code needed for parsing to reduce impact on embedded
        build.
        Move all constants to Event_parse_data class.
      mysql-test/r/events_embedded.result:
        Add test case to make sure the 'event_scheduler' can't be activated
        in embedded mode.
      mysql-test/r/is_embedded.require:
        Add test case to make sure the 'event_scheduler' can't be activated
        in embedded mode.
      mysql-test/t/events_embedded.test:
        Add test case to make sure the 'event_scheduler' can't be activated
        in embedded mode.
      sql/event_parse_data.cc:
        New file. Extracted Event_parse data into a new file.
      sql/event_parse_data.h:
        New file. Extracted Event_parse data into a new file.
      a2ff146f
  32. 19 Apr, 2008 1 commit
  33. 08 Apr, 2008 1 commit
    • unknown's avatar
      Tentative implementation of · 486e74c1
      unknown authored
      WL#4165 Prepared statements: validation 
      WL#4166 Prepared statements: automatic re-prepare
      Fixes
      Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE
      Bug#27690 Re-execution of prepared statement after table was replaced with a view crashes
      Bug#27420 A combination of PS and view operations cause error + assertion on shutdown
      
      The basic idea of the patch is to keep track of table metadata between
      prepared statement prepare and execute. If some table used in the statement
      has changed, the prepared statement is re-prepared before execution.
      
      See WL#4165 and WL#4166 contents and comments in the code for details
      of the implementation.
      
      
      include/my_global.h:
        Remove 'register' keyword to avoid warnings when swapping large structures
        that don't fit into a register. Any modern compiler is capable of placing
        a variable in a register when that would benefit performance.
      mysql-test/r/ps_1general.result:
        Update test results: since now we re-prepare automatically,
        more correct results are produced in prepare-ddl-execute scenario.
      mysql-test/r/query_cache_merge.result:
        Ensure that the table definition cache is large enough for
        the test to pass in --ps-protocol
      mysql-test/r/trigger.result:
        Update test results to reflect automatic statement reprepare.
      mysql-test/t/disabled.def:
        Enable ps_ddl.test, which now passes.
      mysql-test/t/ps_1general.test:
        Since now we re-execute prepared statements after DDL successfully,
        change the test to produce repeatable results. Remove expectancy of
        an error in one place where now we automatically reprepare the prepared
        statement.
      mysql-test/t/query_cache_merge.test:
        Ensure the table definition cache is large enough for the test to pass
        in --ps-protocol
      mysql-test/t/trigger.test:
        Sinc
      sql/item.cc:
        Implement Item_param "copy" functionality, used at re-prepare of
        a prepared statement.
        We copy the type of the original parameter, and move the assigned value,
        if any. Sic, the value is "moved", since it can be quite big --
        e.g. in case we deal with a LONG DATA parameter.
        It's essential to move the value from the old parameter since
        at the time of re-prepare the client packet with the necessary information
        may be not available.
      sql/item.h:
        Declare a new method used for reprepare.
      sql/my_decimal.h:
        Implement "swap()" functionality of class my_decimal to be
        able to easily swap two decimal values.
      sql/mysql_priv.h:
        Declare enum_metadata_type.
      sql/mysqld.cc:
        Implement a status variable for the number of reprepared statements.
      sql/sql_base.cc:
        Implement metadata version validation.
      sql/share/errmsg.txt:
        Add two new error messages: ER_NEED_REPREPARE and ER_PS_REBIND.
        The first error (theoretically) never reaches the user.
        It is issued by the metadata validation framework when a metadata version
        has changed between prepare and execute. Later on it's intercepted
        and the statement is automatically re-prepared. Only if the error
        has occurred repeatedly MAX_REPREPARE_ATTEMTS (3) times do we
        return it to the user.
        
        The second error is issued when after re-prepare we discover
        that the metadata we sent over to the client using the binary
        protocol differs drammatically from the new result set metadata 
        that the reprepared statement produces (e.g. number of result
        set columns is different).
      sql/sql_class.cc:
        Implement metadata version validation framework.
      sql/sql_class.h:
        Declarations for metadata version validation framework.
      sql/sql_parse.cc:
        Mark commands for which we must invalidate and reprepare a prepared
        statement when metadata has changed.
      sql/sql_prepare.cc:
        Implement WL#4165 and WL#4166 (limited support of metadata validation
        and re-prepare).
      sql/table.h:
        Implement metadata validation.
      tests/mysql_client_test.c:
        Add a test case for WL#4166
      486e74c1
  34. 01 Apr, 2008 1 commit
    • unknown's avatar
      mysqld.cc: · 6042d6b1
      unknown authored
        Corrects build problems embedded on Windows
      Makefile.am:
        Install .sym or mysqld-debug if exists
      query_cache_debug.test, query_cache_debug.result:
        Set more resonable query cache size (bug#35749)
      CMakeLists.txt:
        Added missing stacktrace.c
      
      
      mysql-test/r/query_cache_debug.result:
        Set more resonable query cache size (bug#35749)
      mysql-test/t/query_cache_debug.test:
        Set more resonable query cache size (bug#35749)
      libmysqld/CMakeLists.txt:
        Added missing stacktrace.c
      sql/Makefile.am:
        Install .sym or mysqld-debug if exists
      sql/mysqld.cc:
        Corrects build problems embedded on Windows
      6042d6b1
  35. 29 Mar, 2008 1 commit
  36. 28 Mar, 2008 1 commit
    • unknown's avatar
      Bug#26243 mysql command line crash after control-c · 17065f97
      unknown authored
      - Backported the 5.1 DBUG to 5.0.
      - Avoid memory cleanup race on Windows client for CTRL-C
      
      
      client/mysql.cc:
        Bug#26243 mysql command line crash after control-c
        - On Windows, the sigint handler shouldn't call mysql_end
        because the main thread will do so automatically.
        - Remove unnecessary signal call from the sigint handler.
        - Call my_end with proper value.
      dbug/dbug.c:
        Bug#26243 mysql command line crash after control-c
        - Backported the 5.1 DBUG library. The old version uses a non-thread 
        safe global variable 'static struct state *stack'.
      dbug/factorial.c:
        Bug#26243 mysql command line crash after control-c
        - Backported the 5.1 DBUG library. The old version uses a non-thread 
        safe global variable 'static struct state *stack'.
      dbug/user.r:
        Bug#26243 mysql command line crash after control-c
        - Backported the 5.1 DBUG library. The old version uses a non-thread 
        safe global variable 'static struct state *stack'.
      include/my_dbug.h:
        Bug#26243 mysql command line crash after control-c
        - Backported the 5.1 DBUG library. The old version uses a non-thread 
        safe global variable 'static struct state *stack'.
      libmysql/libmysql.c:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      myisam/mi_open.c:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/ha_federated.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/ha_innodb.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/ha_myisammrg.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/item_cmpfunc.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/mysqld.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/net_serv.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/opt_range.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/set_var.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/slave.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/sql_cache.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      sql/sql_select.cc:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      tests/mysql_client_test.c:
        Bug#26243 mysql command line crash after control-c
        - Update for new DBUG library.
      17065f97
  37. 13 Mar, 2008 1 commit
    • unknown's avatar
      Fix for Bug#35074: max_used_connections is not correct. · c8aedb02
      unknown authored
      The problem was that number of threads was used to calculate
      max_used_connections.
      
      The fix is to use number of active connections.
      
      
      mysql-test/r/connect.result:
        Update result file.
      mysql-test/t/connect.test:
        - Add a test case for Bug#35074: max_used_connections is not correct;
        - Make a test case for Bug#33507 more stable.
      sql/mysqld.cc:
        Use number of connections insetad of threads
        to calculate max_used_connections.
      c8aedb02