diff --git a/ydb/library/yql/providers/s3/provider/yql_s3_datasource_type_ann.cpp b/ydb/library/yql/providers/s3/provider/yql_s3_datasource_type_ann.cpp index 6921d2898660..1e96dd0c36b2 100644 --- a/ydb/library/yql/providers/s3/provider/yql_s3_datasource_type_ann.cpp +++ b/ydb/library/yql/providers/s3/provider/yql_s3_datasource_type_ann.cpp @@ -707,6 +707,14 @@ class TS3DataSourceTypeAnnotationTransformer : public TVisitorTransformerBase { return true; } + if (name == "constraints"sv) { + TStringBuf unused; + if (!ExtractSettingValue(setting.Tail(), "constraints"sv, format, {}, ctx, unused)) { + return false; + } + return true; + } + YQL_ENSURE(name == "projection"sv); haveProjection = true; if (!EnsureAtom(setting.Tail(), ctx)) { @@ -721,7 +729,7 @@ class TS3DataSourceTypeAnnotationTransformer : public TVisitorTransformerBase { return true; }; if (!EnsureValidSettings(*input->Child(TS3Object::idx_Settings), - { "compression"sv, "partitionedby"sv, "projection"sv, "data.interval.unit"sv, + { "compression"sv, "partitionedby"sv, "projection"sv, "data.interval.unit"sv, "constraints"sv, "data.datetime.formatname"sv, "data.datetime.format"sv, "data.timestamp.formatname"sv, "data.timestamp.format"sv, "readmaxbytes"sv, "csvdelimiter"sv, "directories"sv, "filepattern"sv, "pathpattern"sv, "pathpatternvariant"sv }, validator, ctx)) { diff --git a/ydb/library/yql/utils/bindings/utils.cpp b/ydb/library/yql/utils/bindings/utils.cpp index 9cd4f19d251f..e1b4c0a6080d 100644 --- a/ydb/library/yql/utils/bindings/utils.cpp +++ b/ydb/library/yql/utils/bindings/utils.cpp @@ -34,6 +34,8 @@ void LoadBindings(THashMap& dst binding.ClusterType = v.GetString(); } else if (k == "schema") { binding.Settings["schema"] = SerializeJsonValueAsYsonText(v); + } else if (k == "constraints") { + binding.Settings["constraints"] = SerializeJsonValueAsYsonText(v); } else { YQL_ENSURE(v.IsString()); binding.Settings.emplace(k, v.GetString());