-
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: joins without columns are rejected #535
Conversation
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.
would be nice if you'd add a short reasoning in the PR description
db-service/lib/SQLService.js
Outdated
@@ -114,6 +114,11 @@ class SQLService extends DatabaseService { | |||
* @type {Handler} | |||
*/ | |||
async onSELECT({ query, data }) { | |||
if (query.SELECT.from?.join && !query.SELECT.columns) { |
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.
What is the join
is not on root level ?
SELECT ID FROM (
SELECT * FROM
Books
LEFT JOIN
Authors
ON
Books.author_ID = Authors.ID
)
Maybe it makes sense to move it into cqn2sql
(code). Which will reject it on all levels.
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.
I'll double check
Co-authored-by: Bob den Os <[email protected]>
Co-authored-by: Bob den Os <[email protected]>
🤖 I have created a release *beep* *boop* --- <details><summary>db-service: 1.7.0</summary> ## [1.7.0](db-service-v1.6.4...db-service-v1.7.0) (2024-03-22) ### Added * also support lowercase matchespattern function ([#528](#528)) ([6ea574e](6ea574e)) * forUpdate and forShareLock ([#148](#148)) ([99a1170](99a1170)) * **hana:** drop prepared statements after end of transaction ([#537](#537)) ([b1f864e](b1f864e)) * **orderby:** allow to disable collations with [@cds](https://github.com/cds).collate: false ([#492](#492)) ([820f971](820f971)) ### Fixed * **cqn2sql:** Smart quoting of columns inside UPSERT rows ([#519](#519)) ([78fe10b](78fe10b)) * deep delete for views without navigation ([#434](#434)) ([3ebc9c2](3ebc9c2)) * Getting rid of quirks mode ([#514](#514)) ([c9aa6e8](c9aa6e8)) * issue with reused select cqns ([#505](#505)) ([916d175](916d175)) * joins without columns are rejected ([#535](#535)) ([eb9beda](eb9beda)) * **search:** dont search non string aggregations ([#527](#527)) ([c87900c](c87900c)) * **search:** search on aggregated results in HAVING clause ([#524](#524)) ([61d348e](61d348e)) </details> <details><summary>sqlite: 1.6.0</summary> ## [1.6.0](sqlite-v1.5.1...sqlite-v1.6.0) (2024-03-22) ### Added * forUpdate and forShareLock ([#148](#148)) ([99a1170](99a1170)) * **hana:** drop prepared statements after end of transaction ([#537](#537)) ([b1f864e](b1f864e)) ### Fixed * **`sqlite`:** use keyword list from compiler ([#526](#526)) ([a227c61](a227c61)) </details> <details><summary>postgres: 1.6.0</summary> ## [1.6.0](postgres-v1.5.1...postgres-v1.6.0) (2024-03-22) ### Added * also support lowercase matchespattern function ([#528](#528)) ([6ea574e](6ea574e)) * forUpdate and forShareLock ([#148](#148)) ([99a1170](99a1170)) ### Changed * use new cds build API @sap/cds-dk >= 7.5.0 ([#508](#508)) ([ef22ebe](ef22ebe)) </details> <details><summary>hana: 0.1.0</summary> ## [0.1.0](hana-v0.0.6...hana-v0.1.0) (2024-03-22) ### Added * also support lowercase matchespattern function ([#528](#528)) ([6ea574e](6ea574e)) * forUpdate and forShareLock ([#148](#148)) ([99a1170](99a1170)) * **hana:** drop prepared statements after end of transaction ([#537](#537)) ([b1f864e](b1f864e)) ### Fixed * **`hana`:** use keyword list from compiler ([#525](#525)) ([c6993d9](c6993d9)) * **hana:** improve search inside where clause detection ([#538](#538)) ([51b8af3](51b8af3)) * **hana:** reduce service manager calls for failing tenants ([#533](#533)) ([e95fd17](e95fd17)) * issue with reused select cqns ([#505](#505)) ([916d175](916d175)) * joins without columns are rejected ([#535](#535)) ([eb9beda](eb9beda)) * mass insert for unknown entities ([#540](#540)) ([f2ea4af](f2ea4af)) </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: Johannes Vogel <[email protected]> Co-authored-by: Patrice Bender <[email protected]>
sqlite service allows join CQN without specifying columns, hana service does not.
As we already documented that join CQNs must be well-formed, we have to reject these CQNs.