<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/yql/essentials/tests/sql/suites/optimizers, 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-13T16:26:32Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2025-08-13T16:14:34Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=aae2cfe567a3498ec7c2d50a736c816fe57c4a9f'/>
<id>urn:sha1:aae2cfe567a3498ec7c2d50a736c816fe57c4a9f</id>
<content type='text'>
commit_hash:e6cca97ec9c9627f1ba82a11abf454518fc90972
</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>NormalizeDependsOn pipeline stage</title>
<updated>2025-07-30T14:18:32Z</updated>
<author>
<name>ziganshinmr</name>
<email>ziganshinmr@yandex-team.com</email>
</author>
<published>2025-07-30T13:34:23Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=98616151781d016d3a66cc11cb9d789193929cf4'/>
<id>urn:sha1:98616151781d016d3a66cc11cb9d789193929cf4</id>
<content type='text'>
commit_hash:a563966e2448de9828c0786f9ba9939b55fc21fd
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2025-07-17T16:06:16Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2025-07-17T15:56:14Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=745c0a027c252f191aed5e35115c163c1f8601a1'/>
<id>urn:sha1:745c0a027c252f191aed5e35115c163c1f8601a1</id>
<content type='text'>
commit_hash:50d34a5b1e277a0ff5dce83a9cf485e2c0d1a471
</content>
</entry>
<entry>
<title>Fix 'Member over renaming FlatMap' optimizer</title>
<updated>2025-07-15T19:33:40Z</updated>
<author>
<name>aneporada</name>
<email>aneporada@yandex-team.com</email>
</author>
<published>2025-07-15T19:17:48Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=532483114946405240dc983cc9ec6fd3bd55bd1d'/>
<id>urn:sha1:532483114946405240dc983cc9ec6fd3bd55bd1d</id>
<content type='text'>
commit_hash:589383be883e0948cdf7db8928c5842d60c5c628
</content>
</entry>
<entry>
<title>YQL-20126 fix</title>
<updated>2025-07-04T07:36:01Z</updated>
<author>
<name>vvvv</name>
<email>vvvv@yandex-team.com</email>
</author>
<published>2025-07-04T07:20:32Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=dba0afc5ce7049668d44c6f5cb1bd0fd5a7fbc63'/>
<id>urn:sha1:dba0afc5ce7049668d44c6f5cb1bd0fd5a7fbc63</id>
<content type='text'>
commit_hash:9a7d4b30d4dd2a5d2fa2d9bd9e34c5153196d288
</content>
</entry>
<entry>
<title>Do not generate empty Or in ExtractCommonPredicatesFromLogicalOps</title>
<updated>2025-06-26T09:27:29Z</updated>
<author>
<name>aneporada</name>
<email>aneporada@yandex-team.com</email>
</author>
<published>2025-06-26T08:41:28Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=7cca9edd2f296f16025a8c7d3238e8469cbfbd8a'/>
<id>urn:sha1:7cca9edd2f296f16025a8c7d3238e8469cbfbd8a</id>
<content type='text'>
commit_hash:7a57d8950e16c8237574833f4289a25ed54226bf
</content>
</entry>
</feed>
