1. 29 Jun, 2006 3 commits
    • unknown's avatar
      Merge mysql.com:/home/mydev/mysql-4.1-bug17877 · d7a32c64
      unknown authored
      into  mysql.com:/home/mydev/mysql-5.0-bug11824
      
      
      myisam/mi_key.c:
        Auto merged
      mysql-test/r/func_sapdb.result:
        Auto merged
      mysql-test/r/gis-rtree.result:
        Auto merged
      mysql-test/r/symlink.result:
        Auto merged
      mysql-test/t/func_sapdb.test:
        Auto merged
      mysql-test/t/gis-rtree.test:
        Auto merged
      sql/item_timefunc.cc:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      myisam/mi_check.c:
        Manual merge
      mysql-test/r/func_time.result:
        Manual merge
      mysql-test/t/func_time.test:
        Manual merge
      d7a32c64
    • unknown's avatar
      Merge mysql.com:/home/mydev/mysql-4.1-bug11824 · a7f62e53
      unknown authored
      into  mysql.com:/home/mydev/mysql-5.0-bug11824
      
      
      myisam/mi_create.c:
        Auto merged
      a7f62e53
    • unknown's avatar
      Merge mysql.com:/home/mydev/mysql-5.0-amerge · 2b1a7ce4
      unknown authored
      into  mysql.com:/home/mydev/mysql-5.0-bug11824
      
      
      configure.in:
        Auto merged
      mysql-test/r/federated.result:
        Auto merged
      mysql-test/t/federated.test:
        Auto merged
      sql/ha_federated.cc:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      2b1a7ce4
  2. 28 Jun, 2006 13 commits
    • unknown's avatar
      Merge bk-internal:/home/bk/mysql-5.0-engines · a5a77418
      unknown authored
      into  mysql.com:/home/jimw/my/mysql-5.0-16494
      
      
      sql/ha_federated.cc:
        Auto merged
      mysql-test/r/federated.result:
        Resolve conflict
      mysql-test/t/federated.test:
        Resolve conflict
      a5a77418
    • unknown's avatar
      BUG #19773 · ad8fcfc3
      unknown authored
      Pushbuild fixes to result file, test, and header file for federated.
      
      
      mysql-test/r/federated.result:
        BUG #19773
        
        Pushbuild fixes - result file had hard-coded port
      mysql-test/t/federated.test:
        BUG #19773
        
        Pushbuild fixes Test was missing --replace_result
      sql/ha_federated.h:
        BUG #19773
        
        HPUX and Windows failed with variable named row and *row in method declaration
      ad8fcfc3
    • unknown's avatar
      Optimize stack usage of ha_federated::update_row(). · d0776c1e
      unknown authored
      
      sql/ha_federated.cc:
        We only need one string buffer for fields in ::update_row()
      d0776c1e
    • unknown's avatar
      Merge acurtis@bk-internal.mysql.com:/home/bk/mysql-5.0-engines · b4843377
      unknown authored
      into  xiphis.org:/home/antony/work2/mysql-5.0-engines.sync
      
      
      configure.in:
        Auto merged
      sql/ha_federated.cc:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      b4843377
    • unknown's avatar
      Merge pgalbraith@bk-internal.mysql.com:/home/bk/mysql-5.0 · 902e11c5
      unknown authored
      into  govinda.patg.net:/home/patg/mysql-build/mysql-5.0-engines-bug19773
      
      
      sql/ha_federated.cc:
        Auto merged
      902e11c5
    • unknown's avatar
      Merge xiphis.org:/home/antony/work2/p4-bug12096.2 · 385500fe
      unknown authored
      into  xiphis.org:/home/antony/work2/p4-bug12096.2-merge
      
      
      configure.in:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      385500fe
    • unknown's avatar
      Bug#17877 - Corrupted spatial index · 02edab28
      unknown authored
      CHECK TABLE could complain about a fully intact spatial index.
      A wrong comparison operator was used for table checking. 
      The result was that it checked for non-matching spatial keys. 
      This succeeded if at least two different keys were present, 
      but failed if only the matching key was present.
      
      I fixed the key comparison.
      
      
      myisam/mi_check.c:
        Bug#17877 - Corrupted spatial index
        Fixed the comparison operator for checking a spatial index.
        Using MBR_EQUAL | MBR_DATA to compare for equality and
        include the data pointer in the comparison. The latter
        finds the index entry that points to the current record.
        This is necessary for non-unique indexes.
        
        The old operator, SEARCH_SAME, is unknown to the rtree
        search functions and handled like MBR_DISJOINT.
      myisam/mi_key.c:
        Bug#17877 - Corrupted spatial index
        Added a missing DBUG_RETURN.
      myisam/rt_index.c:
        Bug#17877 - Corrupted spatial index
        Included the data pointer in the copy of the search key.
        This is necessary for searching the index entry that points
        to a specific record if the search_flag contains MBR_DATA.
      myisam/rt_mbr.c:
        Bug#17877 - Corrupted spatial index
        Extended the RT_CMP() macro with an assert for an 
        unexpected comparison operator.
      mysql-test/r/gis-rtree.result:
        Bug#17877 - Corrupted spatial index
        The test result.
      mysql-test/t/gis-rtree.test:
        Bug#17877 - Corrupted spatial index
        The test case.
      02edab28
    • unknown's avatar
      Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0 · 3afcc959
      unknown authored
      into  mysql.com:/home/tnurnberg/mysql-5.0
      
      3afcc959
    • unknown's avatar
      Merge mysql.com:/home/tnurnberg/work/mysql-5.0-maint-19857 · 014ef7c1
      unknown authored
      into  mysql.com:/home/tnurnberg/mysql-5.0
      
      014ef7c1
    • unknown's avatar
      Bug#19857: When a user with CREATE ROUTINE priv creates a routine it results in NULL p/w · cfc10401
      unknown authored
        
      sp_grant_privileges(), the function that GRANTs EXECUTE + ALTER privs on a SP,
      did so creating a user-entry with not password; mysql_routine_grant() would then
      write that "change" to the user-table.
      
      
      mysql-test/r/sp-security.result:
        prove that creating a stored procedure will not destroy the creator's password
      mysql-test/t/sp-security.test:
        prove that creating a stored procedure will not destroy the creator's password
      sql/sql_acl.cc:
        get password from ACLs, convert to correct format, and use it when
        forcing GRANTS for SPs
      cfc10401
    • unknown's avatar
      Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-5.0 · 227dc58b
      unknown authored
      into mysql.com:/home/gluh/MySQL/Merge/5.0-kt
      
      
      sql/set_var.cc:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      227dc58b
    • unknown's avatar
      BUG #19773 · 341ff742
      unknown authored
        
      Final-review fixes per Monty, pre-push. OK'd for 
      push. Please see each file's comments.
      
      
      
      mysql-test/r/federated.result:
        BUG #19773
            
        Results for multi-table deletes, updates
      mysql-test/t/federated.test:
        BUG #19773
            
        Test multi table update and delete. Added drop table to end of previous test.
      sql/ha_federated.cc:
        BUG #19773 
            
        Post-review changes, per Monty. 3rd patch, OK'd for push.
        - Added index_read_idx_with_result_set, which uses the result set passed to it
        - Hash by entire connection scheme
        - Protected store_result result set for table scan by adding a method result set
          to index_read_idx and index_read which is passed to index_read_with_result, which
          in turn iterates over the single record via read_next.
          This is a change from having two result sets in the first two patches. 
          This keeps the code clean and avoids the need for yet another result set.
        - Rewrote ::position and ::rnd_pos to store position - if primary key use 
          primary key, if not, use record buffer.
        - Rewrote get_share to store hash with connect string vs. table name
        - delete_row added subtration of "records" by affected->rows
        - Added read_next to handle what rnd_next used to do (converting raw record
           to query and vice versa)
        - Removed many DBUG_PRINT lines
        - Removed memset initialisation since subsequent loop accomplishes
        - Removed un-necessary mysql_free_result lines
      sql/ha_federated.h:
         BUG #19773
            
            Fixed "SET " to " SET " to make sure built statements are built with 
            "UPDATE `t1` SET .." instead of "UPDATE `t1`SET"
      341ff742
    • unknown's avatar
      Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0 · 16a2388c
      unknown authored
      into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-main
      
      16a2388c
  3. 27 Jun, 2006 18 commits
    • unknown's avatar
      Merge jbruehe@bk-internal.mysql.com:/home/bk/mysql-5.0 · 1e870848
      unknown authored
      into mysql.com:/M50/autopush20216-5.0
      
      
      scripts/make_binary_distribution.sh:
        Auto merged
      1e870848
    • unknown's avatar
      Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0 · 9ed7af77
      unknown authored
      into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-main
      
      9ed7af77
    • unknown's avatar
      Manual merge for bug#20216. · 55ec4509
      unknown authored
      
      support-files/mysql.spec.sh:
        Manual merge for bug#20216, due to some conflict in the changenotes.
      55ec4509
    • unknown's avatar
      Revert all previous attempts to call "mysql_upgrade" during RPM upgrade. · 84e66103
      unknown authored
      This finishes bug#18516, as far as "generic RPMs" are concerned.
      
      
      support-files/mysql.spec.sh:
        Revert all previous attempts to call "mysql_upgrade" during RPM upgrade,
        there are some more aspects which need to be solved before this is possible.
        For now, just ensure the binary "mysql_upgrade" is delivered and installed.
        This finishes bug#18516, as far as "generic RPMs" are concerned.
      84e66103
    • unknown's avatar
      Merge mysql.com:/M50/bug19353-5.0-2 into mysql.com:/M50/bug20216-5.0 · ec355fb5
      unknown authored
      
      support-files/mysql.spec.sh:
        Auto merged
      ec355fb5
    • unknown's avatar
      BUG#1662 - ALTER TABLE LIKE ignores DATA/INDEX DIRECTPORY · e93885d8
      unknown authored
      Produce a warning if DATA/INDEX DIRECTORY is specified in
      ALTER TABLE statement.
      
      Ignoring of these options is documented in the symbolic links
      section of the manual.
      
      
      mysql-test/r/symlink.result:
        Modified test result according to fix for BUG#1662.
      sql/sql_parse.cc:
        Produce a warning if DATA/INDEX DIRECTORY is specified in
        ALTER TABLE statement.
      e93885d8
    • unknown's avatar
      Move "mysqldumpslow" from the client RPM to the server RPM (bug#20216), · 3b8f38bb
      unknown authored
      manual merge from 4.0.
      
      
      support-files/mysql.spec.sh:
        Manual merge of the fix for bug#20216.
        (became necessary because 4.0 and 4.1 spec files use different file sort order).
      3b8f38bb
    • unknown's avatar
    • unknown's avatar
      Dec. 31st, 9999 is still a valid date, only starting with Jan 1st 10000 things... · 203c7ed2
      unknown authored
      Dec. 31st, 9999 is still a valid date, only starting with Jan 1st 10000 things become invalid (Bug #12356)
      
      
      mysql-test/r/func_sapdb.result:
        test cases for date range edge cases added
      mysql-test/r/func_time.result:
        test cases for date range edge cases added
      mysql-test/t/func_sapdb.test:
        test cases for date range edge cases added
      mysql-test/t/func_time.test:
        test cases for date range edge cases added
      203c7ed2
    • unknown's avatar
      6b343082
    • unknown's avatar
      Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0 · 02d1ca65
      unknown authored
      into  poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-main
      
      
      mysql-test/mysql-test-run.sh:
        Auto merged
      ndb/include/kernel/GlobalSignalNumbers.h:
        Auto merged
      ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
        Auto merged
      ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
        Auto merged
      sql/ha_ndbcluster.cc:
        Auto merged
      02d1ca65
    • unknown's avatar
      merging fix · 65764b25
      unknown authored
      65764b25
    • unknown's avatar
      Fix yet another place with an obsolete explicit cast to byte *. · df6f4605
      unknown authored
      
      sql/set_var.h:
        Fix yet another place with an obsolete explicit cast to byte *
      df6f4605
    • unknown's avatar
      Fix compilation failures on Windows caused by the patch for Bug#17199. · f44a3834
      unknown authored
      Fix a minor issue with Bug#16206 (bdb.test failed if the tree is compiled 
      without blackhole).
      
      
      include/my_sys.h:
        Change declaration of my_strdup_with_length to accept const char *,
        not const byte *: in 5 places out of 6 where this function is used,
        it's being passed char *, not byte *
      mysql-test/r/bdb.result:
        Remove dependency on an optional engine (updated test results).
      mysql-test/t/bdb.test:
        Remove dependency on an optional engine.
      mysys/my_malloc.c:
        my_strdup_with_length: const byte * -> const char *
      mysys/safemalloc.c:
        my_strdup_with_length: const byte * -> const char *
      sql/ha_federated.cc:
        my_strdup_with_length: const byte * -> const char *
      sql/log_event.cc:
        my_strdup_with_length: const byte * -> const char *
      sql/set_var.cc:
        my_strdup_with_length: const byte * -> const char *
      sql/sql_class.h:
        Change db_length type to uint from uint32 (see also table.h)
      sql/table.h:
        Change the type of db_length to uint from uint32: LEX_STRING uses uint for 
        length, we need a small and consistent set of types to store length to 
        minimize cast and compile failures.
      f44a3834
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-4.1 · c611cde1
      unknown authored
      into mysql.com:/home/hf/work/mysql-4.1.clean
      
      c611cde1
    • unknown's avatar
      Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail · 84de897f
      unknown authored
      Very complex select statements can create temporary tables
      that are too big to be represented as a MyISAM table.
      
      This was not checked at table creation time, but only at
      open time. The result was an attempt to delete the 
      "impossible" table.
      
      But if the server is built --with-raid, MyISAM tries to 
      open the table before deleting the files. It needs to find 
      out if the table uses the raid support and how many raid 
      chunks there are. This is done with an open "for repair",
      which will almost always succeed.
      
      But in this case we have an "impossible" table. The open
      failed. Hence the files were not deleted. Also the error
      message was a bit unspecific.
      
      I turned an open error in this situation into the assumption 
      of having no raid support on the table. Thus the normal data 
      file is tried to be deleted. This may however leave existing 
      raid chunks behind.
      
      I also added a check in mi_create() to prevent the creation
      of an "impossible" table. A more decriptive error message is
      given in this case.
      
      No test case. The required select statement is way too
      large for the test suite. I added a test script to the
      bug report.
      
      
      myisam/mi_create.c:
        Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail
        Added a check to mi_create() that the table description
        header of the index file does not exceed 64KB. The header
        has only 16 bits to encode its length.
      myisam/mi_delete_table.c:
        Bug#11824 - internal /tmp/*.{MYD,MYI} files remain, causing subsequent queries to fail
        Interpret error in table open as not having a raid
        configuration on the tbale. Thus try to delete the
        normal data file, but leave behind raid chunks if 
        they exist.
      84de897f
    • unknown's avatar
      Bug #19852 Restoring backup made from cluster with full data memory fails · 40f9f83d
      unknown authored
      - correction of previous patch
      
      40f9f83d
    • unknown's avatar
      Bug #19852 Restoring backup made from cluster with full data memory fails · 6f0bbc51
      unknown authored
      - make sure to allocate just enough pages in the fragments by using the actual
        row count from the backup, to avoid over allocation of pages to fragments, and
        thus avoid the bug
      
      
      ndb/include/kernel/GlobalSignalNumbers.h:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - distribute fragment complete to all participants to update row count
      ndb/include/kernel/signaldata/BackupContinueB.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - time slica writing of fragment info to ctl file
      ndb/include/kernel/signaldata/BackupImpl.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - 32 -> 64 bit on bytes and records
        - new signal fragment complete to all participants
      ndb/include/kernel/signaldata/BackupSignalData.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - 32 -> 64 bit on bytes and records
      ndb/include/kernel/signaldata/DictTabInfo.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - add min and max rows to dict tab info
      ndb/include/kernel/signaldata/LqhFrag.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added min and max rows to add frag req
      ndb/include/kernel/signaldata/TupFrag.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added min and max rows to add frag req
      ndb/include/ndbapi/NdbDictionary.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added get/set of min max rows
      ndb/src/common/debugger/signaldata/BackupImpl.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - 32 -> 64 bit on bytes and records
      ndb/src/common/debugger/signaldata/BackupSignalData.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - 32 -> 64 bit on bytes and records
      ndb/src/common/debugger/signaldata/DictTabInfo.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added min and max rows to dict tab info
      ndb/src/common/debugger/signaldata/LqhFrag.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added min and max rows to frag req
      ndb/src/kernel/blocks/backup/Backup.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - new section in backup with per fragment info in ctl file
        - 32 -> 64 bit on bytes and records
      ndb/src/kernel/blocks/backup/Backup.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - new section in backup with per fragment info in ctl file
        - 32 -> 64 bit on bytes and records
      ndb/src/kernel/blocks/backup/BackupFormat.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - new section in backup with per fragment info in ctl file
        - 32 -> 64 bit on bytes and records
      ndb/src/kernel/blocks/backup/BackupInit.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - new signal fragment complete to all participants
      ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added max and min rows to dict table object
      ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added max and min rows to dict table object
      ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added min and max rows to frag req
      ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added min and max rows to frag req
      ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added min and max rows to frag req
      ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - added min and max rows to frag req
        - move memory allocation to fragment to after adding of attributes to get correct headsize
        - allocate pages to fragments according to min rows setting
      ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - grow page allocation starting from 2 irrespective of first page allocation
      ndb/src/mgmsrv/MgmtSrvr.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - 32 -> 64 bits on bytes and records
      ndb/src/mgmsrv/MgmtSrvr.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - 32 -> 64 bits on bytes and records
      ndb/src/ndbapi/NdbDictionary.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - min and max rows in dict
      ndb/src/ndbapi/NdbDictionaryImpl.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - min and max rows in dict
      ndb/src/ndbapi/NdbDictionaryImpl.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - min and max rows in dict
      ndb/tools/restore/Restore.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - add retrieval of fragment info
      ndb/tools/restore/Restore.hpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - add retrieval of fragment info
      ndb/tools/restore/consumer_restore.cpp:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - set min in restore to the actual row count (this is the actual bug fix)
      sql/ha_ndbcluster.cc:
        Bug #19852  	Restoring backup made from cluster with full data memory fails
        - set min and max rows according to sql definition
      6f0bbc51
  4. 26 Jun, 2006 6 commits
    • unknown's avatar
      Bug #16494: Updates that set a column to NULL fail sometimes · a409d991
      unknown authored
       When building the UPDATE query to send to the remote server, the
       federated storage engine built the query incorrectly if it was updating
       a field to be NULL.
      
       Thanks to Bjšrn Steinbrink for an initial patch for the problem.
      
      
      mysql-test/r/federated.result:
        Add new results
      mysql-test/t/federated.test:
        Add new regression test
      sql/ha_federated.cc:
        Fix logic of how fields are added to SET and WHERE clauses of an
        UPDATE statement. Fields that were NULL were being handled incorrectly.
        Also reorganizes the code a little bit so the update of the two
        clauses is consistent.
      a409d991
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · 35f9da31
      unknown authored
      into  mysql.com:/opt/local/work/mysql-5.0-17199
      
      
      sql/sql_insert.cc:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/sql_table.cc:
        Auto merged
      35f9da31
    • unknown's avatar
      Merge kboortz@bk-internal.mysql.com:/home/bk/mysql-5.0 · b4151e1b
      unknown authored
      into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
      
      b4151e1b
    • unknown's avatar
      Merge mysql.com:/Users/kent/mysql/bk/mysql-4.1-new · 5fb0091c
      unknown authored
      into mysql.com:/Users/kent/mysql/bk/mysql-5.0-new
      
      
      scripts/make_binary_distribution.sh:
        Auto merged
      5fb0091c
    • unknown's avatar
      Merge mysql.com:/Users/kent/mysql/bk/mysql-4.0 · f72d80e2
      unknown authored
      into mysql.com:/Users/kent/mysql/bk/mysql-4.1-new
      
      
      scripts/make_binary_distribution.sh:
        Auto merged
      scripts/make_sharedlib_distribution.sh:
        Auto merged
      f72d80e2
    • unknown's avatar
      make_sharedlib_distribution.sh: · abffdb65
      unknown authored
        For compatibility, don't use {..,..} in pattern matching
      make_binary_distribution.sh:
        Added .dylib and .sl as shared library extensions
      
      
      scripts/make_binary_distribution.sh:
        Added .dylib and .sl as shared library extensions
      scripts/make_sharedlib_distribution.sh:
        For compatibility, don't use {..,..} in pattern matching
      abffdb65