1. 12 Oct, 2006 1 commit
    • unknown's avatar
      BUG#20953: create proc with a create view that uses local vars/params · 68a6c937
      unknown authored
                 should fail to create
      
      The problem was that this type of errors was checked during view
      creation, which doesn't happen when CREATE VIEW is a statement of
      a created stored routine.
      
      The solution is to perform the checks at parse time.  The idea of the
      fix is that the parser checks if a construction just parsed is allowed
      in current circumstances by testing certain flags, and this flags are
      reset for VIEWs.
      
      The side effect of this change is that if the user already have
      such bogus routines, it will now get a error when trying to do
      
        SHOW CREATE PROCEDURE proc;
      
      (and some other) and when trying to execute such routine he will get
      
        ERROR 1457 (HY000): Failed to load routine test.p5. The table mysql.proc is missing, corrupt, or contains bad data (internal code -6)
      
      However there should be very few such users (if any), and they may
      (and should) drop these bogus routines.
      
      
      mysql-test/r/sp-error.result:
        Add result for bug#20953: create proc with a create view that uses
        local vars/params should fail to create.
      mysql-test/r/view.result:
        Update results.
      mysql-test/t/sp-error.test:
        Add test case for bug#20953: create proc with a create view that uses
        local vars/params should fail to create.
      mysql-test/t/view.test:
        Add second test for variable in a view.
        Remove SP variable in a view test, as it tests wrong behaviour.
        Add test for derived table in a view.
      sql/sql_lex.cc:
        Remove LEX::variables_used.
      sql/sql_lex.h:
        Remove LEX::variables_used and add st_parsing_options structure and
        LEX::parsing_options member.
      sql/sql_view.cc:
        Move some error checking to sql/sql_yacc.yy.
      sql/sql_yacc.yy:
        Check for disallowed syntax in a CREATE VIEW at parse time to rise a
        error when it is used inside CREATE PROCEDURE and CREATE FUNCTION, as
        well as by itself.
      68a6c937
  2. 10 Oct, 2006 1 commit
    • unknown's avatar
      Bug#19111: TRIGGERs selecting from a VIEW on the firing base table fail. · b9997db6
      unknown authored
      In a trigger or a function used in a statement it is possible to do
      SELECT from a table being modified by the statement.  However,
      encapsulation of such SELECT into a view and selecting from a view
      instead of direct SELECT was not possible.
      
      This happened because tables used by views (which in their turn
      were used from functions/triggers) were not excluded from checks
      in unique_table() routine as it happens for the rest of tables
      added to the statement table list for prelocking.
      
      With this fix we ignore all such tables in unique_table(), thus
      providing consistency: inside a trigger or a functions SELECT from
      a view may be used where plain SELECT is allowed.  Modification of
      the same table from function or trigger is still disallowed.  Also,
      this patch doesn't affect the case where SELECT from the table being
      modified is done outside of function of trigger, such SELECTs are
      still disallowed (this limitation and visibility problem when function
      select from a table being modified are subjects of bug 21326).  See
      also bug 22427.
      
      
      mysql-test/r/view.result:
        Add result for bug#19111: TRIGGERs selecting from a VIEW on the
        firing base table fail.
      mysql-test/t/view.test:
        Add test case for bug#19111: TRIGGERs selecting from a VIEW on the
        firing base table fail.
      sql/sql_base.cc:
        In unique_table() do not check tables that are used in a stored
        function or a trigger ('prelocking_placeholder' is set).  If such
        function or a trigger will attempt to modify a table, the error will
        be given, however select is allowed there.
      b9997db6
  3. 29 Sep, 2006 1 commit
    • unknown's avatar
      bug #16813 (WITH CHECK OPTION fails with UPDATE) · b0a8acab
      unknown authored
      We use the condition from CHECK OPTION twice handling UPDATE command.
      First we construnct 'update_cond' AND 'option_cond'
      condition to select records to be updated, then we check the
      'option_cond' for the updated row.
      The problem is that first 'AND' condition is optimized during the 'select'
      which can break 'option_cond' structure, so it will be unusable for
      the sectond use - to check the updated row.
      Possible soultion is either use copy of the condition in the first
      use or to make optimization less traumatic for the operands.
      I picked the first one. 
      
      
      mysql-test/r/view.result:
        result fixed
      mysql-test/t/view.test:
        testcase
      sql/table.cc:
        now we use the copy of the CHECK OPTION condition to construct
        the select's condition
      b0a8acab
  4. 28 Sep, 2006 1 commit
    • unknown's avatar
      Fixed bug#5505: Wrong error message on INSERT into a view · 9cf17a35
      unknown authored
      On an INSERT into an updatable but non-insertable view an error message was
      issued stating the view being not updatable. This can lead to a confusion of a
      user.
      
      A new error message is introduced. Is is showed when a user tries to insert
      into a non-insertable view.
      
      
      sql/sql_base.cc:
        Fixed bug#5505: Wrong error message on INSERT into a view
        The update_non_unique_table_error() function now issues proper
        error for an INSERT.
      sql/sql_insert.cc:
        Fixed bug#5505: Wrong error message on INSERT into a view
        Issue the ER_NON_INSERTABLE_TABLE error instead of the 
        ER_NON_UPDATABLE_TABLE on insert into a view.
      sql/sql_view.cc:
        Fixed bug#5505: Wrong error message on INSERT into a view
        Issue the ER_NON_INSERTABLE_TABLE error instead of the
        ER_NON_UPDATABLE_TABLE on insert into a view.
      mysql-test/r/view.result:
        Added the test case for bug#5505: Wrong error message on INSERT into a view
        Corrected a few test cases after fixing bug#5505
      mysql-test/t/view.test:
        Added the test case for bug#5505: Wrong error message on INSERT into a view
        Corrected a few test cases after fixing bug#5505
      sql/share/errmsg.txt:
        Fixed bug#5505: Wrong error message on INSERT into a view
        Added the ER_NON_INSERTABLE_TABLE error definition.
      9cf17a35
  5. 25 Sep, 2006 1 commit
    • unknown's avatar
      Fixed bug #21646. · fe2edf6d
      unknown authored
      Presence of a subquery in the ON expression of a join 
      should not block merging the view that contains this join.
      Before this patch the such views were converted into 
      into temporary table views.
      
      
      mysql-test/r/view.result:
        Added a test case for bug #21646.
      mysql-test/t/view.test:
        Added a test case for bug #21646.
      sql/mysql_priv.h:
        Fixed bug #21646.
        Added a new parsing state 'IN_ON', true when
        the parser is in an ON expression of a join.
      sql/sql_lex.cc:
        Fixed bug #21646.
        Presence of a subquery in the ON expression of a join 
        should not block merging the view that contains this join.
      sql/sql_yacc.yy:
        Fixed bug #21646.
        Added a new parsing state 'IN_ON', true when
        the parser is in an ON expression of a join.
      fe2edf6d
  6. 18 Sep, 2006 1 commit
  7. 14 Sep, 2006 1 commit
    • unknown's avatar
      type_date.result: · 68116728
      unknown authored
        Added the test case for bug#21677: Wrong result when comparing a DATE and a DATETIME in BETWEEN
        Corrected a test case after removal of fix for bug#16377
      query_cache.result, func_time.test, view.result, view.test, func_time.result:
        Corrected a test case after removal of fix for bug#16377
      type_date.test:
        Added the test case for bug#21677: Wrong result when comparing a DATE and a DATETIME in BETWEEN
         Corrected a test case after removal of fix for bug#16377
      item_cmpfunc.cc:
        Removed changes to the Item_func_between::fix_length_and_dec() made in the fix for bug#16377
      
      
      mysql-test/t/view.test:
        Corrected a test case after removal of fix for bug#16377
      mysql-test/t/type_date.test:
        Added the test case for bug#21677: Wrong result when comparing a DATE and a DATETIME in BETWEEN
         Corrected a test case after removal of fix for bug#16377
      mysql-test/t/func_time.test:
        Corrected a test case after removal of fix for bug#16377
      mysql-test/r/view.result:
        Corrected a test case after removal of fix for bug#16377
      mysql-test/r/type_date.result:
        Added the test case for bug#21677: Wrong result when comparing a DATE and a DATETIME in BETWEEN
        Corrected a test case after removal of fix for bug#16377
      mysql-test/r/query_cache.result:
        Corrected a test case after removal of fix for bug#16377
      mysql-test/r/func_time.result:
        Corrected a test case after removal of fix for bug#16377
      sql/item_cmpfunc.cc:
        Removed changes to the Item_func_between::fix_length_and_dec() made in the fix for bug#16377
      68116728
  8. 06 Sep, 2006 1 commit
    • unknown's avatar
      Fixed bug #5500: EXPLAIN returned a wrong select_type for queries using views. · cdf0c534
      unknown authored
      Select_type in the EXPLAIN output for the query SELECT * FROM t1 was
      'SIMPLE', while for the query SELECT * FROM v1, where the view v1
      was defined as SELECT * FROM t1, the EXPLAIN output contained 'PRIMARY'
      for the select_type column.
       
      
      
      mysql-test/r/group_by.result:
        Adjusted results after the fix for bug #5500.
      mysql-test/r/information_schema.result:
        Adjusted results after the fix for bug #5500.
      mysql-test/r/olap.result:
        Adjusted results after the fix for bug #5500.
      mysql-test/r/range.result:
        Adjusted results after the fix for bug #5500.
      mysql-test/r/view.result:
        Added a test case for bug #5500.
        Adjusted other results.
      mysql-test/r/view_grant.result:
        Adjusted results after the fix for bug #5500.
      mysql-test/t/view.test:
        Added a test case for bug #5500.
      cdf0c534
  9. 29 Aug, 2006 2 commits
    • unknown's avatar
      Post-merge fixes. · b07cb8f3
      unknown authored
      mysql-test/r/view.result:
        A post-merge fix.
      mysql-test/t/grant.test:
        A post-merge fix.
      mysql-test/t/view.test:
        A post-merge fix.
      b07cb8f3
    • unknown's avatar
      BUG#17591: Updatable view not possible with trigger or stored function · f92ab279
      unknown authored
      When a view was used inside a trigger or a function, lock type for
      tables used in a view was always set to READ (thus making the view
      non-updatable), even if we were trying to update the view.
      
      The solution is to set lock type properly.
      
      
      mysql-test/r/view.result:
        Add result for bug#17591: Updatable view not possible with trigger
        or stored function.
      mysql-test/t/view.test:
        Add test case for bug#17591: Updatable view not possible with trigger
        or stored function.
      sql/sql_view.cc:
        Move the code that sets requested lock type before the point where
        we exit from mysql_make_view() when we process a placeholder for
        prelocked table.
      f92ab279
  10. 24 Aug, 2006 1 commit
    • unknown's avatar
      Fix for BUG#16899: Possible buffer overflow in handling of DEFINER-clause · 8cd1fd1c
      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.
      8cd1fd1c
  11. 23 Aug, 2006 2 commits
    • unknown's avatar
      view.result, view.test: · 7f27c211
      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
      7f27c211
    • unknown's avatar
      Fix for BUG#16899: Possible buffer overflow in handling of DEFINER-clause · e07c2db2
      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.
      e07c2db2
  12. 17 Aug, 2006 1 commit
    • unknown's avatar
      ndb_condition_pushdown.result: · f9b3c450
      unknown authored
        Corrected test case result after fix for bug#18165
      view.result, view.test:
        Corrected test case for bug#21261
      
      
      mysql-test/t/view.test:
        Corrected test case for bug#21261
      mysql-test/r/view.result:
        Corrected test case for bug#21261
      mysql-test/r/ndb_condition_pushdown.result:
        Corrected test case result after fix for bug#18165
      f9b3c450
  13. 15 Aug, 2006 2 commits
    • unknown's avatar
      Fixed bug#21261: Wrong access rights was required for an insert into a view · f7f5bf63
      unknown authored
      SELECT right instead of INSERT right was required for an insert into to a view.
      This wrong behaviour appeared after the fix for bug #20989. Its intention was
      to ask only SELECT right for all tables except the very first for a complex
      INSERT query. But that patch has done it in a wrong way and lead to asking 
      a wrong access right for an insert into a view.
      
      The setup_tables_and_check_access() function now accepts two want_access
      parameters. One will be used for the first table and the second for other
      tables.
      
      
      mysql-test/t/view.test:
        Added a test case for bug#21261: Wrong access rights was required for an insert into a view
      mysql-test/r/view.result:
        Added a test case for bug#21261: Wrong access rights was required for an insert into a view
      sql/sql_update.cc:
        Fixed bug#21261: Wrong access rights was required for an insert into a view
        Modified to use updated setup_tables_and_check_access() function.
      sql/sql_select.cc:
        Fixed bug#21261: Wrong access rights was required for an insert into a view
        Modified to use updated setup_tables_and_check_access() function.
      sql/sql_load.cc:
        Fixed bug#21261: Wrong access rights was required for an insert into a view
        Modified to use updated setup_tables_and_check_access() function.
      sql/sql_insert.cc:
        Fixed bug#21261: Wrong access rights was required for an insert into a view
        Modified to use updated setup_tables_and_check_access() function.
      sql/sql_delete.cc:
        Fixed bug#21261: Wrong access rights was required for an insert into a view
        Modified to use updated setup_tables_and_check_access() function.
      sql/sql_base.cc:
        Fixed bug#21261: Wrong access rights was required for an insert into a view
        The setup_tables_and_check_access() function now accepts two want_access
        parameters. One will be used for the first table and the second for other
        tables.
      sql/mysql_priv.h:
        Fixed bug#21261: Wrong access rights was required for an insert into a view
        The setup_tables_and_check_access() function now accepts two want_access
        parameters.
      f7f5bf63
    • unknown's avatar
      Fixed bug#15950: NOW() optimized away in VIEWs · 09255a2d
      unknown authored
      This bug is a side-effect of bug fix #16377. NOW() is optimized in
      BETWEEN to integer constants to speed up query execution. When view is being
      created it saves already modified query and thus becomes wrong.
      
      The agg_cmp_type() function now substitutes constant result DATE/TIME functions 
      for their results only if the current query isn't CREATE VIEW or SHOW CREATE
      VIEW.
      
      
      mysql-test/t/view.test:
        Added a test case for bug#15950: NOW() optimized away in VIEWs
      mysql-test/r/view.result:
        Added a test case for bug#15950: NOW() optimized away in VIEWs
      sql/item_cmpfunc.cc:
        Fixed bug#15950: NOW() optimized away in VIEWs
        The agg_cmp_type() function now substitutes constant result DATE/TIME functions 
        for their results only if the current query isn't CREATE VIEW or SHOW CREATE
        VIEW.
      09255a2d
  14. 08 Aug, 2006 1 commit
    • unknown's avatar
      Bug#16172 DECIMAL data type processed incorrectly · 7c3dc6c5
      unknown authored
      issue an 'overflow warning' if result value is bigger than max possible value
      
      
      include/decimal.h:
        Bug#16172 DECIMAL data type processed incorrectly
        new function decimal_intg()
      mysql-test/r/cast.result:
        Bug#16172 DECIMAL data type processed incorrectly
        result fix
      mysql-test/r/type_newdecimal.result:
        Bug#16172 DECIMAL data type processed incorrectly
        test result
      mysql-test/r/view.result:
        Bug#16172 DECIMAL data type processed incorrectly
        result fix
      mysql-test/t/type_newdecimal.test:
        Bug#16172 DECIMAL data type processed incorrectly
        test case
      sql/item_create.cc:
        Bug#16172 DECIMAL data type processed incorrectly
        do not increase decimal part on 2(according to manual)
      sql/my_decimal.h:
        Bug#16172 DECIMAL data type processed incorrectly
        new function my_decimal_intg()
      strings/decimal.c:
        Bug#16172 DECIMAL data type processed incorrectly
        new function decimal_intg()
      7c3dc6c5
  15. 02 Aug, 2006 1 commit
    • unknown's avatar
      BUG#14770 - LOAD DATA INFILE doesn't respect default values for · 86ca301b
      unknown authored
                  columns
      Fixed confusing warning.
      
      Quoting INSERT section of the manual:
      ----
      Inserting NULL into a column that has been declared NOT NULL. For
      multiple-row INSERT statements or INSERT INTO ... SELECT statements, the
      column is set to the implicit default value for the column data type. This
      is 0 for numeric types, the empty string ('') for string types, and the
      "zero" value for date and time types. INSERT INTO ... SELECT statements are
      handled the same way as multiple-row inserts because the server does not
      examine the result set from the SELECT to see whether it returns a single
      row. (For a single-row INSERT, no warning occurs when NULL is inserted into
      a NOT NULL column. Instead, the statement fails with an error.)
      ----
      This is also true for LOAD DATA INFILE. For INSERT user can specify
      DEFAULT keyword as a value to set column default. There is no similiar
      feature available for LOAD DATA INFILE.
      
      
      mysql-test/r/auto_increment.result:
        Fixed confusing warning.
      mysql-test/r/create.result:
        Fixed confusing warning.
      mysql-test/r/insert.result:
        Fixed confusing warning.
      mysql-test/r/insert_select.result:
        Fixed confusing warning.
      mysql-test/r/key.result:
        Fixed confusing warning.
      mysql-test/r/null.result:
        Fixed confusing warning.
      mysql-test/r/null_key.result:
        Fixed confusing warning.
      mysql-test/r/ps_2myisam.result:
        Fixed confusing warning.
      mysql-test/r/ps_3innodb.result:
        Fixed confusing warning.
      mysql-test/r/ps_4heap.result:
        Fixed confusing warning.
      mysql-test/r/ps_5merge.result:
        Fixed confusing warning.
      mysql-test/r/ps_6bdb.result:
        Fixed confusing warning.
      mysql-test/r/strict.result:
        Fixed confusing warning.
      mysql-test/r/view.result:
        Fixed confusing warning.
      mysql-test/r/warnings.result:
        Fixed confusing warning.
      sql/share/errmsg.txt:
        Fixed confusing warning.
      86ca301b
  16. 31 Jul, 2006 2 commits
    • unknown's avatar
      Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE · b44f4a42
      unknown authored
       
      made DROP VIEW to continue on error and report an aggregated error 
       at its end. This makes it similar to DROP TABLE.
      
      
      mysql-test/r/view.result:
        Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
         - test case
         - changed error message
      mysql-test/t/view.test:
        Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
         - test case
      sql/sql_view.cc:
        Bug #11551: Asymmetric + undocumented behaviour of DROP VIEW and DROP TABLE
         - made DROP VIEW to continue on error and report an aggregated error
      b44f4a42
    • unknown's avatar
      Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM · a04713a4
      unknown authored
        When executing ALTER TABLE all the attributes of the view were overwritten.
        This is contrary to the user's expectations.
        So some of the view attributes are preserved now : namely security and 
        algorithm. This means that if they are not specified in ALTER VIEW
        their values are preserved from CREATE VIEW instead of being defaulted.
      
      
      mysql-test/r/view.result:
        Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
         - test suite
      mysql-test/t/view.test:
        Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
         - test suite
      sql/sql_lex.h:
        Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
         - must make create_view_suid a tristate : on/off/unspecified
      sql/sql_view.cc:
        Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
         - open the view to get it's attributes and put then as defaults 
           for ALTER VIEW
      sql/sql_yacc.yy:
        Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
         - must make create_view_suid a tristate : on/off/unspecified
      sql/table.h:
        Bug #21080: ALTER VIEW makes user restate SQL SECURITY mode, and ALGORITHM
         - must make create_view_suid a tristate : on/off/unspecified
      a04713a4
  17. 28 Jul, 2006 1 commit
    • unknown's avatar
      BUG#14940 "MySQL choose wrong index", v.2 · 8dd88f48
      unknown authored
      - Make the range-et-al optimizer produce E(#table records after table 
                                                 condition is applied),
      - Make the join optimizer use this value,
      - Add "filtered" column to EXPLAIN EXTENDED to show 
        fraction of records left after table condition is applied
      - Adjust test results, add comments
      
      
      mysql-test/r/archive_gis.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/auto_increment.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/bdb_gis.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/bench_count_distinct.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/binlog_stm_blackhole.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/case.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/cast.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/compress.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/ctype_collate.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/ctype_cp1250_ch.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/date_formats.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/distinct.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/fulltext.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_compress.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_crypt.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_default.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_encrypt.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_gconcat.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_group.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_if.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_in.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_like.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_math.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_op.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_regexp.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_set.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_str.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_system.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_test.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/func_time.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/gis.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/group_by.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/group_min_max.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/having.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/heap.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/heap_hash.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/index_merge.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/index_merge_innodb.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/index_merge_ror.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/innodb_gis.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/insert_update.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/join.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/join_nested.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/key_diff.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/myisam.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/ndb_gis.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/negation_elimination.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/null.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/olap.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/partition_pruning.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/query_cache.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/row.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/rpl_get_lock.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/rpl_master_pos_wait.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/select.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/ssl.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/ssl_compress.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/subselect.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/type_blob.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/union.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/varbinary.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/variables.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/r/view.result:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/t/ctype_cp1250_ch.test:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/t/func_like.test:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/t/group_min_max.test:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/t/index_merge_ror.test:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/t/index_merge_ror_cpk.test:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/t/join.test:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      mysql-test/t/partition_pruning.test:
        BUG#14940: Adjust the test results: EXPLAIN EXTENDED now has extra "filtered" column
      sql/opt_range.cc:
        BUG#14940: Make range/index_merge/group-min-max optimizer produce TABLE::quick_condition_rows -
          estimate of #records that will match the table condition.
      sql/sql_class.cc:
        BUG#14940: Add "filtered" column to output of EXPLAIN EXTENDED
      sql/sql_select.cc:
        BUG#14940: 
        - Make the join optimizer to use TABLE::quick_condition_rows=
          = E(#table records after filtering with table condition) 
        - Add "filtered" column to output of EXPLAIN EXTENDED
      sql/sql_select.h:
        BUG#14940: Added comments
      sql/table.h:
        BUG#14940: Added comments
      8dd88f48
  18. 25 Jul, 2006 1 commit
    • unknown's avatar
      Bug #21086: server crashes when VIEW defined with a SELECT with COLLATE clause is called · cda97091
      unknown authored
        When executing INSERT over a view with calculated columns it was assuming all
        elements of the fields collection are actually Item_field instances.
        This may not be true when inserting into a view and that view has columns that are 
        such expressions that allow updating (like setting a collation for example).
        Corrected to access field information through the filed_for_view_update() function and 
        retrieve correctly the field info even for "update-friendly" non-Item_field items.
      
      
      mysql-test/r/view.result:
        Bug #21086: server crashes when VIEW defined with a SELECT with COLLATE clause is called
         - test suite
      mysql-test/t/view.test:
        Bug #21086: server crashes when VIEW defined with a SELECT with COLLATE clause is called
         - test suite
      sql/item_strfunc.h:
        Bug #21086: server crashes when VIEW defined with a SELECT with COLLATE clause is called
         - obvious typo fixed
      sql/sql_base.cc:
        Bug #21086: server crashes when VIEW defined with a SELECT with COLLATE clause is called
         - must access field information through the filed_for_view_update() function to retrieve
           correctly the field info even for "update-friendly" non-Item_field items.
      cda97091
  19. 20 Jul, 2006 1 commit
    • unknown's avatar
      Bug#6147: Traditional: Assigning a string to a numeric column has unexpected results · 6bc4ea85
      unknown authored
      The problem was that when converting a string to an exact number,
      rounding didn't work, because conversion didn't understand
      approximate numbers notation.
      Fix: a new function for string-to-number conversion was implemented,
      which is aware of approxinate number notation (with decimal point
      and exponent, e.g. -19.55e-1)
      
      
      include/m_ctype.h:
        Adding new function into MY_CHARSET_HANDLER
        Adding prototypes for 8bit and ucs2 functions.
      mysql-test/r/loaddata.result:
        Fixing results
      mysql-test/r/ps_2myisam.result:
        Fixing results
      mysql-test/r/ps_3innodb.result:
        Fixing results
      mysql-test/r/ps_4heap.result:
        Fixing results
      mysql-test/r/ps_5merge.result:
        Fixing results
      mysql-test/r/ps_6bdb.result:
        Fixing results
      mysql-test/r/rpl_rewrite_db.result:
        Fixing results
      mysql-test/r/select.result:
        Fixing results
      mysql-test/r/sp-vars.result:
        Fixing results
      mysql-test/r/strict.result:
        Fixing results
      mysql-test/r/view.result:
        Fixing results
      mysql-test/r/warnings.result:
        Fixing results
      mysql-test/t/strict.test:
        Fixing results
      sql/field.cc:
        Using new function
      strings/ctype-big5.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-bin.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-cp932.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-euc_kr.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-eucjpms.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-gb2312.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-gbk.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-latin1.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-simple.c:
        Implementing my_strntoull10_8bit
        Adding new function into MY_CHARSET_HANDLER
      strings/ctype-sjis.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-tis620.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-ucs2.c:
        Implementing UCS2 wrapper for 8bit version
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-ujis.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      strings/ctype-utf8.c:
        Adding new function into the MY_CHARSET_HANDLER structure
      mysql-test/r/round.result:
        New BitKeeper file ``mysql-test/r/round.result''
      mysql-test/t/round.test:
        New BitKeeper file ``mysql-test/t/round.test''
      6bc4ea85
  20. 19 Jul, 2006 1 commit
  21. 14 Jul, 2006 1 commit
    • unknown's avatar
      Fixed bug #19714. · 31ace3a8
      unknown authored
      DESCRIBE returned the type BIGINT for a column of a view if the column
      was specified by an expression over values of the type INT.
          
      E.g. for the view defined as follows:
        CREATE VIEW v1 SELECT COALESCE(f1,f2) FROM t1
      DESCRIBE returned type BIGINT for the only column of the view if f1,f2 are
      columns of the INT type.
      At the same time DESCRIBE returned type INT for the only column of the table
      defined by the statement:
        CREATE TABLE t2 SELECT COALESCE(f1,f2) FROM t1.
          
      This inconsistency was removed by the patch.
      
      Now the code chooses between INT/BIGINT depending on the
      precision of the aggregated column type.
       
      Thus both DESCRIBE commands above returns type INT for v1 and t2.
       
      
      
      mysql-test/r/analyse.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/bigint.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/create.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/olap.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/ps_2myisam.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/ps_3innodb.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/ps_4heap.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/ps_5merge.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/ps_6bdb.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/ps_7ndb.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/sp.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/subselect.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/type_ranges.result:
        Adjusted the results after having fixed bug #19714.
      mysql-test/r/view.result:
        Added a test case for bug #19714.
      mysql-test/t/view.test:
        Added a test case for bug #19714.
      31ace3a8
  22. 06 Jul, 2006 1 commit
  23. 04 Jul, 2006 1 commit
    • unknown's avatar
      Bug #16110: insert permitted into view col w/o default value · 5d0a1a1e
      unknown authored
      When compiling INSERT statements the check whether columns are provided values
      depends on the flag whether a field is used in that query (Field::query_id).
      However the check for updatability of VIEW columns (check_view_insertability())
      was calling fix_fields() and thus setting the Field::query_id even for the 
      view fields that are not referenced in the current INSERT statement.
      So the correct check for columns without default values 
      ( check_that_all_fields_are_given_values() ) is assuming that all the VIEW
      columns were mentioned in the INSERT field list and was issuing no 
      warnings or errors.
      Fixed check_view_insertability() to turn off the flag whether or not to set
      Field::query_id (THREAD::set_query_id) before calling fix fields and restore
      it when it's done.
      
      
      mysql-test/r/view.result:
        Bug #16110: insert permitted into view col w/o default value
          * test case
      mysql-test/t/view.test:
        Bug #16110: insert permitted into view col w/o default value
          * test case
      sql/sql_insert.cc:
        Bug #16110: insert permitted into view col w/o default value
          * avoid setting the "field used" flag for fields when checking view columns 
            for updatability.
          * a missing DBUG_RETURN added.
      5d0a1a1e
  24. 27 Jun, 2006 1 commit
    • unknown's avatar
      Bug#17203: "sql_no_cache sql_cache" in views created from prepared statement · 04193106
      unknown authored
      The problem was that we restored SQL_CACHE, SQL_NO_CACHE flags in SELECT
      statement from internal structures based on value set later at runtime, not
      the original value set by the user.
      
      The solution is to remember that original value.
      
      
      mysql-test/r/auto_increment.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/func_compress.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/func_math.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/func_system.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/func_time.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/information_schema.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/query_cache.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/rpl_get_lock.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/rpl_master_pos_wait.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/show_check.result:
        Add result for bug#17203.
      mysql-test/r/subselect.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/type_blob.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/variables.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/r/view.result:
        Update result to not report SQL_NO_CACHE if it wasn't there at first place.
      mysql-test/t/show_check.test:
        Add test case for bug#17203.
      sql/sql_lex.cc:
        Reset SELECT_LEX::sql_cache together with SELECT_LEX::options.
      sql/sql_lex.h:
        Add SELECT_LEX::sql_cache field to store original user setting.
      sql/sql_select.cc:
        Output SQL_CACHE and SQL_NO_CACHE depending on stored original user setting.
      sql/sql_yacc.yy:
        Make effect of SQL_CACHE and SQL_NO_CACHE mutually exclusive.  Ignore
        SQL_CACHE if SQL_NO_CACHE was used.  Remember what was set by the user.
        Reset SELECT_LEX::sql_cache together with SELECT_LEX::options.
      04193106
  25. 09 Jun, 2006 1 commit
  26. 06 Jun, 2006 1 commit
    • unknown's avatar
      Added --pipe option for faster compile · 6504c296
      unknown authored
      Changed error to be more descriptive when you are refering to a not existing key
      Fixed core dump in view test and changed to better error message
      
      
      BUILD/compile-pentium64-debug-max:
        Added --pipe option for faster compile
        (This changset was missing in the tree I used to rebuild a new 5.1 tree)
      BUILD/compile-pentium64-debug:
        Added --pipe option for faster compile
        (This changset was missing in the tree I used to rebuild a new 5.1 tree)
      mysql-test/include/common-tests.inc:
        Changed error to be more descriptive
      mysql-test/r/compress.result:
        Changed error to be more descriptive
      mysql-test/r/explain.result:
        Changed error to be more descriptive
      mysql-test/r/key_cache.result:
        Changed error to be more descriptive
      mysql-test/r/preload.result:
        Changed error to be more descriptive
      mysql-test/r/select.result:
        Changed error to be more descriptive
      mysql-test/r/ssl.result:
        Changed error to be more descriptive
      mysql-test/r/ssl_compress.result:
        Changed error to b...
      6504c296
  27. 01 Jun, 2006 2 commits
    • unknown's avatar
      Bug#19066 (DELETE FROM inconsistency for NDB): · 5bd78a97
      unknown authored
      Under row-based replication, DELETE FROM will now always be
      replicated as individual row deletions, while TRUNCATE TABLE will
      always be replicated as a statement.
      
      
      mysql-test/extra/rpl_tests/rpl_ddl.test:
        Using --echo instead of SELECT to print message.
      mysql-test/r/binlog_row_mix_innodb_myisam.result:
        Result change.
      mysql-test/r/federated.result:
        Result change.
      mysql-test/r/range.result:
        Result change.
      mysql-test/r/rpl_sp_effects.result:
        Result change.
      mysql-test/r/show_check.result:
        Result change.
      mysql-test/r/sp-error.result:
        Result change.
      mysql-test/r/sp.result:
        Result change.
      mysql-test/r/timezone2.result:
        Result change.
      mysql-test/r/trigger-grant.result:
        Result change.
      mysql-test/r/type_datetime.result:
        Result change.
      mysql-test/r/type_ranges.result:
        Result change.
      mysql-test/r/type_timestamp.result:
        Result change.
      mysql-test/r/view.result:
        Result change.
      mysql-test/t/archive.test:
        Test contain statements that only works for statement-based logging.
      mysql-test/t/disabled.def:
        Disabling test due to reported bug.
      mysql-test/t/federated.test:
        Adding ORDER BY clause to SELECT statements
      mysql-test/t/range.test:
        Adding ORDER BY clause to SELECT (sub-)statement
      mysql-test/t/rpl_sp_effects.test:
        Adding ORDER BY clause to SELECT statement.
      mysql-test/t/show_check.test:
        Replacing DELETE FROM without WHERE with TRUNCATE TABLE.
      mysql-test/t/sp-error.test:
        Replacing DELETE FROM without WHERE with TRUNCATE TABLE.
      mysql-test/t/sp.test:
        Adding ORDER BY clause to SELECT statement.
      mysql-test/t/timezone2.test:
        Replacing DELETE FROM without WHERE with TRUNCATE TABLE.
      mysql-test/t/trigger-grant.test:
        Replacing DELETE FROM without WHERE with TRUNCATE TABLE.
      mysql-test/t/type_datetime.test:
        Adding ORDER BY clause to SELECT statement.
      mysql-test/t/type_ranges.test:
        Replacing DELETE FROM without WHERE with TRUNCATE TABLE.
      mysql-test/t/type_timestamp.test:
        Replacing DELETE FROM without WHERE with TRUNCATE TABLE.
      mysql-test/t/view.test:
        Adding ORDER BY clause to SELECT statement.
      sql/sql_class.h:
        Adding member function to set replication to statement-based.
      sql/sql_delete.cc:
        When row-based replication is used, DELETE FROM will always delete the
        contents of the table row-by-row and not use delete_all_rows().
      mysql-test/extra/rpl_tests/rpl_truncate.test:
        New BitKeeper file ``mysql-test/extra/rpl_tests/rpl_truncate.test''
      mysql-test/extra/rpl_tests/rpl_truncate_helper.inc:
        New BitKeeper file ``mysql-test/extra/rpl_tests/rpl_truncate_helper.inc''
      mysql-test/r/rpl_truncate_2myisam.result:
        New BitKeeper file ``mysql-test/r/rpl_truncate_2myisam.result''
      mysql-test/r/rpl_truncate_3innodb.result:
        New BitKeeper file ``mysql-test/r/rpl_truncate_3innodb.result''
      mysql-test/r/rpl_truncate_7ndb.result:
        New BitKeeper file ``mysql-test/r/rpl_truncate_7ndb.result''
      mysql-test/t/rpl_truncate_2myisam.test:
        New BitKeeper file ``mysql-test/t/rpl_truncate_2myisam.test''
      mysql-test/t/rpl_truncate_3innodb.test:
        New BitKeeper file ``mysql-test/t/rpl_truncate_3innodb.test''
      mysql-test/t/rpl_truncate_7ndb.test:
        New BitKeeper file ``mysql-test/t/rpl_truncate_7ndb.test''
      5bd78a97
    • unknown's avatar
      Post-merge fixes · 9a09091f
      unknown authored
      9a09091f
  28. 22 May, 2006 1 commit
    • unknown's avatar
      Post-review fixes for bug #19089 · 9f628bb2
      unknown authored
      mysql-test/r/view.result:
        Post-review fixes.
      sql/field.cc:
        Post-review fixes.
      sql/field.h:
        Post-review fixes.
      sql/sql_select.cc:
        Post-review fixes.
      9f628bb2
  29. 21 May, 2006 1 commit
    • unknown's avatar
      Fixed bug #19089. · 765a7d69
      unknown authored
      When a CREATE TABLE command created a table from a materialized
      view id does not inherit default values from the underlying table.
      Moreover the temporary table used for the view materialization
      does not inherit those default values.
      In the case when the underlying table contained ENUM fields it caused
      misleading error messages. In other cases the created table contained
      wrong default values.
      The code was modified to ensure inheritance of default values for
      materialized views.
      
      
      mysql-test/r/view.result:
        Added a test case for bug #19089.
      mysql-test/t/view.test:
        Added a test case for bug #19089.
      sql/field.cc:
        Fixed bug ##19089.
        Added field dflt_field to the class Field.
        This field is set for temp table fields that inherits
        default values of items from which they are created.
      sql/field.h:
        Fixed bug ##19089.
        Added field dflt_field to the class Field.
        This field is set for temp table fields that inherits
        default values of items from which they are created.
      sql/sql_select.cc:
        Fixed bug #19089.
        When a CREATE TABLE command created a table from a materialized
        view id does not inherit default values from the underlying table.
        Moreover the temporary table used for the view materialization
        does not inherit those default values.
        The code was modified to ensure inheritance of default values for
        materialized views.
      765a7d69
  30. 17 May, 2006 2 commits
    • unknown's avatar
      Fixed bug#19077: A nested materialized derived table is used before being populated. · 5e38e2ce
      unknown authored
      The convert_constant_item() function converts constant items to ints on
      prepare phase to optimize execution speed. In this case it tries to evaluate
      subselect which contains a derived table and is contained in a derived table. 
      All derived tables are filled only after all derived tables are prepared.
      So evaluation of subselect with derived table at the prepare phase will
      return a wrong result.
      
      A new flag with_subselect is added to the Item class. It indicates that
      expression which this item represents is a subselect or contains a subselect.
      It is set to 0 by default. It is set to 1 in the Item_subselect constructor
      for subselects.
      For Item_func and Item_cond derived classes it is set after fixing any argument
      in Item_func::fix_fields() and Item_cond::fix_fields accordingly.
      The convert_constant_item() function now doesn't convert a constant item
      if the with_subselect flag set in it. 
      
      
      mysql-test/t/view.test:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/t/subselect.test:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/r/view.result:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      mysql-test/r/subselect.result:
        Added test case for bug#19077: A nested materialized derived table is used before being populated.
      sql/item_subselect.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        The Item_subselect class constructor sets new with_subselect flag to 1.
      sql/item_func.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        
        The Item_func::fix_fields() sets new with_subselect flag from with_subselect flags of its arguments.
      sql/item_cmpfunc.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        The convert_constant_item() function now doesn't convert a constant item
        with the with_subselect flag set.
        The Item_cond::fix_fields() sets new with_subselect flag from with_subselect flags of its arguments.
      sql/item.cc:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        Set new with_subselect flag to default value - 0 in the Item constructor.
      sql/item.h:
        Fixed bug#19077: A nested materialized derived table is used before being populated.
        A new flag with_subselect is added to the Item class. It indicates that
        expression which this item represents is a subselect or contains a subselect.
        It is set to 0 by default.
      5e38e2ce
    • unknown's avatar
      Fixed bug #19573. · f5edaf09
      unknown authored
      The select statement that specified a view could be
      slightly changed when the view was saved in a frm file.
      In particular references to an alias name in the HAVING
      clause could be substituted for the expression named by
      this alias.
      This could result in an error message for a query of
      the form SELECT * FROM <view>. Yet no such message
      appeared when executing the query specifying the view.
      
      
      mysql-test/r/having.result:
        Adjusted results after fixing bug #19573.
      mysql-test/r/view.result:
        Added a test case for bug #19573.
      mysql-test/t/view.test:
        Added a test case for bug #19573.
      f5edaf09
  31. 13 May, 2006 1 commit
    • unknown's avatar
      Fixed bug #19490. The bug that caused server crash manifested · a12e597d
      unknown authored
      itself when executing queries referring to a view with GROUP BY
      an expression containing non-constant interval.
      It happened because Item_date_add_interval::eq neglected the
      fact that the method can be applied to an expression of the form
          date(col) + interval time_to_sec(col) second
      at the time when col could not be evaluated yet.
      An attempt to evaluate time_to_sec(col) in this method resulted
      in a crash.
      
      
      mysql-test/r/view.result:
        Added a test case for bug #19490.
      mysql-test/t/view.test:
        Added a test case for bug #19490.
      sql/item_timefunc.cc:
        Fixed bug #19490. The bug that caused server crash manifested
        itself when executing queries referring to a view with GROUP BY
        an expression containing non-constant interval.
        It happened because Item_date_add_interval::eq neglected the
        fact that the method can be applied to an expression of the form
            date(col) + interval time_to_sec(col) second
        at the time when col could not be evaluated yet.
        An attempt to evaluate time_to_sec(col) in this method resulted
        in a crash.
        The code of Item_date_add_interval::eq was corrected.
      a12e597d
  32. 11 May, 2006 1 commit
    • unknown's avatar
      BUG#7549: Missing error message for invalid view selection with subquery. · 1dd4b75d
      unknown authored
      When a view statement is compiled on CREATE VIEW time, most of the 
      optimizations should not be done. Finding the right optimization 
      for a subquery is one of them.
      Unfortunately the optimizer is resolving the column references of 
      the left expression of IN subqueries in the process of deciding 
      witch optimization to use (if needed). So there should be a 
      special case in Item_in_subselect::fix_fields() : check the 
      validity of the left expression of IN subqueries in CREATE VIEW 
      mode and then proceed as normal. 
      
      
      mysql-test/r/subselect.result:
        test case
      mysql-test/r/view.result:
        chnaged explain due to column being resolved
      mysql-test/t/subselect.test:
        test case
      sql/item_subselect.cc:
        overloaded fix_fields to fix the left_expr in prepare_view_mode
      sql/item_subselect.h:
        fix_fields overloaded so it can prepare left_expr
      1dd4b75d
  33. 26 Apr, 2006 1 commit
  34. 22 Apr, 2006 1 commit
    • unknown's avatar
      Fix for bug#15153 "CONVERT_TZ() is not allowed in all places in VIEWs". · fed9d199
      unknown authored
      Error was emitted when one tried to select information from view which used
      merge algorithm and which also had CONVERT_TZ() function in its select list.
      
      This bug was caused by wrong assumption that global table list for view
      which is handled using merge algorithm begins from tables belonging to
      the main select of this view. Nowadays the above assumption is not true only
      when one uses convert_tz() function in view's select list, but in future
      other cases may be added (for example we may support merging of views
      with subqueries in select list one day). Relying on this false assumption
      led to the usage of wrong table list for field lookups and therefor errors. 
      
      With this fix we explicitly use pointer to the beginning of main select's
      table list.
      
      
      mysql-test/r/timezone_grant.result:
        Added additional test case for bug#15153 "CONVERT_TZ() is not allowed in
        all places in VIEWs" that checks that usage of CONVERT_TZ() function in view
        does not require additional privileges.
      mysql-test/r/view.result:
        Added test case for bug#15153 "CONVERT_TZ() is not allowed in all places in 
        VIEWs".
      mysql-test/t/timezone_grant.test:
        Added additional test case for bug#15153 "CONVERT_TZ() is not allowed in
        all places in VIEWs" that checks that usage of CONVERT_TZ() function in view
        does not require additional privileges.
      mysql-test/t/view.test:
        Added test case for bug#15153 "CONVERT_TZ() is not allowed in all places in 
        VIEWs".
      sql/sql_view.cc:
        mysql_make_view():
          We should not assume that global table list for view which is handled using
          merge algorithm begins from tables belonging to the main select of this
          view. Nowadays the above assumption is not true only when one uses
          convert_tz() function in view's select list, but in future other cases
          may be added (for example we may support merging of views with subqueries
          in select list one day). So let us instead explicitly use pointer to the
          beginning of main select's table list.
      fed9d199