1. 15 May, 2006 1 commit
  2. 12 May, 2006 1 commit
    • unknown's avatar
      Bug#14635: Accept NEW.x as INOUT parameters to stored procedures · afe2520e
      unknown authored
      from within triggers
      
      Add support for passing NEW.x as INOUT and OUT parameters to stored
      procedures.  Passing NEW.x as INOUT parameter requires SELECT and
      UPDATE privileges on that column, and passing it as OUT parameter
      requires only UPDATE privilege.
      
      
      mysql-test/r/sp-error.result:
        Update the result for new message.
      mysql-test/r/trigger-grant.result:
        Add result for bug#14635.
      mysql-test/r/trigger.result:
        Add result for bug#14635.
      mysql-test/t/trigger-grant.test:
        Add test case for bug#14635.
      mysql-test/t/trigger.test:
        Add test case for bug#14635.
      sql/item.cc:
        Add implementations of set_value() and set_required_privilege() methods
        of Settable_routine_parameter interface.
        
        Use Item_trigger_field::want_privilege instead of
        Item_trigger_field::access_type.
        
        Reset privileges on Item_trigger_field::cleanup().
      sql/item.h:
        Add interface class Settable_routine_parameter and interface query
        method to Item class.  Item_splocal and Item_trigger_field implement
        this interface.
        
        For Item_trigger_field:
         - add read_only attribute and is_read_only() method.
         - remove access_type and add original_privilege and want_privilege
           instead.
         - add set_value() method.
         - add reset_privilege() method.
      sql/item_func.cc:
        Add implementations of set_value() method of Settable_routine_parameter
        interface.
      sql/item_func.h:
        Item_func_get_user_var implements Settable_routine_parameter interface.
      sql/share/errmsg.txt:
        Update english ER_SP_NOT_VAR_ARG message.
      sql/sp_head.cc:
        Use Settable_routine_parameter interface for parameter update.
      sql/sql_yacc.yy:
        Set read_only and want_privilege members in Item_trigger_field
        appropriately.  For NEW.x trigger variable used in left-hand-side
        of SET statement the latter is set to UPDATE_ACL, otherwise it is
        set to SELECT_ACL (but see Item_trigger_field::set_required_privilege(),
        where it may be updated to different value).
      afe2520e
  3. 10 May, 2006 7 commits
    • unknown's avatar
      Fix for BUG#18587: Function that accepts and returns TEXT · 24a0b385
      unknown authored
      garbles data if longer than 766 chars.
      
      The problem is that a stored routine returns BLOBs to the previous
      caller, BLOBs are shallow-copied (i.e. only pointers to the data are
      copied). The fix is to also copy data of BLOBs.
      
      
      mysql-test/r/sp.result:
        Updated result file.
      mysql-test/t/sp.test:
        Added a test case for BUG#18587.
      sql/field_conv.cc:
        Do not jump to optimization if the field type is BLOB and
        the destination table requires copying of BLOBs.
      sql/item_func.cc:
        Request copying BLOBs for the result table.
      24a0b385
    • unknown's avatar
      Make it compilable on Windows. · 38447ae8
      unknown authored
      38447ae8
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · 2d53ffc0
      unknown authored
      into  mysql.com:/home/dlenev/mysql-5.0-bg12472
      
      
      2d53ffc0
    • unknown's avatar
      Commit forgotten changes for BUG#14106. · f76e0def
      unknown authored
      
      mysql-test/r/im_options_set.result:
        Fixed result file.
      mysql-test/r/im_options_unset.result:
        Fixed result file.
      f76e0def
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · fa1e23d9
      unknown authored
      into  mysql.com:/home/dlenev/mysql-5.0-bg12472
      
      
      fa1e23d9
    • unknown's avatar
      Follow-up for the patch for bugs #12472/#15137 "CREATE TABLE ... SELECT ... · 82727c62
      unknown authored
      which explicitly or implicitly uses stored function gives 'Table not locked'
      error"
      
      Test case for these bugs crashed in --ps-protocol mode. The crash was caused
      by incorrect usage of check_grant() routine from create_table_precheck()
      routine. The former assumes that either number of tables to be inspected by
      it is limited explicitly (i.e. is is not UINT_MAX) or table list used and
      thd->lex->query_tables_own_last value correspond to each other.
      create_table_precheck() was not fulfilling this condition and crash happened.
      The fix simply sets number of tables to be inspected by check_grant() to 1.
      
      
      sql/sql_parse.cc:
        create_table_precheck():
          At the moment when create_table_precheck() is called TABLE_LIST element
          representing table to be created does not belong to global table list
          therefore we should limit number of tables to be inspected by check_grant()
          explicitly (as in this case table list passed to this function does not
          correspond to thd->lex->query_tables_own_last value).
      82727c62
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · 2038148c
      unknown authored
      into  mysql.com:/mnt/raid/MySQL/devel/5.0-bug14106
      
      
      2038148c
  4. 09 May, 2006 2 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · cb5d6dbf
      unknown authored
      into  mysql.com:/home/dlenev/mysql-5.0-bg12472
      
      
      sql/mysql_priv.h:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      sql/sql_table.cc:
        Auto merged
      mysql-test/r/sp.result:
        Manual merge.
      mysql-test/t/sp.test:
        Manual merge.
      cb5d6dbf
    • unknown's avatar
      Fix for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which explicitly · 4f15a043
      unknown authored
      or implicitly uses stored function gives "Table not locked" error'
      
      CREATE TABLE ... SELECT ... statement which was explicitly or implicitly
      (through view) using stored function gave "Table not locked" error.
      
      The actual bug resides in the current locking scheme of CREATE TABLE SELECT
      code, which first opens and locks tables of the SELECT statement itself,
      and then, having SELECT tables locked, creates the .FRM, opens the .FRM and
      acquires lock on it. This scheme opens a possibility for a deadlock, which
      was present and ignored since version 3.23 or earlier. This scheme also
      conflicts with the invariant of the prelocking algorithm -- no table can
      be open and locked while there are tables locked in prelocked mode.
      
      The patch makes an exception for this invariant when doing CREATE TABLE ...
      SELECT, thus extending the possibility of a deadlock to the prelocked mode.
      We can't supply a better fix in 5.0.
      
      
      mysql-test/r/sp.result:
        Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which
        explicitly or implicitly uses stored function gives "Table not locked" error'
      mysql-test/t/sp.test:
        Added tests for bugs#12472/#15137 'CREATE TABLE ... SELECT ... which
        explicitly or implicitly uses stored function gives "Table not locked" error'
      sql/mysql_priv.h:
        Added flag which can be passed to open_table() routine in order to ignore
        set of locked tables and prelocked mode.
        We don't need declaration of create_table_from_items() any longer as it was
        moved into sql_insert.cc and made static.
      sql/sql_base.cc:
        open_table():
          Added flag which allows open table ignoring set of locked tables and
          prelocked mode.
      sql/sql_insert.cc:
        Moved create_table_from_items() from sql_table.cc to sql_insert.cc as it was
        not used outside of sql_insert.cc and contains code which is specific for
        CREATE TABLE ... SELECT.
        Also now when we are executing CREATE TABLE ... SELECT ... statement which
        SELECT part requires execution in prelocked mode we ignore set of locked
        tables in order to get access to the table we just have created.
        We probably don't want to do this if we are under real LOCK TABLES since
        it will widen window for deadlock too much.
      sql/sql_table.cc:
        Moved create_table_from_items() routine into sql_insert.cc, since it was not
        used anywhere outside of this file and contains logic which is specific for
        CREATE TABLE ... SELECT statement.
      4f15a043
  5. 06 May, 2006 3 commits
    • unknown's avatar
      Partial fix for BUG#14106: IM: im_life_cycle and im_utils · f4d209b0
      unknown authored
      tests fail on FreeBSD.
      
      The patch contains of the following:
        - make Instance Manager, running in the daemon mode, dump
          the pid of angel-process in the special file;
        - default value of angel-pid-file-name is 'mysqlmanager.angel.pid';
        - if ordinary (IM) pid-file-name is specified in the configuration,
          angel-pid-file-name is updated according to the following
          rule: extension of the basename of pid-file-name is replaced by
          '.angel.pid.
          For example:
          - pid-file-name: /tmp/im.pid
            => angel-pid-file-name: /tmp/im.angel.pid
          - pid-file-name: /tmp/im.txt
            => angel-pid-file-name: /tmp/im.angel.pid
          - pid-file-name: /tmp/5.0/im
            => angel-pid-file-name: /tmp/5.0/im.angel.pid
        - add support for configuration option to customize angel
          pid file name;
        - fix test suite to use angel pid to kill Instance Manager
          by all means if something went wrong.
      
      Background
      ----------
      
      The problem is that on some OSes (FreeBSD for one) Instance
      Manager does not get SIGTERM, so can not shutdown gracefully.
      Test suite wasn't able to cope with it, so this leads to the
      mess in test results.
      
      The problem should be split into two:
        - fix signal handling;
        - fix test suite.
      
      This patch fixes test suite so that it will be able to kill
      uncooperative Instance Manager. In order to achieve this,
      test suite needs to know PID of IM Angel process.
      
      
      mysql-test/lib/mtr_process.pl:
        Added a function to send a signal to a process.
      mysql-test/mysql-test-run.pl:
        Changed procedure of stopping Instance Manager.
        1. Try to stop IM normally (by sending SIGTERM);
        2. If one of IM-related processes is still alive,
        kill them all by SIGKILL and complain in the log.
      server-tools/instance-manager/manager.cc:
        Made create_pid_file() available for the whole project.
      server-tools/instance-manager/manager.h:
        Made create_pid_file() available for the whole project.
      server-tools/instance-manager/mysqlmanager.cc:
        Dump PID of angel process into file.
      server-tools/instance-manager/options.cc:
        Added an option to allow to customize angel pid file name.
      server-tools/instance-manager/options.h:
        Added an option to allow to customize angel pid file name.
      f4d209b0
    • unknown's avatar
      Fix for bug #17260 "Multiple invocations of triggers or stored functions · 59ff5274
      unknown authored
      hog memory".
      
      During each invocation of stored function or trigger some objects which
      lifetime is one function call (e.g. sp_rcontext) were allocated on
      arena/memroot of calling statement. This led to consumption of fixed amount
      of memory for each function/trigger invocation and so statements which
      involve lot of them were hogging memory. This in its return led to OOM
      crashes or freezes.
      
      This fix introduces new memroot and arena for objects which lifetime is
      whole duration of function call. So all memory consumed by such objects
      is freed at the end of function call.
      
      
      sql/sp_head.cc:
        sp_head::execute_function():
          Introduced new memroot and arena for objects which lifetime is whole
          duration of function call (e.g. sp_rcontext, sp_cursor). We can't
          use caller's arena/memroot for those objects because in this case 
          some fixed amount of memory will be consumed for each function/trigger
          invocation and so statements which involve lot of them will hog memory.
          Got rid of param_values array to avoid excessive juggling with arenas.
      59ff5274
    • unknown's avatar
      Fix race condition of concurrent RENAME and SHOW TABLES which caused · 9f606932
      unknown authored
      random test failures.
      
      
      mysql-test/t/rename.test:
        Fix race condition and add cleanup code.
      9f606932
  6. 04 May, 2006 2 commits
  7. 03 May, 2006 1 commit
    • unknown's avatar
      Bug#15463: EXPLAIN SELECT..INTO hangs the client (QB, command line) · bf8dac3b
      unknown authored
      There were two distict bugs: parse error was returned for valid
      statement and that error wasn't reported to the client.
      
      The fix ensures that EXPLAIN SELECT..INTO is accepted by parser and any
      other parse error will be reported to the client.
      
      
      mysql-test/r/explain.result:
        Add result for bug#15463.
      mysql-test/t/explain.test:
        Add test case for bug#15463.
      sql/sql_parse.cc:
        Assert that if parsing error has occured then apropriate error message
        has been pushed into error stack.
      sql/sql_yacc.yy:
        If there is no lex->result in select_var_ident rule, then we have
        to be in DESCRIBE mode.
      bf8dac3b
  8. 02 May, 2006 6 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · 853f5413
      unknown authored
      into  mysql.com:/home/dlenev/mysql-5.0-bg11081
      
      
      853f5413
    • unknown's avatar
      Fix a bunch of non-Linux compile failures. · 33417297
      unknown authored
      
      VC++Files/mysql.sln:
        mysql_client_test depends on mysys.
      VC++Files/mysys/mysys.vcproj:
        Add new file missing in previous push.
      mysys/my_memmem.c:
        Fix illegal pointer arithmetics on void *.
      tests/Makefile.am:
        -L must go before -l
      tests/mysql_client_test.c:
        No declarations after statement in C code.
      33417297
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0 · a8295654
      unknown authored
      into mysql.com:/home/hf/work/mysql-5.0.clean
      
      
      a8295654
    • unknown's avatar
      Win build fix · 521d6b3d
      unknown authored
      521d6b3d
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · 4d1cd02e
      unknown authored
      into  zippy.(none):/home/cmiller/work/mysql/mysql-5.0__bug17667
      
      
      mysys/Makefile.am:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      4d1cd02e
    • unknown's avatar
      SECURITY FIX · 3010890e
      unknown authored
      Bug#17667: An attacker has the opportunity to bypass query logging.
      
      This adds a new, local-only printf format specifier to our *printf functions
      that allows us to print known-size buffers that must not be interpreted as 
      NUL-terminated "strings."
      
      It uses this format-specifier to print to the log, thus fixing this 
      problem.
      
      
      include/my_sys.h:
        Add prototype for my_memmem() .
      mysys/Makefile.am:
        Add reference to new file, my_memmem.c
      mysys/mf_iocache2.c:
        Add a "%.1234b" and "%.*b" percent-code.  It takes a width, just like "%s", 
        but unlike the string-indicator, it requires the width and doesn't stop printing
        at NUL characters.
        
        Also, simplify the code a bit.
        
        TODO:  This code should be unified with the strings/my_vnsprintf.c code in 
        the future.
      sql/sql_parse.cc:
        The query is not a C-string, but is a sized buffer, containing any character 
        at all, which may include NUL characters.
      strings/my_vsnprintf.c:
        Add a "%.1234b" and "%.*b" percent-code.  It takes a width, just like "%s", 
        but unlike the string-indicator, it requires the width and doesn't stop printing
        at NUL characters.
      tests/Makefile.am:
        We may need some of our local functions.
      tests/mysql_client_test.c:
        Add a "%.1234b" and "%.*b" percent-code.  It takes a width, just like "%s", 
        but unlike the string-indicator, it requires the width and doesn't stop printing
        at NUL characters.
      mysql-test/t/mysql_client_test.opt:
        New BitKeeper file ``mysql-test/t/mysql_client_test.opt''
        
        Add '--log' server parameter.
      mysys/my_memmem.c:
        New BitKeeper file ``mysys/my_memmem.c''
        
        Implement memmem, a black-box work-alike of the GNU memmem(), which functions
        like strstr() but for arbitrary blocks of memory.
      3010890e
  9. 01 May, 2006 9 commits
  10. 29 Apr, 2006 3 commits
    • unknown's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-4.1 · 180cecdc
      unknown authored
      into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
      
      
      180cecdc
    • unknown's avatar
      config-win.h: · 59a73f17
      unknown authored
        Fix strange "double" define for popen.
        Avoid warnings about sprintf() etc. being unsafe.
        Corrected typo "#endfif"
      
      
      include/config-win.h:
        Fix strange "double" define for popen.
        Avoid warnings about sprintf() etc. being unsafe.
        Corrected typo "#endfif"
      59a73f17
    • unknown's avatar
      configure.in: · 4fadc751
      unknown authored
        Changed version to 4.1.20
      
      
      configure.in:
        Changed version to 4.1.20
      4fadc751
  11. 28 Apr, 2006 5 commits