| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
- Collect only named node definitions
- Fix qualified column after WHERE
commit_hash:641977921329199e645c3ac45ae8053a5d0e8b13
|
|
|
|
|
|
|
| |
Table function `RANGE` is commonly used, so some
support for a table path inference is required. It
is done by doing ``` `prefix` || '/' || `min` ```.
commit_hash:4bec2a84a0ee8f6d97c92a46b4c4ebc7b41c4d7c
|
|
|
|
|
|
|
| |
Before this PR unsupported objects were filtered,
but we would like to show even unsupported object
types as unknown name candidates.
commit_hash:04c64b6e28717c3c19927d49eeedec7515608c22
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Played with the autocomplete and found some issues:
https://nda.ya.ru/t/1F9ioYe37HVwo2.
- Supported `min`, `max` parameters of the `RANGE` table
function, respecting `prefix`.
- Supported cluster detecton at table function, e.g.
`SELECT * FROM plato.RANGE(Input1, Input2)`.
- Made column filter not to ignore a table alias.
- Supported keyword as identifier parsing.
- Supported `ID_QUOTED` as table alias.
commit_hash:9e9ff13373cd059e6a240ddff0ae18f599d790c0
|
|
|
|
|
|
|
|
| |
Fixed an absence of column candidates at `SELECT * FROM t WHERE a#`.
The problem was with a `IsEnclosing` procedure, because here the cursor
is actually outside the `select_core` now there is a `_` symbol that
enlarge this rule text range.
commit_hash:0b493cb469333f9a37c923b06267ac026efeb2c9
|
|
|
|
| |
commit_hash:64ad6b4138ee27f474b440e8ef3e07fac1935346
|
|
|
|
|
|
|
|
|
| |
- Migrated GetId to a Partial Evaluation function.
- Centeralized named expressions collection.
- Centeralized query parameters resolution.
- Supported symbols resolution and concatenation.
- Migrated USE and Columns Syntesis on the evaluation.
commit_hash:fafedc4330bcd4a7ab607ae1d5f2691a2f5a60f2
|
|
|
|
|
|
|
|
|
|
| |
Symbol `$` was excluded from the `BindingName`
candidate content as `Replxx` interprets `$` as
a word break. The problem is that Monaco Editor
accounts `$` as a word part and filters out bindings.
This patch makes `$` a word part and adds replace
range to handle this properly at `Replxx`.
commit_hash:ca3959635a6c0e6688bcbe7622a9c2aab6c683eb
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Added table functions completion.
- Also fixed a bug when USEd cluster
was not added to table context at table
function argument.
- Complete folder names at `prefix`
of `LIKE`, `RANGE`, etc.
commit_hash:26be383be728796e8431f906e2815acd77645ad4
|
|
|
|
|
|
| |
I missed that a query parameter key starts with
'$'.
commit_hash:1a24953b4f837da31db2201b9a9ffd0eef0c6b34
|
|
|
|
| |
commit_hash:a497dfe8863a864913c1d6df4b28edbe7d8e4bba
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- YQL-19747: Remove unused header
- YQL-19747: Remove NameSet alias
- YQL-19747: Fix identifier typo
- YQL-19747: Cosmetics
- YQL-19747: Receive NameRequest as const ref
- YQL-19747: Remove string_util.h
- YQL-19747: Change engine.Complete
- YQL-19747: Remove configuration typedef
- YQL-19747: Rename context to local
commit_hash:451a6ba7c08e670a492222a29463be40a627c867
|
|
|
|
|
|
|
|
|
| |
Also fixed a bug when the same table used with
and without an alias produced duplicated column
names. This is incorrect at translator, but anyway
we need to handle it gracefully. Also refactored
some utility methods like context union.
commit_hash:45a12675e865bb9d929e5e5178e16239a763d1f5
|
|
|
|
|
|
| |
Table can have not `ID_PLAIN` columns and we
should return them as `ID_QUOTED`.
commit_hash:f5850228a3191ab84e3740fc1c36cf8882b08c40
|
|
|
|
|
|
|
| |
Before this patch we completed columns only at
SELECT projection. Now we complete it at these
constructions. Also it respects visibility rules.
commit_hash:aa1e6d4900e9b032801ddbf3bcd347750c2939b1
|
|
|
|
|
| |
Support `SELECT x.* FROM t AS x`.
commit_hash:64693f65281f385d6c0d3541fb2874b0153aa88c
|
|
|
|
|
|
|
|
|
|
|
| |
There was a problem with parsing a query like
`SELECT # FROM t`, as it parsed `FROM` as if it
is an expeceted column name, so we failed to parse
a table name after `FROM` and therefore can not
complete column names, while the are so useful at
this position. Also this hack improved parsing
other queries, according to changed tests.
commit_hash:f5a657022a164d1d4bbf906db4bd2ad67bbcd956
|
|
|
|
|
|
|
|
| |
Fixed a bug on self-join, as
table path was used as a key
to match columns with tables
instead of an alias.
commit_hash:0f9735a4c5ba0b2b88efc764bc5e7f5d41633fd8
|
|
|
|
| |
commit_hash:40a2de243a67135e44505619fb766954ba24e2e8
|
|
|
|
|
|
|
| |
Collect tables with aliases during global
analysis and send a multiple requests
to a schema provider.
commit_hash:51cbc40cee6cda09d5bfe256a0425e7c809c04f5
|
|
|
|
|
|
|
|
| |
Set `TCandidate::Shift` for functions and generic
types. So now brackets are balanced and UI should
adopt it. YDB CLI is ready for the update and just
cut off symbols after an expected cursor position.
commit_hash:9efc1110869af7be618b841c6c132572b61046a1
|
|
|
|
|
|
|
| |
Bug was that titlecase columns are not completed
on lowercase prefix, e.g. `SELECT a# FROM x`,
where `x = {Age}`.
commit_hash:e48f73176e94bcf16671af56d232450e368c9909
|
|
|
|
| |
commit_hash:70eea6b3e17f4aafae5eadb49724ba9036a55372
|
|
|
|
| |
commit_hash:67576d4a9e4a1f4bbbb204bcb0b98c255009b1da
|
|
|
|
|
|
|
|
| |
When table `folder/table` exists. On prefix
``` SELECT * FROM `folder/ ``` users want to
accept ``` table` ``` rather than just `table`.
This patch is about it.
commit_hash:12d36cbf037db91f49136ab8e013b160a28b5b1b
|
|
|
|
| |
commit_hash:56c7deefce71a95f10a4738b0a51e6ba384dd983
|
|
|
|
| |
commit_hash:6d67ec1fa5023083debd89aaa99950019ca37c90
|
|
|
|
|
| |
Added support for token filtration. It is needed because YQL grammar supports multiple systems with various capabilities. For example, some of those do not support `INTERSECT ALL` and therefore `ALL` after `INTERSECT` should be *disabled*. Another example is a support of an only `EVALUATE FOR`, so `FOR` is *forced* to be precendenced by `EVALUATE`.
commit_hash:a926c8d3911f8dd025ab58eb7f81e2370fcd9376
|
|
|
|
|
| |
Added support for a columns completion at a simple select. For example, `` SELECT # FROM hahn.`home/yql/tutorial/users` `` и `` USE hahn; SELECT $ FROM `home/yql/tutorial/users` ``.
commit_hash:2254449e91255c19792a1dc521825e44dda7d63b
|
|
|
|
|
| |
Instead of relying on keyword sequences provided by C3 and using hacks like pattern matching on keyword sequences (`format.cpp`), emit composite types manually.
commit_hash:999d8d4b514433fbdf7885aa0122b2010e985efb
|
|
|
|
|
|
|
|
|
|
|
|
| |
---
- Related to `YQL-19747`
- Related to https://github.com/vityaman/ydb/issues/62
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1323
commit_hash:ebab6c3290ba984174c85bba35eeb066b53af5aa
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clang Tidy is cool, but too slow ;(. Btw, should we respect `misc-include-cleaner` check?
```bash
ya dump compile-commands > /tmp/cc/compile_commands.json
find . -type f \( -name "*.cpp" -o -name "*.h" \) -exec clang-tidy {} -p /tmp/cc {} -checks="misc-*" \;
```
---
- Related to `YQL-19747`
- Related to https://github.com/ydb-platform/ydb/issues/9056
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1305
commit_hash:c2ecf638062dcdd0730fed3381da4a230f5352c3
|
|
|
|
| |
commit_hash:6476b453be16b7db003e75789e3b630c1168f14f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Introduced scoped name collection at global analysis
- Added `BingingsNameService` constructed after global analysis and united with the base service.
- Added dollar detection at local analysis.
After this point design should be reexamined and module should be refactored.
---
- Related to `YQL-19747`
- Related to https://github.com/ydb-platform/ydb/issues/9056
- Related to https://github.com/vityaman/ydb/issues/57
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1304
commit_hash:a7bf41703f0ee846e359407b53a5d62fc05928ea
|
|
|
|
| |
commit_hash:ab24b3db82789b77ad465efa64de93c5eab43629
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Completion candidates comes unclosed from right and with zeroed `CursorShift`. In future there will be an atomic patch that will close candidates and set `CursorShift` correctly. Not it is zeroed to integrate with clients (e.g. YDB CLI).
---
- Related to `YQL-19747`
- Related to https://github.com/vityaman/ydb/issues/53
- Related to https://github.com/ydb-platform/ydb/issues/9056
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1299
Co-authored-by: vvvv <[email protected]>
commit_hash:38bcd21f0d6959275af89a981fd9b296374aea51
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was a mistake thinking that provider is a part of a cluster name. Actually `yt:saurus` and `saurus` are same clusters and provider (`yt`) serves only as a hint for translation expressions such as `yt:$cluster_name`.
---
- Related to `YQL-19747`
- Related to https://github.com/vityaman/ydb/issues/54
- Related to https://github.com/ydb-platform/ydb/issues/9056
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1301
commit_hash:19a45cf0bb6c7dda26747b2e3371646272f79bce
|
|
|
|
|
|
|
|
|
|
|
| |
---
- Related to `YQL-19747`
- Related to https://github.com/vityaman/ydb/issues/50
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1292
commit_hash:a6d543bc18b2f9239bf0b33afd8497a7919fe4b3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I leaved the YDB configuration empty as need your feedback.
---
- Related to `YQL-19747`
- Related to https://github.com/vityaman/ydb/issues/39
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1289
commit_hash:408c7e0f101027fc6ca3d86d251b5639fcae07bb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The simplest solution actually is an SQL injection.
---
- Related to `YQL-19747`
- Related to https://github.com/ydb-platform/ydb/issues/9056
- Related to https://github.com/ydb-platform/ydb/pull/18146
- Related to https://github.com/vityaman/ydb/issues/46
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1283
commit_hash:7043e7cdd1e0d378926783d31cf5f8e055393aaa
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce global analysis which will be extended with more ParseTree analysis later.
---
- Related to `YQL-19747`
- Related to https://github.com/vityaman/ydb/issues/40
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1281
commit_hash:848fb3fdd6bc9612769c47d66198fca018ff465f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On `SELECT * FROM pn` it completed to `SELECT * FROM ppnv1`, but expected ``` SELECT * FROM `pnv1` ```.
---
- Related to `YQL-19747`
- Related to https://github.com/ydb-platform/ydb/issues/9056
- Related to https://github.com/vityaman/ydb/issues/44
- Related to https://github.com/ydb-platform/ydb/pull/18146
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1280
commit_hash:e937239fae7bf609bde6358b9b27c2b504c8ba32
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes superfluous candidates (`OPTIONAL`, `CALLABLE`, ...) at `SELECT * FROM #`.
---
- Related to `YQL-19747`
- Related to https://github.com/ydb-platform/ydb/issues/9056
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1273
commit_hash:d34d81ea86b8b6b5d339174be20d14d0371c3de6
|
|
|
|
|
|
|
|
|
|
|
|
| |
---
- Related to `YQL-19747`
- Related to https://github.com/vityaman/ydb/issues/8
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1268
commit_hash:76e4e2c8b225994cc842c1ee00a0ec8e6eed5c05
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Outcomes:
1. Need to think more deeply about library interfaces. If you think that an interface is redundant, think again, because author knows a usecase that you do not imagine.
2. If you are lazy now to implement something robustly, think twice because the day will come and this code
will fire.
The problem was that on input ``` ... cluster.`/yql/t#` ``` C3 receives only a prefix ``` ... cluster.`/yql/t ``` and a token stream produced was incorrect and therefore completions too.
---
- Related to `YQL-19747`
- Related to https://github.com/ytsaurus/ytsaurus/pull/1257
- Related to https://github.com/ydb-platform/ydb/issues/9056
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1271
commit_hash:8bf5f2683c9e41963003da923f255f63b898aac5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
---
- Related to `YQL-19747`
- On top of https://github.com/ytsaurus/ytsaurus/pull/1253
- Related to https://github.com/ydb-platform/ydb/issues/9056
- Related to https://github.com/vityaman/ydb/issues/14
- Related to https://github.com/vityaman/ydb/issues/35
- Related to https://github.com/vityaman/ydb/issues/40
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1257
commit_hash:0b842abb27184c88b8177beeea29fb1ea86b7a04
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We faced with a failing assertion at `NYql::NormalizeName`. This patch expects it and fallbacks to `ToLowerUTF8`.
---
- Related to `YQL-19747`
- Related to https://github.com/ydb-platform/ydb/issues/9056
- Related to https://github.com/vityaman/ydb/issues/38
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1255
commit_hash:946162904ce3b74f490debb7f9e0587f136b4075
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Essentially we need the `UnionNameService` to integrate dynamic name services into the `sql/v1/complete`. This decorator queries multiple name services and merges their responses. We will use it to union static `NameServices` and the `SchemaNameService` (and the `ClusterNameService`, and so on).
It does not deal with exceptions and fails the whole request on some subtask failed. Client should prepare robust children (later `SwallowingNameService` will be added to return an empty `NameResponse` on errors to provide best-effort dynamic object loading).
`StaticNameService` was split into micro-`NameService`s :)
`NameConstraints` are extracted to provide name qualification via `Qualified` and `Unqualified` methods. This is needed because depending on a context `NameService` can return unqualified names (for example, on `PRAGMA yt.#`). As internal indexes for scanning and ranking are built on a sorted list of, then `Ranking` actually needs an ability to get fully-qualified names, so now it via the `NameConstraints`.
Also this design potentially let us to improve internal indexes by using partitioning by a namespace. Other option was to make `PragmaName` and `FunctionName` more structured via adding a separate field for a namespace, but it seems to me that it will force to do more parsing from indexes results to a `Name`. Anyway this is an internal component so it can be changed if needed. I still doubt this decision because structured `PragmaName { Namespace, Identifier }` seems to be cleaner and there should be no noticeable overhead because of COW strings.
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1252
commit_hash:e8a1fbb17e2ca3ffe72aafbea943a38624d74491
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Clients might want to use custom `NameSet` and `FrequencyData` in their environment, for example, to get their private UDFs and to have more relevant ranking that includes their private UDF and respect their usage pattern.
To achieve this goal I decided to load pure `NameSet` and `FrequencyData` and provide functions for pruning. Also I checked defaults and decided that it is more common for a client to create a `StaticNameService` from pure `NameSet` and `FrequencyData` to keep their pruning consistent.
I also extracted a separate module `ranking`. It will be needed when I will implement `UnionNameService` to union `StaticNameService` and `SchemaNameService`. `UnionNameService` will load `Limit` names from each child and then crop them to sorted prefix of length `Limit` using `IRanking`.
---
- Related to `YQL-19747`
- Related to https://github.com/ydb-platform/ydb/issues/9056
- Related to https://github.com/vityaman/ydb/issues/14
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1246
Co-authored-by: vvvv <[email protected]>
Co-authored-by: vvvv <[email protected]>
commit_hash:cdca301a58a34e56d537a447b4ff779cd70faea6
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- [x] Chained futures, add `CompleteAsync` method (then will migrate the YDB CLI on it).
- [x] Removed deadlined and fallback NameService as unused
- [x] Annotate thread-safe methods with `const` and use `AtomicSharedPtr` for them.
- [x] Move `name` to `name/service` with backward compatibility with the YDB CLI.
---
`CompletionEngine` is left thread-unsafe because of the dependency chain `CompletionEngine -> LocalSyntaxAnalysis -> C3Engine` which is thread-unsafe, but readonly indexed data structures such as `Ranking` and `NameService` are annotated with const and distributed via shared pointers.
I removed deadlined and fallback name services because the first is stupid the second is ahead of its time and is better to be added later to keep interfaces as minimal as possible.
---
The migration on async complete plan:
1. Introduce CompleteAsync
2. Migrate clients on CompleteAsync
3. Make Complete to return Future
4. Migrate clients on Complete
5. Remove CompleteAsync
---
- Related to https://github.com/ydb-platform/ydb/issues/9056
- Related to https://github.com/vityaman/ydb/issues/33
- Related to https://github.com/vityaman/ydb/issues/31
---
Pull Request resolved: https://github.com/ytsaurus/ytsaurus/pull/1241
Co-authored-by: vvvv <[email protected]>
Co-authored-by: vvvv <[email protected]>
commit_hash:497cc081ab78bebf7354e0acfaa418d936cc8240
|