@@ -33,65 +33,21 @@ namespace {
3333constexpr char const * kHiveHadoop2ConnectorName = " hive-hadoop2" ;
3434constexpr char const * kIcebergConnectorName = " iceberg" ;
3535
36- const std::unordered_map<
37- std::string,
38- const std::shared_ptr<velox::connector::ConnectorFactory>>&
39- connectorFactories () {
40- static const std::unordered_map<
41- std::string,
42- const std::shared_ptr<velox::connector::ConnectorFactory>>
43- factories = {
44- {velox::connector::hive::HiveConnectorFactory::kHiveConnectorName ,
45- std::make_shared<velox::connector::hive::HiveConnectorFactory>()},
46- {kHiveHadoop2ConnectorName ,
47- std::make_shared<velox::connector::hive::HiveConnectorFactory>(
48- kHiveHadoop2ConnectorName )},
49- {velox::connector::tpch::TpchConnectorFactory::kTpchConnectorName ,
50- std::make_shared<velox::connector::tpch::TpchConnectorFactory>()},
51- {kIcebergConnectorName ,
52- std::make_shared<velox::connector::hive::HiveConnectorFactory>(
53- kIcebergConnectorName )},
54- #ifdef PRESTO_ENABLE_ARROW_FLIGHT_CONNECTOR
55- {ArrowFlightConnectorFactory::kArrowFlightConnectorName ,
56- std::make_shared<ArrowFlightConnectorFactory>()},
57- #endif
58- };
59- return factories;
60- }
61-
6236} // namespace
6337
64- velox::connector::ConnectorFactory* getConnectorFactory (
65- const std::string& connectorName) {
66- {
67- #ifdef PRESTO_ENABLE_CUDF
68- if (velox::cudf_velox::CudfConfig::getInstance ().enabled ) {
69- if (connectorName ==
70- velox::connector::hive::HiveConnectorFactory::kHiveConnectorName ) {
71- static const auto factory = std::make_shared<
72- velox::cudf_velox::connector::hive::CudfHiveConnectorFactory>();
73- return factory.get ();
74- }
75- if (connectorName == kHiveHadoop2ConnectorName ) {
76- static const auto factory = std::make_shared<
77- velox::cudf_velox::connector::hive::CudfHiveConnectorFactory>(
78- kHiveHadoop2ConnectorName );
79- return factory.get ();
80- }
81- }
82- #endif
83- auto it = connectorFactories ().find (connectorName);
84- if (it != connectorFactories ().end ()) {
85- return it->second .get ();
86- }
87- }
88- if (!velox::connector::hasConnectorFactory (connectorName)) {
89- VELOX_FAIL (" ConnectorFactory with name '{}' not registered" , connectorName);
38+ std::vector<std::string> listConnectorFactories () {
39+ std::vector<std::string> names;
40+ const auto & factories = detail::connectorFactories ();
41+ names.reserve (factories.size ());
42+ for (const auto & [name, _] : factories) {
43+ names.push_back (name);
9044 }
91- return velox::connector::getConnectorFactory (connectorName). get () ;
45+ return names ;
9246}
9347
9448void registerConnectors () {
49+ registerConnectorFactories ();
50+
9551 registerPrestoToVeloxConnector (std::make_unique<HivePrestoToVeloxConnector>(
9652 velox::connector::hive::HiveConnectorFactory::kHiveConnectorName ));
9753 registerPrestoToVeloxConnector (
@@ -118,4 +74,35 @@ void registerConnectors() {
11874 ArrowFlightConnectorFactory::kArrowFlightConnectorName ));
11975#endif
12076}
77+
78+ void registerConnectorFactories () {
79+ // Register all connector factories using the facebook::presto namespace
80+ // factory registry
81+
82+ // Register Hive connector factory
83+ facebook::presto::registerConnectorFactory (
84+ std::make_shared<facebook::velox::connector::hive::HiveConnectorFactory>());
85+
86+ // Register Hive Hadoop2 connector factory
87+ facebook::presto::registerConnectorFactory (
88+ std::make_shared<facebook::velox::connector::hive::HiveConnectorFactory>(
89+ kHiveHadoop2ConnectorName ));
90+
91+ // Register TPCH connector factory
92+ facebook::presto::registerConnectorFactory (
93+ std::make_shared<facebook::velox::connector::tpch::TpchConnectorFactory>());
94+
95+ // Register Iceberg connector factory (using Hive implementation)
96+ facebook::presto::registerConnectorFactory (
97+ std::make_shared<facebook::velox::connector::hive::HiveConnectorFactory>(
98+ kIcebergConnectorName ));
99+
100+ #ifdef PRESTO_ENABLE_ARROW_FLIGHT_CONNECTOR
101+ // Note: ArrowFlightConnectorFactory would need to be implemented in Presto
102+ // namespace For now, keep the Velox version
103+ facebook::presto::registerConnectorFactory (
104+ std::make_shared<ArrowFlightConnectorFactory>());
105+ #endif
106+ }
107+
121108} // namespace facebook::presto
0 commit comments