Skip to content

Commit a1ecba7

Browse files
authored
YDB FQ: Support MySQL as an external data source (#4951)
1 parent 7182df1 commit a1ecba7

File tree

6 files changed

+24
-2
lines changed

6 files changed

+24
-2
lines changed

ydb/core/external_sources/external_source_factory.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ IExternalSourceFactory::TPtr CreateExternalSourceFactory(const std::vector<TStri
4747
ToString(NYql::EDatabaseType::PostgreSQL),
4848
CreateExternalDataSource(TString{NYql::GenericProviderName}, {"MDB_BASIC", "BASIC"}, {"database_name", "protocol", "mdb_cluster_id", "use_tls", "schema"}, hostnamePatternsRegEx)
4949
},
50+
{
51+
ToString(NYql::EDatabaseType::MySQL),
52+
CreateExternalDataSource(TString{NYql::GenericProviderName}, {"MDB_BASIC", "BASIC"}, {"database_name", "mdb_cluster_id", "use_tls"}, hostnamePatternsRegEx)
53+
},
5054
{
5155
ToString(NYql::EDatabaseType::Ydb),
5256
CreateExternalDataSource(TString{NYql::GenericProviderName}, {"BASIC", "SERVICE_ACCOUNT"}, {"database_name", "use_tls", "database_id"}, hostnamePatternsRegEx)

ydb/library/yql/providers/common/db_id_async_resolver/db_async_resolver.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ enum class EDatabaseType {
1414
DataStreams,
1515
ObjectStorage,
1616
PostgreSQL,
17-
YT
17+
YT,
18+
MySQL
1819
};
1920

2021
inline EDatabaseType DatabaseTypeFromDataSourceKind(NConnector::NApi::EDataSourceKind dataSourceKind) {
@@ -25,6 +26,8 @@ inline EDatabaseType DatabaseTypeFromDataSourceKind(NConnector::NApi::EDataSourc
2526
return EDatabaseType::ClickHouse;
2627
case NConnector::NApi::EDataSourceKind::YDB:
2728
return EDatabaseType::Ydb;
29+
case NConnector::NApi::EDataSourceKind::MYSQL:
30+
return EDatabaseType::MySQL;
2831
default:
2932
ythrow yexception() << "Unknown data source kind: " << NConnector::NApi::EDataSourceKind_Name(dataSourceKind);
3033
}
@@ -38,6 +41,8 @@ inline NConnector::NApi::EDataSourceKind DatabaseTypeToDataSourceKind(EDatabaseT
3841
return NConnector::NApi::EDataSourceKind::CLICKHOUSE;
3942
case EDatabaseType::Ydb:
4043
return NConnector::NApi::EDataSourceKind::YDB;
44+
case EDatabaseType::MySQL:
45+
return NConnector::NApi::EDataSourceKind::MYSQL;
4146
default:
4247
ythrow yexception() << "Unknown database type: " << ToString(databaseType);
4348
}

ydb/library/yql/providers/generic/actors/yql_generic_provider_factories.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace NYql::NDq {
3131
args.MaxKeysInRequest);
3232
};
3333

34-
for (auto& name : {"ClickHouseGeneric", "PostgreSqlGeneric", "YdbGeneric"}) {
34+
for (auto& name : {"ClickHouseGeneric", "PostgreSqlGeneric", "YdbGeneric", "MySqlGeneric"}) {
3535
factory.RegisterSource<Generic::TSource>(name, readActorFactory);
3636
factory.RegisterLookupSource<Generic::TLookupSource>(name, lookupActorFactory);
3737
}

ydb/library/yql/providers/generic/provider/yql_generic_cluster_config.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,11 @@ namespace NYql {
197197
return;
198198
}
199199

200+
if (clusterConfig.GetKind() == EDataSourceKind::MYSQL) {
201+
clusterConfig.SetProtocol(EProtocol::NATIVE);
202+
return;
203+
}
204+
200205
auto it = properties.find("protocol");
201206
if (it == properties.cend()) {
202207
ythrow yexception() << "missing 'PROTOCOL' value";

ydb/library/yql/providers/generic/provider/yql_generic_dq_integration.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,9 @@ namespace NYql {
170170
case NYql::NConnector::NApi::POSTGRESQL:
171171
sourceType = "PostgreSqlGeneric";
172172
break;
173+
case NYql::NConnector::NApi::MYSQL:
174+
sourceType = "MySqlGeneric";
175+
break;
173176
case NYql::NConnector::NApi::YDB:
174177
sourceType = "YdbGeneric";
175178
break;
@@ -204,6 +207,9 @@ namespace NYql {
204207
case NConnector::NApi::POSTGRESQL:
205208
properties["SourceType"] = "PostgreSql";
206209
break;
210+
case NConnector::NApi::MYSQL:
211+
properties["SourceType"] = "MySql";
212+
break;
207213
case NConnector::NApi::YDB:
208214
properties["SourceType"] = "Ydb";
209215
break;

ydb/library/yql/providers/generic/provider/yql_generic_load_meta.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,8 @@ namespace NYql {
320320
break;
321321
case NYql::NConnector::NApi::YDB:
322322
break;
323+
case NYql::NConnector::NApi::MYSQL:
324+
break;
323325
case NYql::NConnector::NApi::POSTGRESQL: {
324326
// for backward compability set schema "public" by default
325327
// TODO: simplify during https://st.yandex-team.ru/YQ-2494

0 commit comments

Comments
 (0)