1. 15 Aug, 2006 1 commit
    • unknown's avatar
      ndb_lock.test, ndb_lock.result: · 9216f5de
      unknown authored
        bug #18184  SELECT ... FOR UPDATE does not work..: New test case
      ha_ndbcluster.h, ha_ndbcluster.cc, NdbConnection.hpp:
        Fix for bug #21059  Server crashes on join query with large dataset with NDB tables: Releasing operation for each intermediate batch, before next call to trans->execute(NoCommit);
      
      
      mysql-test/r/ndb_lock.result:
        bug #18184  SELECT ... FOR UPDATE does not work..: New test case
      mysql-test/t/ndb_lock.test:
        bug #18184  SELECT ... FOR UPDATE does not work..: New test case
      ndb/include/ndbapi/NdbConnection.hpp:
        Fix for bug #21059  Server crashes on join query with large dataset with NDB tables: Releasing operation for each intermediate batch, before next call to trans->execute(NoCommit);
      sql/ha_ndbcluster.cc:
        Fix for bug #21059  Server crashes on join query with large dataset with NDB tables: Releasing operation for each intermediate batch, before next call to trans->execute(NoCommit);
      sql/ha_ndbcluster.h:
        Fix for bug #21059  Server crashes on join query with large dataset with NDB tables: Releasing operation for each intermediate batch, before next call to trans->execute(NoCommit);
      9216f5de
  2. 04 Jul, 2006 1 commit
  3. 01 Jul, 2006 1 commit
    • unknown's avatar
      Fix for bug#18437 "Wrong values inserted with a before update trigger on · ac957070
      unknown authored
      NDB table".
      
      SQL-layer was not marking fields which were used in triggers as such. As
      result these fields were not always properly retrieved/stored by handler
      layer. So one might got wrong values or lost changes in triggers for NDB,
      Federated and possibly InnoDB tables.
      This fix solves the problem by marking fields used in triggers
      appropriately.
      
      Also this patch contains the following cleanup of ha_ndbcluster code:
      
      We no longer rely on reading LEX::sql_command value in handler in order
      to determine if we can enable optimization which allows us to handle REPLACE
      statement in more efficient way by doing replaces directly in write_row()
      method without reporting error to SQL-layer.
      Instead we rely on SQL-layer informing us whether this optimization
      applicable by calling handler::extra() method with
      HA_EXTRA_WRITE_CAN_REPLACE flag.
      As result we no longer apply this optimzation in cases when it should not
      be used (e.g. if we have on delete triggers on table) and use in some
      additional cases when it is applicable (e.g. for LOAD DATA REPLACE).
      
      Finally this patch includes fix for bug#20728 "REPLACE does not work
      correctly for NDB table with PK and unique index".
        
      This was yet another problem which was caused by improper field mark-up.
      During row replacement fields which weren't explicity used in REPLACE
      statement were not marked as fields to be saved (updated) so they have
      retained values from old row version. The fix is to mark all table
      fields as set for REPLACE statement. Note that in 5.1 we already solve
      this problem by notifying handler that it should save values from all
      fields only in case when real replacement happens.
      
      
      include/my_base.h:
        Added HA_EXTRA_WRITE_CAN_REPLACE, HA_EXTRA_WRITE_CANNOT_REPLACE - new
        parameters for ha_extra() method. We use them to inform handler that
        write_row() which tries to insert new row into the table and encounters
        some already existing row with same primary/unique key can replace old
        row with new row instead of reporting error.
      mysql-test/r/federated.result:
        Additional test for bug#18437 "Wrong values inserted with a before update
        trigger on NDB table".
      mysql-test/r/ndb_replace.result:
        Added test for bug #20728 "REPLACE does not work correctly for NDB table
        with PK and unique index". Updated wrong results from older test.
      mysql-test/t/federated.test:
        Additional test for bug#18437 "Wrong values inserted with a before update
        trigger on NDB table".
      mysql-test/t/ndb_replace.test:
        Added test for bug #20728 "REPLACE does not work correctly for NDB table
        with PK and unique index".
      sql/ha_ndbcluster.cc:
        We no longer rely on reading LEX::sql_command value in handler in order
        to determine if we can enable optimization which allows us to handle REPLACE
        statement in more efficient way by doing replaces directly in write_row()
        method without reporting error to SQL-layer.
        Instead we rely on SQL-layer informing us whether this optimization
        applicable by calling handler::extra() method with
        HA_EXTRA_WRITE_CAN_REPLACE flag.
        As result we no longer apply this optimization in cases when it should not
        be used (e.g. if we have on delete triggers on table) and use in some
        additional cases when it is applicable (e.g. for LOAD DATA REPLACE).
      sql/item.cc:
        Item_trigger_field::setup_field():
          Added comment explaining why we don't set Field::query_id in this method.
      sql/mysql_priv.h:
        mysql_alter_table() function no longer takes handle_duplicates argument.
        Added declaration of mark_fields_used_by_triggers_for_insert_stmt() function.
      sql/sql_delete.cc:
        Mark fields which are used by ON DELETE triggers so handler will retrieve
        values for these fields.
      sql/sql_insert.cc:
        Explicitly inform handler that we are doing REPLACE (using ha_extra() method)
        in cases when it can promote insert operation done by write_row() to replace.
        Also when we do REPLACE we want to store values for all columns so we should
        inform handler about it.
        Finally we should mark fields used by ON UPDATE/ON DELETE triggers as such
        so handler can properly retrieve/restore values in these fields during
        execution of REPLACE and INSERT ... ON DUPLICATE KEY UPDATE statements.
      sql/sql_load.cc:
        Explicitly inform handler that we are doing LOAD DATA REPLACE (using
        ha_extra() method) in cases when it can promote insert operation done by
        write_row() to replace.
        Also when we do replace we want to save (replace) values for all columns
        so we should inform handler about it.
        Finally to properly execute LOAD DATA for table with triggers we should
        mark fields used by ON INSERT triggers as such so handler can properly
        store values for these fields.
      sql/sql_parse.cc:
        mysql_alter_table() function no longer takes handle_duplicates argument.
      sql/sql_table.cc:
        Got rid of handle_duplicates argument in mysql_alter_table() and
        copy_data_between_tables() functions. These functions were always
        called with handle_duplicates == DUP_ERROR and thus contained dead
        (and probably incorrect) code.
      sql/sql_trigger.cc:
        Added Table_triggers_list::mark_fields_used() method which is used to mark
        fields read/set by triggers as such so handlers will be able properly
        retrieve/store values in these fields.
      sql/sql_trigger.h:
        Table_triggers_list:
          Added mark_fields_used() method which is used to mark fields read/set by
          triggers as such so handlers will be able properly retrieve/store values
          in these fields. To implement this method added 'trigger_fields' member
          which is array of lists linking items for all fields used in triggers
          grouped by event and action time.
      sql/sql_update.cc:
        Mark fields which are used by ON UPDATE triggers so handler will retrieve
        and save values for these fields.
      mysql-test/r/ndb_trigger.result:
        Added test for bug#18437 "Wrong values inserted with a before update trigger
        on NDB table".
      mysql-test/t/ndb_trigger.test:
        Added test for bug#18437 "Wrong values inserted with a before update trigger
        on NDB table".
      ac957070
  4. 30 Jun, 2006 3 commits
    • unknown's avatar
      After merge fixes · f0dafc53
      unknown authored
      BitKeeper/etc/ignore:
        added scripts/mysql_upgrade_shell
      include/my_handler.h:
        my_handler.h should not include my_global.h
      mysql-test/r/key.result:
        Update results after merge
      f0dafc53
    • unknown's avatar
      adopted ndb handler code for tables without primary key and with unique index · 8d294dde
      unknown authored
      - added missing retrieval of hidden primary key
      
      8d294dde
    • unknown's avatar
      Don't read ~/.my.cnf in mysqldump.test · aa5ecc4c
      unknown authored
      heap/hp_test1.c:
        Changed type from last commit
      mysql-test/mysql-test-run.sh:
        Fixed problem with running with --gdb and two masters
        Don't disable ndb becasue we run gdb
      mysql-test/t/mysqldump.test:
        Don't read ~/.my.cnf
      sql/ha_ndbcluster.cc:
        Portability fix
      aa5ecc4c
  5. 29 Jun, 2006 2 commits
  6. 27 Jun, 2006 2 commits
    • 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
  7. 26 Jun, 2006 1 commit
    • unknown's avatar
      BUG#11459 ndb status variables not updated · 205a8d5e
      unknown authored
      change names of some undocumented ndb status variables to better reflect what
      their values mean
      
      
      sql/ha_ndbcluster.cc:
        rename some status variables to better reflect what they show.
      205a8d5e
  8. 21 Jun, 2006 1 commit
  9. 14 Jun, 2006 3 commits
  10. 12 Jun, 2006 3 commits
  11. 08 Jun, 2006 1 commit
  12. 02 Jun, 2006 2 commits
  13. 25 May, 2006 2 commits
  14. 17 May, 2006 1 commit
    • unknown's avatar
      ndb - bug#14509 [related] re-do auto-incr error handling · 163c6879
      unknown authored
      ndb/include/ndbapi/Ndb.hpp:
        make auto-incr methods return int 0/-1
      ndb/src/ndbapi/Ndb.cpp:
        make auto-incr methods return int 0/-1
      ndb/src/ndbapi/NdbDictionaryImpl.cpp:
        make auto-incr methods return int 0/-1
      ndb/test/ndbapi/testDict.cpp:
        make auto-incr methods return int 0/-1
      ndb/tools/restore/consumer_restore.cpp:
        make auto-incr methods return int 0/-1
      sql/ha_ndbcluster.cc:
        make auto-incr methods return int 0/-1
      163c6879
  15. 16 May, 2006 1 commit
    • unknown's avatar
      ndb - bug#14509 [related] setAutoIncrement: add error handling · 64b016de
      unknown authored
      ndb/include/ndbapi/Ndb.hpp:
        setAutoIncrement: add error handling
      ndb/src/ndbapi/Ndb.cpp:
        setAutoIncrement: add error handling
      ndb/src/ndbapi/NdbDictionaryImpl.cpp:
        setAutoIncrement: add error handling
      ndb/tools/restore/consumer_restore.cpp:
        setAutoIncrement: add error handling
      sql/ha_ndbcluster.cc:
        setAutoIncrement: add error handling
      64b016de
  16. 15 May, 2006 2 commits
    • unknown's avatar
      correction of merge · e2359288
      unknown authored
      e2359288
    • unknown's avatar
      Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail · 942fb3d1
      unknown authored
      - invalidate ndb dict cache on cluster disconnect (ClusterMgr.cpp)
      - add check for correct frm on external lock when table cache is found invalid
      
      
      ndb/include/ndbapi/ndb_cluster_connection.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/ClusterMgr.cpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/ClusterMgr.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/DictCache.cpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/DictCache.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/TransporterFacade.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/ndb_cluster_connection.cpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      ndb/src/ndbapi/ndb_cluster_connection_impl.hpp:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      sql/ha_ndbcluster.cc:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      mysql-test/r/ndb_autodiscover3.result:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      mysql-test/t/ndb_autodiscover3.test:
        Bug #16875 Using stale MySQLD FRM files can cause restored cluster to fail
      942fb3d1
  17. 05 May, 2006 1 commit
  18. 26 Apr, 2006 1 commit
  19. 25 Apr, 2006 1 commit
  20. 11 Apr, 2006 1 commit
  21. 05 Apr, 2006 1 commit
    • unknown's avatar
      Bug #13601: Wrong int type for bit · e13642dc
      unknown authored
        The wrong value was being reported as the field_length for BIT
        fields, resulting in confusion for at least Connector/J. The
        field_length is now always the number of bits in the field, as
        it should be.
      
      
      mysql-test/r/type_bit.result:
        Add new results
      mysql-test/r/type_bit_innodb.result:
        Add new results
      mysql-test/t/type_bit.test:
        Add new regression test
      mysql-test/t/type_bit_innodb.test:
        Add new regression test
      sql/field.cc:
        Fix Field_bit->field_length to actually report the display width, and
        store the bytes stored in the rec in the new bytes_in_rec member.
      sql/field.h:
        Fix Field_bit::field_length to store the correct value, adding
        Field_bit::bytes_in_rec to remember the number of bytes used for
        storing the value. Remove Field_bit_as_char::create_length, as it
        is now redundant.
      sql/ha_ndbcluster.cc:
        Handle field_length of Field_bit actually being the display width (# of bits).
      sql/key.cc:
        Fix inappropriate use of field->field_length for BIT ...
      e13642dc
  22. 28 Mar, 2006 3 commits
  23. 24 Mar, 2006 1 commit
  24. 23 Mar, 2006 2 commits
  25. 27 Feb, 2006 1 commit
    • unknown's avatar
      Bug#16795 ndb_cache_multi2 · 93f7eca4
      unknown authored
       - Change && to ||
       - Check for return value != 0 in "ndb->init()"
      
      
      mysql-test/r/ndb_cache_multi2.result:
        Update test result
      mysql-test/t/ndb_cache_multi2.test:
        Update test case
        - add printouts for what server the queries are from
        - Run the query from "while" once on server1 to cache it
      sql/ha_ndbcluster.cc:
        && => ||, to call both the function "thd->store_global()" and "ndb->init()" 
        ndb_init returns 0 on sucess. Fail if not zero.
      93f7eca4
  26. 13 Feb, 2006 1 commit
    • unknown's avatar
      ndb: · 91c01f82
      unknown authored
      add optional reporting of of a "name" tied to a nodeid in the cluster log
      reporting added for mysql server and ndb_restore
      
      91c01f82