<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/yql/essentials/tests/sql/sql2yql, branch oidc-1.2.6.0-dev</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=oidc-1.2.6.0-dev</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=oidc-1.2.6.0-dev'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2025-08-19T15:33:56Z</updated>
<entry>
<title>Intermediate changes</title>
<updated>2025-08-19T15:33:56Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2025-08-19T15:04:19Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=29b8e38029d8274b6d3439ad2c27f1470d75b67e'/>
<id>urn:sha1:29b8e38029d8274b6d3439ad2c27f1470d75b67e</id>
<content type='text'>
commit_hash:8ca485c564bd7f0ff3ce9685470a06e07e99d0f4
</content>
</entry>
<entry>
<title>YQL-20150: Add OptimizeLMap optimizer</title>
<updated>2025-08-19T15:27:32Z</updated>
<author>
<name>maxkovalev</name>
<email>maxkovalev@yandex-team.com</email>
</author>
<published>2025-08-19T14:31:24Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=24dd9f1329627628e9b0efe054c0d9cb4542002a'/>
<id>urn:sha1:24dd9f1329627628e9b0efe054c0d9cb4542002a</id>
<content type='text'>
YQL-20150: Add OptimizeLMap optimizer
commit_hash:065921d83e492d815fa95f3e9bedd006aee0c887
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2025-08-18T15:20:54Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2025-08-18T14:35:13Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d957f38499c4ae46301a4d5b79e3e97f074e7d52'/>
<id>urn:sha1:d957f38499c4ae46301a4d5b79e3e97f074e7d52</id>
<content type='text'>
commit_hash:45d5b2e2dd994307de6d103f3b9658f40fd3696b
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2025-08-18T05:29:54Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2025-08-18T05:18:05Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=76b7e8af7e7f3be73a743b4e0ce25b2015cffa37'/>
<id>urn:sha1:76b7e8af7e7f3be73a743b4e0ce25b2015cffa37</id>
<content type='text'>
commit_hash:44e30306b80ccb5f73f3fc9ab17545e0af3b413f
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2025-08-11T13:09:24Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2025-08-11T12:54:55Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=aadaac8b7487cac5fb041864293156b5e5a368ae'/>
<id>urn:sha1:aadaac8b7487cac5fb041864293156b5e5a368ae</id>
<content type='text'>
commit_hash:5b0aadf271c553415c536606ff7f52575bd267c4
</content>
</entry>
<entry>
<title>YQL-20211 YQL-20223: skip nulls in pushdown over optional side</title>
<updated>2025-08-08T08:40:53Z</updated>
<author>
<name>lucius</name>
<email>lucius@yandex-team.com</email>
</author>
<published>2025-08-08T07:53:50Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=cd8c631d29f7e015c27f5038539827c919b58b59'/>
<id>urn:sha1:cd8c631d29f7e015c27f5038539827c919b58b59</id>
<content type='text'>
Добавляю поддержку фильтрации нуллов при пушдауне на необязательную сторону джоина (до этого она работала только при пушдауне на обязательную сторону).

Как в пушдауне предиката с левой стороны одновременно на правую (PredicatePushdownOverEquiJoinBothSides), так и в пушдауне сразу на правую (FilterPushdownOverJoinOptionalSide).

Включается по флагу PredicatePushdownOverEquiJoinBothSides.

Тесты с включением можно посмотреть тут: &lt;https://nda.ya.ru/t/e2f09Qw_7HNvu6&gt;
commit_hash:0f101bfced2a510995577e1bca90eef6d2505992
</content>
</entry>
<entry>
<title>YQL-20247 Depends for Udf function</title>
<updated>2025-08-05T17:39:19Z</updated>
<author>
<name>vvvv</name>
<email>vvvv@yandex-team.com</email>
</author>
<published>2025-08-05T17:15:00Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=4d576a194855d3d3725914b7330af3f6478e0e13'/>
<id>urn:sha1:4d576a194855d3d3725914b7330af3f6478e0e13</id>
<content type='text'>
commit_hash:4ee9d9b9079b90e8eeb91accc41d6a3a30c3a18c
</content>
</entry>
<entry>
<title>YQL-20206: Optimize X AND/OR Not X YQL-20229</title>
<updated>2025-08-01T17:56:28Z</updated>
<author>
<name>lucius</name>
<email>lucius@yandex-team.com</email>
</author>
<published>2025-08-01T17:38:14Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d26972227453799b411b840c959784b73d6d99db'/>
<id>urn:sha1:d26972227453799b411b840c959784b73d6d99db</id>
<content type='text'>
Делает возможным такие оптимизации:

- `X AND NOT X -&gt; FALSE`

- `X OR NOT X -&gt; TRUE`

Работает в том числе если X будет завернут в Unessential.

Только для неопциональных X.

Пример замены когда много аргументов:

```
In:  A and     X and B and NOT X and C and X and D
Out: A and FALSE and B           and C       and D
```

Выражение из примера можно преобразовать если X, B и C не требуют побочных эффектов.

Или вот пример если B' требует побочных эффектов:

```
In:  A and X and B' and NOT X and C and X and D
Out: A and X and B' and FALSE and C       and D
```

Про что думал, но не стал делать:

1) Можно заменять на константу не только X / NOT X, но и всю цепочку подряд идущих узлов без побочных эффектов. Оставляю это другим оптимизаторам, чтобы меньше думать про нюансы и не дублировать код (в частности чтобы не заботиться о типизации если в цепочке оказался Optional Bool).

2) Можно поддержать опциональные X, тогда будет примерно такое преобразование `X AND NOT X -&gt; IF(X IS NULL, NULL, FALSE)`. Неочевидно что это улучшение и пока решили не делать.

Оптимизатор под флагом. Тесты с включением флага тут: [https://nda.ya.ru/t/6YuCsGDE7H8Dnd](https://nda.ya.ru/t/YVdMA5B37H8Dne
commit_hash:c34cf075a46c6b06c742ff0b15697b93ede75924
</content>
</entry>
<entry>
<title>YQL-20258 side effects infrastructure</title>
<updated>2025-08-01T13:40:18Z</updated>
<author>
<name>vvvv</name>
<email>vvvv@yandex-team.com</email>
</author>
<published>2025-08-01T13:25:04Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=0030e78e89809f2a0c8c10260592f15cda5cbc81'/>
<id>urn:sha1:0030e78e89809f2a0c8c10260592f15cda5cbc81</id>
<content type='text'>
commit_hash:cb76201226f30679f63457a9f9e1ebdb31dcd05b
</content>
</entry>
<entry>
<title>YQL-20209: use Filter+Unessential instead of SkipNullMembers in EmitSkipNullOnPushdown</title>
<updated>2025-08-01T10:43:15Z</updated>
<author>
<name>lucius</name>
<email>lucius@yandex-team.com</email>
</author>
<published>2025-08-01T10:17:11Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=363e5825447a1519cab9e46a42797ebb40bb9052'/>
<id>urn:sha1:363e5825447a1519cab9e46a42797ebb40bb9052</id>
<content type='text'>
commit_hash:464cfa9be3ee98de47a47ff4e88db5b0d9eb37ec
</content>
</entry>
</feed>
