<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/yql/essentials/core/cbo, branch main</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=main</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2026-06-30T14:16:39Z</updated>
<entry>
<title>YQL-20095: Tune bugprone-argument-comment</title>
<updated>2026-06-30T14:16:39Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-06-30T13:05:47Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=8c0cddc7ffb0b7f0c39352957685fb04d7656b6f'/>
<id>urn:sha1:8c0cddc7ffb0b7f0c39352957685fb04d7656b6f</id>
<content type='text'>
https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html
commit_hash:780ff6a63be44998cb2336a05f3dc33e68a676bf
</content>
</entry>
<entry>
<title>YQL-20095: Enable performance-move-const-arg</title>
<updated>2026-06-24T10:13:06Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-06-24T08:56:00Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d0475a0ea7778f4cd82d00d4af324c446183dc61'/>
<id>urn:sha1:d0475a0ea7778f4cd82d00d4af324c446183dc61</id>
<content type='text'>
https://clang.llvm.org/extra/clang-tidy/checks/performance/move-const-arg.html

This check useful, as it shows, when a `std::move` is useless, so
to expectations of a programmer are not aligned with reality. The
most useful profit is to see `const T&amp;` arguments, that are
potentially can be replaced with `T`.

Also disabled `CheckTriviallyCopyableMove`,
see https://nda.ya.ru/t/Emvgx5Z67fpZY5 why.
commit_hash:c80c264a9774721aabbac85b350ccdbb8b9a39a2
</content>
</entry>
<entry>
<title>Replace unreachable with *_ENSURE(false, ...)</title>
<updated>2026-04-01T09:01:32Z</updated>
<author>
<name>atarasov5</name>
<email>atarasov5@yandex-team.com</email>
</author>
<published>2026-04-01T08:20:40Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ec76fb74e2fb7d9c3caa6d4a67881c9ec80a65d2'/>
<id>urn:sha1:ec76fb74e2fb7d9c3caa6d4a67881c9ec80a65d2</id>
<content type='text'>
commit_hash:7c1445375e838a9327006528cb455c9899e9b32d
</content>
</entry>
<entry>
<title>YQL-20095: Enable readability-avoid-const-params-in-decls</title>
<updated>2026-03-31T08:53:33Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-03-31T08:17:54Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=1ed9a30b0639ed46484701250c049a690913a510'/>
<id>urn:sha1:1ed9a30b0639ed46484701250c049a690913a510</id>
<content type='text'>
https://clang.llvm.org/extra/clang-tidy/checks/readability/avoid-const-params-in-decls.html
commit_hash:17e1ec5c3849a38bcb76cd4927e66979bee6c2ec
</content>
</entry>
<entry>
<title>YQL-20095: Enable modernize-use-designated-initializers</title>
<updated>2026-03-17T08:45:55Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-03-16T16:46:23Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=23d1fbf2beeee834d054c3c437e73a5f36172fab'/>
<id>urn:sha1:23d1fbf2beeee834d054c3c437e73a5f36172fab</id>
<content type='text'>
https://clang.llvm.org/extra/clang-tidy/checks/modernize/use-designated-initializers.html
commit_hash:d73eb463c7bec2bda4c362aab10af49979a7ddd3
</content>
</entry>
<entry>
<title>[CBO] Fix interesting orderings lookup: make it order-sensitive, i.e. shuffle [A, B] != [B, A]</title>
<updated>2026-03-17T03:00:22Z</updated>
<author>
<name>alexpaniman</name>
<email>alexpaniman@yandex-team.com</email>
</author>
<published>2026-03-16T12:49:36Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=456efb878536940cf1442d584ea367ec4bcbfa0e'/>
<id>urn:sha1:456efb878536940cf1442d584ea367ec4bcbfa0e</id>
<content type='text'>
# Description for reviewers

Interesting orderings FSM, considers shuffles "not natural" (before this PR), i.e. the order doesn't matter. Since our hash function is order-depended this leads to correctness bugs.

For example, this SQL query:

```sql
$semi_join = (
    SELECT *
    FROM customer c
    LEFT SEMI JOIN oorder o
      ON c.C_W_ID = o.O_W_ID
     AND c.C_D_ID = o.O_D_ID
);

SELECT s.C_W_ID, s.C_D_ID, n.NO_O_ID
FROM $semi_join s
INNER JOIN new_order as n
  ON s.C_W_ID = n.NO_W_ID
 AND s.C_D_ID = n.NO_D_ID;
```

Used to produce this plan:

```
┌&gt; ResultSet
└─┬&gt; InnerJoin (Grace) (c.C_D_ID,c.C_W_ID = n.NO_D_ID,n.NO_W_ID)
  ├─┬&gt; LeftSemiJoin (Grace) (c.C_D_ID,c.C_W_ID = o.O_W_ID,o.O_D_ID)
  │ ├─┬&gt; HashShuffle (KeyColumns: ["C_W_ID","C_D_ID"], HashFunc: "HashV2")
  │ │ └──&gt; TableFullScan (Table: customer, ReadColumns: ["C_W_ID (-∞, +∞)","C_D_ID (-∞, +∞)","C_ID (-∞, +∞)"])
  │ └─┬&gt; HashShuffle (KeyColumns: ["O_W_ID","O_D_ID"], HashFunc: "HashV2")
  │   └──&gt; TableFullScan (Table: oorder, ReadColumns: ["O_W_ID (-∞, +∞)","O_D_ID (-∞, +∞)","O_ID (-∞, +∞)"])
  └─┬&gt; HashShuffle (KeyColumns: ["NO_W_ID","NO_D_ID"], HashFunc: "HashV2")
    └──&gt; TableFullScan (Table: new_order, ReadColumns: ["NO_W_ID (-∞, +∞)","NO_D_ID (-∞, +∞)","NO_O_ID (-∞, +∞)"])
```

This plan is wrong, because InnerJoin reuses \[C\_W\_ID, C\_D\_ID\] shuffle, when it really needs \[C\_D\_ID, C\_W\_ID\] - this will lead to incorrect result if executed on more than 1 node with overwhelming probability.

After this PR, it produces a correct plan

```
┌&gt; ResultSet
└─┬&gt; InnerJoin (Grace) (c.C_D_ID,c.C_W_ID = n.NO_D_ID,n.NO_W_ID)
  ├─┬&gt; HashShuffle (KeyColumns: ["c.C_D_ID","c.C_W_ID"], HashFunc:
"HashV2")
  │ └─┬&gt; LeftSemiJoin (Grace) (c.C_D_ID,c.C_W_ID = o.O_W_ID,o.O_D_ID)
  │   ├─┬&gt; HashShuffle (KeyColumns: ["C_W_ID","C_D_ID"], HashFunc:
"HashV2")
  │   │ └──&gt; TableFullScan (Table: customer, ReadColumns: ["C_W_ID (-∞,
+∞)","C_D_ID (-∞, +∞)","C_ID (-∞, +∞)"])
  │   └─┬&gt; HashShuffle (KeyColumns: ["O_W_ID","O_D_ID"], HashFunc:
"HashV2")
  │     └──&gt; TableFullScan (Table: oorder, ReadColumns: ["O_W_ID (-∞,
+∞)","O_D_ID (-∞, +∞)","O_ID (-∞, +∞)"])
  └─┬&gt; HashShuffle (KeyColumns: ["NO_D_ID","NO_W_ID"], HashFunc:
"HashV2")
    └──&gt; TableFullScan (Table: new_order, ReadColumns: ["NO_W_ID (-∞,
+∞)","NO_D_ID (-∞, +∞)","NO_O_ID (-∞, +∞)"])
```

This mirrors PR made on github: &lt;https://github.com/ydb-platform/ydb/pull/35609&gt;

# Changelog entry

Type: fix
Component: CBO

Make interesting orderings order-sensitive
commit_hash:2d8e98048cb669bfc7048a227a8b42504664a273
</content>
</entry>
<entry>
<title>YQL-20095: Enable modernize-use-bool-literals</title>
<updated>2026-03-03T07:39:53Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-03-03T06:55:32Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=c22fd4898a3da2b1e071e954ad970bca51ac76ff'/>
<id>urn:sha1:c22fd4898a3da2b1e071e954ad970bca51ac76ff</id>
<content type='text'>
commit_hash:05fdc8e01569c5d74e2840a310ed1f7a34b72374
</content>
</entry>
<entry>
<title>YQL-20095: Enable modernize-pass-by-value</title>
<updated>2026-03-02T08:32:11Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-03-02T07:53:24Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=567b9a254ca87d1071b7c359c8c463583fbf4be0'/>
<id>urn:sha1:567b9a254ca87d1071b7c359c8c463583fbf4be0</id>
<content type='text'>
commit_hash:4939dfad654f18bb31e40711ee0c39063889f17b
</content>
</entry>
<entry>
<title>YQL-20095: Enable modernize-loop-convert</title>
<updated>2026-02-27T06:12:30Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-02-27T05:47:03Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=0144afff7d7962db13b43db44b9b6f1796ad4bbb'/>
<id>urn:sha1:0144afff7d7962db13b43db44b9b6f1796ad4bbb</id>
<content type='text'>
- https://clang.llvm.org/extra/clang-tidy/checks/modernize/loop-convert.html

Semi-automatic translation was performed. Manually rewritten some
types and names.
commit_hash:0ad921f0d512dd4a8ccc8af557197ce6a02582e1
</content>
</entry>
<entry>
<title>YQL-20095: Enable google-explicit-constructor</title>
<updated>2026-01-23T13:17:10Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-01-23T12:36:47Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=5ec2ab12d84c8edd135d4a89d87e2fbd2b281f4e'/>
<id>urn:sha1:5ec2ab12d84c8edd135d4a89d87e2fbd2b281f4e</id>
<content type='text'>
commit_hash:4d77ad10fd4db303459ec4e45e139967c7fc8196
</content>
</entry>
</feed>
