An error occurred fetching the project authors.
  1. 20 Oct, 2004 1 commit
    • unknown's avatar
      Code cleanups (done during review of new code) · 0d873f90
      unknown authored
      Rename innodb_table_locks_old_behavior -> innodb_table_locks
      Set innodb_table_locks to off by default to get same behaviour as in MySQL 4.0.20
      (This means that Innodb ignore table locks by default, which makes it easier to combine MyISAM and InnoDB to simulate a transaction)
      
      
      libmysql/libmysql.c:
        Use ulong instead of unsigned long
        Reuse _dig_vec()
      myisam/myisampack.c:
        Simplify code
      mysql-test/r/innodb-lock.result:
        new test case
      mysql-test/t/innodb-lock.test:
        new test case
      sql/ha_innodb.cc:
        Rename innodb_table_locks_old_behavior -> innodb_table_locks
      sql/mysqld.cc:
        Rename innodb_table_locks_old_behavior -> innodb_table_locks
        Set this off by default to get same behaviour as in MySQL 4.0.20
      sql/set_var.cc:
        Rename innodb_table_locks_old_behavior -> innodb_table_locks
      sql/sql_class.h:
        Rename innodb_table_locks_old_behavior -> innodb_table_locks
      0d873f90
  2. 19 Oct, 2004 1 commit
    • unknown's avatar
      Review of all code pushed since last review · da02110d
      unknown authored
      Simple optimzations and cleanups
      Removed compiler warnings and fixed portability issues
      Added client functions 'mysql_embedded()' to allow client to check if we are using embedded server
      Fixes for purify
      
      
      client/mysqlimport.c:
        Remove not used variable
      client/mysqltest.c:
        Remove usage of MAXPATHLEN (all MySQL code uses FN_REFLEN)
        Simplified code
        Remove usage of sprintf("%llu") as this is not portable
      include/mysql.h:
        Added mysql_embedded() to be able to easily check if we are using the embedded server
      innobase/srv/srv0start.c:
        Don't use memcmp() when using purify (to avoid false warnings)
      libmysql/libmysql.c:
        Added mysql_embedded() to be able to easily check if we are using the embedded server
      libmysql/libmysql.def:
        Added mysql_embedded() to be able to easily check if we are using the embedded server
      myisam/myisam_ftdump.c:
        Remove compiler warning
      myisam/myisamchk.c:
        Remove compiler warning
      myisam/rt_test.c:
        #ifdef not used code
      mysys/hash.c:
        Remove compiler warning (from last push)
      mysys/my_gethwaddr.c:
        Remove compiler warning
      ndb/src/ndbapi/ndberror.c:
        #ifdef not used code
      regex/regcomp.c:
        Remove not used code
      regex/regcomp.ih:
        Remove not used code (to remove compiler warnings)
      sql-common/client.c:
        Remove compiler warnings
      sql/field.cc:
        Simple optimization
      sql/ha_innodb.cc:
        Rename mysql_embedded -> mysqld_embedded
      sql/item.cc:
        Fix comments
        Move variables first on block
        Remove else after return
        Simple optimizations
        (no logic changes)
      sql/item_cmpfunc.cc:
        Added comment
      sql/mysql_priv.h:
        Rename mysql_embedded -> mysqld_embedded
      sql/mysqld.cc:
        Rename mysql_embedded -> mysqld_embedded
      sql/sql_acl.cc:
        Added comments
        simple optimization
        Fixed 'very unlikely' bug when doing REVOKE ALL PRIVILEGES
      sql/sql_select.cc:
        More comments
        Simple optimization
      sql/sql_show.cc:
        Simple changes to make similar code similar
        More comments
      sql/sql_string.cc:
        Trivial optimization and better code layout
      strings/Makefile.am:
        Change xml.c to use bcmp to avoid warnings from purify
      strings/xml.c:
        Change xml.c to use bcmp to avoid warnings from purify
      tests/client_test.c:
        Remove usage of MAXPATHLEN (all MySQL code uses FN_REFLEN)
      da02110d
  3. 18 Oct, 2004 2 commits
    • unknown's avatar
      ha_innodb.cc: · f3bd30bb
      unknown authored
        Replace a tolower() loop with innobase_casedn_str()
      
      
      sql/ha_innodb.cc:
        Replace a tolower() loop with innobase_casedn_str()
      f3bd30bb
    • unknown's avatar
      InnoDB: Treat UTF-8 strings properly in case insensitive operations · 4da99978
      unknown authored
      innobase/dict/dict0dict.c:
        Use innobase_strcasecmp() and innobase_casedn_str()
        instead of ut_cmp_in_lower_case() and ut_cpy_in_lower_case()
      innobase/include/ut0byte.h:
        Remove ut_cpy_in_lower_case() and ut_cmp_in_lower_case()
      innobase/ut/ut0byte.c:
        Remove ut_cpy_in_lower_case() and ut_cmp_in_lower_case()
      sql/ha_innodb.cc:
        Add innobase_strcasecmp() and innobase_casedn_str()
        Replace tolower() loop with innobase_casedn_str()
        Replace my_casedn_str() with innobase_casedn_str()
        Replace ut_cmp_in_lower_case() with innobase_strcasecmp()
      4da99978
  4. 15 Oct, 2004 1 commit
    • unknown's avatar
      Use already parsed SQL-query in the current thread when determining · 53957066
      unknown authored
      was the query REPLACE or LOAD DATA INFILE REPLACE.
      
      
      innobase/row/row0ins.c:
        Find SQL-query directly from current thread and see if the
        query was REPLACE or LOAD DATA INFILE REPLACE.
      sql/ha_innodb.cc:
        Find current thread and return true if SQL-query in the current
        thread was either REPLACE or LOAD DATA INFILE REPLACE.
      53957066
  5. 13 Oct, 2004 2 commits
    • unknown's avatar
      Added startup option and settable session variable · 6e7b0910
      unknown authored
      innodb_table_locks_old_behavior: do not acquire an
      InnoDB table lock for LOCK TABLES, as in mysql-4.0.18
      and earlier.
      
      
      sql/ha_innodb.cc:
        Do not acquire an InnoDB table lock for LOCK TABLES if
        innodb_table_locks_old_behavior is enabled.
      sql/mysqld.cc:
        Added innodb_table_locks_old_behavior
      sql/set_var.cc:
        Added innodb_table_locks_old_behavior
      sql/sql_class.h:
        Added innodb_table_locks_old_behavior
      6e7b0910
    • unknown's avatar
      srv0srv.c, log0log.c, srv0srv.h, ha_innodb.cc, ha_innodb.h: · 522b175c
      unknown authored
        Implement innobase_very_fast_shutdown and innobase_start_trx_and_assign_read_view(); these were requested by Guilhem
      
      
      sql/ha_innodb.h:
        Implement innobase_very_fast_shutdown and innobase_start_trx_and_assign_read_view(); these were requested by Guilhem
      sql/ha_innodb.cc:
        Implement innobase_very_fast_shutdown and innobase_start_trx_and_assign_read_view(); these were requested by Guilhem
      innobase/include/srv0srv.h:
        Implement innobase_very_fast_shutdown and innobase_start_trx_and_assign_read_view(); these were requested by Guilhem
      innobase/log/log0log.c:
        Implement innobase_very_fast_shutdown and innobase_start_trx_and_assign_read_view(); these were requested by Guilhem
      innobase/srv/srv0srv.c:
        Implement innobase_very_fast_shutdown and innobase_start_trx_and_assign_read_view(); these were requested by Guilhem
      522b175c
  6. 12 Oct, 2004 1 commit
    • unknown's avatar
      ha_innodb.cc: · d8c37793
      unknown authored
        Change error code to HA_ERR_ROW_IS_REFERENCED if we cannot DROP a parent table referenced by a FOREIGN KEY constraint; this error number is less misleading than the previous value HA_ERR_CANNOT_ADD_FOREIGN, but misleading still; we should introduce to 5.0 a proper MySQL error code
      
      
      sql/ha_innodb.cc:
        Change error code to HA_ERR_ROW_IS_REFERENCED if we cannot DROP a parent table referenced by a FOREIGN KEY constraint; this error number is less misleading than the previous value HA_ERR_CANNOT_ADD_FOREIGN, but misleading still; we should introduce to 5.0 a proper MySQL error code
      d8c37793
  7. 07 Oct, 2004 2 commits
    • unknown's avatar
      Many files: · 7d5716ba
      unknown authored
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      
      
      sql/ha_innodb.cc:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/row/row0mysql.c:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/fil/fil0fil.c:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/dict/dict0crea.c:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/dict/dict0dict.c:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/dict/dict0load.c:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/dict/dict0mem.c:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/include/mem0mem.ic:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/include/dict0mem.h:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/include/fil0fil.h:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/include/mem0mem.h:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      innobase/mem/mem0mem.c:
        Fix bug #5137: if innodb_file_per_table was specified, CREATE TEMPORARY TABLE ... TYPE=InnoDB said that cannot find path specified, and made mysqld to exit(1)
      7d5716ba
    • unknown's avatar
      ha_innodb.cc: · c44414cb
      unknown authored
        Merge manually the InnoDB mysqldump -l crash patch (crash with LOCK TABLES ... LOCAL) from 4.0 to 4.1; some code cleanup
      
      
      sql/ha_innodb.cc:
        Merge manually the mysqldump -l crash pacth from 4.0 to 4.1; some code cleanup
      c44414cb
  8. 05 Oct, 2004 1 commit
    • unknown's avatar
      ha_innodb.cc: · 3d37874b
      unknown authored
        Raise maximum column prefix len to 767 bytes, so that MySQL can create a column prefix index of 255 UTF-8 characters (each takes 3 bytes at the maximum); add comments about why innobase_get_at_most_n_mbchars() works ok
      dict0mem.h:
        Raise maximum column prefix len to 767 bytes, so that MySQL can create a column prefix index of 255 UTF-8 characters (each takes 3 bytes at the maximum)
      row0mysql.c:
        If MySQL tries to create a column prefix index longer that 255 UTF-8 characters, give an error, and drop the table from the InnoDB internal data dictionary. MySQL did not drop the table there in its own error handling.
      
      
      innobase/row/row0mysql.c:
        If MySQL tries to create a column prefix index longer that 255 UTF-8 characters, give an error, and drop the table from the InnoDB internal data dictionary. MySQL did not drop the table there in its own error handling.
      innobase/include/dict0mem.h:
        Raise maximum column prefix len to 767 bytes, so that MySQL can create a column prefix index of 255 UTF-8 characters (each takes 3 bytes at the maximum)
      sql/ha_innodb.cc:
        Raise maximum column prefix len to 767 bytes, so that MySQL can create a column prefix index of 255 UTF-8 characters (each takes 3 bytes at the maximum); add comments about why innobase_get_at_most_n_mbchars() works ok
      3d37874b
  9. 01 Oct, 2004 5 commits
    • unknown's avatar
      ha_innodb.cc: · f9b16928
      unknown authored
        A partial bugfix to a multibyte charset / column prefix index bug: my_charpos() does not handle right some cases, we try to mask the bug for ASCII chars < 128 in the UTF-8 charset
      
      
      sql/ha_innodb.cc:
        A partial bugfix to a multibyte charset / column prefix index bug: my_charpos() does not handle right some cases, we try to mask the bug for ASCII chars < 128 in the UTF-8 charset
      f9b16928
    • unknown's avatar
      Many files: · 8949b3e2
      unknown authored
        Fix bug introduced by the prefix key + multibyte charsets patch today
      
      
      sql/ha_innodb.cc:
        Fix bug introduced by the prefix key + multibyte charsets patch today
      innobase/include/data0type.h:
        Fix bug introduced by the prefix key + multibyte charsets patch today
      innobase/include/fsp0fsp.h:
        Fix bug introduced by the prefix key + multibyte charsets patch today
      innobase/data/data0type.c:
        Fix bug introduced by the prefix key + multibyte charsets patch today
      innobase/row/row0ins.c:
        Fix bug introduced by the prefix key + multibyte charsets patch today
      innobase/row/row0row.c:
        Fix bug introduced by the prefix key + multibyte charsets patch today
      innobase/row/row0sel.c:
        Fix bug introduced by the prefix key + multibyte charsets patch today
      innobase/row/row0upd.c:
        Fix bug introduced by the prefix key + multibyte charsets patch today
      8949b3e2
    • 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
    • unknown's avatar
      Added more comments on the code and made some code polishing. · aaad0704
      unknown authored
      sql/ha_innodb.cc:
        Added more comments and some polishing.
      aaad0704
    • unknown's avatar
      InnoDB: quote identifiers according to MySQL settings (Bug #5292) · ea30886c
      unknown authored
      innobase/btr/btr0btr.c:
        Add parameter to ut_print_name() and dict_index_name_print() calls
      innobase/btr/btr0cur.c:
        Add parameter to dict_index_name_print() calls
      innobase/buf/buf0buf.c:
        Add parameter to dict_index_name_print() calls
      innobase/dict/dict0crea.c:
        Add parameter to ut_print_name() calls
      innobase/dict/dict0dict.c:
        Add parameter to ut_print_name() calls
        Update documentation links to http://dev.mysql.com
      innobase/dict/dict0load.c:
        Add parameter to ut_print_name() calls
      innobase/fil/fil0fil.c:
        Use ut_print_filename()
        Update links to documentation to http://dev.mysql.com
      innobase/ibuf/ibuf0ibuf.c:
        Replaced printf(...) with fprintf(stderr,...)
      innobase/include/dict0dict.h:
        Added trx parameters
      innobase/include/row0row.h:
        Added trx parameter
      innobase/include/row0sel.h:
        Added trx parameter
      innobase/include/row0upd.h:
        Added trx parameters
      innobase/include/row0upd.ic:
        Added trx parameter for dict_index_name_print()
      innobase/include/trx0rec.h:
        Added trx parameter
      innobase/include/ut0ut.h:
        Added ut_print_filename()
        Added trx parameter to ut_print_name() and ut_print_namel()
      innobase/lock/lock0lock.c:
        Added parameter to dict_index_name_print() and ut_print_name() calls
      innobase/page/page0page.c:
        Added parameter to dict_index_name_print() calls
      innobase/pars/pars0opt.c:
        Added parameter to dict_index_name_print() call
      innobase/pars/pars0pars.c:
        Added parameter to upd_field_set_field_no() call
      innobase/row/row0ins.c:
        Added trx parameters
      innobase/row/row0mysql.c:
        Added trx parameters
      innobase/row/row0purge.c:
        Added trx parameter
      innobase/row/row0row.c:
        Added trx parameter
      innobase/row/row0sel.c:
        Added trx parameters
      innobase/row/row0umod.c:
        Added trx parameters
      innobase/row/row0upd.c:
        Added trx parameters
      innobase/trx/trx0rec.c:
        Added trx parameters
      innobase/trx/trx0roll.c:
        Added parameter to ut_print_name() calls
      innobase/ut/ut0ut.c:
        Added ut_print_filename()
        Added trx parameter to ut_print_namel() and ut_print_name() calls
      sql/ha_innodb.cc:
        Added trx parameters
        Rewrote mysql_get_identifier_quote_char()
      sql/mysql_priv.h:
        Added get_quote_char_for_identifier()
      sql/sql_show.cc:
        Added get_quote_char_for_identifier()
        Removed append_quoted_simple_identifier()
        Make append_identifier() use get_quote_char_for_identifier()
      ea30886c
  10. 30 Sep, 2004 1 commit
    • unknown's avatar
      Made innodb_autoextend_increment accessible as a global variable. · 9e9fb4f8
      unknown authored
      sql/ha_innodb.cc:
        Removed variable innobase_auto_extend_increment
        (access srv_auto_extend_increment directly)
      sql/ha_innodb.h:
        Removed variable innobase_auto_extend_increment
        (access srv_auto_extend_increment directly)
      sql/mysqld.cc:
        Moved innodb_autoextend_increment to alphabetically correct position.
        Replaced innobase_auto_extend_increment with srv_auto_extend_increment.
      sql/set_var.cc:
        Added innodb_autoextend_increment
      9e9fb4f8
  11. 17 Sep, 2004 1 commit
  12. 13 Sep, 2004 2 commits
    • unknown's avatar
      row0mysql.h: · f6b77bbc
      unknown authored
        Improve the comment on stored_select_lock_type
      ha_innodb.cc:
        Let InnoDB remember select_lock_type inside LOCK TABLES, also over plain consistent read SELECTs; fix Bug #5538 : assertion failure when using mysqldump with the -l option; in MERGING this patch to 4.1, there may be PROBLEMS; that is because previous patch was never merged to 4.1; Heikki Tuuri has to polish the code in 4.1 after this patch has been merged.
      
      
      sql/ha_innodb.cc:
        Let InnoDB remember select_lock_type inside LOCK TABLES, also over plain consistent read SELECTs; fix Bug #5538 : assertion failure when using mysqldump with the -l option; in MERGING this patch to 4.1, there may be PROBLEMS; that is because previous patch was never merged to 4.1; Heikki Tuuri has to polish the code in 4.1 after this patch has been merged.
      innobase/include/row0mysql.h:
        Improve the comment on stored_select_lock_type
      f6b77bbc
    • unknown's avatar
      Fix for BUG#5117: · c2da5b39
      unknown authored
       * Renamed handler::estimate_number_of_rows to handler::estimate_rows_upper_bound function, which can also return "unknown"
       * made filesort to use full sort buffer if number of rows to sort is not known.
      
      
      sql/examples/ha_tina.h:
        Renamed estimate_number_of_rows -> estimate_rows_upper_bound
      sql/filesort.cc:
         * Fix for BUG#5117: made filesort() to use full sort buffer if number of rows to sort is not known.
         * Comments and assertion added
      sql/ha_berkeley.cc:
        Renamed estimate_number_of_rows -> estimate_rows_upper_bound
      sql/ha_berkeley.h:
        Renamed estimate_number_of_rows -> estimate_rows_upper_bound
      sql/ha_innodb.cc:
        Renamed estimate_number_of_rows -> estimate_rows_upper_bound
      sql/ha_innodb.h:
        Renamed estimate_number_of_rows -> estimate_rows_upper_bound
      sql/handler.h:
        Renamed estimate_number_of_rows -> estimate_rows_upper_bound
      c2da5b39
  13. 07 Sep, 2004 1 commit
    • unknown's avatar
      InnoDB: Add configuration option innodb_autoextend_increment · ad714c14
      unknown authored
      innobase/include/srv0srv.h:
        Add srv_auto_extend_increment and make SRV_AUTO_EXTEND_INCREMENT
        configureable by it
      innobase/srv/srv0srv.c:
        Add srv_auto_extend_increment
      sql/ha_innodb.cc:
        Add innobase_auto_extend_increment and srv_auto_extend_increment
      sql/ha_innodb.h:
        Add innobase_auto_extend_increment
      sql/mysqld.cc:
        Add "innodb_autoextend_increment" configuration option
      ad714c14
  14. 03 Sep, 2004 1 commit
    • unknown's avatar
      Fixed unique prefix key bug for multibyte character sets (BUG #4521) for · dc704231
      unknown authored
      InnoDB. This fixes also a second part of the same problem with prefix keys
      on a multibyte string column for InnoDB.
      
      
      innobase/btr/btr0btr.c:
        Multibyte character set prefix indexes are not any more fixed size. Therefore,
        we have to chect that length of the index field in not greater than
        prefix length.
      innobase/rem/rem0cmp.c:
        Remove unnecessary changes.
      innobase/row/row0ins.c:
        Fixed unique prefix key or prefix key using multibyte character set bugs for
        InnoDB (BUG #4521). For prefix keys we have to get the storage length
        for the prefix length of characters in the key.
      innobase/row/row0row.c:
        Fixed unique prefix key or prefix key using multibyte character set bugs for
        InnoDB (BUG #4521). For prefix keys we have to get the storage length
        for the prefix length of characters in the key.
      innobase/row/row0sel.c:
        Fixed unique prefix key or prefix key using multibyte character set bugs for
        InnoDB (BUG #4521). For prefix keys we have to get the storage length
        for the prefix length of characters in the key.
      innobase/row/row0upd.c:
        Fixed unique prefix key or prefix key using multibyte character set bugs for
        InnoDB (BUG #4521). For prefix keys we have to get the storage length
        for the prefix length of characters in the key.
      mysql-test/r/ctype_utf8.result:
        Added utf8 character test cases for InnoDB.
      mysql-test/t/ctype_utf8.test:
        Added utf8 character expected test results for InnoDB.
      sql/ha_innodb.cc:
        Added function innobase_get_at_most_n_mbchars to return position of
        the nth character in the multibyte character string.
      sql/ha_innodb.h:
        Remove unnecessary changes.
      dc704231
  15. 01 Sep, 2004 1 commit
    • unknown's avatar
      ha_innodb.cc: · e348a2ce
      unknown authored
        If ALTER TABLE ... DROP FOREIGN KEY ... fails because of a wrong constraint name, return a table handler error number 150 instead of 152; the value 152 was misleading, as it referred to '152 = Cannot delete a parent row', whereas '150 = Foreign key constraint is incorrectly formed' is less misleading
      
      
      sql/ha_innodb.cc:
        If ALTER TABLE ... DROP FOREIGN KEY ... fails because of a wrong constraint name, return a table handler error number 150 instead of 152; the value 152 was misleading, as it referred to '152 = Cannot delete a parent row', whereas '150 = Foreign key constraint is incorrectly formed' is less misleading
      e348a2ce
  16. 19 Aug, 2004 1 commit
    • unknown's avatar
      ha_innodb.cc: · 76e8a2b1
      unknown authored
        innobase_mysql_tmpfile(): call dup() and my_close() on the file
        returned by create_temp_file()
        in order to avoid memory leak caused by my_open() being paired with close()
      
      
      sql/ha_innodb.cc:
        innobase_mysql_tmpfile(): call dup() and my_close() on the file
        returned by create_temp_file()
        in order to avoid memory leak caused by my_open() being paired with close()
      76e8a2b1
  17. 17 Aug, 2004 1 commit
    • unknown's avatar
      srv0start.c, ut0mem.c, ut0dbg.c, ut0dbg.h, srv0start.h: · 63fc705a
      unknown authored
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri)
      mysqld.cc, ha_innodb.cc:
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri) 
      
      
      sql/ha_innodb.cc:
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri)
      sql/mysqld.cc:
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri)
      innobase/include/srv0start.h:
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri)
      innobase/include/ut0dbg.h:
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri)
      innobase/ut/ut0dbg.c:
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri)
      innobase/ut/ut0mem.c:
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri)
      innobase/srv/srv0start.c:
        Changes for NetWare to exit the InnoDB gracefully instead of crashing the server (patch by PRam@novell.com, polished a little by Heikki Tuuri)
      63fc705a
  18. 10 Aug, 2004 1 commit
    • unknown's avatar
      InnoDB: Use create_temp_file() when available · 6c3b7231
      unknown authored
      innobase/include/os0file.h:
        Improve the comment of os_file_create_tmpfile()
      innobase/os/os0file.c:
        os_file_create_tmpfile(): Use create_temp_file()
        via innobase_mysql_tmpfile() unless UNIV_HOTBACKUP is defined
      sql/ha_innodb.cc:
        Added innobase_mysql_tmpfile(), a wrapper around create_temp_file()
      6c3b7231
  19. 06 Aug, 2004 1 commit
    • unknown's avatar
      InnoDB: Add option for disabling innodb_status.<pid> files. · 0f5b1b3c
      unknown authored
      InnoDB: Implement tmpfile() differently on Windows (Bug #3998)
      
      
      innobase/dict/dict0dict.c:
        Check the return value of os_file_create_tmpfile(),
        as it can now return NULL
      innobase/include/os0file.h:
        Note that os_file_create_tmpfile() can now return NULL
      innobase/include/srv0srv.h:
        Add a new server flag (srv_innodb_status) to disable
        the creation of innodb_status.<pid> files
      innobase/lock/lock0lock.c:
        Check the return value of os_file_create_tmpfile(),
        as it can now return NULL
      innobase/os/os0file.c:
        os_file_create_tmpfile(): separate implementation for Win32;
        errors will be reported but will not cause assertion failure
      innobase/srv/srv0srv.c:
        Add a new server flag (srv_innodb_status) to disable
        the creation of innodb_status.<pid> files
      innobase/srv/srv0start.c:
        innobase_start_or_create_for_mysql(): create srv_monitor_file
        with tmpfile() or with a visible name "innodb_status.<pid>",
        depending on the setting of the flag srv_innodb_status.
      sql/ha_innodb.cc:
        innobase_init(): initialize srv_innodb_status
        update_table_comment(), get_foreign_key_create_info(): replace
        tmpfile() with os_file_create_tmpfile()
      sql/ha_innodb.h:
        Add new Boolean flag, innobase_create_status_file.
      sql/mysqld.cc:
        Add new Boolean flag, innodb_status_file
      0f5b1b3c
  20. 30 Jul, 2004 1 commit
    • unknown's avatar
      ha_innodb.cc: · 7a3131df
      unknown authored
        ha_innobase::create(): pass the query string as UTF-8
        to row_table_add_foreign_constraints()  (Bug #4649)
      
      
      sql/ha_innodb.cc:
        ha_innobase::create(): pass the query string as UTF-8
        to row_table_add_foreign_constraints()  (Bug #4649)
      7a3131df
  21. 20 Jul, 2004 1 commit
    • unknown's avatar
      Added innodb_locks_unsafe_for_binlog option. This option turns off Innodb · 0390acec
      unknown authored
        next-key locking. Using this option the locks InnoDB sets on index 
        records do not affect the ``gap'' before that index record. Thus, this option
        allows phantom problem.
      
      
      innobase/include/srv0srv.h:
        Added srv_locks_unsafe_for_binlog for innodb_locks_unsafe_for_binlog option.
      innobase/row/row0sel.c:
        If innodb_locks_unsafe_for_binlog option is used, we lock only the record, i.e. 
        next-key locking is not used. Therefore, setting lock to the index record
        do not affect the ``gap'' before that index record. Thus, this option
        allows phantom problem, because concurrent insert operations are allowed inside 
        the select range.
      innobase/srv/srv0srv.c:
        Added srv_locks_unsafe_for_binlog for innodb_locks_unsafe_for_binlog option.
      sql/ha_innodb.cc:
        Added innobase_locks_unsafe_for_binlog and srv_locks_unsafe_for_binlog for 
        innodb_locks_unsafe_for_binlog option.
      sql/ha_innodb.h:
        Added innobase_locks_unsafe_for_binlog for innodb_locks_unsafe_for_binlog option.
      sql/mysqld.cc:
        Added OPT_INNODB_LOCKS_UNSAFE_FOR_BINLOG, innobase_locks_unsafe_for_binlog for
        innodb_locks_unsafe_for_binlog option.
      sql/set_var.cc:
        Added innodb_locks_unsafe_for_binlog and innobase_locks_unsafe_for_binlog for
        innodb_locks_unsafe_for_binlog option.
      BitKeeper/etc/logging_ok:
        Logging to logging@openlogging.org accepted
      0390acec
  22. 12 Jul, 2004 1 commit
    • unknown's avatar
      InnoDB: LOCK TABLE clean-up · 922fbbab
      unknown authored
      innobase/include/lock0lock.h:
        Improve comments regarding LOCK_TABLE_EXP
      innobase/include/row0mysql.h:
        Rename row_unlock_table_for_mysql() to row_unlock_tables_for_mysql()
        and improve its comment
      innobase/include/trx0trx.h:
        Rename n_tables_locked to n_lock_table_exp
      innobase/lock/lock0lock.c:
        Rename n_tables_locked to n_lock_table_exp
        Increment n_lock_table_exp already in lock_table_create()
        Replace some ut_ad() assertions with ut_a()
      innobase/row/row0mysql.c:
        Rename n_tables_locked to n_lock_table_exp
        Rename row_unlock_table_for_mysql() to row_unlock_tables_for_mysql()
        and improve its comment
      innobase/trx/trx0trx.c:
        Rename n_tables_locked to n_lock_table_exp
      sql/ha_innodb.cc:
        Rename n_tables_locked to n_lock_table_exp
        Rename row_unlock_table_for_mysql() to row_unlock_tables_for_mysql()
      922fbbab
  23. 23 Jun, 2004 1 commit
    • 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
  24. 20 Jun, 2004 1 commit
    • unknown's avatar
      Robustness feature. · 9a6e7a83
      unknown authored
      Won't be pushed as is - separate email sent for internal review.
      WL#1717 "binlog-innodb consistency".
      Now when mysqld starts, if InnoDB does a crash recovery, we use the binlog name
      and position retrieved from InnoDB (corresponding to the last transaction
      successfully committed by InnoDB) to cut any rolled back transaction from
      the binary log. This is triggered by the --innodb-safe-binlog option.
      Provided you configure mysqld to fsync() InnoDB at every commit (using
      flush_log_at_trx_commit) and to fsync() the binlog at every write
      (using --sync-binlog=1), this behaviour guarantees that a master always has
      consistency between binlog and InnoDB, whenever the crash happens.
      6 tests to verify that it works.
      
      
      client/mysqltest.c:
        New command require_os (only "unix" accepted for now).
      innobase/include/trx0sys.h:
        when InnoDB does crash recovery, we now save the binlog coords it prints, into variables for later use.
      innobase/trx/trx0sys.c:
        when InnoDB does crash recovery, we now save the binlog coords it prints, into variables for later use.
      mysql-test/mysql-test-run.sh:
        The tests which check that the binlog is cut at restart, need to not delete those binlogs, of course.
        And not delete replication info, so that we can test that the slave does not receive anything
        wrong from the cut binlog.
      sql/ha_innodb.cc:
        methods to read from InnoDB the binlog coords stored into it
      sql/ha_innodb.h:
        ethods to read from InnoDB the binlog coords stored into it
      sql/log.cc:
        Added my_sync() when we create a binlog (my_sync of the binlog and of the index file);
        this is always done, whether --sync-binlog or not (binlog creation is rare, so no speed
        problem, and I like to have the existence of the binlog always reliably recorded, even if
        later content is not).
        If --crash-binlog-innodb, crash between the binlog write and the InnoDB commit.
        New methods:
        - report_pos_in_innodb() to store the binlog name and position into InnoDB (used only when
        we create a new binlog: at startup and at FLUSH LOGS)
        - cut_spurious_tail() to possibly cut the tail of a binlog based on the info we read
        from InnoDB (does something only if InnoDB has just done a crash recovery).
      sql/mysql_priv.h:
        new option, to crash (use for testing only)
      sql/mysqld.cc:
        New option --innodb-safe-binlog and --crash-binlog-innodb (the latter is for testing, it makes mysqld crash).
        Just after opening the logs and opening the storage engines, cut any wrong statement from the binlog, based
        on info read from InnoDB.
      sql/sql_class.h:
        new methods for MYSQL_LOG.
      9a6e7a83
  25. 11 Jun, 2004 1 commit
    • unknown's avatar
      ha_innodb.cc: · 799865ee
      unknown authored
        Put back the ha_innodb.cc source code lines that were accidentally removed in Jan Lindstrom's push yesterday (he used the account heikki@mysql.com)
      
      
      sql/ha_innodb.cc:
        Put back the ha_innodb.cc source code lines that were accidentally removed in Jan Lindstrom's push yesterday (he used the account heikki@mysql.com)
      799865ee
  26. 10 Jun, 2004 2 commits
    • unknown's avatar
      WL#1689 "Map OPTIMIZE TABLE to ALTER TABLE for InnoDB" · 29ab3397
      unknown authored
      exactly it's mapped to "ALTER TABLE t; ANALYZE TABLE t;"
      
      
      sql/ha_innodb.cc:
        ::optimize() now returns "try ALTER and then analyze" instead of only analyze.
      sql/handler.h:
        new code to say "try alter and analyze".
      sql/mysql_priv.h:
        as we may now use mysql_alter_table() internally to ::optimize we must prevent it from talking to the client.
        New function mysql_recreate_table() which is the same as ALTER TABLE t;
      sql/sql_parse.cc:
        the big block removed here is moved into mysql_recreate_table().
      sql/sql_table.cc:
        In mysql_admin_table(): if the handler returns HA_ADMIN_TRY_ALTER,
        we close the table, recreate it, then open it and analyze it.
        This is currently used only for OPTIMIZE TABLE of an InnoDB table.
      29ab3397
    • unknown's avatar
      · 1a0f012a
      unknown authored
      Added function 
      
      /***********************************************************************
      This function stores binlog offset and flushes logs */
      
      
      void innobase_store_binlog_offset_and_flush_log(char *binlog_name,longlong offset) 
      requested by Guilhem to ha_innodb.cc and ha_innodb.h. 
      
      Change made by Jan.Lindstrom@innodb.com
      
      1a0f012a
  27. 08 Jun, 2004 2 commits
    • unknown's avatar
      Added function innobase_store_binlog_offset_and_flush_log requested by Guilhem · 9ce36bdf
      unknown authored
      to ha_innodb.cc and ha_innodb.h
      
      
      sql/ha_innodb.cc:
        /***********************************************************************
        This function stores binlog offset and flushes logs */
        
        void
        innobase_store_binlog_offset_and_flush_log(
        /*=============================*/
            char *binlog_name,          /* in: binlog name   */
            longlong offset             /* in: binlog offset */
        );
      BitKeeper/etc/logging_ok:
        Logging to logging@openlogging.org accepted
      9ce36bdf
    • unknown's avatar
      ha_innodb.cc: · 74c03743
      unknown authored
        Fix Bug #4047: remove the improvement ported from 4.0 that made InnoDB to remember the original select_lock_type inside LOCK TABLES
      
      
      sql/ha_innodb.cc:
        Fix Bug #4047: remove the improvement ported from 4.0 that made InnoDB to remember the original select_lock_type inside LOCK TABLES
      74c03743
  28. 02 Jun, 2004 1 commit
    • unknown's avatar
      after merge fixes · 1f14cc70
      unknown authored
      innobase/os/os0file.c:
        after merge fix
      sql/ha_innodb.cc:
        after merge fix
      sql/sql_select.cc:
        after merge fix (The patch for 4.0 didn't make sence in 4.1)
      1f14cc70
  29. 01 Jun, 2004 1 commit
    • unknown's avatar
      row0mysql.c, row0mysql.h, ha_innodb.cc: · 05d13fa9
      unknown authored
        Inside LOCK TABLES, use either LOCK_S or LOCK_X in locking reads; an improvent over the previous patch
      
      
      sql/ha_innodb.cc:
        Inside LOCK TABLES, use either LOCK_S or LOCK_X in locking reads; an improvent over the previous patch
      innobase/include/row0mysql.h:
        Inside LOCK TABLES, use either LOCK_S or LOCK_X in locking reads; an improvent over the previous patch
      innobase/row/row0mysql.c:
        Inside LOCK TABLES, use either LOCK_S or LOCK_X in locking reads; an improvent over the previous patch
      05d13fa9
  30. 31 May, 2004 1 commit