void DatasetTableTailer::handleUpdate(NdbRecAttr* value[]) { int datasetPK = value[DS_ID_PK]->int32_value(); int datasetId = -1; int projectId = -1; if(value[DS_INODE_ID]->isNULL() == -1){ const NdbDictionary::Dictionary* database = getDatabase(mNdbConnection); const NdbDictionary::Table* table = getTable(database, TABLE.mTableName); NdbTransaction* transaction = startNdbTransaction(mNdbConnection); NdbOperation* op = getNdbOperation(transaction, table); op->readTuple(NdbOperation::LM_CommittedRead); op->equal(_dataset_cols[8].c_str(), datasetPK); NdbRecAttr* datasetIdCol = getNdbOperationValue(op, _dataset_cols[DS_INODE_ID]); NdbRecAttr* projectIdCol = getNdbOperationValue(op, _dataset_cols[DS_PROJ_ID]); executeTransaction(transaction, NdbTransaction::Commit); datasetId = datasetIdCol->int32_value(); projectId = projectIdCol->int32_value(); transaction->close(); } if(datasetId == -1 || projectId == -1){ LOG_ERROR("Couldn't resolve projectId[" << projectId << "] or datasetId[" << datasetId << "]"); return; } string data = createJSONUpSert(projectId, value); if (mElasticSearch->addDataset(projectId, datasetId, data)) { LOG_INFO("Update Dataset[" << datasetId << "]: Succeeded"); } }
inline int ScanInterpretTest::addRowToInsert(Ndb* pNdb, NdbConnection* pInsTrans){ NdbOperation* pOp = pInsTrans->getNdbOperation(restab.getName()); if (pOp == NULL) { ERR(pInsTrans->getNdbError()); pNdb->closeTransaction(pInsTrans); return NDBT_FAILED; } if( pOp->insertTuple() == -1 ) { ERR(pInsTrans->getNdbError()); pNdb->closeTransaction(pInsTrans); return NDBT_FAILED; } // Copy all attribute to the new operation for (int a = 0; a<restab.getNoOfColumns(); a++){ const NdbDictionary::Column* attr = tab.getColumn(a); NdbRecAttr* reca = row.attributeStore(a); int check = -1; switch (attr->getType()){ case NdbDictionary::Column::Char: case NdbDictionary::Column::Varchar: case NdbDictionary::Column::Binary: case NdbDictionary::Column::Varbinary:{ check = pOp->setValue( attr->getName(), reca->aRef()); break; } case NdbDictionary::Column::Int:{ check = pOp->setValue( attr->getName(), reca->int32_value()); } break; case NdbDictionary::Column::Bigint:{ check = pOp->setValue( attr->getName(), reca->int64_value()); } break; case NdbDictionary::Column::Unsigned:{ check = pOp->setValue( attr->getName(), reca->u_32_value()); } break; case NdbDictionary::Column::Bigunsigned:{ check = pOp->setValue( attr->getName(), reca->u_64_value()); } break; case NdbDictionary::Column::Float: check = pOp->setValue( attr->getName(), reca->float_value()); break; default: check = -1; break; } if(check != 0){ ERR(pInsTrans->getNdbError()); pNdb->closeTransaction(pInsTrans); return NDBT_FAILED; } } return NDBT_OK; }
inline int ScanInterpretTest::addRowToCheckTrans(Ndb* pNdb, NdbConnection* pCheckTrans){ NdbOperation* pOp = pCheckTrans->getNdbOperation(restab.getName()); if (pOp == NULL) { ERR(pNdb->getNdbError()); return NDBT_FAILED; } if(pOp->readTuple() != 0) { ERR(pNdb->getNdbError()); return NDBT_FAILED; } // Copy pk attribute's to the new operation for (int a = 0; a<restab.getNoOfColumns(); a++){ const NdbDictionary::Column* attr = restab.getColumn(a); if (attr->getPrimaryKey() == true){ NdbRecAttr* reca = row.attributeStore(a); int check = -1; switch (attr->getType()){ case NdbDictionary::Column::Char: case NdbDictionary::Column::Varchar: case NdbDictionary::Column::Binary: case NdbDictionary::Column::Varbinary:{ check = pOp->equal( attr->getName(), reca->aRef()); break; } case NdbDictionary::Column::Int:{ check = pOp->equal( attr->getName(), reca->int32_value()); } break; case NdbDictionary::Column::Bigint:{ check = pOp->equal( attr->getName(), reca->int64_value()); } break; case NdbDictionary::Column::Unsigned:{ check = pOp->equal( attr->getName(), reca->u_32_value()); } break; case NdbDictionary::Column::Bigunsigned:{ check = pOp->equal( attr->getName(), reca->u_64_value()); } break; default: check = -1; break; } if(check != 0){ ERR(pNdb->getNdbError()); return NDBT_FAILED; } } } return NDBT_OK; }