MCPcopy Create free account
hub / github.com/apache/orc / CheckFileWithSargs

Function CheckFileWithSargs

c++/test/TestReader.cc:108–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

106 }
107
108 void CheckFileWithSargs(const char* fileName, const char* softwareVersion) {
109 std::stringstream ss;
110 if (const char* example_dir = std::getenv("ORC_EXAMPLE_DIR")) {
111 ss << example_dir;
112 } else {
113 ss << "../../../examples";
114 }
115 // Read a file with bloom filters written by CPP writer in version 1.6.11.
116 ss << "/" << fileName;
117 ReaderOptions readerOpts;
118 readerOpts.setReaderMetrics(nullptr);
119 std::unique_ptr<Reader> reader =
120 createReader(readLocalFile(ss.str().c_str(), readerOpts.getReaderMetrics()), readerOpts);
121 EXPECT_EQ(WriterId::ORC_CPP_WRITER, reader->getWriterId());
122 EXPECT_EQ(softwareVersion, reader->getSoftwareVersion());
123
124 // Create SearchArgument with a EQUALS predicate which can leverage the bloom filters.
125 RowReaderOptions rowReaderOpts;
126 std::unique_ptr<SearchArgumentBuilder> sarg = SearchArgumentFactory::newBuilder();
127 // Integer value 18000000000 has an inconsistent hash before the fix of ORC-1024.
128 sarg->equals(1, PredicateDataType::LONG, Literal(static_cast<int64_t>(18000000000L)));
129 std::unique_ptr<SearchArgument> final_sarg = sarg->build();
130 rowReaderOpts.searchArgument(std::move(final_sarg));
131 std::unique_ptr<RowReader> rowReader = reader->createRowReader(rowReaderOpts);
132
133 // Make sure bad bloom filters won't affect the results.
134 std::unique_ptr<ColumnVectorBatch> batch = rowReader->createRowBatch(1024);
135 EXPECT_TRUE(rowReader->next(*batch));
136 EXPECT_EQ(5, batch->numElements);
137 EXPECT_FALSE(rowReader->next(*batch));
138 }
139
140 TEST(TestRowReader, testSkipBadBloomFilters) {
141 CheckFileWithSargs("bad_bloom_filter_1.6.11.orc", "ORC C++ 1.6.11");

Callers 1

TESTFunction · 0.85

Calls 11

LiteralClass · 0.85
getWriterIdMethod · 0.80
searchArgumentMethod · 0.80
createReaderFunction · 0.70
getSoftwareVersionMethod · 0.65
buildMethod · 0.65
nextMethod · 0.65
getReaderMetricsMethod · 0.45
equalsMethod · 0.45
createRowReaderMethod · 0.45
createRowBatchMethod · 0.45

Tested by

no test coverage detected