<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/yql/essentials/sql, 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-19T13:23:50Z</updated>
<entry>
<title>YQL-20631: Support RECURSIVE WITH CTE on YqlSelect</title>
<updated>2026-06-19T13:23:50Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-06-19T12:39:51Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=3d79ff71a5cb0a74ef11f187827a2955ff83b355'/>
<id>urn:sha1:3d79ff71a5cb0a74ef11f187827a2955ff83b355</id>
<content type='text'>
Implemented a RECURSIVE WITH CTE translation for YqlSelect. It relies on YqlSelf callable.
As this callable binds to enclosing YqlSelect, the diagnostic that subquery can't reference
an enclosing RECURSIVE WITH CTE was added, it is better, that an existing for pgSQL, where
just "table not found" is emitted. The core idea under RECURSIVE handling is that a
"not ready" CTE entry is added to a namespace (with a `nullptr` node), so it can be recognized.
Checked some interesting test cases and wrote TODOs.
commit_hash:65b8646e0615ae070b04822ce7af24245c203bbe
</content>
</entry>
<entry>
<title>SQL parser + type annotation for Materialize statement</title>
<updated>2026-06-18T17:38:07Z</updated>
<author>
<name>udovichenko-r</name>
<email>udovichenko-r@yandex-team.com</email>
</author>
<published>2026-06-18T16:58:57Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ddedfffe40c70e7b353843176a4d4647c19bbba2'/>
<id>urn:sha1:ddedfffe40c70e7b353843176a4d4647c19bbba2</id>
<content type='text'>
#### SQL Parser and Type Annotation for Materialize Statement ✎

- Added support for the `MATERIALIZE` SQL statement including parser rules and syntax highlighting updates
- Implemented type annotation and validation for the `MATERIALIZE` statement with proper error handling
- Enhanced SQL query processing to handle `MATERIALIZE` statements in various contexts including subqueries and limited views
- Added runtime support for `MATERIALIZE` operations with sort preservation and proper data sink handling
- Integrated `MATERIALIZE` into the SQL grammar and updated completion suggestions
- Added comprehensive unit tests covering various `MATERIALIZE` scenarios and edge cases

&lt;a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"&gt;&lt;font size="2"&gt;Autodescription by Yandex Code Assistant&lt;/font&gt;&lt;/a&gt;
commit_hash:32b04f93ceadf624b4d39fd6512798f9354bfd80
</content>
</entry>
<entry>
<title>allow removal of custom system prefixes KIKIMR-25775</title>
<updated>2026-06-18T16:46:29Z</updated>
<author>
<name>gvit</name>
<email>gvit@yandex-team.com</email>
</author>
<published>2026-06-18T16:17:28Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=bed33f1edb75baf4c7ce6655e58f4d88917cba9b'/>
<id>urn:sha1:bed33f1edb75baf4c7ce6655e58f4d88917cba9b</id>
<content type='text'>
#### Allow Removal of Custom System Prefixes ✎

- Introduces support for removing custom system column prefixes in addition to default ones during SQL translation
- Adds a new configuration option to specify extra system column prefixes that should be stripped from column names
- Modifies the column cleanup logic to handle both default system prefixes and user-defined custom prefixes
- Includes comprehensive unit tests to verify the behavior with configured prefixes and default cleanup
- Ensures backward compatibility by maintaining default system prefix removal when no custom prefixes are configured

&lt;a href="https://nda.ya.ru/t/qa0kX64r7DqvtN"&gt;&lt;font size="2"&gt;Autodescription by Yandex Code Assistant&lt;/font&gt;&lt;/a&gt;
commit_hash:b88e8ae9e4905fc2e32299ae104042e8ffa64b57
</content>
</entry>
<entry>
<title>YQL-20631: Support simple CTEs on YqlSelect</title>
<updated>2026-06-18T15:30:10Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-06-18T14:54:12Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=4265d9121fd0635072e106e1895db92e900e7508'/>
<id>urn:sha1:4265d9121fd0635072e106e1895db92e900e7508</id>
<content type='text'>
The first iteration on WITH CTE support. Only simple CTEs are supported.

Properties:

1. Redefinition is forbidden.

2. Shadowing is supported.

3. Nested WITH CTEs are supported.

Following features are not yet implemented:

1. Column names specification. There is an assertion failure at core because
   of an absent column order when translating it like for the `PgSelect`.

2. `RECURSIVE` is postponed. There a more sophisticated translation with
   `YqlSelf` callable is required.

Also there was a potential defect because of an empty `Id` result not expected.
commit_hash:759676d8a9d369f7eedd9b87f79455b2f8a9fcff
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2026-06-17T14:08:20Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2026-06-17T13:13:25Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=67ecb7485297e570260bf5abc68028e5f1e2b9f8'/>
<id>urn:sha1:67ecb7485297e570260bf5abc68028e5f1e2b9f8</id>
<content type='text'>
commit_hash:3682aa4bbce05c002af982ecdc21ea73784a939e
</content>
</entry>
<entry>
<title>Use Cons! in translator instead of Nth</title>
<updated>2026-06-17T10:32:02Z</updated>
<author>
<name>udovichenko-r</name>
<email>udovichenko-r@yandex-team.com</email>
</author>
<published>2026-06-17T09:58:18Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d99b446e78afeb6e40e8d3bee4ad2ac25a2c9450'/>
<id>urn:sha1:d99b446e78afeb6e40e8d3bee4ad2ac25a2c9450</id>
<content type='text'>
commit_hash:ec28efb62da755bd372bba274c8eaa0f3f5233f3
</content>
</entry>
<entry>
<title>YQL-21134: Set UnstableFormat AST flag unconditionally</title>
<updated>2026-06-16T13:36:01Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-06-16T12:49:40Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=11cd739f53f9a5b0ecbaf2618ad7c56450274acb'/>
<id>urn:sha1:11cd739f53f9a5b0ecbaf2618ad7c56450274acb</id>
<content type='text'>
- Renamed `TAstNodeFlags::IgnoredContent` to `TAstNodeFlags::UnstableFormat` to better reflect its purpose.
- Removed the `MarkQueryTextAtomWithIgnoredContent` translation setting. The `UnstableFormat` flag is now unconditionally applied to query text atoms during parsing.
- Updated `CheckedFormat` and `ValidateAST` to accept an already parsed AST. Since the flag is now set unconditionally, we can reuse the initial AST for format validation. This avoids re-parsing the original query, reducing redundant AST builds and overall RAM consumption.
commit_hash:bba3e6733d3a9c120cf9724a161e603de0cfc038
</content>
</entry>
<entry>
<title>YQL-20631: Introduce WITH CTE syntax</title>
<updated>2026-06-16T11:46:37Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-06-16T10:52:40Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=9d7f92724e3a9beea8ae6751c0241c52ea5b2aea'/>
<id>urn:sha1:9d7f92724e3a9beea8ae6751c0241c52ea5b2aea</id>
<content type='text'>
commit_hash:77f0128cac891f08ce6c8f9a721f66f69032c44e
</content>
</entry>
<entry>
<title>YQL-20239: Exract pure_ast and move to sql/v1/ide</title>
<updated>2026-06-11T12:56:57Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-06-11T12:08:40Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b13ac7e398b6a4bfd638d83d098715eaa03518ca'/>
<id>urn:sha1:b13ac7e398b6a4bfd638d83d098715eaa03518ca</id>
<content type='text'>
It is a preparation for a hover LSP method implementation. Query parser
and a narrowing visitor are required for the feature, so I extract the
logic to a module `pure_ast` from a `complete`. Also modules `complete`
and `pure_ast` are moved to `sql/v1/ide/completion` and
`sql/v1/ide/pure_ast`.
commit_hash:58bed5f2e39bf4779e28468fe7de1e0c4fb2c4c3
</content>
</entry>
<entry>
<title>YQL-21299: Allow DqEngine and BlockEngine in YqlSelect</title>
<updated>2026-06-10T12:13:13Z</updated>
<author>
<name>vitya-smirnov</name>
<email>vitya-smirnov@yandex-team.com</email>
</author>
<published>2026-06-10T10:44:43Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=d6c80b8d55de576814abb143887999b604817d63'/>
<id>urn:sha1:d6c80b8d55de576814abb143887999b604817d63</id>
<content type='text'>
I forgot to add them, because they are not enumerated in PRAGMAs table,
but handled separately.
commit_hash:9ffa2ddbec1d718f9e31c3b2393fea66cefab3dc
</content>
</entry>
</feed>
