本文整理汇总了C++中TableTuple::setNValue方法的典型用法代码示例。如果您正苦于以下问题:C++ TableTuple::setNValue方法的具体用法?C++ TableTuple::setNValue怎么用?C++ TableTuple::setNValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TableTuple
的用法示例。
在下文中一共展示了TableTuple::setNValue方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: evictBlock
Table* AntiCacheEvictionManager::evictBlock(PersistentTable *table, long blockSize, int numBlocks) {
int32_t lastTuplesEvicted = table->getTuplesEvicted();
int32_t lastBlocksEvicted = table->getBlocksEvicted();
int64_t lastBytesEvicted = table->getBytesEvicted();
if (table->evictBlockToDisk(blockSize, numBlocks) == false) {
throwFatalException("Failed to evict tuples from table '%s'", table->name().c_str());
}
int32_t tuplesEvicted = table->getTuplesEvicted() - lastTuplesEvicted;
int32_t blocksEvicted = table->getBlocksEvicted() - lastBlocksEvicted;
int64_t bytesEvicted = table->getBytesEvicted() - lastBytesEvicted;
m_evictResultTable->deleteAllTuples(false);
TableTuple tuple = m_evictResultTable->tempTuple();
int idx = 0;
tuple.setNValue(idx++, ValueFactory::getStringValue(table->name()));
tuple.setNValue(idx++, ValueFactory::getIntegerValue(static_cast<int32_t>(tuplesEvicted)));
tuple.setNValue(idx++, ValueFactory::getIntegerValue(static_cast<int32_t>(blocksEvicted)));
tuple.setNValue(idx++, ValueFactory::getBigIntValue(static_cast<int32_t>(bytesEvicted)));
m_evictResultTable->insertTuple(tuple);
return (m_evictResultTable);
}
示例2: itr
TEST_F(AntiCacheEvictionManagerTest, DeleteMultipleTuples)
{
int num_tuples = 100;
initTable(true);
TableTuple tuple = m_table->tempTuple();
for(int i = 0; i < num_tuples; i++) // insert 10 tuples
{
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
m_table->insertTuple(tuple);
}
VOLT_INFO("%d == %d", num_tuples, m_table->getNumTuplesInEvictionChain());
ASSERT_EQ(num_tuples, m_table->getNumTuplesInEvictionChain());
int num_tuples_deleted = 0;
TableIterator itr(m_table);
while(itr.hasNext()) {
itr.next(tuple);
if(rand() % 2 == 0) { // delete each tuple with probability .5
m_table->deleteTuple(tuple, true);
++num_tuples_deleted;
}
}
ASSERT_EQ((num_tuples - num_tuples_deleted), m_table->getNumTuplesInEvictionChain());
cleanupTable();
}
示例3: if
TEST_F(AntiCacheEvictionManagerTest, InsertMultipleTuples)
{
int num_tuples = 10;
initTable(true);
TableTuple tuple = m_table->tempTuple();
uint32_t oldest_tuple_id, newest_tuple_id;
for(int i = 0; i < num_tuples; i++) // insert 10 tuples
{
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
m_table->insertTuple(tuple);
tuple = m_table->lookupTuple(tuple);
if(i == 0)
{
oldest_tuple_id = m_table->getTupleID(tuple.address());
}
else if(i == num_tuples-1)
{
newest_tuple_id = m_table->getTupleID(tuple.address());
}
}
ASSERT_EQ(num_tuples, m_table->getNumTuplesInEvictionChain());
ASSERT_EQ(oldest_tuple_id, m_table->getOldestTupleID());
ASSERT_EQ(newest_tuple_id, m_table->getNewestTupleID());
cleanupTable();
}
示例4: addRandomUniqueTuples
void addRandomUniqueTuples(Table *table, int numTuples) {
TableTuple tuple = table->tempTuple();
for (int ii = 0; ii < numTuples; ii++) {
tuple.setNValue(0, ValueFactory::getIntegerValue(m_primaryKeyIndex++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
table->insertTuple(tuple);
}
}
示例5: initTable
TEST_F(AntiCacheEvictionManagerTest, InsertTuple)
{
initTable(true);
TableTuple tuple = m_table->tempTuple();
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
m_table->insertTuple(tuple);
}
示例6: loadTable
// Load table from the polygons in the string POLYGONS, defined in
// polygons.hpp. Also print out some stats about how long it
// took.
//
// The workload is 1000 generated polygons created by
// PolygonFactory in Java. They are all bounded to an area
// approximately in the continental US, and so may overlap:
// o 25% regular convex
// o 25% regular convex with a hole in the center
// o 25% star-shaped
// o 25% star-shaped with a hole in the center
// Also, add a null polygon.
//
// In memcheck mode, only loads 50 rows.
void loadTable(PersistentTable* table) {
#ifndef MEMCHECK
int rowLimit = -1;
#else
int rowLimit = 50;
#endif
std::cout << "\n Loading polygons...\n";
std::istringstream instream(POLYGONS); // defined in polygons.hpp
TableTuple tempTuple = table->tempTuple();
auto start = std::chrono::high_resolution_clock::now();
std::chrono::microseconds usSpentInserting = std::chrono::duration_cast<microseconds>(start - start);
int pk = 0;
std::string line;
while (std::getline(instream, line)) {
tempTuple.setNValue(PK_COL_INDEX, ValueFactory::getIntegerValue(pk));
tempTuple.setNValue(GEOG_COL_INDEX, polygonWktToNval(line));
start = std::chrono::high_resolution_clock::now();
table->insertTuple(tempTuple);
auto end = std::chrono::high_resolution_clock::now();
usSpentInserting += std::chrono::duration_cast<microseconds>(end - start);
++pk;
if (rowLimit > 0 && pk > rowLimit) {
break;
}
}
std::cout << " Average duration of insert: " << (usSpentInserting.count() / pk) << " us\n";
// Add a null value
tempTuple.setNValue(PK_COL_INDEX, ValueFactory::getIntegerValue(pk));
tempTuple.setNValue(GEOG_COL_INDEX, NValue::getNullValue(VALUE_TYPE_GEOGRAPHY));
table->insertTuple(tempTuple);
// Dump some stats about the index.
CoveringCellIndex* ccIndex = static_cast<CoveringCellIndex*>(table->index("poly_idx"));
CoveringCellIndex::StatsForTest stats = ccIndex->getStatsForTest(table);
double cellsPerPoly = double(stats.numCells) / stats.numPolygons;
std::cout << " Cells per polygon: " << cellsPerPoly << "\n";
// Use km^2, since the areas are large.
double areaPerPoly = (stats.polygonsArea / stats.numPolygons) / 1000000.0;
double areaPerCellCovering = (stats.cellsArea / stats.numPolygons) / 1000000.0;
std::cout << " Average area per polygon: " << areaPerPoly << " km^2\n";
std::cout << " Average area per cell covering: " << areaPerCellCovering << " km^2\n";
std::cout << " Cell area divided by polygon area (lower is better): "
<< (areaPerCellCovering / areaPerPoly) << "\n";
}
示例7: addRandomUniqueTuples
void addRandomUniqueTuples(Table *table, int numTuples) {
TableTuple tuple = table->tempTuple();
::memset(tuple.address() + 1, 0, tuple.tupleLength() - 1);
for (int ii = 0; ii < numTuples; ii++) {
tuple.setNValue(0, ValueFactory::getIntegerValue(m_primaryKeyIndex++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
bool success = table->insertTuple(tuple);
if (!success) {
std::cout << "Failed to add random unique tuple" << std::endl;
return;
}
}
}
示例8: initTable
// still couldn't pass
TEST_F(AntiCacheEvictionManagerTest, UpdateIndexPerformance)
{
int num_tuples = 100000;
int num_index_updates = 8;
struct timeval start, end;
long seconds, useconds;
double mtime;
initTable(true);
TableTuple tuple = m_table->tempTuple();
int iterations = 0;
for(int i = 0; i < num_tuples; i++) // insert tuples
{
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
m_table->insertTuple(tuple);
}
for(int i = 0; i < num_index_updates; i++)
{
TableIterator itr1(m_table);
iterations = 0;
gettimeofday(&start, NULL);
while(itr1.hasNext())
{
itr1.next(tuple);
for(int j = 0; j < i+1; j++)
{
m_table->setEntryToNewAddressForAllIndexes(&tuple, NULL);
}
if(++iterations == 1000)
break;
}
gettimeofday(&end, NULL);
seconds = end.tv_sec - start.tv_sec;
useconds = end.tv_usec - start.tv_usec;
mtime = (double)((seconds) * 1000 + useconds/1000);
VOLT_INFO("total time for 1000 index updates: %f milliseconds", mtime);
}
cleanupTable();
}
示例9: initTable
TEST_F(AntiCacheEvictionManagerTest, TestSetEntryToNewAddress)
{
int num_tuples = 20;
initTable(true);
TableTuple tuple = m_table->tempTuple();
int iterations = 0;
for(int i = 0; i < num_tuples / 2; i++) // insert tuples
{
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(0));
m_table->insertTuple(tuple);
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(1));
m_table->insertTuple(tuple);
}
TableIterator itr1(m_table);
iterations = 0;
itr1.next(tuple);
void* oldAddress = tuple.address();
m_table->setEntryToNewAddressForAllIndexes(&tuple, (void*)0xdeadbeaf, oldAddress);
std::vector <TableIndex*> allIndexes = m_table->allIndexes();
for (int i = 0; i < allIndexes.size(); ++i) {
int cnt = 0;
allIndexes[i]->moveToTuple(&tuple);
const void* address;
// check to see whether we set the tuple and only that tuple to new address
// for both primaryKey and secondary indexes
while ((address = (allIndexes[i]->nextValueAtKey()).address())) {
ASSERT_NE(address, oldAddress);
if (address == (void*)0xdeadbeaf)
cnt++;
}
ASSERT_EQ(cnt, 1);
}
cleanupTable();
}
示例10: TableTuple
TableTuple *newTuple(TupleSchema *schema, int idx, long value) {
TableTuple *tuple = new TableTuple(schema);
char *data = new char[tuple->tupleLength()];
memset(data, 0, tuple->tupleLength());
tuple->move(data);
tuple->setNValue(idx, ValueFactory::getBigIntValue(value));
return tuple;
}
示例11: initTable
TEST_F(AntiCacheEvictionManagerTest, GetTupleID)
{
initTable(true);
TableTuple tuple = m_table->tempTuple();
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
m_table->insertTuple(tuple);
// get the tuple that was just inserted
tuple = m_table->lookupTuple(tuple);
int tuple_id = m_table->getTupleID(tuple.address());
//printf("tuple_id = %d\n", tuple_id);
//ASSERT_NE(tuple_id, -1);
ASSERT_EQ(tuple_id, 0);
}
开发者ID:Arpit-Mittal,项目名称:Hbase-Hstore-Hadoop-Implementation-Cassandra,代码行数:20,代码来源:anticache_eviction_manager_test.cpp
示例12: initTable
TEST_F(IndexTrackerAllocatorTest, ArrayUniqueIndexMemoryEstimate)
{
initTable(true, voltdb::ARRAY_INDEX, true);
TableTuple tuple = m_table->tempTuple();
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
m_table->insertTuple(tuple);
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
m_table->insertTuple(tuple);
for(int i = 0; i < 1024; i++) // insert 1024 tuples
{
tuple.setNValue(0, ValueFactory::getIntegerValue(m_tuplesInserted++));
tuple.setNValue(1, ValueFactory::getIntegerValue(rand()));
m_table->insertTuple(tuple);
}
// get the tuple that was just inserted
tuple = m_table->lookupTuple(tuple);
VOLT_INFO("%s memory estimate: %ld\n", m_table->index("primaryKeyIndex")->getTypeName().c_str(), m_table->index("primaryKeyIndex")->getMemoryEstimate());
ASSERT_NE(m_table->index("primaryKeyIndex")->getMemoryEstimate(), 0);
cleanupTable();
}
示例13: wideTuple
TEST_F(PersistentTableLogTest, LookupTupleUsingTempTupleTest) {
initNarrowTable();
// Create three tuple with a variable length VARCHAR column, then call
// lookupTupleForUndo() to look each tuple up from wide to narrower column.
// It will use the memcmp() code path for the comparison, which should all
// succeed because there is no uninlined stuff.
NValue wideStr = ValueFactory::getStringValue("a long string");
NValue narrowStr = ValueFactory::getStringValue("a");
NValue nullStr = ValueFactory::getNullStringValue();
TableTuple wideTuple(m_tableSchema);
wideTuple.move(new char[wideTuple.tupleLength()]);
::memset(wideTuple.address(), 0, wideTuple.tupleLength());
wideTuple.setNValue(0, ValueFactory::getBigIntValue(1));
wideTuple.setNValue(1, wideStr);
m_table->insertTuple(wideTuple);
delete[] wideTuple.address();
TableTuple narrowTuple(m_tableSchema);
narrowTuple.move(new char[narrowTuple.tupleLength()]);
::memset(narrowTuple.address(), 0, narrowTuple.tupleLength());
narrowTuple.setNValue(0, ValueFactory::getBigIntValue(2));
narrowTuple.setNValue(1, narrowStr);
m_table->insertTuple(narrowTuple);
delete[] narrowTuple.address();
TableTuple nullTuple(m_tableSchema);
nullTuple.move(new char[nullTuple.tupleLength()]);
::memset(nullTuple.address(), 0, nullTuple.tupleLength());
nullTuple.setNValue(0, ValueFactory::getBigIntValue(3));
nullTuple.setNValue(1, nullStr);
m_table->insertTuple(nullTuple);
delete[] nullTuple.address();
TableTuple tempTuple = m_table->tempTuple();
tempTuple.setNValue(0, ValueFactory::getBigIntValue(1));
tempTuple.setNValue(1, wideStr);
TableTuple result = m_table->lookupTupleForUndo(tempTuple);
ASSERT_FALSE(result.isNullTuple());
tempTuple = m_table->tempTuple();
tempTuple.setNValue(0, ValueFactory::getBigIntValue(2));
tempTuple.setNValue(1, narrowStr);
result = m_table->lookupTupleForUndo(tempTuple);
ASSERT_FALSE(result.isNullTuple());
tempTuple = m_table->tempTuple();
tempTuple.setNValue(0, ValueFactory::getBigIntValue(3));
tempTuple.setNValue(1, nullStr);
result = m_table->lookupTupleForUndo(tempTuple);
ASSERT_FALSE(result.isNullTuple());
wideStr.free();
narrowStr.free();
nullStr.free();
}
示例14: tuple
TEST_F(PersistentTableMemStatsTest, UpdateAndUndoTest) {
initTable(true);
tableutil::addRandomTuples(m_table, 10);
int64_t orig_size = m_table->nonInlinedMemorySize();
//cout << "Original non-inline size: " << orig_size << endl;
TableTuple tuple(m_tableSchema);
tableutil::getRandomTuple(m_table, tuple);
//cout << "Retrieved random tuple " << endl << tuple.debugNoHeader() << endl;
size_t removed_bytes =
StringRef::computeStringMemoryUsed(ValuePeeker::peekObjectLength(tuple.getNValue(1))) +
StringRef::computeStringMemoryUsed(ValuePeeker::peekObjectLength(tuple.getNValue(2)));
//cout << "Removing bytes from table: " << removed_bytes << endl;
/*
* A copy of the tuple to modify and use as a source tuple when
* updating the new tuple.
*/
TableTuple tempTuple = m_table->tempTuple();
tempTuple.copy(tuple);
string strval = "123456";
NValue new_string = ValueFactory::getStringValue(strval);
tempTuple.setNValue(1, new_string);
//cout << "Created random tuple " << endl << tempTuple.debugNoHeader() << endl;
size_t added_bytes =
StringRef::computeStringMemoryUsed(ValuePeeker::peekObjectLength(tempTuple.getNValue(1))) +
StringRef::computeStringMemoryUsed(ValuePeeker::peekObjectLength(tempTuple.getNValue(2)));
//cout << "Adding bytes to table: " << added_bytes << endl;
m_engine->setUndoToken(INT64_MIN + 2);
// this next line is a testing hack until engine data is
// de-duplicated with executorcontext data
m_engine->getExecutorContext();
m_table->updateTuple(tempTuple, tuple, true);
ASSERT_EQ(orig_size + added_bytes - removed_bytes, m_table->nonInlinedMemorySize());
m_engine->undoUndoToken(INT64_MIN + 2);
ASSERT_EQ(orig_size, m_table->nonInlinedMemorySize());
//tuple.freeObjectColumns();
//tempTuple.freeObjectColumns();
//delete [] tuple.address();
//delete[] tempTuple.address();
new_string.free();
}
示例15: getTuples
void TupleTrackerManager::getTuples(boost::unordered_map<std::string, RowOffsets*> *map) const {
this->resultTable->deleteAllTuples(false);
TableTuple tuple = this->resultTable->tempTuple();
boost::unordered_map<std::string, RowOffsets*>::const_iterator iter = map->begin();
while (iter != map->end()) {
RowOffsets::const_iterator tupleIter = iter->second->begin();
while (tupleIter != iter->second->end()) {
int idx = 0;
tuple.setNValue(idx++, ValueFactory::getStringValue(iter->first)); // TABLE_NAME
tuple.setNValue(idx++, ValueFactory::getIntegerValue(*tupleIter)); // TUPLE_ID
this->resultTable->insertTuple(tuple);
tupleIter++;
} // WHILE
iter++;
} // WHILE
return;
}