An error occurred fetching the project authors.
  1. 20 Oct, 2004 1 commit
    • unknown's avatar
      Fix for bug #6173 "One can circumvent missing UPDATE privilege if · 4dbb8830
      unknown authored
      he has SELECT and INSERT privileges for table with primary key"
      
      Now we set lex->duplicates= DUP_UPDATE right in parser if INSERT has
      ON DUPLICATE KEY UPDATE clause, this simplifies insert_precheck()
      function (this also fixes a bug) and some other code.
      
      
      mysql-test/r/grant2.result:
        Added test for bug #6173 "One can circumvent missing UPDATE privilege if
        he has SELECT and INSERT privileges for table with primary key"
      mysql-test/t/grant2.test:
        Added test for bug #6173 "One can circumvent missing UPDATE privilege if
        he has SELECT and INSERT privileges for table with primary key"
      sql/mysql_priv.h:
        insert_precheck() don't need "update" parameter any longer since
        now we set lex->duplicates to DUP_UPDATE if INSERT has ON DUPLICATE
        KEY UPDATE clause.
      sql/sql_parse.cc:
        insert_precheck() don't need "update" parameter any longer since
        now we set lex->duplicates to DUP_UPDATE if INSERT has ON DUPLICATE
        KEY UPDATE clause, so it can determine whenever it is needed to
        require UPDATE_ACL by itself. Also calling of mysql_insert() is
        simplified.
      sql/sql_prepare.cc:
        insert_precheck() don't need "update" parameter any longer since
        now we set lex->duplicates to DUP_UPDATE if INSERT has ON DUPLICATE
        KEY UPDATE clause, so it can determine whenever it is needed to
        require UPDATE_ACL by itself. Also calling of mysql_insert() is
        simplified.
      sql/sql_yacc.yy:
        It is better to set Lex->duplicates= DUP_UPDATE right in parser if we
        have INSERT with ON DUPLICATE KEY UPDATE clause, rather doing this later.
      4dbb8830
  2. 10 Oct, 2004 2 commits
  3. 08 Oct, 2004 1 commit
    • unknown's avatar
      Deployment of centralized Item change registry, step 2: Item_ref · 9ba3c23e
      unknown authored
      doesn't need to have it's own recovery mechanism.
      
      
      sql/item.cc:
        Deployment of centralized Item change registry, step 2: Item_ref 
        doesn't need to have it's own recovery mechanism, so it was simplified.
      sql/item.h:
        Deployment of centralized Item change registry, step 2: Item_ref 
        doesn't need to have it's own recovery mechanism, so it was simplified.
      sql/item_cmpfunc.cc:
        - Item::split_sum_func now requires THD
        - use THD::register_item_tree_change
      sql/item_cmpfunc.h:
        - Item::split_sum_func now requires THD
      sql/item_func.cc:
        - Item::split_sum_func now requires THD
        - use THD::register_item_tree_change
      sql/item_func.h:
        - Item::split_sum_func now requires THD
      sql/item_row.cc:
        - Item::split_sum_func now requires THD
        - use THD::register_item_tree_change
      sql/item_row.h:
        - Item::split_sum_func now requires THD
      sql/item_strfunc.cc:
        - Item::split_sum_func now requires THD
        - use THD::register_item_tree_change to register changes in the item
          tree
      sql/item_strfunc.h:
        - Item::split_sum_func now requires THD
      sql/item_subselect.cc:
        - use updated Item_ref constructor
      sql/sql_base.cc:
        - Item::split_sum_func now requires THD
      sql/sql_select.cc:
        - Item::split_sum_func now requires THD
      sql/sql_yacc.yy:
        - use updated Item_ref constructor
      9ba3c23e
  4. 07 Oct, 2004 1 commit
    • unknown's avatar
      After merge fixes · 73950f75
      unknown authored
      Some bigger code changes was necessary becasue of the multi-table-update and the new HANDLER code
      
      
      include/hash.h:
        Added back function that's was used in 4.0
      mysql-test/r/delete.result:
        Update results after merge
      mysql-test/r/flush_table.result:
        Update results after merge
      mysql-test/r/func_str.result:
        Update results after merge
      mysql-test/r/handler.result:
        Update results after merge
        Change is big becasue in MySQL 4.1 you are not allowed to qualify the handler alias with a databasename
      mysql-test/r/multi_update.result:
        More startup cleanups
      mysql-test/r/rename.result:
        More startup-cleanups
      mysql-test/r/select.result:
        More startup cleanups
      mysql-test/r/show_check.result:
        More startup-cleanups
      mysql-test/t/ctype_latin1_de.test:
        Cleanup
      mysql-test/t/derived.test:
        Portability fix
      mysql-test/t/handler.test:
        Update results after merge
        Change is big becasue in MySQL 4.1 you are not allowed to qualify the handler alias with a databasename
      mysql-test/t/multi_update.test:
        More startup cleanups
      mysql-test/t/range.test:
        More comments
      mysql-test/t/rename.test:
        More startup cleanups
      mysql-test/t/select.test:
        More startup cleanups
      mysql-test/t/show_check.test:
        More startup cleanups
      mysql-test/t/type_timestamp.test:
        Add back test deleted during merge
      sql/item_cmpfunc.cc:
        After merge fixes
      sql/item_func.cc:
        Remove compiler warning
      sql/mysql_priv.h:
        After merge fixes
      sql/mysqld.cc:
        After merge fixes
      sql/sql_acl.cc:
        More debugging
      sql/sql_base.cc:
        After merge fixes
        (This fix was needed bacause of multi-table-update reopens tables)
      sql/sql_handler.cc:
        After merge fixes
      sql/sql_lex.h:
        After merge fixes
      sql/sql_select.cc:
        After merge fixes
      sql/sql_show.cc:
        After merge fixes
      sql/sql_table.cc:
        After merge fixes
        Simple cleanup of mysql_discard_or_import_tablespace
      sql/sql_update.cc:
        After merge fixes
        Rework mysql_multi_update to take into account derived tables.
      sql/sql_yacc.yy:
        After merge fixes
      73950f75
  5. 02 Oct, 2004 1 commit
    • unknown's avatar
      Bug#4118: multi-table UPDATE takes WRITE lock on read table · 308b6792
      unknown authored
        Ensures that WRITE lock is not obtained on all tables referenced.
      
      
      mysql-test/r/lock_multi.result:
        Bug#4118
          New test for multi-update locking
      mysql-test/r/multi_update.result:
        Bug#4118
          Fix test
      mysql-test/t/lock_multi.test:
        Bug#4118
          New test for multi-update locking
      mysql-test/t/multi_update.test:
        Bug#4118
          Fix test
      sql/sql_parse.cc:
        Bug#4118
          Split multi-update to its own case statement in sql_parse.cc
      sql/sql_update.cc:
        Bug#4118
          Overview of locking checking:    
            1. Open and acquire READ lock
            2. Check to see which tables need WRITE lock
            3. Unlock tables and relock
      sql/sql_yacc.yy:
        Bug#4118
          Split multi-update to its own case statement in sql_parse.cc
      308b6792
  6. 01 Oct, 2004 1 commit
    • unknown's avatar
      Support for TIMESTAMP columns holding NULL values. Unlike all other · c2a25521
      unknown authored
      column types TIMESTAMP is NOT NULL by default, so in order to have 
      TIMESTAMP column holding NULL valaues you have to specify NULL as
      one of its attributes (this needed for backward compatibility).
      
      Main changes:
      Replaced TABLE::timestamp_default_now/on_update_now members with
      TABLE::timestamp_auto_set_type flag which is used everywhere
      for determining if we should auto-set value of TIMESTAMP field 
      during this operation or not. We are also use Field_timestamp::set_time()
      instead of handler::update_timestamp() in handlers.
      
      
      mysql-test/r/type_timestamp.result:
        Added test for TIMESTAMP columns which are able to store NULL values.
      mysql-test/t/type_timestamp.test:
        Added test for TIMESTAMP columns which are able to store NULL values.
      sql/field.cc:
        Added support for TIMESTAMP fields holding NULL values.
        We don't need Field_timestamp::set_timestamp_offsets() anymore.
        Instead we need Field_timestamp::get_auto_set_type() function
        which will convert TIMESTAMP auto-set type stored in Field in 
        unireg_check to value from timestamp_auto_set_type_enum.
        (We can't replace this function with additional Field_timestamp member
        and some code in constructor because then we will have troubles
        with Field::new_field() method).
        We should also set field to not null in Field_timestamp::set_time() now.
      sql/field.h:
        Added support for TIMESTAMP fields holding NULL values.
        We don't need Field_timestamp::set_timestamp_offsets() anymore.
        Instead we need Field_timestamp::get_auto_set_type() function,
        which will convert TIMESTAMP auto-set type stored in Field in 
        unireg_check to value from timestamp_auto_set_type_enum.
        We also have to support NULL values in Field_timestamp::get_timestamp()
        function.
      sql/field_conv.cc:
        Added comment clarifying behavior in case of TIMESTAMP fields which are
        able to store NULL values.
      sql/ha_berkeley.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now for determining 
        if we should auto-set value of TIMESTAMP field during this operation.
        We are also use Field_timestamp::set_time() instead of 
        handler::update_timestamp().
      sql/ha_heap.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now for determining 
        if we should auto-set value of TIMESTAMP field during this operation.
        We are also use Field_timestamp::set_time() instead of 
        handler::update_timestamp().
      sql/ha_innodb.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now for determining 
        if we should auto-set value of TIMESTAMP field during this operation.
        We are also use Field_timestamp::set_time() instead of 
        handler::update_timestamp().
      sql/ha_isam.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now for determining 
        if we should auto-set value of TIMESTAMP field during this operation.
        We are also use Field_timestamp::set_time() instead of 
        handler::update_timestamp().
      sql/ha_isammrg.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now for determining 
        if we should auto-set value of TIMESTAMP field during this operation.
        We are also use Field_timestamp::set_time() instead of 
        handler::update_timestamp().
      sql/ha_myisam.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now for determining 
        if we should auto-set value of TIMESTAMP field during this operation.
        We are also use Field_timestamp::set_time() instead of 
        handler::update_timestamp().
      sql/ha_myisammrg.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now for determining 
        if we should auto-set value of TIMESTAMP field during this operation.
        We are also use Field_timestamp::set_time() instead of 
        handler::update_timestamp().
      sql/ha_ndbcluster.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now for determining 
        if we should auto-set value of TIMESTAMP field during this operation.
        We are also use Field_timestamp::set_time() instead of 
        handler::update_timestamp().
      sql/handler.cc:
        handler::update_timestamp() is no longer needed since now we use
        Field_timestamp::set_time() instead.
        (we can't use handler::update_timestamp() anyway since field position
        only is not enough for TIMESTAMP fields which are able to store NULLs)
      sql/handler.h:
        handler::update_timestamp() is no longer needed since now we use
        Field_timestamp::set_time() instead.
      sql/item_timefunc.cc:
        Since now TIMESTAMP fields can hold NULL values we should take this into
        account.
      sql/sql_base.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now. 
        (Here we use Field_timestamp::get_auto_set_type() to setup its value
         before further statement execution).
      sql/sql_insert.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now.
      sql/sql_load.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now.
      sql/sql_parse.cc:
        Added support for TIMESTAMP fields holding NULL values.
        We should distinguish NULL default values and non-specified default
        values for such fields (because latter could mean DEFAULT NOW()
        ON UPDATE NOW() in some cases).
      sql/sql_show.cc:
        Added support for TIMESTAMP fields holding NULL values.
        Unlike all other fields these are NOT NULL by default
        so we have to specify NULL attribute explicitly for them.
      sql/sql_table.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now.
      sql/sql_update.cc:
        Now we use TABLE::timestamp_field_type instead of 
        TABLE::timestamp_default_now/on_update_now.
      sql/sql_yacc.yy:
        Added support for TIMESTAMP fields holding NULL values.
        Unlike all other fields these are NOT NULL by default
        (so we have to set NOT_NULL_FLAG properly for them).
      sql/table.h:
        Added timestamp_auto_set_type enum which values are used for indicating
        during which operations we should automatically set TIMESTAPM field
        value to current timestamp.
        TABLE: Replaced timestamp_default_now/on_update_now members with
        timestamp_auto_set_type flag (Now when TIMESTAMP field are able to 
        store NULL values, single position of field in record is not enough 
        for updating this field anyway).
      c2a25521
  7. 13 Sep, 2004 1 commit
  8. 03 Sep, 2004 1 commit
    • unknown's avatar
      sql_yacc.yy: · cf43c238
      unknown authored
        Allow FROM or IN in SHOW KEYS, as in other SHOW statements.
      
      
      sql/sql_yacc.yy:
        Allow FROM or IN in SHOW KEYS, as in other SHOW statements.
      cf43c238
  9. 31 Aug, 2004 2 commits
    • unknown's avatar
      after review patch · e6fbc582
      unknown authored
      mysql-test/r/negation_elimination.result:
        new tests of negation elimination
      mysql-test/t/negation_elimination.test:
        new tests of negation elimination
      sql/item.h:
        test of boolean functions added
      sql/item_cmpfunc.cc:
        NOT subtree is already checked, so wee need to return just argument
      sql/item_cmpfunc.h:
        test of boolean functions added
      sql/mysql_priv.h:
        'place' to detect WHERE clause
      sql/sql_parse.cc:
        function for creation negated expression
      sql/sql_select.cc:
        removed unused function
      sql/sql_select.h:
        removed unused function
      sql/sql_yacc.yy:
        'place' to detect WHERE clause
      e6fbc582
    • unknown's avatar
      Better easier to call error message format. · 19c8a548
      unknown authored
      19c8a548
  10. 29 Aug, 2004 1 commit
    • unknown's avatar
      NOT elimination moved in parsing (suggested by Monty) · 6a890621
      unknown authored
      sql/item_cmpfunc.cc:
        NOT elimination moved in parsing (we do not need fix fields in it and PS processing)
      sql/item_cmpfunc.h:
        NOT elimination moved in parsing (we do not need fix fields in it and PS processing)
      sql/sql_select.cc:
        NOT elimination moved in parsing (we do not need fix fields in it and PS processing)
      sql/sql_yacc.yy:
        NOT elimination moved in parsing
      6a890621
  11. 27 Aug, 2004 1 commit
  12. 26 Aug, 2004 1 commit
  13. 19 Aug, 2004 1 commit
    • unknown's avatar
      after merge fixes · e86cbb3a
      unknown authored
      strings/my_vsnprintf.c:
        %.#s support in my_vsnprintf
      BitKeeper/etc/ignore:
        Added EXCEPTIONS-CLIENT to the ignore list
      e86cbb3a
  14. 13 Aug, 2004 1 commit
    • unknown's avatar
      skip resolving field in table list if table list is not accessable due to groupping (BUG#4814) · 5535bce5
      unknown authored
      mysql-test/r/func_gconcat.result:
        fix of test queries
      mysql-test/r/subselect.result:
        resolving fields of grouped outer SELECT
      mysql-test/t/func_gconcat.test:
        fix of test queries
      mysql-test/t/subselect.test:
        resolving fields of grouped outer SELECT
      sql/item.cc:
        skip resolving field in table list if table list is not accessable due to groupping
        layout fixed
      sql/item_subselect.cc:
        detection of place of subquery
      sql/item_subselect.h:
        detection of place of subquery
      sql/mysql_priv.h:
        enum_parsing_place made global type
      sql/sql_lex.cc:
        enum_parsing_place made global type
      sql/sql_lex.h:
        enum_parsing_place made global type
      sql/sql_yacc.yy:
        enum_parsing_place made global type
      5535bce5
  15. 11 Aug, 2004 1 commit
  16. 10 Aug, 2004 1 commit
    • unknown's avatar
      Fix for bug #4508 "CONVERT_TZ() function with new time zone as param crashes server". · cfa6cf90
      unknown authored
      Instead of trying to open time zone tables during calculation of CONVERT_TZ() function
      or setting of @@time_zone variable we should open and lock them with the rest of 
      statement's table (so we should add them to global table list) and after that use such 
      pre-opened tables for loading info about time zones.
      
      
      mysql-test/r/timezone2.result:
        Added test for bug #4508
      mysql-test/t/timezone2.test:
        Added test for bug #4508
      scripts/mysql_create_system_tables.sh:
        Added one more test time zone to time zone tables which is needed for test for bug #4508.
      sql/item_create.cc:
        CONVERT_TZ() now is treated as special function.
      sql/item_create.h:
        CONVERT_TZ() now is treated as special function.
      sql/item_timefunc.cc:
        Item_func_convert_tz now uses list of pre-opened time zone tables instead of trying to
        open them ad-hoc. Also it avoid calling of current_thd.
      sql/item_timefunc.h:
        Added comment describing special nature of CONVERT_TZ() function.
        Optimization: Added own fix_fields() method and tz_tables member for caching pointer
        to list of open time zone tables to Item_func_convert_tz class.
      sql/lex.h:
        CONVERT_TZ() now is treated as special function.
      sql/mysql_priv.h:
        Removed function which is no longer used.
      sql/set_var.cc:
        Now my_tz_find() accepts list of pre-opened time zone tables as last argument 
        and no longer needs pointer to current THD.
      sql/set_var.h:
        Exported sys_time_zone, which is now used in sql_yacc.yy for quick finding out if we are
        setting @@time_zone variable.
      sql/sql_base.cc:
        Moved propagation of pointers to open tables from global list to local select lists to
        open_and_lock_tables(), also added implicit usage of time zone tables as condition for
        such propagation.
      sql/sql_lex.cc:
        Added fake_time_zone_tables_list which is used to indicate that time zone tables are
        implicitly used in statement.
        st_select_lex_unit::create_total_list(): if time zone tables are implicitly used in
        statement add them to global tables list.
      sql/sql_lex.h:
        Added LEX::time_zone_tables_used member which is used to indicate that time zone tables 
        are implicitly used in this statement (by pointing to fake_time_zone_table_list) and 
        for holding pointer to those tables after they've been opened.
      sql/sql_parse.cc:
        We should also create global table list if statement uses time zone tables implicitly.
        Added initialization of LEX::time_zone_tables_used to mysql_query_init().
      sql/sql_prepare.cc:
        We should also create global table list if statement uses time zone tables implicitly.
      sql/sql_select.cc:
        Removed functions which are no longer used.
      sql/sql_yacc.yy:
        CONVERT_TZ() and @@time_zone variable are handled in special way since they implicitly 
        use time zone tables.
      sql/tztime.cc:
        Fix for bug #4508 "CONVERT_TZ() function with new time zone as param crashes server".
        If statement uses CONVERT_TZ() function or @@time_zone variable is set then it implicitly
        uses time zone tables. We need to open and lock such tables with all other tables of 
        such statement.
        
        All code responsible for opening table was removed from tz_load_from_db() and function was 
        renamed to tz_load_from_open_tables() (which uses list of pre-opened tables).
        We also have new functions for construction and initialization of table list of time
        zone tables.
        my_tz_find() now always require list of pre-opened time zone tables and no longer needs
        current THD. So we have to pre-open them in my_tz_init().
        Also now we try to open time zone tables only if they were found during startup.
      sql/tztime.h:
        New function for construction of table list of time zone tables my_tz_get_table_list().
        Now my_tz_find() requires list of pre-pened time zone tables instead of current thread.
      cfa6cf90
  17. 26 Jul, 2004 1 commit
  18. 08 Jul, 2004 1 commit
  19. 07 Jul, 2004 1 commit
  20. 02 Jul, 2004 1 commit
  21. 26 Jun, 2004 2 commits
    • unknown's avatar
      removed using lex->select_lex.options is SHOW TABLE [STATUS] commands (BUG#4288) · fa70ff2b
      unknown authored
      mysql-test/r/func_group.result:
        fixed
      mysql-test/r/ps.result:
        SHOW TABLE STATUS test
      mysql-test/t/ps.test:
        SHOW TABLE STATUS test
      sql/sql_parse.cc:
        Use lex->describe instead of lex->select_lex.options
      sql/sql_yacc.yy:
        removed unneed initialization of lex->select_lex.options
      fa70ff2b
    • unknown's avatar
      after merge fixed · 1506f4bc
      unknown authored
      mysql-test/r/flush_table.result:
        after merge fixed
        duplicated tests removed
      mysql-test/t/flush_table.test:
        after merge fixed
        duplicated tests removed
      sql/sql_yacc.yy:
        alias is not db-qualified
      1506f4bc
  22. 24 Jun, 2004 2 commits
    • unknown's avatar
      parameter of my_yyoverflow made independed from YYSIZE_T (BUG#4204) · aad5e13c
      unknown authored
      sql/sql_parse.cc:
        parameter of my_yyoverflow made independed from YYSIZE_T
      sql/sql_yacc.yy:
        parameter of my_yyoverflow made independed from YYSIZE_T
      aad5e13c
    • unknown's avatar
      Fix for Bug#4030 "Client side conversion string -> date type doesn't · 04f3836f
      unknown authored
      work (prepared statements)" and after-review fixes:
      - str_to_TIME renamed to str_to_datetime to pair with str_to_time
      - functions str_to_time and str_to_TIME moved to sql-common
      - send_data_str now supports MYSQL_TYPE_TIME, MYSQL_TIME_DATE,
        MYSQL_TIME_DATETIME types of user input buffers.
      - few more comments in the client library
      - a test case added.
      
      
      VC++Files/libmysql/libmysql.dsp:
        new file: my_time.c
      VC++Files/libmysqld/libmysqld.dsp:
        new file: my_time.c
      VC++Files/sql/mysqld.dsp:
        new file: my_time.c
      include/Makefile.am:
        - mysql_time.h added to the list of installed client library headers
      include/mysql.h:
        - declarations for MYSQL_TIME and enum_mysql_timestamp_type moved to 
        mysql_time.h, which is in shared use of client library and mysys.
      libmysql/Makefile.shared:
        - my_time.lo added to the list of libmysql objects
      libmysql/libmysql.c:
        Fix for bug#4030 "Client side conversion string -> date type doesn't work
         (prepared statements)" and cleanup.
        - added case labels for TIME/DATE/DATETIME types to send_data_str
        - comments for read_binary_{date,time,datetime}, fetch_result_*, fetch_results.
      libmysqld/Makefile.am:
        - my_time.c added
      sql-common/Makefile.am:
        - my_time.c added to the list of files included into source distribution.
      sql/Makefile.am:
        my_time.c added to the list of mysqld sources.
      sql/field.cc:
        - TIMESTAMP_{TIME,DATE,DATETIME,...} renamed to 
          MYSQL_TIMESTAMP_{TIME,DATETIME,DATE,...}
      sql/item.cc:
        - TIMESTAMP_{TIME,DATE,DATETIME,...} renamed to 
          MYSQL_TIMESTAMP_{TIME,DATETIME,DATE,...}
      sql/item_timefunc.cc:
        - TIMESTAMP_{TIME,DATE,DATETIME,...} renamed to 
          MYSQL_TIMESTAMP_{TIME,DATETIME,DATE,...}
      sql/mysql_priv.h:
        - added typedefs for TIME and timestamp_type
        - removed declarations for str_to_time and str_to_TIME (now this functions
          reside in mysys)
      sql/mysqld.cc:
        - log_10_int moved to mysys (it's used by str_to_TIME and str_to_time)
        - enum values TIMESTAMP_{TIME,DATE,DATETIME} were renamed to
          MYSQL_TIMESTAMP_{TIME,DATE,DATETIME}
      sql/set_var.cc:
        - TIMESTAMP_{TIME,DATE,DATETIME,...} renamed to 
          MYSQL_TIMESTAMP_{TIME,DATETIME,DATE,...}
      sql/set_var.h:
        - fixed timestamp_type usage to be compatible with typedef.
      sql/sql_prepare.cc:
        - TIMESTAMP_{TIME,DATE,DATETIME} were renamed to
          MYSQL_TIMESTAMP_{TIME,DATE,DATETIME}
        - embedded library implementation of set_param_{time,date,datetime} is
        much simplier now, as MYSQL_TIME is the same as TIME.
      sql/sql_yacc.yy:
        - s/\<TIMESTAMP_/MYSQL_TIMESTAMP/gc
      sql/structs.h:
        - declarations for TIME and timestamp_type replaced with typedefs
        - str_to_datetime arguments moved to mysys headers
      sql/time.cc:
        - str_to_time and str_to_TIME moved to mysys
        - TIMESTAMP_{TIME,DATE,DATETIME,...} renamed to 
          MYSQL_TIMESTAMP_{TIME,DATETIME,DATE,...} as these names are now
          exported to client.
        - str_to_TIME renamed to str_to_datetime to pair with str_to_time
        - str_to_TIME_with_warn renamed accordingly
      sql/tztime.cc:
        - TIMESTAMP_{TIME,DATE,DATETIME,...} renamed to 
          MYSQL_TIMESTAMP_{TIME,DATETIME,DATE,...}
      tests/client_test.c:
        - a test case for Bug#4030 "Client side conversion string -> date type 
        doesn't work (prepared statements)"
      04f3836f
  23. 23 Jun, 2004 3 commits
    • unknown's avatar
      parameter of my_yyoverflow made independed from YYSIZE_T (BUG#4204) · b2004308
      unknown authored
      mysql-test/r/union.result:
        test of correct parser stack overflow handling
      mysql-test/t/union.test:
        test of correct parser stack overflow handling
      sql/sql_parse.cc:
        parameter of my_yyoverflow made independed from YYSIZE_T
      sql/sql_yacc.yy:
        parameter of my_yyoverflow made independed from YYSIZE_T
      b2004308
    • unknown's avatar
      handler interface cleanups: · ee8ee8ca
      unknown authored
        more logical table/index_flags
        return  HA_ERR_WRONG_COMMAND instead of abstract methods where appropriate
        max_keys and other limits renamed to max_supported_keys/etc
        max_keys/etc are now wrappers to max_supported_keys/etc 
        ha_index_init/ha_rnd_init/ha_index_end/ha_rnd_end are now wrappers to real {index,rnd}_{init,end} to enforce strict pairing
      
      
      include/myisam.h:
        increasing myisam_max_temp_file_length
      include/my_base.h:
        handler interface cleanup
      myisam/mi_static.c:
        warning removed
      mysql-test/Makefile.am:
        followup
      mysql-test/r/fulltext.result:
        fulltext indexes are not ordered
      mysql-test/r/rpl_user_variables.result:
        followup
      sql/field.cc:
        index_flags
      sql/filesort.cc:
        rnd_init -> ha_rnd_init
        rnd_end -> ha_rnd_end
      sql/ha_berkeley.cc:
        cleanup
      sql/ha_berkeley.h:
        table/index_flags revamped
      sql/ha_heap.cc:
        ensure index is accessed only after index_init (esp. important for temp tables)
      sql/ha_heap.h:
        table/index_flags revamped
      sql/ha_innodb.cc:
        don't workaround MySQL sloppiness
      sql/ha_innodb.h:
        table/index_flags revamped
      sql/ha_isam.h:
        table/index_flags revamped
      sql/ha_isammrg.h:
        table/index_flags revamped
      sql/ha_myisam.cc:
        ensure index is accessed only after index_init (esp. important for temp tables)
      sql/ha_myisam.h:
        table/index_flags revamped
      sql/ha_myisammrg.h:
        table/index_flags revamped
      sql/handler.cc:
        handler interface cleanups
      sql/handler.h:
        handler interface cleanups:
          more logical table/index_flags
          return  HA_ERR_WRONG_COMMAND instead of abstract methods
          max_keys and other limits renamed to max_supported_keys/etc
          max_keys/etc are now wrappers to max_supported_keys/etc 
          ha_index_init/ha_rnd_init/ha_index_end/ha_rnd_end are now wrappers to enforce strict pairing
      sql/item_subselect.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
      sql/lex.h:
        renamed to avoid conflicts
      sql/opt_range.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
        table/index_flags cleanup
      sql/opt_range.h:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
      sql/opt_sum.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
        table/index_flags cleanup
      sql/records.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
      sql/sql_acl.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
      sql/sql_cache.cc:
        cleanup
      sql/sql_delete.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
      sql/sql_handler.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
      sql/sql_help.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
      sql/sql_insert.cc:
        table/index_flags cleanup
      sql/sql_select.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
        table/index_flags cleanup
      sql/sql_table.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
        table/index_flags cleanup
      sql/sql_update.cc:
        index_init/index_end/rnd_init/rnd_end strict pairing fixed
      sql/sql_yacc.yy:
        INDEX -> INDEX_SYM
      sql/table.cc:
        table/index_flags cleanup
      ee8ee8ca
    • unknown's avatar
      Fix and test case for BUG#3899 · f7202b22
      unknown authored
      mysql-test/r/alter_table.result:
        Test case for BUG#3899
      mysql-test/t/alter_table.test:
        Test case for BUG#3899
      sql/sql_yacc.yy:
        Fix for BUG#3899: call ALTER_INFO::reset to clear ALTER_INFO::drop_list and ALTER_INFO::alter_list
      f7202b22
  24. 22 Jun, 2004 1 commit
    • unknown's avatar
      Fix for Bug# 4200 "Parse error on LIKE ESCAPE with parameter binding" · b62ab1ab
      unknown authored
      Now ESCAPE in LIKE will accept not only string literal but constant 
      delimited expression.
      
      
      mysql-test/r/func_like.result:
        Added test for bug# 4200 "Parse error on LIKE ESCAPE with parameter binding"
      mysql-test/t/func_like.test:
        Added test for bug# 4200 "Parse error on LIKE ESCAPE with parameter binding"
      sql/item_cmpfunc.cc:
        Added support for accepting of constant delimited expression as ESCAPE argument to
        Item_func_like.
      sql/item_cmpfunc.h:
        Now ESCAPE clause in LIKE will accept not only string literal but constant delimited 
        expression. Thus added member to Item_func_like for storing Item corresponding to this
        expression and changed third argument of cons to be Item* instead of char*.
      sql/sql_help.cc:
        Item_func_like now accepts Item* as third argument.
      sql/sql_yacc.yy:
        Now ESCAPE clause of LIKE accepts not only string literal but constant delimited expression
        (the most important case is prepared statement parameter of course).
      b62ab1ab
  25. 18 Jun, 2004 1 commit
    • unknown's avatar
      Fixed some byte order bugs with prepared statements on machines with high-byte-first. (Bug #4173) · 9fa13ebe
      unknown authored
      Fixed problem with NULL and derived tables (Bug #4097)
      Cleanup of new pushed code
      
      
      BitKeeper/etc/ignore:
        added mysql-test/ndb/ndbcluster
      client/mysqltest.c:
        simple cleanup
      innobase/os/os0file.c:
        fix for netware
      libmysql/libmysql.c:
        Fixed some byte order bugs with prepared statements on machines with
        high-byte-first. (Bug #4173)
      myisam/ft_boolean_search.c:
        Comment cleanup
      myisam/mi_check.c:
        Removed not needed check (check is done in check_index())
      myisam/mi_unique.c:
        crc must be of type ha_checksum.
      myisam/myisamchk.c:
        Portability fix.
      mysql-test/mysql-test-run.sh:
        Simple cleanup
      mysql-test/r/subselect.result:
        Test problem with NULL and derived tables (Bug #4097)
      mysql-test/t/subselect.test:
        Test problem with NULL and derived tables (Bug #4097)
      sql/mysqld.cc:
        Remove not used defines
      sql/sql_select.cc:
        Fixed problem with NULL and derived tables (Bug #4097)
        Indentation fixes
      sql/sql_string.cc:
        Code cleanup
      sql/sql_yacc.yy:
        Allow one to use DROP PREPARE ...
      9fa13ebe
  26. 07 Jun, 2004 1 commit
    • unknown's avatar
      Post review fixes for "SQL Syntax for Prepared Statements". · 2f9a9e55
      unknown authored
      mysql-test/r/ps.result:
        Better error message
      mysys/my_error.c:
        Comments added
      sql/item.cc:
        Moved a chunk of code from sql_prepare.cc to Item_param::set_from_user_var
      sql/item.h:
        Moved a chunk of code from sql_prepare.cc to Item_param::set_from_user_var
      sql/item_func.cc:
        Code cleanup
      sql/mysql_priv.h:
        Code cleanup
      sql/sql_class.cc:
        Code cleanup
      sql/sql_parse.cc:
        use user_var_entry::val_str in PREPARE stmt FROM @var.
      sql/sql_prepare.cc:
        Post-review fixes and code cleanup.
      sql/sql_yacc.yy:
        Coding style fixes
      2f9a9e55
  27. 03 Jun, 2004 2 commits
    • unknown's avatar
      Implementation of WL#1824 "Add replication of character set variables in 4.1", · e784947a
      unknown authored
      by binlogging some SET ONE_SHOT CHARACTER_SETetc,
      which will be enough until we have it more compact and more complete in 5.0. With the present patch,
      replication will work ok between 4.1.3 master and slaves, as long as:
      - master and slave have the same GLOBAL.COLLATION_SERVER
      - COLLATION_DATABASE and CHARACTER_SET_DATABASE are not used
      - application does not use the fact that table is created with charset of the USEd db (BUG#2326).
      all of which are not too hard to fulfill. 
      ONE_SHOT is reserved for internal use of mysqlbinlog|mysql and works only for charsets,
      so we give error if used for non-charset vars.
      Fix for BUG#3875 "mysqlbinlog produces wrong ouput  if query uses
       variables containing quotes" and BUG#3943 "Queries with non-ASCII literals are not replicated
       properly after SET NAMES".
      Detecting that master and slave have different global charsets or server ids.
      
      
      mysql-test/r/rpl_server_id1.result:
        it's normal to not run as I have added a test to compare server ids of master and slave
        at startup and stop if equal (unless --replicate-same-server-id)
      mysql-test/r/rpl_user_variables.result:
        result update (as we now print charset of user var).
      mysql-test/r/user_var.result:
        result update
      mysql-test/t/rpl_server_id1.test:
        no need to select as slave is not running
      mysql-test/t/user_var.test:
        testing if the content of user vars is escaped when mysqlbinlog prints them,
        and if the name is backquoted.
      sql/lex.h:
        new keyword ONE_SHOT
      sql/log.cc:
        when writing to the binlog, before writing the actual statement, write some SET ONE_SHOT CHARACTER_SET_CLIENT etc
        for the slave to know the charset variables (which are important as they affect the inserted data).
      sql/log_event.cc:
        print charset and collation of user var in mysqlbinlog and SHOW BINLOG EVENTS.
        escape the content of the var. Backquote its name.
        Will ask Bar to check that using my_charset_bin for escaping is ok.
      sql/set_var.cc:
        understand SET CHARACTER_SET_CLIENT=10 (don't require a string, accept a number).
        Refuse changing of GLOBAL CHARACTER_SET_SERVER/COLLATION_SERVER if binlog or slave,
        as it will make the master or slave make wrong assumptions.
        A function to catch SET ONE_SHOT on non-charset variables (which is forbidden)
      sql/set_var.h:
        no_support_one_shot to know if the var supports ONE_SHOT (only charset vars do, soon timezones).
        Accept int arg in SET CHARACTER_SET_etc
      sql/slave.cc:
        when I/O slave thread starts, verify that master's and slave charsets match.
        And by the way verify that server ids are different.
        Don't fail if UNIX_TIMESTAMP() can't be done on master (very old master), that's
        not fatal.
      sql/sql_class.cc:
        one_shot
      sql/sql_class.h:
        one_shot
      sql/sql_lex.h:
        one_shot
      sql/sql_parse.cc:
        when SET ONE_SHOT is used, verify that it's only used for charset/collation vars;
        otherwise refuse.
      sql/sql_yacc.yy:
        ONE_SHOT keyword in SET
      e784947a
    • unknown's avatar
      Fix skipp -> skip once and for all. · 309dd278
      unknown authored
      (Note: This affects only comments, not variable names.)
      
      
      extra/perror.c:
        Fix skipp -> skip once and for all.
      heap/hp_hash.c:
        Fix skipp -> skip once and for all.
      isam/_dynrec.c:
        Fix skipp -> skip once and for all.
      isam/isamchk.c:
        Fix skipp -> skip once and for all.
      isam/isamlog.c:
        Fix skipp -> skip once and for all.
      isam/pack_isam.c:
        Fix skipp -> skip once and for all.
      isam/test1.c:
        Fix skipp -> skip once and for all.
      merge/mrg_open.c:
        Fix skipp -> skip once and for all.
      myisam/mi_check.c:
        Fix skipp -> skip once and for all.
      myisam/mi_delete.c:
        Fix skipp -> skip once and for all.
      myisam/mi_key.c:
        Fix skipp -> skip once and for all.
      myisam/mi_search.c:
        Fix skipp -> skip once and for all.
      myisam/myisamlog.c:
        Fix skipp -> skip once and for all.
      mysys/ChangeLog:
        Fix skipp -> skip once and for all.
      mysys/default.c:
        Fix skipp -> skip once and for all.
      mysys/mf_iocache.c:
        Fix skipp -> skip once and for all.
      mysys/mf_iocache2.c:
        Fix skipp -> skip once and for all.
      mysys/mf_pack.c:
        Fix skipp -> skip once and for all.
      mysys/mf_soundex.c:
        Fix skipp -> skip once and for all.
      mysys/mf_wfile.c:
        Fix skipp -> skip once and for all.
      mysys/my_error.c:
        Fix skipp -> skip once and for all.
      mysys/my_getwd.c:
        Fix skipp -> skip once and for all.
      scripts/mysql_find_rows.sh:
        Fix skipp -> skip once and for all.
      sql/sql_yacc.yy:
        Fix skipp -> skip once and for all.
      sql/time.cc:
        Fix skipp -> skip once and for all.
      strings/ctype-big5.c:
        Fix skipp -> skip once and for all.
      strings/ctype-gbk.c:
        Fix skipp -> skip once and for all.
      strings/ctype-tis620.c:
        Fix skipp -> skip once and for all.
      309dd278
  28. 24 May, 2004 1 commit
    • unknown's avatar
      Fix for bug which caused temp_table.test fail on Darwin 7.3 · 786810e6
      unknown authored
      The code in mysql_create_table() code assumes that if lower_case_names==2 then table alias 
      should contain unchanged table name, and this was not true for temporary tables which
      had 'tmp-table' constant as alias. Now we are using table name as alias for such tables.
      
      
      sql/sql_lex.cc:
        Removed tmp_table_alias constant which is no longer used.
      sql/sql_lex.h:
        Removed tmp_table_alias constant which is no longer used.
      sql/sql_yacc.yy:
        Let us use table name instead of 'tmp-table' as alias for table being created by 
        CREATE TEMPORARY TABLE statement. This fixes failing temp_table.test on Darwin 7.3 
        since mysql_create_table() code assumes that if lower_case_names==2 then table alias 
        should contain unchanged table name (and now this assumtion is true but it were false
        for temporary tables before...).
      786810e6
  29. 21 May, 2004 2 commits
    • unknown's avatar
      Introduced parameter object "ALTER_INFO" for mysql_alter_table · edf2ea8e
      unknown authored
      to make list of parameters in mysql_alter_table shorted
      to avoid warning in MSVC (windows) building 
      
      
      sql/mysql_priv.h:
        Introduced parameter object "ALTER_INFO" for mysql_alter_table
        - changed declaration of mysql_alter_table
        - changed declaration of mysql_drop_index 
          (replaced List<Alter_drop> by ALTER_INFO)
      sql/sql_lex.h:
        Introduced parameter object "ALTER_INFO" for mysql_alter_table
        - declared struct ALTER_INFO
        - added ALTER_INFO alter_info; into LEX
        - removed fields which were added into ALTER_INFO from LEX
      sql/sql_parse.cc:
        Introduced parameter object "ALTER_INFO" for mysql_alter_table
        - changed invotaions of mysql_alter_table
        - replaced cleaning fields in SQLCOM_OPTIMIZE by ALTER_INFO::reset
        - changed invocation of mysql_drop_index (replaced lex->drop_list by &lex->alter_info)
        - changed definition of mysql_create_index and mysql_drop_index to use ALTER_INFO
      sql/sql_table.cc:
        Introduced parameter object "ALTER_INFO" for mysql_alter_table
        - changed definition of mysql_alter_table
      sql/sql_yacc.yy:
        Introduced parameter object "ALTER_INFO" for mysql_alter_table
        - replaced using of removed from LEX fields my fields of LEX::alter_info
      edf2ea8e
    • unknown's avatar
      WL#1622 "SQL Syntax for Prepared Statements": Post-review fixes (1 of 2) · cbb05d26
      unknown authored
      mysql-test/r/ps.result:
        Added tests for PREPARE stmt1 FROM @var syntax
      mysql-test/t/ps.test:
        Added tests for PREPARE stmt1 FROM @var syntax
      mysys/my_error.c:
        Added support for "%.*s" format
      sql/item.cc:
        Removed one redundant Item_param::set_value function
      sql/item.h:
        Removed one redundant Item_param::set_value function
      sql/mysqld.cc:
        Reformmated the code
      sql/share/czech/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/dutch/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/english/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/estonian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/french/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/german/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/greek/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/hungarian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/italian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/japanese/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/korean/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/norwegian-ny/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/norwegian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/polish/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/portuguese/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/romanian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/russian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/slovak/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/spanish/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/swedish/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/share/ukrainian/errmsg.txt:
        Changed ER_UNKNOWN_STMT_HANDLER format string
      sql/sql_class.h:
        SQL Prepared statements now can't be used by binary protocol commands
      sql/sql_lex.h:
        Added support for PREPARE stmt1 FROM @var syntax.
      sql/sql_parse.cc:
        Added support for PREPARE stmt1 FROM @var syntax.
      sql/sql_prepare.cc:
        Code cleanup
      sql/sql_yacc.yy:
        Added support for PREPARE stmt1 FROM @var syntax.
      cbb05d26
  30. 19 May, 2004 1 commit
    • unknown's avatar
      Fixed BUG#3709: SELECT INTO 1 FROM DUAL not parsed as expected · 692c9231
      unknown authored
      Made the combination of INTO and FROM DUAL work, e.g.
      SELECT 1 INTO @x FROM DUAL.
      As a consequence, DUAL is made a reserved word. It would work to not have
      it reserved, but it was deemed to be confusing as a user defined table by
      the same name then must be qualified with a db (schema).
      
      
      sql/sql_yacc.yy:
        Made the combination of INTO and FROM DUAL work, e.g.
        SELECT 1 INTO @x FROM DUAL.
        As a consequence, DUAL is made a reserved word. It would work to not have
        it reserved, but it was deemed to be confusing as a user defined table by
        the same name then must be qualified with a db (schema).
      692c9231
  31. 14 May, 2004 1 commit
  32. 11 May, 2004 1 commit
    • unknown's avatar
      Portability fixes · ae9d4e33
      unknown authored
      scripts/mysql_install_db.sh:
        Portability fix (! is not portable)
      sql/item_func.cc:
        Use my_strtoll10() instead of strtoull()
      sql/repl_failsafe.cc:
        Use my_strtoll10() instead of strtoull()
      sql/sql_analyse.cc:
        Use my_strtoll10() instead of strtoull()
      sql/sql_yacc.yy:
        Use my_strtoll10() instead of strtoull()
      strings/my_strtoll10.c:
        Fix compiler warnings
      ae9d4e33