I get seg fault using the following API when aValue is greater in length of the column.
NdbOperation::equal(const char* anAttrName, const char* aValue)
NdbOperation::equal(const char* anAttrName, const char* aValue, Uint32 len)
Table def
CREATE TABLE `chartable` (
`id` char(5) NOT NULL,
`value` char(5) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=ndbcluster DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
int main(int argc, char **argv) {
char connection_string[] = "localhost:1186";
Init(connection_string);
Ndb *ndb_object = nullptr;
RS_Status status = GetNDBObject(ndb_connection, &ndb_object);
ndb_object->setCatalogName("test");
const NdbDictionary::Dictionary *dict = ndb_object->getDictionary();
const NdbDictionary::Table *table = dict->getTable("chartable");
const NdbDictionary::Column *col = table->getColumn("id");
NdbTransaction *transaction = ndb_object->startTransaction(table);
if (transaction == nullptr) {
std::cout << "Tx Start failed" << std::endl;
}
NdbOperation *operation = transaction->getNdbOperation(table);
if (operation == nullptr) {
std::cout << "get operation failed" << std::endl;
}
operation->readTuple(NdbOperation::LM_CommittedRead);
// char pk[col->getLength()];
// for (int i = 0; i < col->getLength(); i++) {
// pk[i] = 0;
// }
std::string pkstr = "000000000000000000000000000000000000000000";
// std::memcpy(pk, pkstr.c_str(), pkstr.length());
// std::cout << "mem copy workd" << std::endl;
int ret = operation->equal("id", pkstr.c_str(), pkstr.length());
if (ret != 0) {
std::cout << "Op equal failed" << std::endl;
}
NdbRecAttr *val_rec = operation->getValue("value", NULL);
ret = transaction->execute(NdbTransaction::Commit);
if (ret != 0) {
std::cout << "execute failed" << std::endl;
}
if (transaction->getNdbError().classification == NdbError::NoDataFound) {
std::cout << "NOT FOUND" << std::endl;
} else {
std::cout << "data: " << val_rec->aRef() << std::endl;
}
ndb_object->closeTransaction(transaction);
CloseNDBObject(&ndb_object);
Shutdown();
return 0;
}
I get seg fault using the following API when aValue is greater in length of the column.
Table def