An error occurred fetching the project authors.
  1. 07 Dec, 2006 1 commit
    • unknown's avatar
      Bug#17498 failed to put data file in custom directory use "data directory" option · 1267a7fb
      unknown authored
      - Using DATA/INDEX DIRECTORY option on Windows put data/index file into
        default directory because the OS doesn't support readlink().
      - The procedure for changing data/index file directory is 
        different under Windows.
      - With this fix we report a warning if DATA/INDEX option is used,
        but OS doesn't support readlink().
      
      
      mysql-test/r/windows.result:
        - updated result file.
      mysql-test/t/windows.test:
        - Added test case to verify we get warnings if we specify DATA/INDEX
          DIRECTORY on a platform which doesn't support readlink().
      sql/sql_parse.cc:
        - Added warnings if DATA/INDEX DIRECTORY option is used but not supported
          by the target platform.
      1267a7fb
  2. 01 Dec, 2006 1 commit
    • unknown's avatar
      Bug#22043 MySQL don't add "USE <DATABASE>" before "DROP PROCEDURE IF EXISTS" · 2f0b1d65
      unknown authored
      - Refactoring of duplicate code
      - Modified bad test cases
      - Changed expected error when operating on information_schema.
      
      
      mysql-test/r/information_schema.result:
        - updated result file with new error code.
      mysql-test/r/rpl_sp.result:
        - Modified test case
      mysql-test/t/information_schema.test:
        - Changed error code for operations on information_schema
      mysql-test/t/rpl_sp.test:
        - Modified test case
      sql/sql_parse.cc:
        - Cleaned up code:
          * replace tab with space
          * simplified if/switch statements
          * refactored duplicated code
      2f0b1d65
  3. 28 Nov, 2006 1 commit
    • unknown's avatar
      Bug#22043 MySQL don't add "USE <DATABASE>" before "DROP PROCEDURE EXISTS" · 9a87702b
      unknown authored
      - CREATE PROCEDURE stores database name based on query context instead
        of 'current database' as set by 'USE' according to manual.
        The bug reporter interpret the filtering statements as bug for
         DROP PROCEDURE based on this behavior.
      - Removed the code which changes db context.
      - Added code to check that a valid db was supplied.  
      
      
      mysql-test/r/rpl_sp.result:
        - Added test case (result)
      mysql-test/t/rpl_sp.test:
        - Added test case
      sql/sp.cc:
        - Removed code for changing current db context.
      sql/sql_parse.cc:
        - Added code to check if a valid db was supplied.
      9a87702b
  4. 20 Nov, 2006 2 commits
    • unknown's avatar
      Remove compiler warnings · 14decc4f
      unknown authored
      (Mostly in DBUG_PRINT() and unused arguments)
      Fixed bug in query cache when used with traceing (--with-debug)
      Fixed memory leak in mysqldump
      Removed warnings from mysqltest scripts (replaced -- with #)
      
      
      BitKeeper/etc/ignore:
        added mysql-test/r/*.warnings
      BUILD/SETUP.sh:
        Don't build with BDB as default
      client/client_priv.h:
        Added OPT_DEBUG_INFO
      client/mysqlbinlog.cc:
        Fixed compiler warning
      client/mysqldump.c:
        Removed compiler warnings
        Added option --debug-info to detect memory leaks
        Fixed memory leak
        Don't backup cluster replication tables (if used with 5.1)
      cmd-line-utils/readline/bind.c:
        Fixed compiler warning
      cmd-line-utils/readline/chardefs.h:
        Fixed compiler warning
      cmd-line-utils/readline/complete.c:
        Fixed compiler warning
      cmd-line-utils/readline/display.c:
        Fixed compiler warning
      cmd-line-utils/readline/histexpand.c:
        Fixed compiler warning
      cmd-line-utils/readline/input.c:
        Fixed compiler warning
      cmd-line-utils/readline/isearch.c:
        Fixed compiler warning
      cmd-line-utils/readline/kill.c:
        Fixed compiler warning
      cmd-line-utils/readline/macro.c:
        Fixed compiler warning
      cmd-line-utils/readline/misc.c:
        Fixed compiler warning
      cmd-line-utils/readline/nls.c:
        Fixed compiler warning
      cmd-line-utils/readline/readline.c:
        Fixed compiler warning
      cmd-line-utils/readline/rltty.c:
        Fixed compiler warning
      cmd-line-utils/readline/search.c:
        Fixed compiler warning
      cmd-line-utils/readline/terminal.c:
        Fixed compiler warning
      cmd-line-utils/readline/text.c:
        Fixed compiler warning
      cmd-line-utils/readline/tilde.c:
        Fixed compiler warning
      cmd-line-utils/readline/undo.c:
        Fixed compiler warning
      cmd-line-utils/readline/util.c:
        Fixed compiler warning
      cmd-line-utils/readline/vi_mode.c:
        Fixed compiler warning
      dbug/dbug_analyze.c:
        Fixed compiler warning
      extra/yassl/src/ssl.cpp:
        Fixed compiler warning
      extra/yassl/testsuite/testsuite.cpp:
        Fixed compiler warning
      heap/_check.c:
        Fixed compiler warning
      heap/hp_delete.c:
        Fixed compiler warning
      heap/hp_hash.c:
        Fixed compiler warning
      heap/hp_open.c:
        Fixed compiler warning
      heap/hp_rkey.c:
        Fixed compiler warning
      heap/hp_rrnd.c:
        Fixed compiler warning
      heap/hp_write.c:
        Fixed compiler warning
      libmysql/libmysql.c:
        Fixed compiler warning
      libmysqld/libmysqld.c:
        Fixed compiler warning
      myisam/mi_close.c:
        Fixed compiler warning
      myisam/mi_delete.c:
        Fixed compiler warning
      myisam/mi_dynrec.c:
        Fixed compiler warning
      myisam/mi_keycache.c:
        Fixed compiler warning
      myisam/mi_page.c:
        Fixed compiler warning
      myisam/mi_statrec.c:
        Fixed compiler warning
      myisam/mi_test2.c:
        Fixed compiler warning
      myisam/mi_write.c:
        Fixed compiler warning
      myisam/myisampack.c:
        Fixed compiler warning
      myisammrg/myrg_extra.c:
        Fixed compiler warning
      mysql-test/mysql-test-run.pl:
        Remove .reject, .progress, .log and .warnings flag at start
        cluster -> mysql database (for 5.1)
      mysql-test/include/federated.inc:
        Remove mysqltest warnings
      mysql-test/include/sp-vars.inc:
        Remove mysqltest warnings
      mysql-test/mysql-test-run.sh:
        Fix so that 'make test' works again
        Remove .reject, .progress .log and .warnings files at startup
      mysql-test/r/ctype_cp1250_ch.result:
        Drop used tables at startup
      mysql-test/t/create.test:
        Remove mysqltest warnings
      mysql-test/t/csv.test:
        Remove mysqltest warnings
      mysql-test/t/ctype_collate.test:
        Remove mysqltest warnings
      mysql-test/t/ctype_cp1250_ch.test:
        Drop used tables at startup
      mysql-test/t/ctype_ucs.test:
        Remove mysqltest warnings
      mysql-test/t/func_sapdb.test:
        Remove mysqltest warnings
      mysql-test/t/func_str.test:
        Remove mysqltest warnings
      mysql-test/t/grant.test:
        Remove mysqltest warnings
      mysql-test/t/greedy_optimizer.test:
        Remove mysqltest warnings
      mysql-test/t/group_min_max.test:
        Remove mysqltest warnings
      mysql-test/t/innodb.test:
        Remove mysqltest warnings
      mysql-test/t/join.test:
        Remove mysqltest warnings
      mysql-test/t/limit.test:
        Remove mysqltest warnings
      mysql-test/t/null.test:
        Remove mysqltest warnings
      mysql-test/t/select.test:
        Remove mysqltest warnings
      mysql-test/t/sp-prelocking.test:
        Remove mysqltest warnings
      mysql-test/t/strict.test:
        Remove mysqltest warnings
      mysql-test/t/subselect.test:
        Remove mysqltest warnings
      mysql-test/t/type_newdecimal.test:
        Remove mysqltest warnings
      mysql-test/t/view_grant.test:
        Remove mysqltest warnings
      mysys/default.c:
        Fixed compiler warning
      mysys/hash.c:
        Fixed compiler warning
      mysys/list.c:
        Fixed compiler warning
      mysys/mf_iocache.c:
        Fixed compiler warning
      mysys/mf_keycache.c:
        Fixed compiler warning
      mysys/mf_keycaches.c:
        Fixed compiler warning
      mysys/my_alloc.c:
        Fixed compiler warning
      mysys/my_dup.c:
        Fixed compiler warning
      mysys/my_fopen.c:
        Fixed compiler warning
      mysys/my_fstream.c:
        Fixed compiler warning
      mysys/my_getwd.c:
        Fixed compiler warning
      mysys/my_handler.c:
        Fixed compiler warning
        Added missing enums in switch
      mysys/my_lib.c:
        Fixed compiler warning
      mysys/my_lread.c:
        Fixed compiler warning
      mysys/my_lwrite.c:
        Fixed compiler warning
      mysys/my_malloc.c:
        Fixed compiler warning
      mysys/my_pread.c:
        Fixed compiler warning
      mysys/my_read.c:
        Fixed compiler warning
      mysys/my_realloc.c:
        Fixed compiler warning
      mysys/my_seek.c:
        Fixed compiler warning
      mysys/my_write.c:
        Fixed compiler warning
      mysys/safemalloc.c:
        Fixed compiler warning
      mysys/thr_lock.c:
        Fixed compiler warning
      mysys/tree.c:
        Fixed compiler warning
      mysys/typelib.c:
        Fixed compiler warning
      ndb/include/logger/LogHandler.hpp:
        Changed SetErrorStr() to take const char* to remove compiler warnings (as many arguments to this are const strings)
      ndb/include/ndb_global.h.in:
        Added LINT_SET_PTR macro to be able to remove some compiler warnings
      ndb/include/util/InputStream.hpp:
        Fixed compiler warning
      ndb/include/util/OutputStream.hpp:
        Fixed compiler warning
      ndb/include/util/SimpleProperties.hpp:
        Fixed compiler warning
      ndb/src/common/debugger/EventLogger.cpp:
        remove if on 'signal' as this is a function pointer and is always true
      ndb/src/common/debugger/signaldata/BackupSignalData.cpp:
        Add missing enums
      ndb/src/common/logger/LogHandler.cpp:
        Changed SetErrorStr() to take const char* to remove compiler warnings (as many arguments to this are const strings)
      ndb/src/common/portlib/NdbMutex.c:
        Fixed compiler warning
      ndb/src/common/portlib/NdbThread.c:
        Fixed compiler warning
      ndb/src/common/transporter/Transporter.cpp:
        Swapped arguments to remove compiler warnings
      ndb/src/cw/cpcd/CPCD.hpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/backup/Backup.cpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp:
        Fixed compiler warning
      ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
        Added missing enums
      ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
        Fixed compiler warning
      ndb/src/kernel/error/ErrorReporter.cpp:
        Fixed compiler warning
      ndb/src/kernel/error/ErrorReporter.hpp:
        Fixed compiler warning
      ndb/src/kernel/error/ndbd_exit_codes.c:
        Fixed compiler warning
      ndb/src/kernel/vm/TransporterCallback.cpp:
        Fixed compiler warning
      ndb/src/mgmapi/mgmapi.cpp:
        Fixed compiler warning
      ndb/src/mgmclient/CommandInterpreter.cpp:
        Fixed compiler warning
      ndb/src/mgmsrv/MgmtSrvr.cpp:
        Fixed compiler warning
      ndb/src/mgmsrv/Services.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/ClusterMgr.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/DictCache.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/Ndb.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbOperationDefine.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbOperationExec.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbOperationInt.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbOperationSearch.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/NdbTransaction.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/Ndbif.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/Ndbinit.cpp:
        Fixed compiler warning
      ndb/src/ndbapi/ndb_cluster_connection.cpp:
        Fixed compiler warning
      ndb/tools/drop_index.cpp:
        Fixed compiler warning
      ndb/tools/drop_tab.cpp:
        Fixed compiler warning
      ndb/tools/ndb_config.cpp:
        Fixed compiler warning
      regex/regexec.c:
        Fixed compiler warning
      server-tools/instance-manager/mysql_connection.cc:
        Fixed compiler warning
      sql/Makefile.am:
        Fix for bison 1.875, which adds an attribute statement that gcc 4.1.0 can't parse
      sql/filesort.cc:
        Fixed compiler warning
      sql/ha_archive.cc:
        Fixed compiler warning
      sql/ha_federated.cc:
        Fixed compiler warning
      sql/ha_federated.h:
        Fixed compiler warning
      sql/ha_innodb.cc:
        Fixed compiler warning
      sql/ha_myisam.cc:
        Fixed compiler warning
      sql/ha_myisammrg.cc:
        Fixed compiler warning
      sql/ha_ndbcluster.cc:
        Fixed compiler warning
      sql/handler.cc:
        Fixed compiler warning
      sql/item_cmpfunc.cc:
        Fixed compiler warning
      sql/item_subselect.cc:
        Fixed compiler warning
      sql/item_timefunc.cc:
        Fixed compiler warning
      sql/log_event.cc:
        Fixed compiler warning
      sql/mysqld.cc:
        Fixed compiler warning
      sql/net_serv.cc:
        Fixed compiler warning
      sql/opt_range.cc:
        Fixed compiler warning
        Formated DBUG statements to be as rest of code
      sql/slave.cc:
        Fixed compiler warning
      sql/sql_acl.cc:
        Fixed compiler warning
      sql/sql_cache.cc:
        Fixed compiler warning
        Fixed bug in query cache when used with DBUG traceing
      sql/sql_class.cc:
        Fixed compiler warning
      sql/sql_class.h:
        Fixed compiler warning
      sql/sql_delete.cc:
        Fixed compiler warning
      sql/sql_parse.cc:
        Fixed compiler warning
        Hack to fix my_sprintf() strings with %b
      sql/sql_prepare.cc:
        Fixed compiler warning
        Hack to fix my_sprintf() strings with %b
      sql/sql_repl.cc:
        Fixed compiler warning
      sql/sql_select.cc:
        Fixed compiler warning
      sql/sql_update.cc:
        Fixed compiler warning
      sql/sql_view.cc:
        Fixed compiler warning
      sql/strfunc.cc:
        Fixed compiler warning
      sql-common/client.c:
        Fixed compiler warning
      sql-common/my_time.c:
        Fixed compiler warning
      sql/table.cc:
        Fixed compiler warning
      sql/tztime.cc:
        Fixed compiler warning
      sql/unireg.cc:
        Fixed compiler warning
      strings/decimal.c:
        Fixed compiler warning
      tests/mysql_client_test.c:
        Fixed compiler warning
      vio/viosocket.c:
        Fixed compiler warning
      vio/viossl.c:
        Fixed compiler warning
      vio/viosslfactories.c:
        Fixed compiler warning
      14decc4f
    • unknown's avatar
      Fix for bug #22077 "DROP TEMPORARY TABLE fails with wrong error if read_only is set" · 2b720487
      unknown authored
      Do not issue a 'read-only' error in case of DROP TEMPORARY TABLE on a non-existing temporary table.
      Instead produce the correct "Unknown table" error or warning (in cases when the IF EXISTS clause was specified).
      
      To a documentor: the part of the manual describing the 'read_only' system variable should be clarified to state the following:
      "When the read_only variable is set to ON, all operations which create/update/drop tables are rejected with the exceptions for:
      1. Any operation performed by the replication thread on a slave server
      2. Any operation performed by a user that have the SUPER privilege
      3. Any operation that creates/updates/drops only temporary tables"
      
      
      mysql-test/r/read_only.result:
        Added testcases for bug #22077 "DROP TEMPORARY TABLE fails with wrong error if read_only is set"
      mysql-test/t/read_only.test:
        Added testcases for bug #22077 "DROP TEMPORARY TABLE fails with wrong error if read_only is set"
      sql/sql_parse.cc:
        Before issuing the 'read-only' error also check if the operation is not a DROP TEMPORARY TABLE statement
      2b720487
  5. 14 Nov, 2006 2 commits
    • unknown's avatar
      Fix for bug#23760 ROW_COUNT() and store procedure not owrking together · 645aac54
      unknown authored
      The problem was that THD::row_count_func was zeroed too. It was zeroed
      as a fix for bug 4905 "Stored procedure doesn't clear for "Rows affected"
      However, the proper solution is not to zero, because THD::row_count_func has
      been set to -1 already in mysql_execute_command(), a later fix, which obsoletes
      the incorrect fix of #4095
      
      
      mysql-test/r/sp.result:
        update result
      mysql-test/t/sp.test:
        test for bug#23760 ROW_COUNT() and store procedure not owrking together
      sql/sql_parse.cc:
        Remove zeroing for thd->row_count_func
        The fix for #4905 wasn't right. Now, it's ok without this zeroing
        because if there was an error THD::
      645aac54
    • unknown's avatar
      Bug#20045: Server crash on INSERT ... SELECT ... FROM non-mergeable view · 1019dd40
      unknown authored
      The regression is caused by the fix for bug 14767. When INSERT ... SELECT
      used a view in the SELECT list that was not inlined, and there was an 
      active transaction, the server could crash in Query_cache::invalidate.
      
      On INSERT ... SELECT only the table being inserted into is invalidated.
      Thus views that can't be inlined are skipped from invalidation.
      
      The bug manifests itself in two ways so there is 2 test cases.
      One checks that the only the table being inserted into is invalidated.
      And the second one checks that there is no crash on INSERT ... SELECT.
      
      
      mysql-test/t/query_cache.test:
        Added a test case for bug#20045: Server crash on INSERT ... SELECT ... FROM non-mergeable view
      mysql-test/r/query_cache.result:
        Added a test case for bug#20045: Server crash on INSERT ... SELECT ... FROM non-mergeable view
      sql/sql_parse.cc:
        Bug#20045: Server crash on INSERT ... SELECT ... FROM non-mergeable view 
        On INSERT ... SELECT only the table being inserted into is invalidated.
      1019dd40
  6. 01 Nov, 2006 1 commit
    • unknown's avatar
      Bug#22877 replication character sets get out of · c755a7a1
      unknown authored
      sync using replicate-wild-ignore-table
      Problem: changes in character set variables
      before an action on an replication-ignored table
      makes slave to forget new variable values.
      Fix: initialize one_shot variables only when
      4.1 -> 5.x replication is running.
      
      
      mysql-test/r/rpl_ignore_table.result:
        Adding test case
      mysql-test/t/rpl_ignore_table-slave.opt:
        Don't replicate tables with names starting with "tmptbl"
      mysql-test/t/rpl_ignore_table.test:
        Adding test case
      sql/sql_parse.cc:
        Reset one_shot variables only if we do 4.1->5.x replication.
        In other cases we cannot do that: resetting thd->variables out of sync with
        st_relay_log_info::cached_charset, which makes
        st_relay_log_info::cached_charset_compare() not to notice
        character set related variables changes afterwards.
      c755a7a1
  7. 30 Oct, 2006 2 commits
    • unknown's avatar
      Bug#20404: SHOW CREATE TABLE fails with Turkish I · e463ee94
      unknown authored
        
        Problem: SHOW CREATE TABLE printed garbage in table
        name for tables having TURKISH I
        (i.e. LATIN CAPITABLE LETTER I WITH DOT ABOVE)
        when lower-case-table-name=1.
        
        Reason: In some cases during lower/upper conversion in utf8,
        the result string can be shorter the original string
        (including the above letter). Old implementation of caseup_str()
        and casedn_str() didn't handle the result length properly,
        assuming that length cannot change.
        
        This fix changes the result type of cs->cset->casedn_str()
        and cs->cset->caseup_str() from VOID to UINT, to return
        the result length, as well as put '\0' terminator on a 
        proper place.
        
        Also, my_caseup_str_utf8() and my_casedn_str_utf8() were 
        rewritten not to use strlen() for performance purposes.
        It was done with help of adding of new functions - my_utf8_uni_no_range()
        and my_uni_utf8_no_range() - for null terminated strings.
      
      
      
      include/m_ctype.h:
        Changeing return type from void to int for caseup_str() and casedn_str()
      mysql-test/r/lowercase_table.result:
        Adding test case
      mysql-test/t/lowercase_table.test:
        Adding test case
      sql/sql_parse.cc:
        Set table->table.length to result of my_casedn_str().
      strings/ctype-bin.c:
        Changeing return type from void to int for caseup_str() and casedn_str()
      strings/ctype-mb.c:
        Changeing return type from void to int for caseup_str() and casedn_str()
      strings/ctype-simple.c:
        Changeing return type from void to int for caseup_str() and casedn_str()
      strings/ctype-ucs2.c:
        Changeing return type from void to int for caseup_str() and casedn_str()
      strings/ctype-utf8.c:
        Changeing return type from void to int for caseup_str() and casedn_str().
            Optimization, to get rid of strlen():
            Adding my_utf8_uni_no_range() and my_uni_utf8_no_range() - for null
            terninated strings.
      e463ee94
    • unknown's avatar
      A cleanup. · 26770e3a
      unknown authored
      sql/sql_parse.cc:
        ALTER TABLE should not be affected by DONT_ALLOW_SHOW_COMMANDS
        (a bug that's there since version 1.1)
      26770e3a
  8. 27 Oct, 2006 1 commit
    • unknown's avatar
      BUG#22584: last_insert_id not updated after inserting a record through · 532735e6
      unknown authored
      a updatable view.
      
      When there's a VIEW on a base table that have AUTO_INCREMENT column, and
      this VIEW doesn't provide an access such column, after INSERT to such
      VIEW LAST_INSERT_ID() did not return the value just generated.
      
      This behaviour is intended and correct, because if the VIEW doesn't list
      some columns then these columns are effectively hidden from the user,
      and so any side effects of inserting default values to them.
      
      However, there was a bug that such statement inserting into a view would
      reset LAST_INSERT_ID() instead of leaving it unchanged.
      
      This patch restores the original value of LAST_INSERT_ID() instead of
      resetting it to zero.
      
      
      mysql-test/r/view.result:
        Add result for bug#22584: last_insert_id not updated after inserting
        a record through a updatable view.
      mysql-test/t/view.test:
        Add test case for bug#22584: last_insert_id not updated after inserting
        a record through a updatable view.
      sql/sql_parse.cc:
        When we have inserted into a view, and AUTO_INCREMENT column is not
        accessed from this view, instead of setting LAST_INSERT_ID to zero set
        it to the value it had before this statement was executed.
      532735e6
  9. 26 Oct, 2006 1 commit
    • unknown's avatar
      Fix for bug #22158: Errors in init_connect terminate connections silently · ac2f1cca
      unknown authored
      When executing the init_connect statement, thd->net.vio is set to 0, to         
      forbid sending any results to the client. As a side effect we don't log         
      possible errors, either.                                                        
                                                                                      
      Now we write warnings to the error log if an init_connect query                
      fails.                                                                          
      
      
      sql/sql_parse.cc:
        Fix for bug #22158: Errors in init_connect terminate connections silently
        - raise warnings if the init_connect execution fails.
      ac2f1cca
  10. 19 Oct, 2006 1 commit
    • unknown's avatar
      BUG#21856: Prepared Statements: crash if bad create · ef2d2165
      unknown authored
      When statement to be prepared contained CREATE PROCEDURE, CREATE FUNCTION
      or CREATE TRIGGER statements with a syntax error in it, the preparation
      would fail with syntax error message, but the memory could be corrupted.
      
      The problem occurred because we switch memroot when parse stored
      routine or trigger definitions, and on parse error we restored the
      original memroot only after performing some memory operations.  In more
      detail:
       - prepared statement would activate its own memory root to parse
         the definition of the stored procedure.
       - SP would reset this memory root with its own memory root to
         parse SP statements
       - a syntax error would happen
       - prepared statement would restore the original memory root
       - stored procedure would restore what it thinks was the original
         memory root, but actually was the statement memory root.
      That led to double free - in destruction of the statement and in
      a next call to mysql_parse().
      
      The solution is to restore memroot right after the failed parsing.
      
      
      mysql-test/r/ps.result:
        Add result for bug#21856: Prepared Statements: crash if bad create.
      mysql-test/t/ps.test:
        Add test case for bug#21856: Prepared Statements: crash if bad create.
      sql/sql_parse.cc:
        On parse error if thd->lex->sphead is set we have to free sp_head object
        to restore statement memroot, if it was switched during parsing.
        
        The change here is for safety, currently query_cache_abort() and
        lex->unit.cleanup() calls do not use current memroot.
      sql/sql_prepare.cc:
        On parse error if thd->lex->sphead is set we have to free sp_head object
        to restore statement memroot, if it was switched during parsing.
      ef2d2165
  11. 17 Oct, 2006 1 commit
    • unknown's avatar
      Fix previous bad patch for Bug#14262. · 48dfeb4d
      unknown authored
      Remove table engine qualification where it's unnecessary.
      
      
      mysql-test/r/view.result:
        Remove requirement for innodb where not needed.  (Running this test alone
        raised warnings that it was using myisam.)
      mysql-test/t/view.test:
        Remove requirement for innodb where not needed.  (Running this test alone
        raised warnings that it was using myisam.)
      sql/sql_parse.cc:
        Fix previous bad re-patch.
      sql/sql_view.cc:
        Fix previous bad re-patch.
      48dfeb4d
  12. 12 Oct, 2006 2 commits
    • unknown's avatar
      Bug #19764: SHOW commands end up in the slow log as table scans · 99d42667
      unknown authored
      Do not consider SHOW commands slow queries, just because they don't use proper indexes.
      
      This bug fix is not needed in 5.1, and the code changes will be null merged.  However, the test cases will be propogated up to 5.1.
      
      
      mysql-test/t/show_check-master.opt:
        Rename: BitKeeper/deleted/.del-show_check-master.opt -> mysql-test/t/show_check-master.opt
      mysql-test/r/ps.result:
        Add test case for bug 19764
      mysql-test/r/show_check.result:
        Add test case for bug 19764
      mysql-test/r/union.result:
        Adjust test case results based on bug #19764 changes
      mysql-test/t/ps.test:
        Add test case for bug 19764
      mysql-test/t/show_check.test:
        Add test case for bug 19764
      sql/sql_parse.cc:
        Do not log SHOW commands as slow queries just because they don't use indexes.
      sql/sql_prepare.cc:
        Save stmt_backup.lex->orig_sql_command for use in log_slow_statement()
      mysql-test/t/ps-master.opt:
        Add log-slow-queries and --log-queries-not-using indexes, to test bug #19764
      99d42667
    • unknown's avatar
      Revert patch for bug #19764, which did not work with prepared statements. · e9b7cc09
      unknown authored
      BitKeeper/deleted/.del-show_check-master.opt:
        Delete: mysql-test/t/show_check-master.opt
      e9b7cc09
  13. 06 Oct, 2006 1 commit
    • unknown's avatar
      BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID. · f603c1cc
      unknown authored
      Note: bug#21726 does not directly apply to 4.1, as it doesn't have stored
      procedures.  However, 4.1 had some bugs that were fixed in 5.0 by the
      patch for bug#21726, and this patch is a backport of those fixes.
      Namely, in 4.1 it fixes:
      
        - LAST_INSERT_ID(expr) didn't return value of expr (4.1 specific).
      
        - LAST_INSERT_ID() could return the value generated by current
          statement if the call happens after the generation, like in
      
            CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
            INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
      
        - Redundant binary log LAST_INSERT_ID_EVENTs could be generated.
      
      
      mysql-test/r/rpl_insert_id.result:
        Add result for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      mysql-test/t/rpl_insert_id.test:
        Add test case for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      sql/item_func.cc:
        Add implementation of Item_func_last_insert_id::fix_fields(), where we
        set THD::last_insert_id_used when statement calls LAST_INSERT_ID().
        In Item_func_last_insert_id::val_int(), return THD::current_insert_id
        if called like LAST_INSERT_ID(), otherwise return value of argument if
        called like LAST_INSERT_ID(expr).
      sql/item_func.h:
        Add declaration of Item_func_last_insert_id::fix_fields().
      sql/log_event.cc:
        Do not set THD::last_insert_id_used on LAST_INSERT_ID_EVENT.  Though we
        know the statement will call LAST_INSERT_ID(), it wasn't called yet.
      sql/set_var.cc:
        In sys_var_last_insert_id::value_ptr(), set THD::last_insert_id_used,
        and return THD::current_insert_id for @@LAST_INSERT_ID.
      sql/sql_class.h:
        Update comments.
        Remove THD::insert_id(), as it has lost its purpose now.
      sql/sql_insert.cc:
        Now it is OK to read THD::last_insert_id directly.
      sql/sql_load.cc:
        Now it is OK to read THD::last_insert_id directly.
      sql/sql_parse.cc:
        In mysql_execute_command(), remember THD::last_insert_id (first
        generated value of the previous statement) in THD::current_insert_id,
        which then will be returned for LAST_INSERT_ID() and @@LAST_INSERT_ID.
      sql/sql_select.cc:
        If "IS NULL" is replaced with "= <LAST_INSERT_ID>", use right value,
        which is THD::current_insert_id, and also set THD::last_insert_id_used
        to issue binary log LAST_INSERT_ID_EVENT.
      sql/sql_update.cc:
        Now it is OK to read THD::last_insert_id directly.
      tests/mysql_client_test.c:
        Add test case for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      f603c1cc
  14. 04 Oct, 2006 1 commit
    • unknown's avatar
      Bug #19764: SHOW commands end up in the slow log as table scans · 0d833887
      unknown authored
      Set a flag when a SHOW command is parsed, and check it in log_slow_statement().  SHOW commands are not counted as slow queries, even if they use table scans.
      
      
      mysql-test/t/show_check-master.opt:
        BitKeeper file /usr/home/tim/m/bk/b19764/50/mysql-test/t/show_check-master.opt
      mysql-test/r/show_check.result:
        Add test for bug #19764
      mysql-test/t/show_check.test:
        Add test for bug #19764
      sql/sql_lex.cc:
        Set lex->is_show_command= FALSE in lex_start
      sql/sql_lex.h:
        Add LEX->is_slow_command flag to prevent SHOW commands from being written to the slow queries log
      sql/sql_parse.cc:
        Don't log slow statement if it is a SHOW command
      sql/sql_yacc.yy:
        Set lex->is_show_command for all SHOW commands
      0d833887
  15. 03 Oct, 2006 2 commits
    • unknown's avatar
      Bug #14262: SP: DROP PROCEDURE|VIEW (maybe more) write to binlog too late \ · e6eef5c1
      unknown authored
      	(race cond)
      
      It was possible for one thread to interrupt a Data Definition Language 
      statement and thereby get messages to the binlog out of order.  Consider:
      
      Connection 1: Drop Foo x
      Connection 2: Create or replace Foo x
      Connection 2: Log "Create or replace Foo x"
      Connection 1: Log "Drop Foo x"
      
      Local end would have Foo x, but the replicated slaves would not.
      
      The fix for this is to wrap all DDL and logging of a kind in the same mutex.  
      Since we already use mutexes for the various parts of altering the server, 
      this only entails moving the logging events down close to the action, inside 
      the mutex protection.
      
      
      BitKeeper/etc/collapsed:
        BitKeeper file /home/cmiller/work/mysql/bug14262/my50-bug14262/BitKeeper/etc/collapsed
        ---
        BitKeeper file /home/cmiller/work/mysql/bug14262/my50-bug14262/BitKeeper/etc/collapsed
        ---
        BitKeeper file /home/cmiller/work/mysql/bug14262/my50-bug14262/BitKeeper/etc/collapsed
        ---
        BitKeeper file /home/cmiller/work/mysql/bug14262/my50-bug14262/BitKeeper/etc/collapsed
        ---
        BitKeeper file /home/cmiller/work/mysql/bug14262/my50-bug14262/BitKeeper/etc/collapsed
        ---
        BitKeeper file /home/cmiller/work/mysql/bug14262/my50-bug14262/BitKeeper/etc/collapsed
        ---
        BitKeeper file /home/cmiller/work/mysql/bug14262/my50-bug14262/BitKeeper/etc/collapsed
        ---
        BitKeeper file /home/cmiller/work/mysql/bug14262/my50-bug14262/BitKeeper/etc/collapsed
      sql/sp.cc:
        Move logging inside the routine drop and update functions, so it can be 
        protected by a LOCK_open mutex.  (The "create" function already had such 
        a LOCK_open protection.)
      sql/sql_acl.cc:
        Move logging inside the grant functions, so that it can be protected by 
        LOCK_grant .
      sql/sql_db.cc:
        Add comments that describe how each logging event is protected.
      sql/sql_parse.cc:
        Move all logging statements about DDL statements close to the actual event, 
        so each can be protected by the same mutex.
      sql/sql_table.cc:
        Widen the scope of the mutex so that logging events are also protected.
      sql/sql_trigger.cc:
        Widen the scope of the mutex so that logging events are also protected.
      sql/sql_view.cc:
        Pass the head of the table linked-list so we can create a logging statement.
        
        Move the logging statement inside the worker function, and notably inside 
        the LOCK_open mutex.  Widen the same mutex a little to make room for logging.
      sql/sql_view.h:
        Pass the head of the table linked-list so we can create a logging statement.
      e6eef5c1
    • unknown's avatar
      Fix for the patch for bug#21726: Incorrect result with multiple · 37b5cbdc
      unknown authored
      invocations of LAST_INSERT_ID.
      
      Reding of LAST_INSERT_ID inside stored function wasn't noted by caller,
      and no LAST_INSERT_ID_EVENT was issued for binary log.
      
      The solution is to add THD::last_insert_id_used_bin_log, which is much
      like THD::last_insert_id_used, but is reset only for upper-level
      statements.  This new variable is used to issue LAST_INSERT_ID_EVENT.
      
      
      mysql-test/r/rpl_insert_id.result:
        For bug#21726, add result for statement-based replication of function
        calls.
      mysql-test/t/rpl_insert_id.test:
        For bug#21726, add test case for statement-based replication of function
        calls.
      sql/item_func.cc:
        Set THD::last_insert_id_used_bin_log for issuing of LAST_INSERT_ID_EVENT.
      sql/log.cc:
        Issue LAST_INSERT_ID_EVENT if THD::last_insert_id_used_bin_log is set.
      sql/set_var.cc:
        Set THD::last_insert_id_used_bin_log for issuing of LAST_INSERT_ID_EVENT.
      sql/sql_class.cc:
        Initialize THD::last_insert_id_used_bin_log.
        Fix typo, add whitespace.
      sql/sql_class.h:
        Add THD::last_insert_id_used_bin_log.
      sql/sql_parse.cc:
        Reset THD::last_insert_id_used_bin_log for upper-level statements.
      sql/sql_select.cc:
        Set THD::last_insert_id_used_bin_log for issuing of LAST_INSERT_ID_EVENT.
      37b5cbdc
  16. 02 Oct, 2006 1 commit
    • unknown's avatar
      BUG#21726: Incorrect result with multiple invocations of LAST_INSERT_ID · be929087
      unknown authored
      Non-upper-level INSERTs (the ones in the body of stored procedure,
      stored function, or trigger) into a table that have AUTO_INCREMENT
      column didn't affected the result of LAST_INSERT_ID() on this level.
      
      The problem was introduced with the fix of bug 6880, which in turn was
      introduced with the fix of bug 3117, where current insert_id value was
      remembered on the first call to LAST_INSERT_ID() (bug 3117) and was
      returned from that function until it was reset before the next
      _upper-level_ statement (bug 6880).
      
      The fix for bug#21726 brings back the behaviour of version 4.0, and
      implements the following: remember insert_id value at the beginning
      of the statement or expression (which at that point equals to
      the first insert_id value generated by the previous statement), and
      return that remembered value from LAST_INSERT_ID() or @@LAST_INSERT_ID.
      
      Thus, the value returned by LAST_INSERT_ID() is not affected by values
      generated by current statement, nor by LAST_INSERT_ID(expr) calls in
      this statement.
      
      Version 5.1 does not have this bug (it was fixed by WL 3146).
      
      
      mysql-test/r/rpl_insert_id.result:
        Add results for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID, and bug#20339: stored procedure using LAST_INSERT_ID()
        does not replicate statement-based.
      mysql-test/t/rpl_insert_id.test:
        Add test cases for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID, and bug#20339: stored procedure using LAST_INSERT_ID()
        does not replicate statement-based.
      sql/item_func.cc:
        Add implementation of Item_func_last_insert_id::fix_fields(), where we
        remember in THD::current_insert_id the first value generated during
        execution of the previous statement, which is returned then from
        Item_func_last_insert_id::val_int().
      sql/item_func.h:
        Add declaration of Item_func_last_insert_id::fix_fields().
      sql/log_event.cc:
        Do not set THD::last_insert_id_used on LAST_INSERT_ID_EVENT.  Though we
        know the statement will call LAST_INSERT_ID(), it wasn't called yet.
      sql/set_var.cc:
        In sys_var_last_insert_id::value_ptr() remember in
        THD::current_insert_id the first value generated during execution of the
        previous statement, and return this value for @@LAST_INSERT_ID.
      sql/sql_class.cc:
        Reset THD::last_insert_id_used after each statement execution.
      sql/sql_class.h:
        Rather then remember current insert_id value on first invocation of
        THD::insert_id(), remember it in Item_func_last_insert_id::fix_fields(),
        sys_var_last_insert_id::value_ptr(), or mysql_execute_command().
        Remove THD::insert_id(), as it lost its value now.
      sql/sql_insert.cc:
        THD::insert_id() is removed, use THD::last_insert_id directly.
      sql/sql_load.cc:
        THD::insert_id() is removed, using THD::last_insert_id directly is OK.
      sql/sql_parse.cc:
        Remember in THD::current_insert_id first generated insert id value of
        the previous statement in mysql_execute_command().
        No need to reset THD::last_insert_id_used in
        mysql_reset_thd_for_next_command(), it will be reset after each
        statement.
      sql/sql_select.cc:
        If "IS NULL" is replaced with "= <LAST_INSERT_ID>", use right value,
        which is THD::current_insert_id, and also set THD::last_insert_id_used
        to issue binary log LAST_INSERT_ID_EVENT.
      sql/sql_update.cc:
        THD::insert_id() is removed, use THD::last_insert_id directly.
      tests/mysql_client_test.c:
        Add test case for bug#21726: Incorrect result with multiple invocations
        of LAST_INSERT_ID.
      be929087
  17. 27 Sep, 2006 3 commits
  18. 17 Sep, 2006 1 commit
    • unknown's avatar
      BUG#19419: VIEW: View that the column name is different · 447f2333
      unknown authored
       by master and slave is made.
      
      
      mysql-test/r/rpl_view.result:
        BUG#19419: VIEW: View that the column name is different
         by master and slave is made.
         Fixed result for the added test case.
      mysql-test/t/rpl_view.test:
        BUG#19419: VIEW: View that the column name is different
         by master and slave is made.
         Added test case.
      sql/sql_parse.cc:
        BUG#19419: VIEW: View that the column name is different
         by master and slave is made.
         Fixed: Add column_list to to the view creation statement
         which is written to binlog.
      447f2333
  19. 12 Sep, 2006 1 commit
    • unknown's avatar
      Fix for BUG#21774: Column count doesn't match value count at row x · 900e66f8
      unknown authored
      The cause of the bug was an incomplete fix for bug 18080.
      The problem was that setup_tables() unconditionally reset the
      name resolution context to its 'tables' argument, which pointed
      to the first table of an SQL statement.
      
      The bug fix limits resetting of the name resolution context in
      setup_tables() only in the cases when the context was not set
      by earlier parser/optimizer phases.
      
      
      mysql-test/r/insert_select.result:
        Test for BUG#21774.
      mysql-test/t/insert_select.test:
        Test for BUG#21774.
      sql/sql_base.cc:
        Do not reset the name resolution contect unconditionally.
        Instead set the context to 'tables' only if it was not
        set before calling setup_tables().
      sql/sql_insert.cc:
        Added asserts to make sure that in the case of INSERT ... VALUES ...
        statements it is not necessary to reset the name resolution context
        to the first table, because there is only one table in the list of
        tables anyway. The actual code is not removed in order not to
        confuse it with the actual bug fix.
      sql/sql_parse.cc:
        Removed unnecessary reset of the name resolution context.
        The context is anyway unconditionally reset in mysql_insert()
        and mysql_prepare_insert().
      900e66f8
  20. 08 Sep, 2006 1 commit
    • unknown's avatar
      after merge fix · 4ef211ee
      unknown authored
      sql/mysql_priv.h:
        after merge fix
        added charset parameter to check_string_length() function
      sql/slave.h:
        after merge fix
        USERNAME_LENGTH const is changed to USERNAME_BYTE_LENGTH
      sql/sql_parse.cc:
        after merge fix
        added charset parameter to check_string_length() function
      sql/sql_yacc.yy:
        after merge fix
        added charset parameter to check_string_length() function
      4ef211ee
  21. 07 Sep, 2006 1 commit
    • unknown's avatar
      after merge fix · dc6243e5
      unknown authored
      include/mysql_com.h:
        USERNAME_LENGTH is changed to USERNAME_BYTE_LENGTH
      mysql-test/r/ctype_utf8.result:
        result fix
      mysql-test/t/ctype_utf8.test:
        test fix
      sql/sp.cc:
        NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
        USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
      sql/sp_head.cc:
        NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
        USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
      sql/sql_acl.cc:
        NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
        USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
      sql/sql_class.h:
        NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
      sql/sql_parse.cc:
        NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
        Function check_string_length() is fixed, now it check string lenght in symbols
      sql/sql_repl.h:
        NAME_LEN constant is changed to NAME_BYTE_LEN for database name buffer
        USERNAME_LENGTH constant is changed to USERNAME_BYTE_LENGTH for user name buffer
      dc6243e5
  22. 04 Sep, 2006 1 commit
    • unknown's avatar
      Bug #21392: multi-table delete with alias table name fails with · 1431966d
      unknown authored
                  1003: Incorrect table name
      in multi-table DELETE the set of tables to delete from actually 
      references then tables in the other list, e.g:
      DELETE alias_of_t1 FROM t1 alias_of_t1 WHERE ....
      is a valid statement.
      So we must turn off table name syntactical validity check for alias_of_t1 
      because it's not a table name (even if it looks like one).
      In order to do that we add a special flag (TL_OPTION_ALIAS) to 
      disable the name checking for the aliases in multi-table DELETE.
      
      
      mysql-test/r/delete.result:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - test case
      mysql-test/t/delete.test:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - test case
      sql/mysql_priv.h:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - add a special flag to disable the name checking for the aliases
           in multi-table DELETE
      sql/sql_parse.cc:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - add a special flag to disable the name checking for the aliases
           in multi-table DELETE
      sql/sql_yacc.yy:
        Bug #21392: multi-table delete with alias table name fails with
                    1003: Incorrect table name
         - add a special flag to disable the name checking for the aliases
           in multi-table DELETE
      1431966d
  23. 30 Aug, 2006 1 commit
    • unknown's avatar
      Bug#20393 User name truncation in mysql client · ddb9f866
      unknown authored
      Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
      
      
      include/mysql_com.h:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        added new constants NAME_BYTE_LEN, USERNAME_BYTE_LENGTH, SYSTEM_CHARSET_MBMAXLEN
      mysql-test/r/ctype_utf8.result:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        test case
      mysql-test/t/ctype_utf8.test:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        test case
      sql-common/client.c:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        increased buffers for user name & db
      sql/sql_acl.cc:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        check that user name is not longer than USERNAME_LENGTH symbols
      sql/sql_parse.cc:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        increased buffers for user name & db
      sql/table.cc:
        Bug#20393 User name truncation in mysql client
        Bug#21432 Database/Table name limited to 64 bytes, not chars, problems with multi-byte
        check that db name is not longer than NAME_LEN symbols
      ddb9f866
  24. 25 Aug, 2006 1 commit
    • unknown's avatar
      Fix for bug#21795: SP: sp_head::is_not_allowed_in_function() contains · 133d2aa5
      unknown authored
      erroneous check
      
      Problem: Actually there were two problems in the server code. The check
      for SQLCOM_FLUSH in SF/Triggers were not according to the existing
      architecture which uses sp_get_flags_for_command() from sp_head.cc .
      This function was also missing a check for SQLCOM_FLUSH which has a
      problem combined with prelocking. This changeset fixes both of these
      deficiencies as well as the erroneous check in
      sp_head::is_not_allowed_in_function() which was a copy&paste error.
      
      
      mysql-test/r/sp-error.result:
        update result
      mysql-test/r/trigger.result:
        update result
      mysql-test/t/sp-error.test:
        FLUSH can create a problem with prelocking, hence it's disabled.
        There is a better way to check this than a check in the parser.
        Now we use sp_get_flags_for_command() and the error returned is
        different.
      mysql-test/t/trigger.test:
        FLUSH can create a problem with prelocking, hence it's disabled.
        There is a better way to check this than a check in the parser.
        Now we use sp_get_flags_for_command() and the error returned is
        different.
      sql/sp_head.cc:
        FLUSH and RESET are not allowed inside a SF/Trigger.
        Because they don't imply a COMMIT sp_head::HAS_COMMIT_OR_ROLLBACK
        cannot be used. Two new flags were introduced for that reason.
      sql/sp_head.h:
        Don't check m_type as this check is erroneous. This is probably
        a copy and paste error when moving code from somewhere else. Another
        fact which supports this was prefixing the enum value with the name
        of class sp_head.
        
        Adding two new flags HAS_SQLCOM_RESET and HAS_SQLCOM_FLUSH. The values
        are 2048 and 4096 because in the 5.1 branch there are already new flags
        which are with values up-to 1024.
      sql/sql_parse.cc:
        FLUSH can cause a problem with prelocking in SF/Trigger and
        therefore is already disabled. RESET is also disabled because
        is handled by the same code as FLUSH. We won't allow RESET inside
        SF/Trigger at that stage without thorough analysis. The check for
        them is already done in the parser by calling
        is_not_allowed_in_function()
      sql/sql_yacc.yy:
        By listing SQLCOM_FLUSH as command which implies COMMIT
        in sp_get_flags_for_command() the check in sql_yacc.yy is
        obsolete.
      133d2aa5
  25. 24 Aug, 2006 1 commit
    • unknown's avatar
      Fix for BUG#16899: Possible buffer overflow in handling of DEFINER-clause · 21e6836b
      unknown authored
          
      User name (host name) has limit on length. The server code relies on these
      limits when storing the names. The problem was that sometimes these limits
      were not checked properly, so that could lead to buffer overflow.
        
      The fix is to check length of user/host name in parser and if string is too
      long, throw an error.
      
      
      mysql-test/r/grant.result:
        Updated result file.
      mysql-test/r/sp.result:
        Updated result file.
      mysql-test/r/trigger.result:
        Updated result file.
      mysql-test/r/view.result:
        Updated result file.
      mysql-test/t/grant.test:
        Added test for BUG#16899.
      mysql-test/t/sp.test:
        Added test for BUG#16899.
      mysql-test/t/trigger.test:
        Added test for BUG#16899.
      mysql-test/t/view.test:
        Added test for BUG#16899.
      sql/mysql_priv.h:
        Added prototype for new function.
      sql/sql_acl.cc:
        Remove outdated checks.
      sql/sql_parse.cc:
        Add a new function for checking string length.
      sql/share/errmsg.txt:
        Added new resources.
      sql/sql_yacc.yy:
        Check length of user/host name.
      21e6836b
  26. 23 Aug, 2006 2 commits
    • unknown's avatar
      view.result, view.test: · d0394c70
      unknown authored
        Corrected test case for the bug#21261
      sql_parse.cc:
        Corrected fix for bug#21261
      
      
      mysql-test/t/view.test:
        Corrected test case for the bug#21261
      mysql-test/r/view.result:
        Corrected test case for the bug#21261
      sql/sql_parse.cc:
        Corrected fix for bug#21261
      d0394c70
    • unknown's avatar
      Fix for BUG#16899: Possible buffer overflow in handling of DEFINER-clause · f96ee72f
      unknown authored
        
      User name (host name) has limit on length. The server code relies on these
      limits when storing the names. The problem was that sometimes these limits
      were not checked properly, so that could lead to buffer overflow.
      
      The fix is to check length of user/host name in parser and if string is too
      long, throw an error.
      
      
      mysql-test/r/grant.result:
        Updated result file.
      mysql-test/r/sp.result:
        Updated result file.
      mysql-test/r/trigger.result:
        Updated result file.
      mysql-test/r/view.result:
        Updated result file.
      mysql-test/t/grant.test:
        Added test for BUG#16899.
      mysql-test/t/sp.test:
        Added test for BUG#16899.
      mysql-test/t/trigger.test:
        Added test for BUG#16899.
      mysql-test/t/view.test:
        Added test for BUG#16899.
      sql/mysql_priv.h:
        Added prototype for new function.
      sql/share/errmsg.txt:
        Added new resources.
      sql/sql_acl.cc:
        Remove outdated checks.
      sql/sql_parse.cc:
        Add a new function for checking string length.
      sql/sql_yacc.yy:
        Check length of user/host name.
      f96ee72f
  27. 19 Aug, 2006 1 commit
    • unknown's avatar
      WL#3432 (Compile the Parser with a --debug --verbose option) · cd2c9eec
      unknown authored
      Corrected build issues : the build can not be conditional.
      to keep a unique source .tar.gz distribution.
      
      
      configure.in:
        Rolling back previous change
      sql/Makefile.am:
        Partially rolling back previous change.
        The build has to be unconditional, for the source .tar.gz distribution
      sql/mysql_priv.h:
        WL#3432 (Compile the Parser with a --debug --verbose option)
      sql/sql_parse.cc:
        WL#3432 (Compile the Parser with a --debug --verbose option)
        
        Moved turn_parser_debug_on to sql_yacc.yy
      sql/sql_yacc.yy:
        WL#3432 (Compile the Parser with a --debug --verbose option)
        
        Moved turn_parser_debug_on to sql_yacc.yy
      cd2c9eec
  28. 17 Aug, 2006 1 commit
    • unknown's avatar
      WL#3432 (Compile the Parser with a --debug --verbose option) · dec9116f
      unknown authored
      Changed the automake build process :
      - ./configure.in
      - ./sql/Makefile.am
      to compile an instrumented parser for debug=yes or debug=full builds
      
      Changed the (primary) runtime invocation of the parser :
      - sql/sql_parse.cc
      to generate bison traces in stderr when the DBUG "parser_debug" flag is set.
      
      
      configure.in:
        WL#3432 (Compile the Parser with a --debug --verbose option)
        
        New Automake condition : MYSQL_CONF_DEBUG
      sql/Makefile.am:
        WL#3432 (Compile the Parser with a --debug --verbose option)
        
        In Debug mode, compile sql_yacc.yy with --debug --verbose
      sql/sql_parse.cc:
        WL#3432 (Compile the Parser with a --debug --verbose option)
        
        Conditionally turn the bison parser debug on at runtime.
      dec9116f
  29. 20 Jul, 2006 1 commit
    • unknown's avatar
      BUG#20975: Incorrect query result for NOT (subquery): · 68698c04
      unknown authored
        Add implementations of Item_func_{nop,not}_all::neg_transformer
      
      
      mysql-test/r/subselect.result:
        BUG#20975: testcase
      mysql-test/t/subselect.test:
        BUG#20975: testcase
      sql/mysql_priv.h:
        Make chooser_compare_func_creator visible in item.h
      68698c04
  30. 19 Jul, 2006 1 commit
    • unknown's avatar
      A fix and a test case for Bug#21002 "Derived table not selecting from a · 0fa250a9
      unknown authored
      "real" table fails in JOINs".
      
      This is a regression caused by the fix for Bug 18444. 
      This fix removed the assignment of empty_c_string to table->db performed 
      in add_table_to_list, as neither me nor anyone else knew what it was 
      there for. Now we know it and it's covered with tests: the only case 
      when a table database name can be empty is when the table is a derived 
      table. The fix puts the assignment back but makes it a bit more explicit.
      
      Additionally, finally drop sp.result.orig which was checked in by mistake. 
      
      
      BitKeeper/deleted/.del-sp.result.orig:
        Delete: mysql-test/r/sp.result.orig
      mysql-test/r/derived.result:
        Updated result file.
      mysql-test/r/sp.result:
        Test results fixed (Bug#21002)
      mysql-test/t/derived.test:
        New error return for the case when MULTI-DELETE tries to delete from
        a derived table: now derived tables belong to their own db (""), and
        MUTLI-DELETE can't find the correspondent table for it in the 
        DELETE list, as it can't resolve tables in different dbs by alias
        (See Bug#21148 for details)
      mysql-test/t/sp.test:
        Add a test case for Bug#21002 "Derived table not selecting from a "real"
         table fails in JOINs"
      sql/sp.cc:
        Make empty_c_string globally accessible.
      sql/sql_class.cc:
        Add empty_c_string definition.
      sql/sql_class.h:
        Add a comment for the constructor of Table_ident which is
        used for derived tables. Make sure this constructor also initializes
        the database name, not only the table name.
      sql/sql_parse.cc:
        Don't call check_db_name for empty database. 
        Currently the only case when a table database name can be empty
        is when the table is a derived table.
        Report the right error if the database name is wrong (ER_WRONG_DB_NAME,
        not ER_WRONG_TABLE_NAME).
      0fa250a9
  31. 18 Jul, 2006 1 commit
  32. 13 Jul, 2006 1 commit
    • unknown's avatar
      Bug#18630: Arguments of suid routine calculated in wrong security · 06bf59ad
      unknown authored
                 context.
      
      Routine arguments were evaluated in the security context of the routine
      itself, not in the caller's context.
      
      The bug is fixed the following way:
      
        - Item_func_sp::find_and_check_access() has been split into two
          functions: Item_func_sp::find_and_check_access() itself only
          finds the function and check that the caller have EXECUTE privilege
          on it.  New function set_routine_security_ctx() changes security
          context for SUID routines and checks that definer have EXECUTE
          privilege too.
      
        - new function sp_head::execute_trigger() is called from
          Table_triggers_list::process_triggers() instead of
          sp_head::execute_function(), and is effectively just as the
          sp_head::execute_function() is, with all non-trigger related code
          removed, and added trigger-specific security context switch.
      
        - call to Item_func_sp::find_and_check_access() stays outside
          of sp_head::execute_function(), and there is a code in
          sql_parse.cc before the call to sp_head::execute_procedure() that
          checks that the caller have EXECUTE privilege, but both
          sp_head::execute_function() and sp_head::execute_procedure() call
          set_routine_security_ctx() after evaluating their parameters,
          and restore the context after the body is executed.
      
      
      mysql-test/r/sp-security.result:
        Add test case for bug#18630: Arguments of suid routine calculated
        in wrong security context.
      mysql-test/t/sp-security.test:
        Add result for bug#18630: Arguments of suid routine calculated
        in wrong security context.
      sql/item_func.cc:
        Do not change security context before executing the function, as it
        will be changed after argument evaluation.
        Do not change security context in Item_func_sp::find_and_check_access().
      sql/item_func.h:
        Change prototype for Item_func_sp::find_and_check_access().
      sql/sp_head.cc:
        Add set_routine_security_ctx() function.
        Add sp_head::execute_trigger() method.
        Change security context in sp_head::execute_trigger(), and in
        sp_head::execute_function() and sp_head::execute_procedure()
        after argument evaluation.
        Move pop_all_cursors() call to sp_head::execute().
      sql/sp_head.h:
        Add declaration for sp_head::execute_trigger() and
        set_routine_security_ctx().
      sql/sql_parse.cc:
        Do not change security context before executing the procedure, as it
        will be changed after argument evaluation.
      sql/sql_trigger.cc:
        Call new sp_head::execute_trigger() instead of
        sp_head::execute_function(), which is responsible to switch
        security context.
      06bf59ad