diff options
author | Grigorii Papashvili <papashviliga@ydb.tech> | 2024-08-19 15:52:29 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-19 15:52:29 +0300 |
commit | 1fdcf7096031ebf835e647e6efbe9d812ff3d0ce (patch) | |
tree | 548acbf286e239be383e39a32b45e146c1903191 | |
parent | 8290a51b951231a788210e579bdc7a01e8d449ee (diff) | |
download | ydb-1fdcf7096031ebf835e647e6efbe9d812ff3d0ce.tar.gz |
YDB FQ: Exclude DATABASE_NAME from mandatory for oracle (#7593)
3 files changed, 12 insertions, 6 deletions
diff --git a/ydb/core/external_sources/external_data_source.cpp b/ydb/core/external_sources/external_data_source.cpp index 9de3908fc7..c617e98ed4 100644 --- a/ydb/core/external_sources/external_data_source.cpp +++ b/ydb/core/external_sources/external_data_source.cpp @@ -36,8 +36,8 @@ struct TExternalDataSource : public IExternalSource { ythrow TExternalSourceException() << "Only external table supports parameters"; } - bool IsRDBMSDataSource(const TProtoStringType& sourceType) const { - return IsIn({"Greenplum", "PostgreSQL", "MySQL", "MsSQLServer", "ClickHouse", "Oracle"}, sourceType); + bool DataSourceMustHaveDataBaseName(const TProtoStringType& sourceType) const { + return IsIn({"Greenplum", "PostgreSQL", "MySQL", "MsSQLServer", "ClickHouse"}, sourceType); } virtual void ValidateExternalDataSource(const TString& externalDataSourceDescription) const override { @@ -53,7 +53,7 @@ struct TExternalDataSource : public IExternalSource { ythrow TExternalSourceException() << "Unsupported property: " << key; } - if (IsRDBMSDataSource(proto.GetSourceType()) && !proto.GetProperties().GetProperties().contains("database_name")) { + if (DataSourceMustHaveDataBaseName(proto.GetSourceType()) && !proto.GetProperties().GetProperties().contains("database_name")) { ythrow TExternalSourceException() << proto.GetSourceType() << " source must provide database_name"; } diff --git a/ydb/library/yql/providers/generic/connector/tests/utils/run/kqprun.py b/ydb/library/yql/providers/generic/connector/tests/utils/run/kqprun.py index 6a3b27c8ff..35f99d7e86 100644 --- a/ydb/library/yql/providers/generic/connector/tests/utils/run/kqprun.py +++ b/ydb/library/yql/providers/generic/connector/tests/utils/run/kqprun.py @@ -29,7 +29,9 @@ CREATE OBJECT {{data_source}}_local_password (TYPE SECRET) WITH (value = "{{pass CREATE EXTERNAL DATA SOURCE {{data_source}} WITH ( SOURCE_TYPE="{{kind}}", LOCATION="{{host}}:{{port}}", + {% if database %} DATABASE_NAME="{{database}}", + {% endif %} AUTH_METHOD="BASIC", LOGIN="{{login}}", PASSWORD_SECRET_NAME="{{data_source}}_local_password", @@ -121,7 +123,7 @@ CREATE EXTERNAL DATA SOURCE {{data_source}} WITH ( settings.oracle.username, settings.oracle.password, NONE, - cluster.database, + NONE, NONE, cluster.service_name) }} diff --git a/ydb/library/yql/providers/generic/provider/yql_generic_cluster_config.cpp b/ydb/library/yql/providers/generic/provider/yql_generic_cluster_config.cpp index 21856cb25d..9cfc6c1aef 100644 --- a/ydb/library/yql/providers/generic/provider/yql_generic_cluster_config.cpp +++ b/ydb/library/yql/providers/generic/provider/yql_generic_cluster_config.cpp @@ -345,6 +345,10 @@ namespace NYql { NConnector::NApi::EDataSourceKind::POSTGRESQL, }; + bool DataSourceMustHaveDataBaseName(const NConnector::NApi::EDataSourceKind& sourceKind) { + return traditionalRelationalDatabaseKinds.contains(sourceKind) && sourceKind != NConnector::NApi::ORACLE; + } + void ValidateGenericClusterConfig( const NYql::TGenericClusterConfig& clusterConfig, const TString& context) { @@ -430,9 +434,9 @@ namespace NYql { } } - // All the databases with exception to managed YDB: + // All the databases with exception to managed YDB and Oracle: // * DATABASE_NAME is mandatory field - if (traditionalRelationalDatabaseKinds.contains(clusterConfig.GetKind())) { + if (DataSourceMustHaveDataBaseName(clusterConfig.GetKind())) { if (!clusterConfig.GetDatabaseName()) { return ValidationError( clusterConfig, |