MCPcopy Create free account
hub / github.com/bytedance/bolt / verifyFlatmapStructEncoding

Function verifyFlatmapStructEncoding

bolt/dwio/dwrf/test/ReaderTest.cpp:1373–1439  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1371}
1372
1373void verifyFlatmapStructEncoding(
1374 memory::MemoryPool* pool,
1375 const std::string& filename,
1376 const std::vector<int32_t>& keysAsFields,
1377 const std::vector<int32_t>& keysToSelect,
1378 size_t batchSize = 1000) {
1379 dwio::common::ReaderOptions readerOpts{pool};
1380 auto reader = DwrfReader::create(
1381 createFileBufferedInput(filename, readerOpts.getMemoryPool()),
1382 readerOpts);
1383
1384 const std::string projectedColumn = "map1";
1385 const vector_size_t projectedColumnIndex = 1;
1386 const std::vector<std::string> columnSelections = keysToSelect.empty()
1387 ? std::vector<std::string>{projectedColumn}
1388 : std::vector<std::string>{
1389 projectedColumn + "#[" + folly::join(", ", keysToSelect) + "]"};
1390
1391 auto cs = std::make_shared<ColumnSelector>(
1392 std::dynamic_pointer_cast<const RowType>(HiveTypeParser().parse("struct<\
1393 id:int,\
1394 map1:map<int, array<float>>,\
1395 map2:map<string, map<smallint,bigint>>,\
1396 map3:map<int,int>,\
1397 map4:map<int,struct<field1:int,field2:float,field3:string>>,\
1398 memo:string>")),
1399 columnSelections);
1400
1401 RowReaderOptions rowReaderOpts;
1402 rowReaderOpts.select(cs);
1403
1404 auto mapEncodingReader = reader->createRowReader(rowReaderOpts);
1405
1406 rowReaderOpts.setFlatmapNodeIdsAsStruct(
1407 makeStructEncodingOption(*cs, "map1", keysAsFields));
1408 auto structEncodingReader = reader->createRowReader(rowReaderOpts);
1409
1410 const auto compare = [&]() {
1411 VectorPtr batchMap;
1412 VectorPtr batchStruct;
1413
1414 do {
1415 bool resultMap = mapEncodingReader->next(batchSize, batchMap);
1416 bool resultStruct = structEncodingReader->next(batchSize, batchStruct);
1417
1418 EXPECT_EQ(resultMap, resultStruct);
1419 if (!resultMap) {
1420 break;
1421 }
1422
1423 // verify current batch
1424 auto rowMapEncoding = batchMap->as<RowVector>();
1425 auto rowStructEncoding = batchStruct->as<RowVector>();
1426
1427 EXPECT_EQ(rowMapEncoding->size(), rowStructEncoding->size());
1428
1429 for (size_t i = 0; i < keysAsFields.size(); ++i) {
1430 verifyMapColumnEqual(

Callers 1

TEST_FFunction · 0.85

Calls 14

createFileBufferedInputFunction · 0.85
HiveTypeParserClass · 0.85
makeStructEncodingOptionFunction · 0.85
verifyMapColumnEqualFunction · 0.85
selectMethod · 0.80
childAtMethod · 0.80
createFunction · 0.50
compareFunction · 0.50
emptyMethod · 0.45
parseMethod · 0.45
createRowReaderMethod · 0.45

Tested by

no test coverage detected