diff options
author | unknown <magnus@neptunus.(none)> | 2004-09-20 12:40:53 +0200 |
---|---|---|
committer | unknown <magnus@neptunus.(none)> | 2004-09-20 12:40:53 +0200 |
commit | 812a07490b13da30b001f30aeae65e88db02fbc3 (patch) | |
tree | 0c91e4991d248b62cfd62eacbeda2f0b1735e86c | |
parent | c06c007818d9456d65e8b05c14d966ce9d7a9a4d (diff) | |
download | mariadb-git-812a07490b13da30b001f30aeae65e88db02fbc3.tar.gz |
Ues buf pointer in get_ndb_value
Merge fixes
mysql-test/r/ndb_insert.result:
Correct test cases and result after merge
mysql-test/t/ndb_insert.test:
Correct test cases and result after merge
sql/ha_ndbcluster.cc:
Correct get_error_message after merge
Use buf pointer in get_ndb_value
-rw-r--r-- | mysql-test/r/ndb_insert.result | 5 | ||||
-rw-r--r-- | mysql-test/t/ndb_insert.test | 11 | ||||
-rw-r--r-- | sql/ha_ndbcluster.cc | 25 |
3 files changed, 26 insertions, 15 deletions
diff --git a/mysql-test/r/ndb_insert.result b/mysql-test/r/ndb_insert.result index 3ee6780cc46..cdc445558b9 100644 --- a/mysql-test/r/ndb_insert.result +++ b/mysql-test/r/ndb_insert.result @@ -432,13 +432,12 @@ INSERT INTO t1 VALUES SELECT COUNT(*) FROM t1; COUNT(*) 2005 +rollback; +begin; INSERT INTO t1 VALUES (1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5), (6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10); ERROR 23000: Duplicate entry '10' for key 1 -SELECT COUNT(*) FROM t1; -COUNT(*) -2000 commit; ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster select * from t1 where pk1=1; diff --git a/mysql-test/t/ndb_insert.test b/mysql-test/t/ndb_insert.test index 7ea25554ce3..310c16de3d8 100644 --- a/mysql-test/t/ndb_insert.test +++ b/mysql-test/t/ndb_insert.test @@ -441,6 +441,16 @@ select count(*) from t1; # +# Test that select count(*) can see inserts made in the same transaction +# +begin; +SELECT COUNT(*) FROM t1; +INSERT INTO t1 VALUES +(2001,2001,2001),(2002,2002,2002),(2003,2003,2003),(2004,2004,2004),(2005,2005,2005); +SELECT COUNT(*) FROM t1; +rollback; + +# # Insert duplicate rows, inside transaction # try to commit # @@ -519,7 +529,6 @@ SELECT * FROM t1 WHERE pk1=10; --error 1296 commit; -SELECT COUNT(*) FROM t1; select * from t1 where pk1=1; select * from t1 where pk1=10; diff --git a/sql/ha_ndbcluster.cc b/sql/ha_ndbcluster.cc index 7eb89081abd..1a311938a36 100644 --- a/sql/ha_ndbcluster.cc +++ b/sql/ha_ndbcluster.cc @@ -282,8 +282,8 @@ bool ha_ndbcluster::get_error_message(int error, { DBUG_ENTER("ha_ndbcluster::get_error_message"); DBUG_PRINT("enter", ("error: %d", error)); - - Ndb* ndb = (Ndb*)current_thd->transaction.ndb; + + Ndb *ndb= ((Thd_ndb*)current_thd->transaction.thd_ndb)->ndb; if (!ndb) DBUG_RETURN(false); @@ -517,7 +517,7 @@ int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob) */ int ha_ndbcluster::get_ndb_value(NdbOperation *ndb_op, Field *field, - uint fieldnr) + uint fieldnr, byte* buf) { DBUG_ENTER("get_ndb_value"); DBUG_PRINT("enter", ("fieldnr: %d flags: %o", fieldnr, @@ -525,12 +525,15 @@ int ha_ndbcluster::get_ndb_value(NdbOperation *ndb_op, Field *field, if (field != NULL) { + DBUG_ASSERT(buf); if (ndb_supported_type(field->type())) { DBUG_ASSERT(field->ptr != NULL); if (! (field->flags & BLOB_FLAG)) - { - m_value[fieldnr].rec= ndb_op->getValue(fieldnr, field->ptr); + { + byte *field_buf= buf + (field->ptr - table->record[0]); + m_value[fieldnr].rec= ndb_op->getValue(fieldnr, + field_buf); DBUG_RETURN(m_value[fieldnr].rec == NULL); } @@ -948,7 +951,7 @@ int ha_ndbcluster::pk_read(const byte *key, uint key_len, byte *buf) ERR_RETURN(trans->getNdbError()); // Read key at the same time, for future reference - if (get_ndb_value(op, NULL, no_fields)) + if (get_ndb_value(op, NULL, no_fields, NULL)) ERR_RETURN(trans->getNdbError()); } else @@ -965,7 +968,7 @@ int ha_ndbcluster::pk_read(const byte *key, uint key_len, byte *buf) if ((thd->query_id == field->query_id) || retrieve_all_fields) { - if (get_ndb_value(op, field, i)) + if (get_ndb_value(op, field, i, buf)) ERR_RETURN(trans->getNdbError()); } else @@ -1019,7 +1022,7 @@ int ha_ndbcluster::complemented_pk_read(const byte *old_data, byte *new_data) if (!(field->flags & PRI_KEY_FLAG) && (thd->query_id != field->query_id)) { - if (get_ndb_value(op, field, i)) + if (get_ndb_value(op, field, i, new_data)) ERR_RETURN(trans->getNdbError()); } } @@ -1082,7 +1085,7 @@ int ha_ndbcluster::unique_index_read(const byte *key, if ((thd->query_id == field->query_id) || (field->flags & PRI_KEY_FLAG)) { - if (get_ndb_value(op, field, i)) + if (get_ndb_value(op, field, i, buf)) ERR_RETURN(op->getNdbError()); } else @@ -1481,7 +1484,7 @@ int ha_ndbcluster::define_read_attrs(byte* buf, NdbOperation* op) (field->flags & PRI_KEY_FLAG) || retrieve_all_fields) { - if (get_ndb_value(op, field, i)) + if (get_ndb_value(op, field, i, buf)) ERR_RETURN(op->getNdbError()); } else @@ -1500,7 +1503,7 @@ int ha_ndbcluster::define_read_attrs(byte* buf, NdbOperation* op) if (!tab->getColumn(hidden_no)) DBUG_RETURN(1); #endif - if (get_ndb_value(op, NULL, hidden_no)) + if (get_ndb_value(op, NULL, hidden_no, NULL)) ERR_RETURN(op->getNdbError()); } |