Add support for RETURNING to INSERT/UPDATE/DELETE statements#47161
Open
benedikt wants to merge 1 commit intorails:mainfrom
Open
Add support for RETURNING to INSERT/UPDATE/DELETE statements#47161benedikt wants to merge 1 commit intorails:mainfrom
RETURNING to INSERT/UPDATE/DELETE statements#47161benedikt wants to merge 1 commit intorails:mainfrom
Conversation
Contributor
|
We've been trying to get #39968 merged for a while. I'm curious if any traction will be found on either of these 2. |
Contributor
Author
|
@jeromedalbert We definitely still care about this feature in Arel. Mostly because that way it's way more composable. For example, we're using the |
4 tasks
This file contains hidden or 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
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.
Motivation / Background
This pull request adds support for
RETURNINGclauses toINSERT/UPDATE/DELETEstatements in Arel. This is useful to build queries that modify data and return it (or something else) in the same query.The following example builds a query that deletes all data from a counter queue table and returns the aggregated counter delta values.
Detail
To add support for
RETURNING, this pull request adds a returning method to the sStatement and manager classes for insert, upsert, and delete. It also modifies the ToSql and Dot visitors to incorporate the returning statement (should there be one) into their output.Additional information
The
RETURNINGsyntax is supported in both PostgreSQL (INSERT, UPDATE, DELETE) and Sqlite3 (INSERT, UPDATE, DELETE). MySQL does not supportRETURNINGon any of these statements at the moment.This pull request does not add
RETURNINGsupport to ActiveRecord itself (as discussed in #39968 and #42955). Nonetheless, I think this change to just Arel is useful in its own right to build more complex queries when needed.Checklist
Before submitting the PR make sure the following are checked:
[Fix #issue-number]