diff options
| author | lucius <[email protected]> | 2025-10-09 13:01:25 +0300 |
|---|---|---|
| committer | lucius <[email protected]> | 2025-10-09 13:33:39 +0300 |
| commit | e7c5ac7fc2f710e8fe0223ec4ed56ecda316b9c4 (patch) | |
| tree | b7dc4fb5d2693c5be545e14831c2eb802f8f62df /yql/essentials/sql/v1/sql_query.cpp | |
| parent | 65e378dec032b5dde3099702f121524cf022b9e6 (diff) | |
YT-25914: [cbo] use column DataWeight + update cost function + add version pragma
Новая кост-функция для cbo. Под флагом чтобы удобнее сравнивать со старой.
2 изменения:
- Для оценки размера входных таблиц используется поколоночный dataweight (если есть), а не таблица целиком
- В самой кост-функции убран outputSize, чтобы он не учитывался дважды: он неявно учтен в каждом следующем джоине как левый либо правый inputSize, а размер результата последнего джоина не зависит от перестановки джоинов
commit_hash:d130848393114b1b4383035381dba7767aac62fb
Diffstat (limited to 'yql/essentials/sql/v1/sql_query.cpp')
| -rw-r--r-- | yql/essentials/sql/v1/sql_query.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/sql_query.cpp b/yql/essentials/sql/v1/sql_query.cpp index bb846e93012..813423b0540 100644 --- a/yql/essentials/sql/v1/sql_query.cpp +++ b/yql/essentials/sql/v1/sql_query.cpp @@ -3388,6 +3388,22 @@ THashMap<TString, TPragmaDescr> PragmaDescrs{ } return TNodePtr{}; }), + TableElemExt("CostBasedOptimizerVersion", [](CB_SIG) -> TMaybe<TNodePtr> { + auto& ctx = query.Context(); + if (values.size() == 1 && values[0].GetLiteral()) { + ui32 version; + if (!TryFromString(*values[0].GetLiteral(), version)) { + query.Error() << "Expected integer argument for: " << pragma; + return {}; + } + const ui32 maxCBOVersion = 1; + if (version > maxCBOVersion) { + query.Error() << "Expected value <= " << maxCBOVersion << " for: " << pragma; + } + ctx.CostBasedOptimizerVersion = version; + } + return TNodePtr{}; + }), TableElemExt("DisableCompactNamedExprs", [](CB_SIG) -> TMaybe<TNodePtr> { auto& ctx = query.Context(); if (!ctx.Warning(ctx.Pos(), TIssuesIds::YQL_DEPRECATED_PRAGMA, [](auto& out) { |
