Skip to content

Commit ce273fa

Browse files
xiaoxmengfacebook-github-bot
authored andcommitted
refactor: Consolidate subfield filter definitions (facebookincubator#12184)
Summary: X-link: facebookincubator/axiom#2 Pull Request resolved: facebookincubator#12184 There are multiple definitions of subfield filters in velox and consolidate them in Filter.h Reviewed By: Yuhta Differential Revision: D68719054 fbshipit-source-id: 7085c7ad803980d960e32ce4a981bd4a722558e9
1 parent 9999ae0 commit ce273fa

File tree

15 files changed

+35
-43
lines changed

15 files changed

+35
-43
lines changed

velox/connectors/hive/HiveConnectorUtil.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ void checkColumnNameLowerCase(const std::shared_ptr<const Type>& type) {
288288
}
289289

290290
void checkColumnNameLowerCase(
291-
const SubfieldFilters& filters,
291+
const common::SubfieldFilters& filters,
292292
const std::unordered_map<std::string, std::shared_ptr<HiveColumnHandle>>&
293293
infoColumns) {
294294
for (const auto& filterIt : filters) {
@@ -349,7 +349,7 @@ std::shared_ptr<common::ScanSpec> makeScanSpec(
349349
const RowTypePtr& rowType,
350350
const folly::F14FastMap<std::string, std::vector<const common::Subfield*>>&
351351
outputSubfields,
352-
const SubfieldFilters& filters,
352+
const common::SubfieldFilters& filters,
353353
const RowTypePtr& dataColumns,
354354
const std::unordered_map<std::string, std::shared_ptr<HiveColumnHandle>>&
355355
partitionKeys,
@@ -837,7 +837,7 @@ core::TypedExprPtr extractFiltersFromRemainingFilter(
837837
const core::TypedExprPtr& expr,
838838
core::ExpressionEvaluator* evaluator,
839839
bool negated,
840-
SubfieldFilters& filters,
840+
common::SubfieldFilters& filters,
841841
double& sampleRate) {
842842
auto* call = dynamic_cast<const core::CallTypedExpr*>(expr.get());
843843
if (call == nullptr) {

velox/connectors/hive/HiveConnectorUtil.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,17 @@ class HiveTableHandle;
3030
class HiveConfig;
3131
struct HiveConnectorSplit;
3232

33+
#ifdef VELOX_ENABLE_BACKWARD_COMPATIBILITY
3334
using SubfieldFilters =
3435
std::unordered_map<common::Subfield, std::unique_ptr<common::Filter>>;
36+
#endif
3537

3638
const std::string& getColumnName(const common::Subfield& subfield);
3739

3840
void checkColumnNameLowerCase(const std::shared_ptr<const Type>& type);
3941

4042
void checkColumnNameLowerCase(
41-
const SubfieldFilters& filters,
43+
const common::SubfieldFilters& filters,
4244
const std::unordered_map<std::string, std::shared_ptr<HiveColumnHandle>>&
4345
infoColumns);
4446

@@ -53,7 +55,7 @@ std::shared_ptr<common::ScanSpec> makeScanSpec(
5355
const RowTypePtr& rowType,
5456
const folly::F14FastMap<std::string, std::vector<const common::Subfield*>>&
5557
outputSubfields,
56-
const SubfieldFilters& filters,
58+
const common::SubfieldFilters& filters,
5759
const RowTypePtr& dataColumns,
5860
const std::unordered_map<std::string, std::shared_ptr<HiveColumnHandle>>&
5961
partitionKeys,
@@ -108,7 +110,7 @@ core::TypedExprPtr extractFiltersFromRemainingFilter(
108110
const core::TypedExprPtr& expr,
109111
core::ExpressionEvaluator* evaluator,
110112
bool negated,
111-
SubfieldFilters& filters,
113+
common::SubfieldFilters& filters,
112114
double& sampleRate);
113115

114116
} // namespace facebook::velox::connector::hive

velox/connectors/hive/HiveDataSource.h

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ namespace facebook::velox::connector::hive {
3232

3333
class HiveConfig;
3434

35-
using SubfieldFilters =
36-
std::unordered_map<common::Subfield, std::unique_ptr<common::Filter>>;
37-
3835
class HiveDataSource : public DataSource {
3936
public:
4037
HiveDataSource(
@@ -162,7 +159,7 @@ class HiveDataSource : public DataSource {
162159
SpecialColumnNames specialColumns_{};
163160
folly::F14FastMap<std::string, std::vector<const common::Subfield*>>
164161
subfields_;
165-
SubfieldFilters filters_;
162+
common::SubfieldFilters filters_;
166163
std::shared_ptr<common::MetadataFilter> metadataFilter_;
167164
std::unique_ptr<exec::ExprSet> remainingFilterExprSet_;
168165
RowVectorPtr emptyOutput_;

velox/connectors/hive/TableHandle.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ HiveTableHandle::HiveTableHandle(
107107
std::string connectorId,
108108
const std::string& tableName,
109109
bool filterPushdownEnabled,
110-
SubfieldFilters subfieldFilters,
110+
common::SubfieldFilters subfieldFilters,
111111
const core::TypedExprPtr& remainingFilter,
112112
const RowTypePtr& dataColumns,
113113
const std::unordered_map<std::string, std::string>& tableParameters)
@@ -185,7 +185,7 @@ ConnectorTableHandlePtr HiveTableHandle::create(
185185
ISerializable::deserialize<core::ITypedExpr>(it->second, context);
186186
}
187187

188-
SubfieldFilters subfieldFilters;
188+
common::SubfieldFilters subfieldFilters;
189189
folly::dynamic subfieldFiltersObj = obj["subfieldFilters"];
190190
for (const auto& subfieldFilter : subfieldFiltersObj) {
191191
common::Subfield subfield(subfieldFilter["subfield"].asString());

velox/connectors/hive/TableHandle.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@
2323

2424
namespace facebook::velox::connector::hive {
2525

26-
using SubfieldFilters =
27-
std::unordered_map<common::Subfield, std::unique_ptr<common::Filter>>;
28-
2926
class HiveColumnHandle : public ColumnHandle {
3027
public:
3128
enum class ColumnType {
@@ -126,7 +123,7 @@ class HiveTableHandle : public ConnectorTableHandle {
126123
std::string connectorId,
127124
const std::string& tableName,
128125
bool filterPushdownEnabled,
129-
SubfieldFilters subfieldFilters,
126+
common::SubfieldFilters subfieldFilters,
130127
const core::TypedExprPtr& remainingFilter,
131128
const RowTypePtr& dataColumns = nullptr,
132129
const std::unordered_map<std::string, std::string>& tableParameters = {});
@@ -143,7 +140,7 @@ class HiveTableHandle : public ConnectorTableHandle {
143140
return filterPushdownEnabled_;
144141
}
145142

146-
const SubfieldFilters& subfieldFilters() const {
143+
const common::SubfieldFilters& subfieldFilters() const {
147144
return subfieldFilters_;
148145
}
149146

@@ -173,7 +170,7 @@ class HiveTableHandle : public ConnectorTableHandle {
173170
private:
174171
const std::string tableName_;
175172
const bool filterPushdownEnabled_;
176-
const SubfieldFilters subfieldFilters_;
173+
const common::SubfieldFilters subfieldFilters_;
177174
const core::TypedExprPtr remainingFilter_;
178175
const RowTypePtr dataColumns_;
179176
const std::unordered_map<std::string, std::string> tableParameters_;

velox/connectors/hive/iceberg/PositionalDeleteFileReader.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,6 @@ namespace facebook::velox::connector::hive::iceberg {
3030
struct IcebergDeleteFile;
3131
struct IcebergMetadataColumn;
3232

33-
using SubfieldFilters =
34-
std::unordered_map<common::Subfield, std::unique_ptr<common::Filter>>;
35-
3633
class PositionalDeleteFileReader {
3734
public:
3835
PositionalDeleteFileReader(

velox/connectors/hive/tests/HiveConnectorUtilTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ TEST_F(HiveConnectorUtilTest, configureReaderOptions) {
7979
"testConnectorId",
8080
"testTable",
8181
false,
82-
hive::SubfieldFilters{},
82+
common::SubfieldFilters{},
8383
nullptr,
8484
nullptr,
8585
tableParameters);
@@ -305,7 +305,7 @@ TEST_F(HiveConnectorUtilTest, cacheRetention) {
305305
"testConnectorId",
306306
"testTable",
307307
false,
308-
hive::SubfieldFilters{},
308+
common::SubfieldFilters{},
309309
nullptr,
310310
nullptr,
311311
std::unordered_map<std::string, std::string>{});

velox/dwio/common/tests/utils/FilterGenerator.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,6 @@ namespace facebook::velox::dwio::common {
3232

3333
using namespace facebook::velox::common;
3434

35-
using SubfieldFilters = std::unordered_map<Subfield, std::unique_ptr<Filter>>;
36-
3735
struct FilterSpec {
3836
FilterSpec() {}
3937

velox/exec/tests/TableScanTest.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1242,7 +1242,7 @@ TEST_F(TableScanTest, missingColumns) {
12421242
assertQuery(op, filePaths, "SELECT count(*) FROM tmp WHERE c1 <= 4000.1", 0);
12431243

12441244
// Use missing column 'c1' in 'is null' filter, while not selecting 'c1'.
1245-
SubfieldFilters filters;
1245+
common::SubfieldFilters filters;
12461246
filters[common::Subfield("c1")] = lessThanOrEqualDouble(1050.0, true);
12471247
auto tableHandle = std::make_shared<HiveTableHandle>(
12481248
kHiveConnectorId, "tmp", true, std::move(filters), nullptr, dataColumns);
@@ -1975,7 +1975,7 @@ TEST_F(TableScanTest, partitionedTableDateKey) {
19751975
{"c0", regularColumn("c0", BIGINT())},
19761976
{"c1", regularColumn("c1", DOUBLE())}};
19771977

1978-
SubfieldFilters filters;
1978+
common::SubfieldFilters filters;
19791979
// pkey > 2020-09-01.
19801980
filters[common::Subfield("pkey")] = std::make_unique<common::BigintRange>(
19811981
18506, std::numeric_limits<int64_t>::max(), false);
@@ -2015,7 +2015,7 @@ TEST_F(TableScanTest, partitionedTableTimestampKey) {
20152015
{"c0", regularColumn("c0", BIGINT())},
20162016
{"c1", regularColumn("c1", DOUBLE())}};
20172017

2018-
SubfieldFilters filters;
2018+
common::SubfieldFilters filters;
20192019
// pkey = 2023-10-27 00:12:35.
20202020
auto lower = util::fromTimestampString(
20212021
StringView("2023-10-27 00:12:35"),
@@ -2709,7 +2709,7 @@ TEST_F(TableScanTest, filterPushdown) {
27092709
createDuckDbTable(vectors);
27102710

27112711
// c1 >= 0 or null and c3 is true
2712-
SubfieldFilters subfieldFilters =
2712+
common::SubfieldFilters subfieldFilters =
27132713
SubfieldFiltersBuilder()
27142714
.add("c1", greaterThanOrEqual(0, true))
27152715
.add("c3", std::make_unique<common::BoolValue>(true, false))
@@ -2805,7 +2805,7 @@ TEST_F(TableScanTest, path) {
28052805

28062806
// use $path in a filter, but don't project it out
28072807
auto tableHandle = makeTableHandle(
2808-
SubfieldFilters{},
2808+
common::SubfieldFilters{},
28092809
parseExpr(fmt::format("\"{}\" = '{}'", kPath, pathValue), typeWithPath));
28102810
op = PlanBuilder()
28112811
.startTableScan()
@@ -2862,7 +2862,7 @@ TEST_F(TableScanTest, fileSizeAndModifiedTime) {
28622862

28632863
auto filterTest = [&](const std::string& filter) {
28642864
auto tableHandle = makeTableHandle(
2865-
SubfieldFilters{},
2865+
common::SubfieldFilters{},
28662866
parseExpr(filter, allColumns),
28672867
"hive_table",
28682868
allColumns);
@@ -5280,7 +5280,8 @@ TEST_F(TableScanTest, rowNumberInRemainingFilter) {
52805280
writeToFile(file->getPath(), {vector});
52815281
auto outputType = ROW({"c0"}, {BIGINT()});
52825282
auto remainingFilter = parseExpr("r1 % 2 == 0", ROW({"r1"}, {BIGINT()}));
5283-
auto tableHandle = makeTableHandle(SubfieldFilters{}, remainingFilter);
5283+
auto tableHandle =
5284+
makeTableHandle(common::SubfieldFilters{}, remainingFilter);
52845285
auto plan = PlanBuilder()
52855286
.startTableScan()
52865287
.outputType(outputType)

velox/exec/tests/utils/HiveConnectorTestBase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class HiveConnectorTestBase : public OperatorTestBase {
116116
infoColumns = {});
117117

118118
static std::shared_ptr<connector::hive::HiveTableHandle> makeTableHandle(
119-
common::test::SubfieldFilters subfieldFilters = {},
119+
common::SubfieldFilters subfieldFilters = {},
120120
const core::TypedExprPtr& remainingFilter = nullptr,
121121
const std::string& tableName = "hive_table",
122122
const RowTypePtr& dataColumns = nullptr,

0 commit comments

Comments
 (0)