An error occurred fetching the project authors.
  1. 06 Jul, 2006 1 commit
    • unknown's avatar
      A fix and a test case for Bug#19399 "res 'Lost Connection' when · 8995277a
      unknown authored
      dropping/creating tables".
      
      The bug could lead to a crash when multi-delete statements were
      prepared and used with temporary tables.
      
      The bug was caused by lack of clean-up of multi-delete tables before
      re-execution of a prepared statement. In a statement like
      DELETE t1 FROM t1, t2 WHERE ... the first table list (t1) is
      moved to lex->auxilliary_table_list and excluded from lex->query_tables
      or select_lex->tables. Thus it was unaccessible to reinit_stmt_before_use
      and not cleaned up before re-execution of a prepared statement. 
      
      
      mysql-test/r/ps.result:
        Updated test results (Bug#19399)
      mysql-test/t/ps.test:
        A test case for Bug#19399 "Stored Procedures 'Lost Connection' when 
        dropping/creating tables": test that multi-delete
        tables are cleaned up properly before re-execution.
      sql/sql_lex.cc:
        Always initialize auxilliary_table_list when we initialize the lex:
        this way we don't have to check that lex->sql_command equals to
        SQLCOM_DELETE_MULTI whenever we need to access auxilliary_table_list.
        In particular, in reinit_stmt_before_use we can simply check that
        auxilliary_table_list is not NULL and clean it up if the check returns
        a true value.
      sql/sql_prepare.cc:
        Move the one table clean-up functionality to a method of st_table_list.
        Clean up auxiliary_table_list if it's not empty.
      sql/table.cc:
        Implement st_table_list::reinit_before_use().
      sql/table.h:
        Declare st_table_list::reinit_before_use().
      8995277a
  2. 26 Jun, 2006 1 commit
    • unknown's avatar
      A fix and a test case for · d6bcbfbe
      unknown authored
       Bug#19022 "Memory bug when switching db during trigger execution"
       Bug#17199 "Problem when view calls function from another database."
       Bug#18444 "Fully qualified stored function names don't work correctly in
                  SELECT statements"
      
       Documentation note: this patch introduces a change in behaviour of prepared
       statements.
      
       This patch adds a few new invariants with regard to how THD::db should
       be used. These invariants should be preserved in future:
      
        - one should never refer to THD::db by pointer and always make a deep copy
          (strmake, strdup)
        - one should never compare two databases by pointer, but use strncmp or
          my_strncasecmp
        - TABLE_LIST object table->db should be always initialized in the parser or
          by creator of the object.
      
          For prepared statements it means that if the current database is changed
          after a statement is prepared, the database that was current at prepare
          remains active. This also means that you can not prepare a statement that
          implicitly refers to the current database if the latter is not set.
          This is not documented, and therefore needs documentation. This is NOT a
          change in behavior for almost all SQL statements except:
           - ALTER TABLE t1 RENAME t2 
           - OPTIMIZE TABLE t1
           - ANALYZE TABLE t1
           - TRUNCATE TABLE t1 --
           until this patch t1 or t2 could be evaluated at the first execution of
           prepared statement. 
      
           CURRENT_DATABASE() still works OK and is evaluated at every execution
           of prepared statement.
      
           Note, that in stored routines this is not an issue as the default
           database is the database of the stored procedure and "use" statement
           is prohibited in stored routines.
      
        This patch makes obsolete the use of check_db_used (it was never used in the
        old code too) and all other places that check for table->db and assign it
        from THD::db if it's NULL, except the parser.
      
       How this patch was created: THD::{db,db_length} were replaced with a
       LEX_STRING, THD::db. All the places that refer to THD::{db,db_length} were
       manually checked and:
        - if the place uses thd->db by pointer, it was fixed to make a deep copy
        - if a place compared two db pointers, it was fixed to compare them by value
          (via strcmp/my_strcasecmp, whatever was approproate)
       Then this intermediate patch was used to write a smaller patch that does the
       same thing but without a rename.
      
       TODO in 5.1:
         - remove check_db_used
         - deploy THD::set_db in mysql_change_db
      
       See also comments to individual files.
      
      
      mysql-test/r/create.result:
        Modify the result file: a database can never be NULL.
      mysql-test/r/ps.result:
        Update test results (Bug#17199 et al)
      mysql-test/r/sp.result:
        Update test results (Bug#17199 et al)
      mysql-test/t/create.test:
        Update the id of the returned error.
      mysql-test/t/ps.test:
        Add test coverage for prepared statements and current database. In scope of
        work on Bug#17199 "Problem when view calls function from another database."
      mysql-test/t/sp.test:
        Add a test case for Bug#17199 "Problem when view calls function from another
        database." and Bug#18444 "Fully qualified stored function names don't work
        correctly in SELECT statements". Test a complementary problem.
      sql/item_strfunc.cc:
        Touch the code that reads thd->db (cleanup).
      sql/log_event.cc:
        While we are at it, replace direct access to thd->db with a method.
        Should simplify future conversion of THD::db to LEX_STRING.
      sql/slave.cc:
        While we are at it, replace direct access to thd->db with a method.
        Should simplify future conversion of THD::db to LEX_STRING.
      sql/slave.h:
        Remove a declaration for a method that is used only in one module.
      sql/sp.cc:
        Rewrite sp_use_new_db: this is a cleanup that I needed in order to understand
        this function and ensure that it has no bugs.
      sql/sp.h:
        Add a new declaration for sp_use_new_db (uses LEX_STRINGs) and a comment.
      sql/sp_head.cc:
        - drop sp_name_current_db_new - a creator of sp_name class that was used
        when sp_name was created for an identifier without an explicitly initialized
        database. Now we pass thd->db to constructor of sp_name right in the 
        parser.
        - rewrite sp_head::init_strings: name->m_db is always set now
        - use the new variant of sp_use_new_db
        - we don't need to update thd->db with SP MEM_ROOT pointer anymore when
        parsing a stored procedure, as noone will refer to it (yes!)
      sql/sp_head.h:
        - remove unneded methods and members
      sql/sql_class.h:
        - introduce 3 THD  methods to work with THD::db:
          .set_db to assign the current database
          .reset_db to reset the current database (temporarily) or set it to NULL
          .opt_copy_db_to - to deep-copy thd->db to a pointer if it's not NULL
      sql/sql_db.cc:
        While we are at it, replace direct access to thd->db with a method.
        Should simplify future conversion of THD::db to LEX_STRING.
      sql/sql_insert.cc:
        - replace checks with asserts: table_list->db must be always set in the parser.
      sql/sql_lex.h:
        - add a comment
      sql/sql_parse.cc:
        - implement the invariant described in the changeset comment.
        - remove juggling with lex->sphead in SQLCOM_CREATE_PROCEDURE:
          now db_load_routine uses its own LEX object and doesn't damage the main
          LEX.
        - add DBUG_ASSERT(0) to unused "check_db_used"
      sql/sql_table.cc:
        - replace a check with an assert (table_ident->db)
      sql/sql_trigger.cc:
        While we are at it, replace direct access to thd->db with a method.
        Should simplify future conversion of THD::db to LEX_STRING.
      sql/sql_udf.cc:
        - use thd->set_db instead of direct modification of to thd->db
      sql/sql_view.cc:
        - replace a check with an assert (view->db)
      sql/sql_yacc.yy:
        - make sure that we always copy table->db or name->db or ident->db or
          select_lex->db from thd->db if the former is not set. If thd->db
          is not set but is accessed, return an error.
      sql/tztime.cc:
        - be nice, never copy thd->db by pointer.
      d6bcbfbe
  3. 29 May, 2006 1 commit
  4. 25 Apr, 2006 1 commit
    • unknown's avatar
      A fix and a test case for Bug#19308 "REPAIR/OPTIMIZE/ANALYZE · f28b9a34
      unknown authored
      supported in SP but not in PS": just enable them in prepared
      statements, the supporting functionality was implemented when
      they were enabled in stored procedures.
      
      
      mysql-test/r/ps.result:
        Bug#19308: test results fixed.
      mysql-test/r/ps_1general.result:
        Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
        allowed in prepared statements.
      mysql-test/r/sp-dynamic.result:
        Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
        allowed in prepared statements.
      mysql-test/t/ps.test:
        Add a test case for Bug#19308 "REPAIR/OPTIMIZE/ANALYZE supported 
        in SP but not in PS"
      mysql-test/t/ps_1general.test:
        Adjust existing test cases (ANALYZE/OPTIMIZE/REPAIR are now
        allowed in prepared statements.
      sql/sql_prepare.cc:
        Enable ANALYZE, OPTIMIZE, REPAIR in prepared statements.
      f28b9a34
  5. 12 Apr, 2006 1 commit
    • unknown's avatar
      Post-merge fixes. Add a new error message for max_prepared_stmt_count · c5ed5c4b
      unknown authored
      limit.
      
      
      mysql-test/r/ps.result:
        Post-merge fixes.
      mysql-test/t/ps.test:
        Post-merge fixes.
      sql/share/errmsg.txt:
        Add a new error message for max_prepared_stmt_count limit,
        we can do it in 5.0
      sql/sql_class.cc:
        Post-merge fixes.
      sql/sql_class.h:
        Post-merge fixes.
      sql/sql_prepare.cc:
        Post-merge fixes.
      c5ed5c4b
  6. 07 Apr, 2006 2 commits
    • unknown's avatar
      A fix and a test case for Bug#16365 "Prepared Statements: DoS with · 5b5530da
      unknown authored
      too many open statements". The patch adds a new global variable
      @@max_prepared_stmt_count. This variable limits the total number
      of prepared statements in the server. The default value of
      @@max_prepared_stmt_count is 16382. 16382 small statements
      (a select against 3 tables with GROUP, ORDER and LIMIT) consume 
      100MB of RAM. Once this limit has been reached, the server will 
      refuse to prepare a new statement and return ER_UNKNOWN_ERROR 
      (unfortunately, we can't add new errors to 4.1 without breaking 5.0). The limit is changeable after startup
      and can accept any value from 0 to 1 million. In case
      the new value of the limit is less than the current
      statement count, no new statements can be added, while the old
      still can be used. Additionally, the current count of prepared 
      statements is now available through a global read-only variable 
      @@prepared_stmt_count.
      
      
      mysql-test/r/ps.result:
        Test results fixed (a test case for Bug#16365)
      mysql-test/t/ps.test:
        A test case for Bug#16365 "Prepared Statements: DoS with too many 
        open statements". Also fix statement leaks in other tests.
      sql/mysql_priv.h:
        Add declarations for new global variables.
      sql/mysqld.cc:
        Add definitions of max_prepared_stmt_count, prepared_stmt_count.
      sql/set_var.cc:
        Implement support for @@prepared_stmt_count and 
        @@max_prepared_stmt_count. Currently these variables are queried
        without acquiring LOCK_prepared_stmt_count due to limitations of
        the set_var/sys_var class design. Updates are, however, protected 
        with a lock.
      sql/set_var.h:
        New declarations to add support for @@max_prepared_stmt_count.
        Implement a new class, where the lock to be used when updating
        a variable is a parameter.
      sql/sql_class.cc:
        Add accounting of the total number of prepared statements in the
        server to the methods of Statement_map.
      sql/sql_class.h:
        Add accounting of the total number of prepared statements in the
        server to the methods of Statement_map.
      sql/sql_prepare.cc:
        Statement_map::insert will now send a message in case of an
        error.
      5b5530da
    • unknown's avatar
      A fix and a test case for Bug#16248 "WHERE (col1,col2) IN ((?,?)) · 9b6e83f4
      unknown authored
      gives wrong results". Implement previously missing 
      Item_row::cleanup. The bug is not repeatable in 5.0, probably 
      due to a coincidence: the problem is present in 5.0 as well.
      
      
      mysql-test/r/ps.result:
        Update the result file (Bug#16248)
      mysql-test/t/ps.test:
        Add a test case for Bug#16248 "WHERE (col1,col2) IN ((?,?)) gives 
        wrong results"
      sql/item_row.cc:
        Implement Item_row::cleanup(): we should reset used_tables_cache
        before reexecution of a prepared statement. In case ROW
        arguments contain a placeholder, used_tables_cache has PARAM_TABLE
        bit set in statement prepare. As a result, when executing a statement,
        the condition push down algorithm (make_cond_for_table) would think
        that the WHERE clause belongs to the non-existent PARAM_TABLE and
        wouldn't attach the WHERE clause to any of the real tables, 
        effectively optimizing the clause away.
      sql/item_row.h:
        Remove a never used member 'array_holder'. Add declaration for
        Item_row::cleanup.
      9b6e83f4
  7. 28 Mar, 2006 1 commit
    • unknown's avatar
      Post review fixes for BUG#16474: SP crashed MySQL. · 537ec1e6
      unknown authored
      mysql-test/r/ps.result:
        Added test coverage for "order by" in prepared statements (related to BUG#16474).
      mysql-test/r/sp.result:
        Added reference to test case for BUG#16474.
      mysql-test/t/ps.test:
        Added test coverage for "order by" in prepared statements (related to BUG#16474).
      mysql-test/t/sp.test:
        Added reference to test case for BUG#16474.
      sql/sql_select.cc:
        Fixed comment and test for basic_const_item() instead of is_splocal().
      537ec1e6
  8. 27 Feb, 2006 1 commit
  9. 23 Feb, 2006 1 commit
    • unknown's avatar
      Remove 'delayed' to make the test deterministic (already · ea9ea952
      unknown authored
      fixed in 5.0).
      A post-review fix (Bug#13134)
      
      
      mysql-test/r/heap.result:
        Remove 'delayed' to make the test deterministic.
      mysql-test/r/ps.result:
        Remove an unneeded drop table (test case for Bug#13134)
      mysql-test/t/heap.test:
        Remove 'delayed' to make the test deterministic.
      mysql-test/t/ps.test:
        A post-review fix (Bug#13134)
      ea9ea952
  10. 21 Feb, 2006 1 commit
    • unknown's avatar
      A fix and a test case for Bug#13134 "Length of VARCHAR() utf8 · 9cf3f255
      unknown authored
      column is increasing when table is recreated with PS/SP":
      make use of create_field::char_length more consistent in the code.
      Reinit create_field::length from create_field::char_length
      for every execution of a prepared statement (actually fixes the 
      bug).
      
      
      mysql-test/r/ps.result:
        Test results fixed (Bug#13134)
      mysql-test/t/ps.test:
        A test case for Bug#13134 "Length of VARCHAR() utf8 column is 
        increasing when table is recreated with PS/SP"
      sql/field.cc:
        Move initialization of create_field::char_length to the constructor
        of create_field.
      sql/field.h:
        Rename chars_length to char_length (to be consistent with
        how this term is used throughout the rest of the code).
      sql/sql_parse.cc:
        Initialize char_length in add_field_to_list. This function
        effectively works as another create_field constructor.
      sql/sql_table.cc:
        Reinit length from char_length for every field in 
        mysql_prepare_table. This is not needed if we're executing
        a statement for the first time, however, at subsequent executions
        length contains the number of bytes, not characters (as it's expected 
        to).
      9cf3f255
  11. 16 Jan, 2006 1 commit
    • unknown's avatar
      A fix for Bug#13337 "ps test fails if configure wo/ usc2" · 17ccdd1a
      unknown authored
      mysql-test/r/ctype_ucs.result:
        Test results changed (Bug#13337)
      mysql-test/r/ps.result:
        Test results changed (Bug#13337)
      mysql-test/t/ctype_ucs.test:
        Fix Bug#13337 (move the test that uses UCS character set to 
        ctype_ucs)
      mysql-test/t/ps.test:
        Fix Bug#13337 (move the test that uses UCS character set to 
        ctype_ucs)
      17ccdd1a
  12. 14 Jan, 2006 2 commits
  13. 28 Nov, 2005 1 commit
  14. 25 Nov, 2005 2 commits
    • unknown's avatar
      Post-merge fixes. · 2e79201c
      unknown authored
      2e79201c
    • unknown's avatar
      A fix and a test case for Bug#14410 "Crash in Enum or Set type in · 2a1ae3a5
      unknown authored
      CREATE TABLE and PS/SP": make sure that 'typelib' object for
      ENUM values and 'Item_string' object for DEFAULT clause are 
      created in the statement memory root.
      
      
      mysql-test/r/ps.result:
        Test results has been fixed (Bug#14410)
      mysql-test/t/ps.test:
        A test case for Bug#14410 "Crash in Enum or Set type in CREATE 
        TABLE and PS/SP"
      sql/mysql_priv.h:
        typelib() function declaration has been changed.
      sql/sql_table.cc:
        Supply the statement memory root to use in typelib() and
        safe_charset_converter() functions to ensure that objects 
        created during the first execution of CREATE TABLE statement
        are allocated in persistent memory of the statement.
      sql/table.cc:
        Change typelib() function to require MEM_ROOT.
      2a1ae3a5
  15. 23 Nov, 2005 1 commit
  16. 08 Sep, 2005 1 commit
    • unknown's avatar
      fix for bug #12651 (item of a prepared query allocated on non-permanent · f2571638
      unknown authored
      are thus dangling later)
      
      
      mysql-test/r/ps.result:
        test for bug #12651
        (data allocated on thd's arena but not on permanent arena)
      mysql-test/t/ps.test:
        test for bug #12651
        (data allocated on thd's arena but not on permanent arena)
      sql/sql_base.cc:
        if there is tree transformation then backup the current arena
        and use permanent one (for PS) otherwise the data will be deallocated
        after the prepare process is finished.
        this bug was introduced with the recent natural join patch
      f2571638
  17. 06 Sep, 2005 1 commit
  18. 15 Jul, 2005 2 commits
    • unknown's avatar
      A fix and a test case for Bug#9359 "Prepared statements take snapshot · e83e1053
      unknown authored
       of system vars at PREPARE time": implement a special Item
      to handle system variables. This item substitutes itself with 
      a basic constant containing variable value at fix_fields.
      
      
      mysql-test/r/ps.result:
        - test results fixed (Bug#9359).
      mysql-test/t/ps.test:
        - add a test case for Bug#9359 "Prepared statements take snapshot
         of system vars at PREPARE time"
      sql/item_func.cc:
        - implement Item_func_get_system_var: we should not evaluate system
        variables in the parser, but instead should create an item which 
        is evaluated to a constant at execute.
        - remove an unused function
      sql/item_func.h:
        Add a new item, Item_func_get_system_var
      sql/mysql_priv.h:
        Move necessary declarations to make set_var.h objects visible in 
        item_func.h
      sql/set_var.cc:
        - we should not print to network from get_system_var: if it's called
        from prepared statement prepare, we get packets out of order when using
        the binary protocol. Instead report the error to be sent to the user later.
        This is a backport from 5.0.
      sql/set_var.h:
        - declaration of enum_var_type moved to mysql_priv.h
      e83e1053
    • unknown's avatar
      b5d9a764
  19. 14 Jul, 2005 2 commits
    • unknown's avatar
      Post-merge fixes. · ef095886
      unknown authored
      ef095886
    • unknown's avatar
      A fix and a test case for Bug#11299 "prepared statement makes wrong SQL · cb7a5b53
      unknown authored
       syntax in binlog which stops replication":
      disallow the use of parameter markers which can lead to generation
      of malformed binlog queries. 
      
      
      mysql-test/r/ps.result:
        Test results fixed: a test case for Bug#11299
      mysql-test/t/ps.test:
        A test case for Bug#11299
      sql/sql_lex.cc:
        Introduce a new parser token for a parameter marker. Make sure
        that a parameter marker can not be used in a query which, when
        transformed to a binlog query, becomes grammatically incorrect.
      sql/sql_yacc.yy:
        The check for COM_PREPARE has been moved into the lexer.
      mysql-test/var:
        New BitKeeper file ``mysql-test/var''
      cb7a5b53
  20. 13 Jul, 2005 4 commits
    • unknown's avatar
      A test case for Bug#9442 "Set parameter make query fail if column · c663aa89
      unknown authored
      character set is UCS2".
      The bug is no longer repeatable.
      
      
      mysql-test/r/ps.result:
        Test results fixed (a test case for Bug#9442)
      mysql-test/t/ps.test:
        A test case for Bug#9442 "Set parameter make query fail if column 
        character set is UCS2
      c663aa89
    • unknown's avatar
      A fix and a test case for Bug#9379 (collation of a parameter marker is · 98248f04
      unknown authored
      binary).
      
      
      mysql-test/r/ps.result:
        Test results fixed (Bug#9379)
      mysql-test/t/ps.test:
        A test case for Bug#9379 (collation of a parameter marker is binary)
      sql/item.cc:
        - set Item_param::collation to str_value collation, if Item_param
        is assigned a string. Reset it to default in Item_param::reset() (on 
        the next execution it can be assigned a number).
      sql/item_func.cc:
        - now that item collation can change between executions
        (if this item is Item_param), we need to register the change
        of the execution tree in the rollback list.
      98248f04
    • unknown's avatar
      Cleanup after test for Bug#11458 · f5c8f42f
      unknown authored
      f5c8f42f
    • unknown's avatar
      - a fix for Bug#11458 "Prepared statement with subselects return random · ece17ba3
      unknown authored
      data": remove the fix for another bug (8807) that
      added OUTER_REF_TABLE_BIT to all subqueries that used a placeholder
      to prevent their evaluation at prepare. As this bit hanged in 
      Item_subselect::used_tables_cache for ever, a constant subquery with
      a placeholder was never evaluated as such, which caused wrong 
      choice of the execution plan for the statement.
      - to fix Bug#8807 backport a better fix from 5.0
      - post-review fixes.
      
      
      mysql-test/r/ps.result:
        Bug#11458: test results fixed
      mysql-test/t/ps.test:
        - add a test case for Bug#11458 "Prepared statement with subselects return 
        random data"
      sql/item.cc:
        - remove unnecessary Item_param::fix_fields
        - fix Item_param::set_null to set item_type accordingly (safety:
          Item_param should behave like a basic constant).
      sql/item.h:
        Remove Item_param::fix_fields
      sql/item_subselect.h:
        Remove no more existing friend.
      sql/mysql_priv.h:
        Add UNCACHEABLE_PREPARE to mark all subqueries as uncacheable if
        in statement prepare (backport from 5.0).
      sql/sql_lex.h:
        Comment fixed.
      sql/sql_parse.cc:
        If in statement prepare, mark all subqueries as uncacheable (backport
        from 5.0)
      sql/sql_prepare.cc:
        Switch off the uncacheable flag from all subqueries after statement
        prepare is done (backport from 5.0)
      ece17ba3
  21. 20 Jun, 2005 2 commits
    • unknown's avatar
      Fix for bug #11060 "Server crashes on re-execution of prepared · 78e6794b
      unknown authored
      INSERT ... SELECT with UNION" (reviewed version).
      
      Altough bug manifest itself only starting from 5.0 it is better to
      apply fix to 4.1 to keep some assumptions true and make code more
      future-proof.
      
      
      mysql-test/r/ps.result:
        Added test case for bug #11060 "Server crashes on re-execution of
        prepared INSERT ... SELECT with UNION".
      mysql-test/t/ps.test:
        Added test case for bug #11060 "Server crashes on re-execution of
        prepared INSERT ... SELECT with UNION".
      sql/sql_insert.cc:
        select_insert::prepare():
          Item::fix_fields() methods operate assuming that LEX::current_select
          points to the select to which current item belongs. Thus
          during check_insert_fields() routine execution LEX::current_select
          should point ot the first select in query since this is the
          select with which items in insert list is associated.
          But if we have INSERT SELECT UNION SELECT type of query
          LEX::current_select will point to the fake_select_lex instead
          since select_insert::prepare() is called during processing of JOIN
          which corresponds to this select_lex.
          So we have set LEX::current_select before calling check_insert_fields()
          and restore it afterwards.
      78e6794b
    • unknown's avatar
      bug#10466: Datatype "timestamp" displays "YYYYMMDDHHMMSS" irrespective of display sizes. · d2b52d19
      unknown authored
       - Print warning that says display width is not supported for datatype TIMESTAMP, if user tries to create a TIMESTAMP column with display width.
       - Use display width for TIMESTAMP only in type_timestamp test to make sure warning is displayed correctly.
      
      
      mysql-test/include/ps_create.inc:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/alias.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/func_date_add.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/func_str.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/func_time.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/group_by.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/innodb.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/ps.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/ps_1general.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/ps_2myisam.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/ps_3innodb.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/ps_4heap.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/ps_5merge.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/ps_6bdb.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/ps_7ndb.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/select.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/r/type_timestamp.result:
        When display width is used for a TIMESTAMP column a warning is printed that the display width will be ignored.
      mysql-test/r/update.result:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/alias.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/func_date_add.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/func_str.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/func_time.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/group_by.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/innodb.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/ps.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/ps_4heap.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/ps_5merge.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/select.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      mysql-test/t/update.test:
        Reove all uses of display width in for TIMESTAMP columns, except in the type_timestamp test.
      sql/share/errmsg.txt:
        Correct swedish error message
      sql/sql_parse.cc:
        Print warning if datatype is TIMESTAMP and display width is used.
      d2b52d19
  22. 07 Jun, 2005 1 commit
    • unknown's avatar
      Patch two (the final one) for Bug#7306 "the server side preparedStatement · 5188f031
      unknown authored
       error for LIMIT placeholder".
      The patch adds grammar support for LIMIT ?, ? and changes the
      type of ST_SELECT_LEX::select_limit,offset_limit from ha_rows to Item*,
      so that it can point to Item_param.
      
      
      mysql-test/include/ps_modify.inc:
        Fix existing tests: now LIMIT can contain placeholders.
      mysql-test/include/ps_query.inc:
        Fix existing tests: now LIMIT can contain placeholders.
      mysql-test/r/ps.result:
        Add basic test coverage for LIMIT ?, ? and fix test results.
      mysql-test/r/ps_2myisam.result:
        Fix test results: now LIMIT can contain placeholders.
      mysql-test/r/ps_3innodb.result:
        Fix test results: now LIMIT can contain placeholders.
      mysql-test/r/ps_4heap.result:
        Fix test results: now LIMIT can contain placeholders.
      mysql-test/r/ps_5merge.result:
        Fix test results: now LIMIT can contain placeholders.
      mysql-test/r/ps_6bdb.result:
        Fix test results: now LIMIT can contain placeholders.
      mysql-test/r/ps_7ndb.result:
        Fix test results: now LIMIT can contain placeholders.
      mysql-test/t/ps.test:
        Add basic test coverage for LIMIT ?, ?.
      sql/item.h:
        Add a short-cut for (ulonglong) val_int() to Item.
        Add a constructor to Item_int() that accepts ulonglong.
        Simplify Item_uint constructor by using the c-tor above.
      sql/item_subselect.cc:
        Now select_limit has type Item *.
        We can safely create an Item in Item_exists_subselect::fix_length_and_dec():
        it will be allocated in runtime memory root and freed in the end of
        execution.
      sql/sp_head.cc:
        Add a special initalization state for stored procedures to 
        be able to easily distinguish the first execution of a stored procedure
        from prepared statement prepare.
      sql/sql_class.h:
        Introduce new state 'INITIALIZED_FOR_SP' to be able to easily distinguish
        the first execution of a stored procedure from prepared statement prepare.
      sql/sql_derived.cc:
        - use unit->set_limit() to set unit->select_limit_cnt, offset_limit_cnt
          evreryplace. Add a warning about use of set_limit in 
        mysql_derived_filling.
      sql/sql_error.cc:
        - use unit->set_limit() to set unit->select_limit_cnt, offset_limit_cnt
          evreryplace.
        - this change is also aware of bug#11095 "show warnings limit 0 returns 
        all rows instead of zero rows", so the one who merges the bugfix from
        4.1 can use local version of sql_error.cc.
      sql/sql_handler.cc:
        - use unit->set_limit() to initalize 
        unit->select_limit_cnt,offset_limit_cnt everyplace.
      sql/sql_lex.cc:
        Now ST_SELECT_LEX::select_limit, offset_limit have type Item *
      sql/sql_lex.h:
        Now ST_SELECT_LEX::select_limit, offset_limit have type Item *
      sql/sql_parse.cc:
        - use unit->set_limit() to initalize 
        unit->select_limit_cnt,offset_limit_cnt everyplace. 
        - we can create an Item_int to set global limit of a statement:
        it will be created in the runtime mem root and freed in the end of
        execution.
      sql/sql_repl.cc:
        Use unit->set_limit to initialize limits.
      sql/sql_select.cc:
        - select_limit is now Item* so the proper way to check for default value
        is to compare it with NULL.
      sql/sql_union.cc:
        Evaluate offset_limit_cnt using the new type of ST_SELECT_LEX::offset_limit
      sql/sql_view.cc:
        Now ST_SELECT_LEX::select_limit, offset_limit have type Item *
      sql/sql_yacc.yy:
        Add grammar support for LIMIT ?, ? clause.
      5188f031
  23. 16 May, 2005 1 commit
    • unknown's avatar
      Fixed failing tests for not 32 bit intel machines · 70c4325d
      unknown authored
      Fixed bug in mysql_stmt_fetch() when retrieving rows to return
      
      
      mysql-test/r/ps.result:
        Fix to not get warnings if mysql_client_test.test fails
      mysql-test/t/index_merge_ror.test:
        Proper fix for 64 bit intel (which gives uses another, equal good index)
      mysql-test/t/ps.test:
        Fix to not get warnings if mysql_client_test.test fails
      sql-common/client.c:
        More debugging
      sql/sql_prepare.cc:
        Fixed bug in mysql_stmt_fetch() when retrieving rows to return
      sql/sql_select.cc:
        More debugging
      tests/mysql_client_test.c:
        More debugging
      70c4325d
  24. 05 May, 2005 1 commit
    • unknown's avatar
      A fix and test case for Bug#9777 " Empty set returned by Prepared Statement when it · c758512a
      unknown authored
       should return a non empty one"
      (see comments for the changed files for details).
      
      
      mysql-test/r/ps.result:
        A test case for Bug#9777: tests results fixed.
      mysql-test/t/ps.test:
        A test case for Bug#9777
      sql/item.cc:
        A fix for Bug#9777: when creating a constant item from within 
        Item_int_with_ref::new_item, create the item by value, not by name.
        This should work with prepared statements placeholders.
        Item_int_with_ref is a special optimization case used
         when we compare datetime constants with datetime value.
        Converting the item to integer early is OK as it is in line
        with the purpose of Item_int_with_ref - to speed up comparison by 
        using integers.
        Minor cleanups.
      sql/item.h:
        Declaration for Item_int_with_ref::new_item
      c758512a
  25. 04 May, 2005 1 commit
    • unknown's avatar
      Post-merge fixes for Bug#9096 "select doesn't return all matched · a8286537
      unknown authored
       records if prepared statements is used" (see comments to 
      the changed files).
      
      
      mysql-test/r/ps.result:
        Post-merge fix for Bug#9096: test results fixed.
      mysql-test/r/type_datetime.result:
        Post-merge fix for Bug#9096: now we do better constants comparison,
        so the optimizer is able to guess from the index that we don't
        need to evaluate WHERE clause.
      sql/item.cc:
        Post-merge fixes for Bug#9096: implement by-value comparison for
        new 5.0 DECIMAL type.
        Item_real is renamed to Item_float in 5.0
        Item_varbinary is renamed to Item_hex_string in 5.0
      sql/item.h:
        Post-merge fixes for Bug#9096: declaration for Item_decimal::eq
      a8286537
  26. 03 May, 2005 1 commit
    • unknown's avatar
      A fix and test case for Bug#9096 "select doesn't return all matched · 9fcda7fc
      unknown authored
      records if prepared statements is used".
      This fix changes equality evaluation method of basic constants from
      by-name to by-value, thus effectively enabling use of parameter markers
      in some optimizations (constants propagation, evaluation of possible
      keys for query).
      
      
      mysql-test/r/ps.result:
        Test results for the test case for Bug#9096
      mysql-test/t/ps.test:
        A short test case for Bug#9096 "select doesn't return all matched records if
         prepared statements is used". The is enough to reproduce the
        glitch in update_ref_and_keys causing the bug to occur.
      sql/item.cc:
        Implement by-value equality evaluation of basic constants.
        This is needed to work with Item_param values. Until now
        Item_param was compared with other items by its name, which is always "?".
        The bug at hand showed up when an integer
        constant was created from one parameter marker (with value 200887 and
         name "?") and then compared by-name with another parameter marker
        (with value 860 and name "?"). True returned by this comparison resulted
        in a wrong table access method used to evaluate the query.
        Implement Item_param methods needed to emulate "basic constant" mode at 
        full.
      sql/item.h:
        Change declaration of basic_const_item(): now it also widens its 
        argument from const Item * to Item * if the argument is a basic constant.
        Declare eq() for all basic constatns, as long as now they 
        are compared by value, not by name. Each constant needs its own
        comparison method.
        Declarations of Item_param methods needed to fully emulate 
        a basic constant when parameter value is set.
      sql/item_func.cc:
        Fix wrong casts.
      9fcda7fc
  27. 13 Apr, 2005 1 commit
    • unknown's avatar
      Allow SQLCOM_CALL in prepared mode. · c23c4c7c
      unknown authored
      mysql-test/r/ps.result:
        Test results: adding tests for CALL statement in prepared mode.
      mysql-test/t/ps.test:
        Adding tests for CALL statement in prepared mode.
      c23c4c7c
  28. 05 Apr, 2005 1 commit
    • unknown's avatar
      Fix for bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement · b419262f
      unknown authored
         restore original 'lex->query_tables' table list after
         processing of information schema table
         remove unnecessary operations
      
      
      mysql-test/r/ps.result:
        Fix for bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement
      mysql-test/t/ps.test:
        Fix for bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement
      sql/sql_lex.h:
        Fix for bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement
      sql/sql_show.cc:
        Fix for bug#9383: INFORMATION_SCHEMA.COLUMNS, JOIN, Crash, prepared statement
      b419262f
  29. 03 Mar, 2005 1 commit
    • unknown's avatar
      Fixes for bug#8115 "Server Crash with prepared statement" · 2860a772
      unknown authored
       and bug#8849 "problem with insert statement with table alias's": 
      make equality propagation work in stored procedures and prepared 
      statements.
      Equality propagation can change AND/OR structure of ON expressions,
      so the fix is to provide each execution of PS/SP with it's own
      copy of AND/OR tree. We have been doing that already for WHERE clauses,
      now ON clauses are also copied.
      
      
      mysql-test/r/ps.result:
        Bug#8115: test results fixed.
      mysql-test/r/sp.result:
        Bug#8849: test results fixed.
      mysql-test/t/ps.test:
        A test case for Bug#8115 "Server Crash with prepared statement".
      mysql-test/t/sp.test:
        A test case for Bug#8849 "problem with insert statement with table 
        alias's".
      sql/item_cmpfunc.cc:
        Comment a parse tree transformation.
      sql/item_cmpfunc.h:
        Comment how Item_equal works with PS/SP.
      sql/mysql_priv.h:
        Add declaration for init_stmt_after_parse.
      sql/sp_head.cc:
        Call init_stmt_after_parse in restore_lex(), which is used to
        grab TABLE_LIST and SELECT_LEX list of a parsed substatement of
        stored procedure. This is a necessary post-init step which 
        must be done for any statement which can be executed many times.
      sql/sql_prepare.cc:
        Implement init_stmt_after_parse() which prepares AND/OR
        structure of all ON expressions and WHERE clauses of a statement
        for copying.
      sql/sql_select.cc:
        Implementation of equality propagation inspected with regard to 
        prepared statements and stored procedures. We now restore
        AND/OR structure of every ON expression in addition to AND/OR
        structure of WHERE clauses when reexecuting a PS/SP.
      sql/table.h:
        Add declaration for TABLE::prep_on_expr.
      2860a772
  30. 02 Mar, 2005 1 commit
  31. 08 Dec, 2004 1 commit
    • unknown's avatar
      A fix and test case for Bug#6873 "PS, having with subquery, crash · 998209d3
      unknown authored
      during execute"
      
      
      mysql-test/r/ps.result:
        Test results updated (Bug#6873)
      mysql-test/t/ps.test:
        A test case for Bug#6873 "PS, having with subquery, crash during execute".
      sql/item_subselect.cc:
        If we transform having subtree, modify SELECT_LEX::having pointer 
        to point to the new having tree root.
      998209d3