diff options
Diffstat (limited to 'yql/essentials/sql/settings')
| -rw-r--r-- | yql/essentials/sql/settings/translation_settings.cpp | 18 | ||||
| -rw-r--r-- | yql/essentials/sql/settings/translation_settings.h | 3 |
2 files changed, 20 insertions, 1 deletions
diff --git a/yql/essentials/sql/settings/translation_settings.cpp b/yql/essentials/sql/settings/translation_settings.cpp index 81cf2785150..02fd18501b2 100644 --- a/yql/essentials/sql/settings/translation_settings.cpp +++ b/yql/essentials/sql/settings/translation_settings.cpp @@ -6,6 +6,7 @@ #include <library/cpp/deprecated/split/split_iterator.h> +#include <util/string/cast.h> #include <util/string/split.h> #include <util/string/join.h> #include <util/system/env.h> @@ -33,7 +34,7 @@ public: }; [[noreturn]] TString ThrowBad(TStringBuf flag, const TVector<TString>& args) { - YQL_ENSURE(false, "Bad " << flag << "args [" << JoinSeq(", ", args) << "]"); + YQL_ENSURE(false, "Bad " << flag << " args [" << JoinSeq(", ", args) << "]"); } } // namespace @@ -188,6 +189,21 @@ void ParseTranslationSettings(const TExtendedSqlFlags& flags, TTranslationSettin } }, }, + { + "MaxParseTreeDepth", + [](const TVector<TString>& args, TTranslationSettings& s) { + if (args.size() != 1) { + ThrowBad("MaxParseTreeDepth", args); + } + + size_t value = 0; + if (!TryFromString(args[0], value)) { + ThrowBad("MaxParseTreeDepth", args); + } + + s.MaxParseTreeDepth = value; + }, + }, }; for (const auto& [flag, args] : flags) { diff --git a/yql/essentials/sql/settings/translation_settings.h b/yql/essentials/sql/settings/translation_settings.h index 9252d84caf6..a5598aa6eb8 100644 --- a/yql/essentials/sql/settings/translation_settings.h +++ b/yql/essentials/sql/settings/translation_settings.h @@ -21,7 +21,9 @@ class IAutoParamBuilderFactory; } // namespace NYql namespace NSQLTranslation { + constexpr const size_t SQL_MAX_PARSER_ERRORS = 100; +constexpr const size_t SQL_MAX_PARSE_TREE_DEPTH = 4096; enum class ESqlMode { QUERY = 0, @@ -121,6 +123,7 @@ struct TTranslationSettings { bool PGDisable; bool WarnOnV0; bool TestAntlr4; // TODO(YQL-19017): remove. + TMaybe<size_t> MaxParseTreeDepth; ISqlFeaturePolicy::TPtr V0WarnAsError; ISqlFeaturePolicy::TPtr DqDefaultAuto; ISqlFeaturePolicy::TPtr BlockDefaultAuto; |
