1. 16 Oct, 2007 3 commits
    • malff@lambda.hsd1.co.comcast.net.'s avatar
      Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · f8d26221
      malff@lambda.hsd1.co.comcast.net. authored
      into  lambda.hsd1.co.comcast.net.:/home/malff/TREE/mysql-5.0-28318-rework
      f8d26221
    • malff@lambda.hsd1.co.comcast.net.'s avatar
      a9c6ed46
    • malff@lambda.hsd1.co.comcast.net.'s avatar
      Bug#28318 (CREATE FUNCTION (UDF) requires a schema) -- part II · 99a270ba
      malff@lambda.hsd1.co.comcast.net. authored
      The root cause of the issue was that the CREATE FUNCTION grammar,
      for User Defined Functions, was using the sp_name rule.
      The sp_name rule is intended for fully qualified stored procedure names,
      like either ident.ident, or just ident but with a default database
      implicitly selected.
      
      A UDF does not have a fully qualified name, only a name (ident), and should
      not use the sp_name grammar fragment during parsing.
      
      The fix is to re-organize the CREATE FUNCTION grammar, to better separate:
      - creating UDF (no definer, can have AGGREGATE, simple ident)
      - creating Stored Functions (definer, no AGGREGATE, fully qualified name)
      
      With the test case provided, another issue was exposed which is also fixed:
      the DROP FUNCTION statement was using sp_name and also failing when no database
      is implicitly selected, when droping UDF functions.
      The fix is also to change the grammar so that DROP FUNCTION works with
      both the ident.ident syntax (to drop a stored function), or just the ident
      syntax (to drop either a UDF or a Stored Function, in the current database)
      99a270ba
  2. 15 Oct, 2007 1 commit
  3. 12 Oct, 2007 2 commits
  4. 10 Oct, 2007 2 commits
  5. 09 Oct, 2007 4 commits
    • davi@virtua-cwbas201-21-158-74.ctb.virtua.com.br's avatar
      Merge virtua-cwbas201-21-158-74.ctb.virtua.com.br:/Users/davi/mysql/push/bugs/28318-5.0 · 0e9ccab4
      into  virtua-cwbas201-21-158-74.ctb.virtua.com.br:/Users/davi/mysql/push/mysql-5.0-runtime
      0e9ccab4
    • davi@virtua-cwbas201-21-158-74.ctb.virtua.com.br's avatar
      Bug#28318 CREATE FUNCTION (UDF) requires a schema · fd3c6b18
      Bug#29816 Syntactically wrong query fails with misleading error message
      
      The core problem is that an SQL-invoked function name can be a <schema
      qualified routine name> that contains no <schema name>, but the mysql
      parser insists that all stored procedures (function, procedures and
      triggers) must have a <schema name>, which is not true for functions.
      This problem is especially visible when trying to create a function
      or when a query contains a syntax error after a function call (in the
      same query), both will fail with a "No database selected" message if
      the session is not attached to a particular schema, but the first
      one should succeed and the second fail with a "syntax error" message.
      
      Part of the fix is to revamp the sp name handling so that a schema
      name may be omitted for functions -- this means that the internal
      function name representation may not have a dot, which represents
      that the function doesn't have a schema name. The other part is
      to place schema checks after the type (function, trigger or procedure)
      of the routine is known.
      fd3c6b18
    • davi@moksha.com.br's avatar
      Merge moksha.com.br:/Users/davi/mysql/push/mysql-5.0-runtime · c3d06676
      davi@moksha.com.br authored
      into  moksha.com.br:/Users/davi/mysql/push/bugs/31409-5.0
      c3d06676
    • davi@moksha.local's avatar
      Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements · 7252cbe1
      davi@moksha.local authored
      This deadlock occurs when a client issues a HANDLER ... OPEN statement
      that tries to open a table that has a pending name-lock on it by another
      client that also needs a name-lock on some other table which is already
      open and associated to a HANDLER instance owned by the first client.
      The deadlock happens because the open_table() function will back-off
      and wait until the name-lock goes away, causing a circular wait if some
      other name-lock is also pending for one of the open HANDLER tables.
      
      Such situation, for example, can be easily repeated by issuing a RENAME
      TABLE command in such a way that the existing table is already open
      as a HANDLER table by another client and this client tries to open
      a HANDLER to the new table name.
      
      The solution is to allow handler tables with older versions (marked for
      flush) to be closed before waiting for the name-lock completion. This is
      safe because no other name-lock can be issued between the flush and the
      check for pending name-locks.
      
      The test case for this bug is going to be committed into 5.1 because it
      requires a test feature only avaiable in 5.1 (wait_condition).
      7252cbe1
  6. 08 Oct, 2007 3 commits
  7. 07 Oct, 2007 1 commit
  8. 05 Oct, 2007 1 commit
  9. 04 Oct, 2007 6 commits
    • davi@moksha.local's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · a8f2ba0f
      davi@moksha.local authored
      into  moksha.local:/Users/davi/mysql/push/mysql-5.0-runtime
      a8f2ba0f
    • davi@moksha.local's avatar
      Bug#21587 FLUSH TABLES causes server crash when used with HANDLER statements · 305ebc1e
      davi@moksha.local authored
      This bug is a symptom of the way handler's tables are managed. The
      most different aspect, compared to the conventional behavior, is that
      the handler's tables are long lived, meaning that their lifetimes are
      not bounded by the duration of the command that opened them. For this
      effect the handler code uses its own list (handler_tables instead of
      open_tables) to hold open handler tables so that the tables won't be
      closed at the end of the command/statement. Besides the handler_tables
      list, there is a hash (handler_tables_hash) which is used to associate
      handler aliases to tables and to refresh the tables upon demand (flush
      tables).
      
      The current implementation doesn't work properly with refreshed tables
      -- more precisely when flush commands are issued by other initiators.
      This happens because when a handler open or read statement is being
      processed, the associated table has to be opened or locked and, for this
      matter, the open_tables and handler_tables lists are swapped so that the
      new table being opened is inserted into the handler_tables list. But when
      opening or locking the table, if the refresh version is different from the
      thread refresh version then all used tables in the open_tables list (now
      handler_tables) are refreshed. In the "refreshing" process the handler
      tables are flushed (closed) without being properly unlinked from the
      handler hash.
      
      The current implementation also fails to properly discard handlers of
      dropped tables, but this and other problems are going to be addressed
      in the fixes for bugs 31397 and 31409.
      
      The chosen approach tries to properly save and restore the table state
      so that no table is flushed during the table open and lock operations.
      The logic is almost the same as before with the list swapping, but with
      a working glue code.
      
      The test case for this bug is going to be committed into 5.1 because it
      requires a test feature only avaiable in 5.1 (wait_condition).
      305ebc1e
    • joerg@trift2.'s avatar
      Merge trift2.:/MySQL/M50/mysql-5.0 · 82767a0a
      joerg@trift2. authored
      into  trift2.:/MySQL/M50/push-5.0
      82767a0a
    • anozdrin/alik@station.'s avatar
      Fix for BUG#31035: select from function, group by result crasher. · 707f0674
      anozdrin/alik@station. authored
      This actually, fix for the patch for bug-27354. The problem with
      the patch was that Item_func_sp::used_tables() was updated, but
      Item_func_sp::const_item() was not. So, for Item_func_sp, we had
      the following inconsistency:
        - used_tables() returned RAND_TABLE, which means that the item
          can produce "random" results;
        - but const_item() returned TRUE, which means that the item is
          a constant one.
      
      The fix is to change Item_func_sp::const_item() behaviour: it must
      return TRUE (an item is a constant one) only if a stored function
      is deterministic and each of its arguments (if any) is a constant
      item.
      707f0674
    • jperkin@production.mysql.com's avatar
      Merge production.mysql.com:/usersnfs/jperkin/bk/build/5.0 · 583a3ef3
      jperkin@production.mysql.com authored
      into  production.mysql.com:/usersnfs/jperkin/bk/bug-27692/5.0
      583a3ef3
    • jperkin@production.mysql.com's avatar
      Restore creation of test databases and the anonymous user which · 5c0c5921
      jperkin@production.mysql.com authored
      were accidentally removed during a previous rototill of this
      code.  Fixes bug#27692.
        
      While it can be argued we should strive to provide a 'secure by
      default' installation, this happens to be the setup currently
      documented in the manual as the default, so defer changes that
      improve security out of the box to a co-ordinated effort later
      on.
        
      For now, make a note about the test databases and anonymous user
      in mysql_install_db and recommend that mysql_secure_installation
      be ran for users wishing to remove these defaults.
      
      [..re-commit of previously lost change..]
      5c0c5921
  10. 03 Oct, 2007 1 commit
  11. 02 Oct, 2007 1 commit
  12. 01 Oct, 2007 5 commits
  13. 28 Sep, 2007 2 commits
  14. 27 Sep, 2007 2 commits
  15. 26 Sep, 2007 1 commit
  16. 25 Sep, 2007 1 commit
  17. 22 Sep, 2007 1 commit
  18. 20 Sep, 2007 2 commits
  19. 19 Sep, 2007 1 commit