-
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: flat update with arbitrary where clauses #598
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.
please use a descriptive PR title as the title will end up in the changelog
db-service/lib/fill-in-keys.js
Outdated
@@ -57,9 +57,12 @@ const generateUUIDandPropagateKeys = (entity, data, event) => { | |||
module.exports = async function fill_in_keys(req, next) { | |||
// REVISIT dummy handler until we have input processing | |||
if (!req.target || !this.model || req.target._unresolved) return next() | |||
if (req.event === 'UPDATE') { | |||
// only for deep update | |||
const containsObjectOrArray = obj => |
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.
This check already exists inside the deep-queries.js
. Instead make sure this function is only called when it should be called. If it is not required for any queries where it does not deep then it should be made sure this function is not called.
As this check might identify a value which is actually ignored. Like an association.
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 change this to: req.event === 'UPDATE' && hasDeep(req.query, req.target)
🤖 I have created a release *beep* *boop* --- <details><summary>db-service: 1.9.0</summary> ## [1.9.0](db-service-v1.8.0...db-service-v1.9.0) (2024-05-08) ### Added * Add missing `func` cqn structures ([#629](#629)) ([9d7539a](9d7539a)) ### Fixed * **`order by`:** reject non-fk traversals of own columns in order by ([#599](#599)) ([3288d63](3288d63)) * Align all quote functions with @sap/cds-compiler ([#619](#619)) ([42e9828](42e9828)) * assign artificial alias if selecting from anonymous subquery ([#608](#608)) ([e1a7711](e1a7711)) * avoid spread operator ([#630](#630)) ([a39fb65](a39fb65)) * flat update with arbitrary where clauses ([#598](#598)) ([f108798](f108798)) * improved `=` and `!=` with val `null` for HANA and Postgres ([#626](#626)) ([cbcfe3b](cbcfe3b)) * Improved placeholders and limit clause ([#567](#567)) ([d5d5dbb](d5d5dbb)) * multiple result responses ([#602](#602)) ([bf0bed4](bf0bed4)) * only consider persisted columns for simple operations ([#592](#592)) ([6e31bda](6e31bda)) ### Changed * require `>= sap/[email protected]` ([f4d09e2](f4d09e2)) * require `>= sap/[email protected]` ([#627](#627)) ([f4d09e2](f4d09e2)) </details> <details><summary>sqlite: 1.7.0</summary> ## [1.7.0](sqlite-v1.6.0...sqlite-v1.7.0) (2024-05-08) ### Added * select decimals as strings if cds.env.features.string_decimals ([#616](#616)) ([39addbf](39addbf)) ### Fixed * Change `sql` property to `query` for errors ([#611](#611)) ([585577a](585577a)) * **hana:** Remove encoding from hana-client streams ([#623](#623)) ([fed8f6f](fed8f6f)) * Improved placeholders and limit clause ([#567](#567)) ([d5d5dbb](d5d5dbb)) </details> <details><summary>postgres: 1.8.0</summary> ## [1.8.0](postgres-v1.7.0...postgres-v1.8.0) (2024-05-08) ### Added * select decimals as strings if cds.env.features.string_decimals ([#616](#616)) ([39addbf](39addbf)) ### Fixed * Align all quote functions with @sap/cds-compiler ([#619](#619)) ([42e9828](42e9828)) * Change `sql` property to `query` for errors ([#611](#611)) ([585577a](585577a)) * Improved placeholders and limit clause ([#567](#567)) ([d5d5dbb](d5d5dbb)) * Use json datatype for Postgres insert ([#582](#582)) ([f1c9c89](f1c9c89)) </details> <details><summary>hana: 0.3.0</summary> ## [0.3.0](hana-v0.2.0...hana-v0.3.0) (2024-05-08) ### Added * select decimals as strings if cds.env.features.string_decimals ([#616](#616)) ([39addbf](39addbf)) ### Fixed * Add multi `concat` function to `@cap-js/hana` ([#624](#624)) ([df436fe](df436fe)) * Align all quote functions with @sap/cds-compiler ([#619](#619)) ([42e9828](42e9828)) * Change `sql` property to `query` for errors ([#611](#611)) ([585577a](585577a)) * Disconnect HANA tenant when deleted ([#589](#589)) ([a107db9](a107db9)) * **hana:** Align not found behavior in @cap-js/hana ([#603](#603)) ([54d2efb](54d2efb)) * **hana:** Allow custom fuzzy search cqn ([#620](#620)) ([80383f0](80383f0)) * **hana:** Allow HANA to use != and == inside xpr combinations ([#607](#607)) ([c578e9f](c578e9f)) * **hana:** Reference column alias in order by ([#615](#615)) ([7cd3a26](7cd3a26)) * **hana:** Remove encoding from hana-client streams ([#623](#623)) ([fed8f6f](fed8f6f)) * **hana:** Support associations with static values ([#604](#604)) ([05babcf](05babcf)) * improved `=` and `!=` with val `null` for HANA and Postgres ([#626](#626)) ([cbcfe3b](cbcfe3b)) * Improved placeholders and limit clause ([#567](#567)) ([d5d5dbb](d5d5dbb)) * Use json datatype for Postgres insert ([#582](#582)) ([f1c9c89](f1c9c89)) </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]>
Flat update with or on keys in where resulted in error
UNIQUE_CONSTRAINT_VIOLATION
.Solution: Only enrich data with keys from where for deep update.