Skip to content

Commit df18832

Browse files
authored
YDB FQ: support Redis as an external data source (#16957)
1 parent 1e2b2fc commit df18832

File tree

9 files changed

+25
-5
lines changed

9 files changed

+25
-5
lines changed

ydb/core/external_sources/external_source_factory.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,10 @@ IExternalSourceFactory::TPtr CreateExternalSourceFactory(const std::vector<TStri
140140
{
141141
ToString(NYql::EDatabaseType::Iceberg),
142142
BuildIcebergSource(hostnamePatternsRegEx)
143+
},
144+
{
145+
ToString(NYql::EDatabaseType::Redis),
146+
CreateExternalDataSource(TString{NYql::GenericProviderName}, {"BASIC"}, {"database_name", "use_tls"}, hostnamePatternsRegEx)
143147
}
144148
},
145149
availableExternalDataSources);

ydb/library/yql/providers/common/db_id_async_resolver/database_type.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ std::set<TString> GetAllExternalDataSourceTypes() {
1818
ToString(NYql::EDatabaseType::Oracle),
1919
ToString(NYql::EDatabaseType::Logging),
2020
ToString(NYql::EDatabaseType::Solomon),
21-
ToString(NYql::EDatabaseType::Iceberg)
21+
ToString(NYql::EDatabaseType::Iceberg),
22+
ToString(NYql::EDatabaseType::Redis)
2223
};
2324
return allTypes;
2425
}
@@ -43,6 +44,8 @@ EDatabaseType DatabaseTypeFromDataSourceKind(NYql::EGenericDataSourceKind dataSo
4344
return EDatabaseType::Logging;
4445
case NYql::EGenericDataSourceKind::ICEBERG:
4546
return EDatabaseType::Iceberg;
47+
case NYql::EGenericDataSourceKind::REDIS:
48+
return EDatabaseType::Redis;
4649
default:
4750
ythrow yexception() << "Unknown data source kind: " << NYql::EGenericDataSourceKind_Name(dataSourceKind);
4851
}
@@ -68,6 +71,8 @@ NYql::EGenericDataSourceKind DatabaseTypeToDataSourceKind(EDatabaseType database
6871
return NYql::EGenericDataSourceKind::LOGGING;
6972
case EDatabaseType::Iceberg:
7073
return NYql::EGenericDataSourceKind::ICEBERG;
74+
case EDatabaseType::Redis:
75+
return NYql::EGenericDataSourceKind::REDIS;
7176
default:
7277
ythrow yexception() << "Unknown database type: " << ToString(databaseType);
7378
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ enum class EDatabaseType {
1919
Oracle,
2020
Logging,
2121
Solomon,
22-
Iceberg
22+
Iceberg,
23+
Redis
2324
};
2425

2526
std::set<TString> GetAllExternalDataSourceTypes();

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ namespace NYql::NDq {
5252
"MsSQLServerGeneric",
5353
"OracleGeneric",
5454
"LoggingGeneric",
55-
"IcebergGeneric"}) {
55+
"IcebergGeneric",
56+
"RedisGeneric"}) {
5657
factory.RegisterSource<NGeneric::TSource>(name, readActorFactory);
5758
factory.RegisterLookupSource<NGeneric::TLookupSource>(name, lookupActorFactory);
5859
}

ydb/library/yql/providers/generic/connector/tests/utils/run/kqprun.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ class AppConfigRenderer:
197197
AvailableExternalDataSources: "Oracle"
198198
AvailableExternalDataSources: "Logging"
199199
AvailableExternalDataSources: "Solomon"
200+
AvailableExternalDataSources: "Redis"
200201
Generic {
201202
Connector {
202203
Endpoint {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@ namespace NYql {
214214
EGenericDataSourceKind::MYSQL,
215215
EGenericDataSourceKind::MS_SQL_SERVER,
216216
EGenericDataSourceKind::ORACLE,
217-
EGenericDataSourceKind::ICEBERG
217+
EGenericDataSourceKind::ICEBERG,
218+
EGenericDataSourceKind::REDIS
218219
},
219220
clusterConfig.GetKind()
220221
)) {
@@ -358,7 +359,6 @@ namespace NYql {
358359
ParseServiceAccountIdSignature(properties, clusterConfig);
359360
ParseToken(properties, clusterConfig);
360361
ParseFolderId(properties, clusterConfig);
361-
362362
ParseIcebergFields(properties, clusterConfig);
363363

364364
return clusterConfig;

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ namespace NYql {
4040
return "LoggingGeneric";
4141
case NYql::EGenericDataSourceKind::ICEBERG:
4242
return "IcebergGeneric";
43+
case NYql::EGenericDataSourceKind::REDIS:
44+
return "RedisGeneric";
4345
default:
4446
throw yexception() << "Data source kind is unknown or not specified";
4547
}
@@ -282,6 +284,9 @@ namespace NYql {
282284
case NYql::EGenericDataSourceKind::ICEBERG:
283285
properties["SourceType"] = "Iceberg";
284286
break;
287+
case NYql::EGenericDataSourceKind::REDIS:
288+
properties["SourceType"] = "Redis";
289+
break;
285290
case NYql::EGenericDataSourceKind::DATA_SOURCE_KIND_UNSPECIFIED:
286291
break;
287292
default:

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
@@ -540,6 +540,8 @@ namespace NYql {
540540
auto* options = request.mutable_data_source_instance()->mutable_iceberg_options();
541541
SetIcebergOptions(*options, clusterConfig);
542542
} break;
543+
case NYql::EGenericDataSourceKind::REDIS:
544+
break;
543545
default:
544546
throw yexception() << "Unexpected data source kind: '"
545547
<< NYql::EGenericDataSourceKind_Name(dataSourceKind) << "'";

ydb/tests/tools/kqprun/configuration/app_config.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ QueryServiceConfig {
9898
AvailableExternalDataSources: "Logging"
9999
AvailableExternalDataSources: "Solomon"
100100
AvailableExternalDataSources: "Iceberg"
101+
AvailableExternalDataSources: "Redis"
101102

102103
FileStorage {
103104
MaxFiles: 1000

0 commit comments

Comments
 (0)