mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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
This commit is contained in:
@ -432,13 +432,12 @@ INSERT INTO t1 VALUES
|
|||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
2005
|
2005
|
||||||
|
rollback;
|
||||||
|
begin;
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(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);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
ERROR 23000: Duplicate entry '10' for key 1
|
ERROR 23000: Duplicate entry '10' for key 1
|
||||||
SELECT COUNT(*) FROM t1;
|
|
||||||
COUNT(*)
|
|
||||||
2000
|
|
||||||
commit;
|
commit;
|
||||||
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
||||||
select * from t1 where pk1=1;
|
select * from t1 where pk1=1;
|
||||||
|
@ -440,6 +440,16 @@ INSERT INTO t1 VALUES
|
|||||||
select count(*) from t1;
|
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
|
# Insert duplicate rows, inside transaction
|
||||||
# try to commit
|
# try to commit
|
||||||
@ -519,7 +529,6 @@ SELECT * FROM t1 WHERE pk1=10;
|
|||||||
|
|
||||||
--error 1296
|
--error 1296
|
||||||
commit;
|
commit;
|
||||||
SELECT COUNT(*) FROM t1;
|
|
||||||
|
|
||||||
select * from t1 where pk1=1;
|
select * from t1 where pk1=1;
|
||||||
select * from t1 where pk1=10;
|
select * from t1 where pk1=10;
|
||||||
|
@ -282,8 +282,8 @@ bool ha_ndbcluster::get_error_message(int error,
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("ha_ndbcluster::get_error_message");
|
DBUG_ENTER("ha_ndbcluster::get_error_message");
|
||||||
DBUG_PRINT("enter", ("error: %d", error));
|
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)
|
if (!ndb)
|
||||||
DBUG_RETURN(false);
|
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,
|
int ha_ndbcluster::get_ndb_value(NdbOperation *ndb_op, Field *field,
|
||||||
uint fieldnr)
|
uint fieldnr, byte* buf)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("get_ndb_value");
|
DBUG_ENTER("get_ndb_value");
|
||||||
DBUG_PRINT("enter", ("fieldnr: %d flags: %o", fieldnr,
|
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)
|
if (field != NULL)
|
||||||
{
|
{
|
||||||
|
DBUG_ASSERT(buf);
|
||||||
if (ndb_supported_type(field->type()))
|
if (ndb_supported_type(field->type()))
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(field->ptr != NULL);
|
DBUG_ASSERT(field->ptr != NULL);
|
||||||
if (! (field->flags & BLOB_FLAG))
|
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);
|
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());
|
ERR_RETURN(trans->getNdbError());
|
||||||
|
|
||||||
// Read key at the same time, for future reference
|
// 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());
|
ERR_RETURN(trans->getNdbError());
|
||||||
}
|
}
|
||||||
else
|
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) ||
|
if ((thd->query_id == field->query_id) ||
|
||||||
retrieve_all_fields)
|
retrieve_all_fields)
|
||||||
{
|
{
|
||||||
if (get_ndb_value(op, field, i))
|
if (get_ndb_value(op, field, i, buf))
|
||||||
ERR_RETURN(trans->getNdbError());
|
ERR_RETURN(trans->getNdbError());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1019,7 +1022,7 @@ int ha_ndbcluster::complemented_pk_read(const byte *old_data, byte *new_data)
|
|||||||
if (!(field->flags & PRI_KEY_FLAG) &&
|
if (!(field->flags & PRI_KEY_FLAG) &&
|
||||||
(thd->query_id != field->query_id))
|
(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());
|
ERR_RETURN(trans->getNdbError());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1082,7 +1085,7 @@ int ha_ndbcluster::unique_index_read(const byte *key,
|
|||||||
if ((thd->query_id == field->query_id) ||
|
if ((thd->query_id == field->query_id) ||
|
||||||
(field->flags & PRI_KEY_FLAG))
|
(field->flags & PRI_KEY_FLAG))
|
||||||
{
|
{
|
||||||
if (get_ndb_value(op, field, i))
|
if (get_ndb_value(op, field, i, buf))
|
||||||
ERR_RETURN(op->getNdbError());
|
ERR_RETURN(op->getNdbError());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1481,7 +1484,7 @@ int ha_ndbcluster::define_read_attrs(byte* buf, NdbOperation* op)
|
|||||||
(field->flags & PRI_KEY_FLAG) ||
|
(field->flags & PRI_KEY_FLAG) ||
|
||||||
retrieve_all_fields)
|
retrieve_all_fields)
|
||||||
{
|
{
|
||||||
if (get_ndb_value(op, field, i))
|
if (get_ndb_value(op, field, i, buf))
|
||||||
ERR_RETURN(op->getNdbError());
|
ERR_RETURN(op->getNdbError());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -1500,7 +1503,7 @@ int ha_ndbcluster::define_read_attrs(byte* buf, NdbOperation* op)
|
|||||||
if (!tab->getColumn(hidden_no))
|
if (!tab->getColumn(hidden_no))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
#endif
|
#endif
|
||||||
if (get_ndb_value(op, NULL, hidden_no))
|
if (get_ndb_value(op, NULL, hidden_no, NULL))
|
||||||
ERR_RETURN(op->getNdbError());
|
ERR_RETURN(op->getNdbError());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user