aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrigorii Papashvili <papashviliga@ydb.tech>2024-08-19 15:52:29 +0300
committerGitHub <noreply@github.com>2024-08-19 15:52:29 +0300
commit1fdcf7096031ebf835e647e6efbe9d812ff3d0ce (patch)
tree548acbf286e239be383e39a32b45e146c1903191
parent8290a51b951231a788210e579bdc7a01e8d449ee (diff)
downloadydb-1fdcf7096031ebf835e647e6efbe9d812ff3d0ce.tar.gz
YDB FQ: Exclude DATABASE_NAME from mandatory for oracle (#7593)
-rw-r--r--ydb/core/external_sources/external_data_source.cpp6
-rw-r--r--ydb/library/yql/providers/generic/connector/tests/utils/run/kqprun.py4
-rw-r--r--ydb/library/yql/providers/generic/provider/yql_generic_cluster_config.cpp8
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,