@@ -80,25 +80,14 @@ class IndexLookupJoinTest : public IndexLookupJoinTestBase,
80
80
connector::hive::HiveColumnHandle::registerSerDe ();
81
81
Type::registerSerDe ();
82
82
core::ITypedExpr::registerSerDe ();
83
- connector::registerConnectorFactory (
84
- std::make_shared<TestIndexConnectorFactory>());
85
- std::shared_ptr<connector::Connector> connector =
86
- connector::getConnectorFactory (kTestIndexConnectorName )
87
- ->newConnector (
88
- kTestIndexConnectorName ,
89
- {},
90
- nullptr ,
91
- connectorCpuExecutor_.get ());
92
- connector::registerConnector (connector);
83
+ TestIndexConnectorFactory::registerConnector (connectorCpuExecutor_.get ());
93
84
94
85
keyType_ = ROW ({" u0" , " u1" , " u2" }, {BIGINT (), BIGINT (), BIGINT ()});
95
86
valueType_ = ROW ({" u3" , " u4" , " u5" }, {BIGINT (), BIGINT (), VARCHAR ()});
96
87
tableType_ = concat (keyType_, valueType_);
97
88
probeType_ = ROW (
98
89
{" t0" , " t1" , " t2" , " t3" , " t4" , " t5" },
99
90
{BIGINT (), BIGINT (), BIGINT (), BIGINT (), ARRAY (BIGINT ()), VARCHAR ()});
100
-
101
- TestIndexTableHandle::registerSerDe ();
102
91
}
103
92
104
93
void TearDown () override {
@@ -115,13 +104,25 @@ class IndexLookupJoinTest : public IndexLookupJoinTestBase,
115
104
116
105
// Makes index table handle with the specified index table and async lookup
117
106
// flag.
118
- std::shared_ptr<TestIndexTableHandle> makeIndexTableHandle (
107
+ static std::shared_ptr<TestIndexTableHandle> makeIndexTableHandle (
119
108
const std::shared_ptr<TestIndexTable>& indexTable,
120
109
bool asyncLookup) {
121
110
return std::make_shared<TestIndexTableHandle>(
122
111
kTestIndexConnectorName , indexTable, asyncLookup);
123
112
}
124
113
114
+ static std::
115
+ unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
116
+ makeIndexColumnHandles (const std::vector<std::string>& names) {
117
+ std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
118
+ handles;
119
+ for (const auto & name : names) {
120
+ handles.emplace (name, std::make_shared<TestIndexColumnHandle>(name));
121
+ }
122
+
123
+ return handles;
124
+ }
125
+
125
126
const std::unique_ptr<folly::CPUThreadPoolExecutor> connectorCpuExecutor_{
126
127
std::make_unique<folly::CPUThreadPoolExecutor>(128 )};
127
128
};
@@ -173,8 +174,7 @@ TEST_P(IndexLookupJoinTest, joinCondition) {
173
174
TEST_P (IndexLookupJoinTest, planNodeAndSerde) {
174
175
TestIndexTableHandle::registerSerDe ();
175
176
176
- auto indexConnectorHandle = std::make_shared<TestIndexTableHandle>(
177
- kTestIndexConnectorName , nullptr , true );
177
+ auto indexConnectorHandle = makeIndexTableHandle (nullptr , true );
178
178
179
179
auto left = makeRowVector (
180
180
{" t0" , " t1" , " t2" , " t3" , " t4" },
@@ -201,15 +201,15 @@ TEST_P(IndexLookupJoinTest, planNodeAndSerde) {
201
201
auto planBuilder = PlanBuilder ();
202
202
auto nonIndexTableScan = std::dynamic_pointer_cast<const core::TableScanNode>(
203
203
PlanBuilder::TableScanBuilder (planBuilder)
204
- .outputType (std::dynamic_pointer_cast< const RowType> (right->type ()))
204
+ .outputType (asRowType (right->type ()))
205
205
.endTableScan ()
206
206
.planNode ());
207
207
VELOX_CHECK_NOT_NULL (nonIndexTableScan);
208
208
209
209
auto indexTableScan = std::dynamic_pointer_cast<const core::TableScanNode>(
210
210
PlanBuilder::TableScanBuilder (planBuilder)
211
211
.tableHandle (indexConnectorHandle)
212
- .outputType (std::dynamic_pointer_cast< const RowType> (right->type ()))
212
+ .outputType (asRowType (right->type ()))
213
213
.endTableScan ()
214
214
.planNode ());
215
215
VELOX_CHECK_NOT_NULL (indexTableScan);
@@ -735,13 +735,11 @@ TEST_P(IndexLookupJoinTest, equalJoin) {
735
735
const auto indexTableHandle =
736
736
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
737
737
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
738
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
739
- columnHandles;
740
738
const auto indexScanNode = makeIndexScanNode (
741
739
planNodeIdGenerator,
742
740
indexTableHandle,
743
741
makeScanOutputType (testData.scanOutputColumns ),
744
- columnHandles );
742
+ makeIndexColumnHandles (testData. scanOutputColumns ) );
745
743
746
744
auto plan = makeLookupPlan (
747
745
planNodeIdGenerator,
@@ -1193,13 +1191,11 @@ TEST_P(IndexLookupJoinTest, betweenJoinCondition) {
1193
1191
const auto indexTableHandle =
1194
1192
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
1195
1193
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
1196
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
1197
- columnHandles;
1198
1194
const auto indexScanNode = makeIndexScanNode (
1199
1195
planNodeIdGenerator,
1200
1196
indexTableHandle,
1201
1197
makeScanOutputType (testData.lookupOutputColumns ),
1202
- columnHandles );
1198
+ makeIndexColumnHandles (testData. lookupOutputColumns ) );
1203
1199
1204
1200
auto plan = makeLookupPlan (
1205
1201
planNodeIdGenerator,
@@ -1517,13 +1513,11 @@ TEST_P(IndexLookupJoinTest, inJoinCondition) {
1517
1513
const auto indexTableHandle =
1518
1514
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
1519
1515
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
1520
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
1521
- columnHandles;
1522
1516
const auto indexScanNode = makeIndexScanNode (
1523
1517
planNodeIdGenerator,
1524
1518
indexTableHandle,
1525
1519
makeScanOutputType (testData.lookupOutputColumns ),
1526
- columnHandles );
1520
+ makeIndexColumnHandles (testData. lookupOutputColumns ) );
1527
1521
1528
1522
auto plan = makeLookupPlan (
1529
1523
planNodeIdGenerator,
@@ -1568,13 +1562,11 @@ DEBUG_ONLY_TEST_P(IndexLookupJoinTest, connectorError) {
1568
1562
const auto indexTableHandle =
1569
1563
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
1570
1564
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
1571
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
1572
- columnHandles;
1573
1565
const auto indexScanNode = makeIndexScanNode (
1574
1566
planNodeIdGenerator,
1575
1567
indexTableHandle,
1576
1568
makeScanOutputType ({" u0" , " u1" , " u2" , " u5" }),
1577
- columnHandles );
1569
+ makeIndexColumnHandles ({ " u0 " , " u1 " , " u2 " , " u5 " }) );
1578
1570
1579
1571
auto plan = makeLookupPlan (
1580
1572
planNodeIdGenerator,
@@ -1637,13 +1629,11 @@ DEBUG_ONLY_TEST_P(IndexLookupJoinTest, prefetch) {
1637
1629
const auto indexTableHandle =
1638
1630
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
1639
1631
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
1640
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
1641
- columnHandles;
1642
1632
const auto indexScanNode = makeIndexScanNode (
1643
1633
planNodeIdGenerator,
1644
1634
indexTableHandle,
1645
1635
makeScanOutputType ({" u0" , " u1" , " u2" , " u3" , " u5" }),
1646
- columnHandles );
1636
+ makeIndexColumnHandles ({ " u0 " , " u1 " , " u2 " , " u3 " , " u5 " }) );
1647
1637
1648
1638
auto plan = makeLookupPlan (
1649
1639
planNodeIdGenerator,
@@ -1739,13 +1729,12 @@ TEST_P(IndexLookupJoinTest, outputBatchSizeWithInnerJoin) {
1739
1729
const auto indexTableHandle =
1740
1730
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
1741
1731
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
1742
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
1743
- columnHandles;
1732
+
1744
1733
const auto indexScanNode = makeIndexScanNode (
1745
1734
planNodeIdGenerator,
1746
1735
indexTableHandle,
1747
1736
makeScanOutputType ({" u0" , " u1" , " u2" , " u5" }),
1748
- columnHandles );
1737
+ makeIndexColumnHandles ({ " u0 " , " u1 " , " u2 " , " u5 " }) );
1749
1738
1750
1739
auto plan = makeLookupPlan (
1751
1740
planNodeIdGenerator,
@@ -1847,13 +1836,11 @@ TEST_P(IndexLookupJoinTest, outputBatchSizeWithLeftJoin) {
1847
1836
const auto indexTableHandle =
1848
1837
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
1849
1838
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
1850
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
1851
- columnHandles;
1852
1839
const auto indexScanNode = makeIndexScanNode (
1853
1840
planNodeIdGenerator,
1854
1841
indexTableHandle,
1855
1842
makeScanOutputType ({" u0" , " u1" , " u2" , " u5" }),
1856
- columnHandles );
1843
+ makeIndexColumnHandles ({ " u0 " , " u1 " , " u2 " , " u5 " }) );
1857
1844
1858
1845
auto plan = makeLookupPlan (
1859
1846
planNodeIdGenerator,
@@ -1919,13 +1906,11 @@ DEBUG_ONLY_TEST_P(IndexLookupJoinTest, runtimeStats) {
1919
1906
const auto indexTableHandle =
1920
1907
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
1921
1908
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
1922
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
1923
- columnHandles;
1924
1909
const auto indexScanNode = makeIndexScanNode (
1925
1910
planNodeIdGenerator,
1926
1911
indexTableHandle,
1927
1912
makeScanOutputType ({" u0" , " u1" , " u2" , " u3" , " u5" }),
1928
- columnHandles );
1913
+ makeIndexColumnHandles ({ " u0 " , " u1 " , " u2 " , " u3 " , " u5 " }) );
1929
1914
1930
1915
auto plan = makeLookupPlan (
1931
1916
planNodeIdGenerator,
@@ -2009,13 +1994,11 @@ TEST_P(IndexLookupJoinTest, barrier) {
2009
1994
const auto indexTableHandle =
2010
1995
makeIndexTableHandle (indexTable, GetParam ().asyncLookup );
2011
1996
auto planNodeIdGenerator = std::make_shared<core::PlanNodeIdGenerator>();
2012
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
2013
- columnHandles;
2014
1997
const auto indexScanNode = makeIndexScanNode (
2015
1998
planNodeIdGenerator,
2016
1999
indexTableHandle,
2017
2000
makeScanOutputType ({" u0" , " u1" , " u2" , " u3" , " u5" }),
2018
- columnHandles );
2001
+ makeIndexColumnHandles ({ " u0 " , " u1 " , " u2 " , " u3 " , " u5 " }) );
2019
2002
2020
2003
auto plan = makeLookupPlan (
2021
2004
planNodeIdGenerator,
@@ -2084,13 +2067,11 @@ TEST_P(IndexLookupJoinTest, joinFuzzer) {
2084
2067
std::random_device rd;
2085
2068
std::mt19937 g (rd ());
2086
2069
std::shuffle (scanOutput.begin (), scanOutput.end (), g);
2087
- std::unordered_map<std::string, std::shared_ptr<connector::ColumnHandle>>
2088
- columnHandles;
2089
2070
const auto indexScanNode = makeIndexScanNode (
2090
2071
planNodeIdGenerator,
2091
2072
indexTableHandle,
2092
2073
makeScanOutputType (scanOutput),
2093
- columnHandles );
2074
+ makeIndexColumnHandles (scanOutput) );
2094
2075
2095
2076
auto plan = makeLookupPlan (
2096
2077
planNodeIdGenerator,
0 commit comments