1. 30 Apr, 2008 2 commits
    • vasil's avatar
      Add ChangeLog. · 4d0cd8e4
      vasil authored
      Formatted in compliance with many GNU tools, roughly described in
      http://www.gnu.org/software/guile/changelogs/guile-changelogs_toc.html
      4d0cd8e4
    • vasil's avatar
      branches/zip: Merge 2384:2423 from branches/5.1: · 55db138b
      vasil authored
        ------------------------------------------------------------------------
        r2386 | vasil | 2008-03-27 07:45:02 +0200 (Thu, 27 Mar 2008) | 22 lines
        
        branches/5.1:
        
        Merge change from MySQL (this fixes the failing innodb test):
        
        ChangeSet@1.1810.3601.4, 2008-02-07 02:33:21+04:00, gshchepa@host.loc +9 -0
          Fixed bug#30059.
          Server handles truncation for assignment of too-long values
          into CHAR/VARCHAR/TEXT columns in a different ways when the
          truncated characters are spaces:
          1. CHAR(N) columns silently ignore end-space truncation;
          2. TEXT columns post a truncation warning/error in the
             non-strict/strict mode.
          3. VARCHAR columns always post a truncation note in
             any mode.
        
          Space truncation processing has been synchronised over
          CHAR/VARCHAR/TEXT columns: current behavior of VARCHAR
          columns has been propagated as standard.
        
          Binary-encoded string/BLOB columns are not affected.
        
        
        ------------------------------------------------------------------------
        r2387 | vasil | 2008-03-27 08:49:05 +0200 (Thu, 27 Mar 2008) | 8 lines
        
        branches/5.1:
        
        Check whether *trx->mysql_query_str is != NULL in addition to
        trx->mysql_query_str. This adds more safety.
        
        This may or may not fix Bug#35226 RBR event crashes slave.
        
        
        ------------------------------------------------------------------------
        r2388 | vasil | 2008-03-27 14:02:34 +0200 (Thu, 27 Mar 2008) | 7 lines
        
        branches/5.1:
        
        Swap the order in which mysql_thd, mysql_query_str and *mysql_query_str
        are checked for non-NULL.
        
        Suggested by:	Marko
        
        ------------------------------------------------------------------------
        r2419 | vasil | 2008-04-23 19:08:06 +0300 (Wed, 23 Apr 2008) | 9 lines
        
        branches/5.1:
        
        Change the fix for Bug#32440 to show bytes instead of kilobytes in
        INFORMATION_SCHEMA.TABLES.DATA_FREE.
        
        Suggested by:	Domas Mituzas <domas@mysql.com>
        Approved by:	Heikki
        
        
        ------------------------------------------------------------------------
        r2420 | calvin | 2008-04-24 15:25:30 +0300 (Thu, 24 Apr 2008) | 4 lines
        
        branches/5.1: Fix bug#29507 TRUNCATE shows to many rows effected
        
        In InnoDB, the row count is only a rough estimate used by SQL
        optimization. InnoDB is now return row count 0 for TRUNCATE operation.
        ------------------------------------------------------------------------
        r2421 | calvin | 2008-04-24 15:32:30 +0300 (Thu, 24 Apr 2008) | 6 lines
        
        branches/5.1: Fix bug#35537 - Innodb doesn't increment handler_update
        and handler_delete
        
        Add the calls to ha_statistic_increment() in ha_innobase::delete_row()
        and ha_innobase::update_row().
        
        ------------------------------------------------------------------------
        r2422 | vasil | 2008-04-24 16:00:30 +0300 (Thu, 24 Apr 2008) | 11 lines
        
        branches/5.1:
        
        Fix Bug#36169 create innodb compressed table with too large row size crashed
        
        Sometimes it is possible that
        row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in
        row_create_index_for_mysql() when the index object is freed so copy the
        table name to a safe place beforehand and use the copy.
        
        Approved by:	Sunny
        
        ------------------------------------------------------------------------
      55db138b
  2. 29 Apr, 2008 1 commit
    • vasil's avatar
      branches/zip: · 03a3d076
      vasil authored
       
      Fix Mantis issue#34 https://svn.innodb.com/mantis/view.php?id=34
      "I_S plugins should refuse to load if the storage engine plugin is not loaded"
      and MySQL Bug#36310 http://bugs.mysql.com/36310
      "InnoDB plugin crash"
      
      * Make srv_was_started public
      * Set srv_was_started at the end of innobase_start_or_create_for_mysql()
        so it is not set to TRUE if innodb encounters some startup error
      * Refuse to start any of the I_S plugins if srv_was_started is not TRUE
      
      Approved by:	Heikki
      03a3d076
  3. 23 Apr, 2008 1 commit
    • vasil's avatar
      branches/zip: · a5b8b883
      vasil authored
      Fix Bug#36169 create innodb compressed table with too large row size crashed
      
      Sometimes it is possible that
      row_drop_table_for_mysql(index->table_name, trx, FALSE); is invoked in
      row_create_index_for_mysql() when the index object is freed, so copy the
      table name to a safe place beforehand and use the copy.
      
      Approved by:	Sunny
      a5b8b883
  4. 12 Apr, 2008 1 commit
  5. 11 Apr, 2008 3 commits
  6. 10 Apr, 2008 2 commits
    • calvin's avatar
      branches/zip: Implementation of using animal names for innodb_file_format, · e978b4a2
      calvin authored
      described in Mantis#30. Specifically:
      
      - Allow innodb_file_format to take string arguments
      - Make innodb_file_format system variable a string instead of a number
      - Implement the callback functions
      - Update warning messages
      
      Three new functions are implemented:
      
      file_format_name_lookup(): Validate the file format name and return
      its corresponding id.
      
      innodb_file_format_check(): Check if it is a valid file format. This
      function is registered as a callback with MySQL.
      
      innodb_file_format_update(): Update the global variable using the
      "saved" value. This functions is registered as a callback with MySQL.
      e978b4a2
    • sunny's avatar
      branches/zip: Handle rename of variables. If the statically linked in engine · 0f9b2523
      sunny authored
      has a config variable that has since been renamed, we use a mapping table
      to check for matches.
      0f9b2523
  7. 09 Apr, 2008 3 commits
  8. 07 Apr, 2008 2 commits
  9. 04 Apr, 2008 5 commits
  10. 28 Mar, 2008 6 commits
    • marko's avatar
      branches/zip: i_s_cmpmem_fill_low(): Do not reset all buddy allocator · 7a370443
      marko authored
      statistics, but only the cumulated count and duration of relocation
      operations.
      7a370443
    • marko's avatar
      branches/zip: Minor change to the formatting of integer fields · 6c9311af
      marko authored
      in INFORMATION_SCHEMA.INNODB_CMP*.
      
      i_s_cmp_fields_info, i_s_cmpmem_fields_info: Define the field lengths
      as MY_INT32_NUM_DECIMAL_DIGITS or MY_INT64_NUM_DECIMAL_DIGITS.
      
      i_s_cmpmem_fields_info: Define "relocation_ops" as MYSQL_TYPE_LONGLONG.
      6c9311af
    • marko's avatar
      branches/zip: Rename the compression-related INFORMATION_SCHEMA tables · 74ac5b11
      marko authored
      and columns as suggested by Ken.
      
      INNODB_COMPRESSION, INNODB_COMPRESSION_RESET:
      Rename to INNODB_CMP, INNODB_CMP_RESET, with the following columns:
      page_size
      compress_ops
      compress_ops_ok
      compress_time
      uncompress_ops
      uncompress_time
      
      INNODB_COMPRESSION_BUDDY, INNODB_COMPRESSION_BUDDY_RESET:
      Rename to INNODB_CMPMEM, INNODB_CMPMEM_RESET, with the following columns:
      page_size
      pages_used
      pages_free
      relocation_ops
      relocation_time
      74ac5b11
    • marko's avatar
      branches/zip: Implement the INFORMATION_SCHEMA tables · eb04f0f8
      marko authored
      INNODB_COMPRESSION_BUDDY and INNODB_COMPRESSION_BUDDY_RESET.
      
      buf_buddy_stat_struct, buf_buddy_stat_t, buf_buddy_stat[]:
      Statistics of the buddy system grouped by block size.
      
      i_s_innodb_compression_buddy, i_s_innodb_compression_buddy_reset:
      New INFORMATION_SCHEMA plugins.
      
      i_s_compression_buddy_fields_info[]: Define the fields:
      size, used, free, relocated, relocated_sec.
      
      i_s_compression_buddy_fill_low(), i_s_compression_buddy_fill(),
      i_s_compression_buddy_reset_fill(): Fill the fields.
      
      i_s_compression_buddy_init(), i_s_compression_buddy_reset_init():
      Initialize the tables.
      eb04f0f8
    • marko's avatar
      branches/zip: Correct minor mistakes made in r2390. · 71e4f9af
      marko authored
      i_s_compression_fill_low(): Do not acquire or release the buffer pool
      mutex.  The page_zip_stat[] is not protected by any mutex.
      
      i_s_innodb_compression, i_s_innodb_compression_reset: Change the
      description to say "compression" instead of "compressed buffer pool".
      71e4f9af
    • marko's avatar
      branches/zip: Rename the INFORMATION_SCHEMA tables · f29b8ee0
      marko authored
      INNODB_ZIP and INNODB_ZIP_RESET to
      INNODB_COMPRESSION and INNODB_COMPRESSION_RESET,
      and remove the statistics of the buddy system.
      
      This change was discussed with Ken.  It makes the tables shorter
      and easier to understand.  The removed data will be represented in
      the tables INNODB_COMPRESSION_BUDDY and INNODB_COMPRESSION_BUDDY_RESET
      that will be added later.
      
      i_s_innodb_zip, i_s_innodb_zip_reset, i_s_zip_fields_info[],
      i_s_zip_fill_low(), i_s_zip_fill(), i_s_zip_reset_fill(),
      i_s_zip_init(), i_s_zip_reset_init(): Replace "zip" with "compression".
      
      i_s_compression_fields_info[]: Remove "used", "free",
      "relocated", "relocated_usec".  In "compressed_usec" and "decompressed_usec",
      replace microseconds with seconds ("usec" with "sec").
      
      page_zip_decompress(): Correct a typo in the function comment.
      
      PAGE_ZIP_SSIZE_BITS, PAGE_ZIP_NUM_SSIZE: New constants.
      
      page_zip_stat_t, page_zip_stat: Statistics of the compression, grouped
      by page size.
      
      page_zip_simple_validate(): Assert that page_zip->ssize is reasonable.
      f29b8ee0
  11. 27 Mar, 2008 1 commit
    • vasil's avatar
      branches/zip: · d9ed600a
      vasil authored
      Add the prototype of check_global_access() if MySQL version is less than
      5.1.24 to make zip compile with 5.1.23. This was removed when MySQL added
      the prototype in their code in 5.1.24 but we still need zip to compile with
      older versions.
      d9ed600a
  12. 26 Mar, 2008 1 commit
  13. 19 Mar, 2008 1 commit
    • marko's avatar
      branches/zip: Remove innodb.patch. · 63bcc4a3
      marko authored
      This patch tries to enable resizeable buffer pool by polling the configuration
      parameter for the buffer pool size, which is not a good solution.  The
      right way could be to have an update function callback of a settable
      MySQL variable to send an event to the master thread.
      
      It could also make sense to expose the buffer pool chunks to the user.
      The first chunk would never be freed.  Other chunks than the first one
      would only be used for allocating page frames (uncompressed or compressed)
      and block descriptors of of compressed pages (buf_page_t).  That is, other
      users of the buffer pool, such as mem_heap_create_block() and the lock
      table, would be restricted to the first chunk.  This would allow other
      chunks to be freed by simply flushing any dirty blocks that they contain.
      
      It might also be worthwhile to create multiple chunks initially, based on
      the initial buffer pool size and the HugeTLB page size.  In that way, the
      buffer pool could be reduced from the initial configuration at runtime.
      63bcc4a3
  14. 18 Mar, 2008 2 commits
    • marko's avatar
      branches/zip: Pass the tablespace flags correctly when creating or opening · 15c67098
      marko authored
      single-table tablespaces.  This bug was reported by Sunny as Mantis issue #26.
      
      fil_space_create(), fil_create_new_single_table_tablespace(),
      fil_open_single_table_tablespace(), fsp_header_init_fields():
      Add ut_a(flags != DICT_TF_COMPACT).
      
      dict_build_table_def_step(), row_import_tablespace_for_mysql(),
      row_truncate_table_for_mysql(): Pass correct flags to
      fil_create_new_single_table_tablespace() or fil_open_single_table_tablespace().
      15c67098
    • marko's avatar
      branches/zip: dict_load_table(): Remove a redundant check for !flags. · bd8968b4
      marko authored
      The function dict_sys_tables_get_flags() already ensures that the
      table flags are 0 unless ROW_FORMAT=COMPACT.
      bd8968b4
  15. 17 Mar, 2008 6 commits
  16. 14 Mar, 2008 1 commit
  17. 13 Mar, 2008 2 commits
    • marko's avatar
      branches/zip: Implement ROW_FORMAT=COMPRESSED and ROW_FORMAT=DYNAMIC. · c82afada
      marko authored
      Throw warnings, not errors for wrong ROW_FORMAT or KEY_BLOCK_SIZE,
      so that any table dump can be loaded.
      
      As of this change, InnoDB supports the following table formats:
      
      ROW_FORMAT=REDUNDANT
      	the only format before MySQL/InnoDB 5.0.3
      ROW_FORMAT=COMPACT
      	the new default format of MySQL/InnoDB 5.0.3
      ROW_FORMAT=DYNAMIC
      	uncompressed, no prefix in the clustered index record for BLOBs
      ROW_FORMAT=COMPRESSED
      	like ROW_FORMAT=DYNAMIC, but zlib compressed B-trees and BLOBs;
      	the compressed page size is specified by KEY_BLOCK_SIZE in
      	kilobytes (1, 2, 4, 8, or 16; default 8)
      
      KEY_BLOCK_SIZE=1, 2, 4, 8, or 16: implies ROW_FORMAT=COMPRESSED;
      ignored if ROW_FORMAT is not COMPRESSED
      
      KEY_BLOCK_SIZE=anything else: ignored
      
      The InnoDB row format is displayed in the 4th column (Row_format) of
      the output of SHOW TABLE STATUS.  The Create_options column may show
      ROW_FORMAT= and KEY_BLOCK_SIZE=, but they do not necessarily have
      anything to do with InnoDB.
      
      The table format can also be queried like this:
      
      SELECT table_schema, table_name, row_format
      FROM information_schema.tables
      WHERE engine='innodb' and row_format in ('Compressed','Dynamic');
      
      When Row_format='Compressed', KEY_BLOCK_SIZE should usually correspond
      to the compressed page size.  But the .frm file could be manipulated
      to show any KEY_BLOCK_SIZE.
      
      For some reason, INFORMATION_SCHEMA.TABLES.CREATE_OPTIONS does not
      include KEY_BLOCK_SIZE.  It does include row_format (spelled in
      lowercase).  This looks like a MySQL bug, because the table
      INFORMATION_SCHEMA.TABLES probably tries to replace SHOW TABLE STATUS.
      I reported this as Bug #35275 <http://bugs.mysql.com/35275>.
      
      ha_innobase::get_row_type(): Add ROW_TYPE_COMPRESSED, ROW_TYPE_DYNAMIC.
      
      ha_innobase::create(): Implement ROW_FORMAT=COMPRESSED and
      ROW_FORMAT=DYNAMIC.  Do not throw errors for wrong ROW_FORMAT or
      KEY_BLOCK_SIZE, but issue warnings instead.
      
      ha_innobase::check_if_incompatible_data(): Return COMPATIBLE_DATA_NO
      if KEY_BLOCK_SIZE has been specified.
      
      innodb.result: Adjust the result for the warning issued for ROW_FORMAT=FIXED.
      
      innodb-zip.test: Add tests.  Query INFORMATION_SCHEMA.TABLES for ROW_FORMAT.
      c82afada
    • marko's avatar
      branches/zip: row_upd_index_replace_new_col_val(): Fix the function · 18f593bc
      marko authored
      parameters that were somehow wrong in r2363.
      18f593bc