-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(cqn4sql
): only transform list if necessary
#438
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
because of odata special magic, a tokenstream with `length === 1` which only has a value, is transformed into a full key tuple comparison, e.g. to make this possible: `select from bookshop.Books[42]`. If we now have a list, with exactly one entry, the same logic kicked in and transformed the single value in the token stream to such a key comparison. to fix this, we now skip processing of lists which only consist of values, which circumvents the described issue.
patricebender
requested review from
danjoa,
johannes-vogel and
stewsk
as code owners
February 2, 2024 13:23
patricebender
commented
Feb 2, 2024
BobdenOs
approved these changes
Feb 2, 2024
sjvans
approved these changes
Feb 2, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
Merged
patricebender
pushed a commit
that referenced
this pull request
Feb 2, 2024
🤖 I have created a release *beep* *boop* --- <details><summary>db-service: 1.6.0</summary> ## [1.6.0](db-service-v1.5.1...db-service-v1.6.0) (2024-02-02) ### Added * Add fallback for @cap-js/hana for unknown entities ([#403](#403)) ([e7dd6de](e7dd6de)) * SELECT returns binaries as Buffers ([#416](#416)) ([d4240d5](d4240d5)) * SELECT returns LargeBinaries as streams unless feature flag "stream_compat" is set ([#251](#251)) ([8165a4a](8165a4a)) * strict mode to validate input for `INSERT`, `UPDATE` and `UPSERT` ([#384](#384)) ([4644483](4644483)) * Support Readable Streams inside INSERT.entries ([#343](#343)) ([f6faf89](f6faf89)) ### Fixed * **`cqn4sql`:** only transform list if necessary ([#438](#438)) ([8a7ec65](8a7ec65)) * always generate unique subquery aliases ([#435](#435)) ([c875b7d](c875b7d)) * consider `list` in `from.where` ([#429](#429)) ([3288e94](3288e94)) * **cqn2sql:** $user.locale refs ([#431](#431)) ([ec55276](ec55276)) * **cqn4sql:** expand structured keys in on-conditions ([#421](#421)) ([b1e0677](b1e0677)) * Do not generate UUIDs for association keys ([#398](#398)) ([9970e14](9970e14)) * enumeration issue with session context in @cap-js/hana ([#399](#399)) ([8106a20](8106a20)) * make @cap-js/sqlite work with better-sqlite3@9.3.0 ([#422](#422)) ([44c0a59](44c0a59)) * pass context of navigation for list within infix filter ([#433](#433)) ([0ca077f](0ca077f)) * Restore former deep upsert behavior / error ([#406](#406)) ([284b1e3](284b1e3)) * Skip virtual fields on UPSERTs ([#405](#405)) ([1a05dcb](1a05dcb)) * sqlite date string compatibility parsing only for valid dates ([#410](#410)) ([2a8bb2d](2a8bb2d)), closes [#409](#409) * UPSERT for @cap-js/hana for entities with multiple keys ([#418](#418)) ([9bbac6e](9bbac6e)) </details> <details><summary>sqlite: 1.5.0</summary> ## [1.5.0](sqlite-v1.4.0...sqlite-v1.5.0) (2024-02-02) ### Added * SELECT returns LargeBinaries as streams unless feature flag "stream_compat" is set ([#251](#251)) ([8165a4a](8165a4a)) * Support Readable Streams inside INSERT.entries ([#343](#343)) ([f6faf89](f6faf89)) ### Fixed * config in streaming test with compat flag ([#412](#412)) ([335a178](335a178)) * Do not generate UUIDs for association keys ([#398](#398)) ([9970e14](9970e14)) * make @cap-js/sqlite work with better-sqlite3@9.3.0 ([#422](#422)) ([44c0a59](44c0a59)) * sqlite date string compatibility parsing only for valid dates ([#410](#410)) ([2a8bb2d](2a8bb2d)), closes [#409](#409) * UPSERT for @cap-js/hana for entities with multiple keys ([#418](#418)) ([9bbac6e](9bbac6e)) </details> <details><summary>postgres: 1.5.0</summary> ## [1.5.0](postgres-v1.4.1...postgres-v1.5.0) (2024-02-02) ### Added * SELECT returns LargeBinaries as streams unless feature flag "stream_compat" is set ([#251](#251)) ([8165a4a](8165a4a)) * Support Readable Streams inside INSERT.entries ([#343](#343)) ([f6faf89](f6faf89)) ### Fixed * switch Postgres from json to jsonb ([#402](#402)) ([c98a964](c98a964)) * UPSERT for @cap-js/hana for entities with multiple keys ([#418](#418)) ([9bbac6e](9bbac6e)) </details> <details><summary>hana: 0.0.4</summary> ## [0.0.4](hana-v0.0.3...hana-v0.0.4) (2024-02-02) ### Added * Add fallback for @cap-js/hana for unknown entities ([#403](#403)) ([e7dd6de](e7dd6de)) * SELECT returns binaries as Buffers ([#416](#416)) ([d4240d5](d4240d5)) * SELECT returns LargeBinaries as streams unless feature flag "stream_compat" is set ([#251](#251)) ([8165a4a](8165a4a)) * Support Readable Streams inside INSERT.entries ([#343](#343)) ([f6faf89](f6faf89)) ### Fixed * Ensure globally unique aliases with large expand queries ([#396](#396)) ([c1df747](c1df747)) * enumeration issue with session context in @cap-js/hana ([#399](#399)) ([8106a20](8106a20)) * ignore empty order by ([#392](#392)) ([a69fed0](a69fed0)) * improve `!=` and `==` implementation for @cap-js/hana ([#426](#426)) ([9b7b5a0](9b7b5a0)) * show clear error message when unable to load project package.json ([#419](#419)) ([2ebf783](2ebf783)) * UPSERT for @cap-js/hana for entities with multiple keys ([#418](#418)) ([9bbac6e](9bbac6e)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: sjvans <30337871+sjvans@users.noreply.github.com>
Merged
This was referenced Jan 28, 2025
Closed
Closed
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
because of odata special magic, a tokenstream with
length === 1
which only has a value, is transformed into a full key tuple comparison, e.g. to make this possible:select from bookshop.Books[42]
. If we now have a list, with exactly one entry, the same logic kicked in and transformed the single value in the token stream to such a key comparison.to fix this, we now skip processing of lists which only consist of values, which circumvents the described issue.