Skip to content
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

Add the number of rows affected in hint field of response of SingularityError #2874

Closed
wants to merge 1 commit into from

Conversation

taimoorzaeem
Copy link
Collaborator

Fixes issue #1655.

@@ -22,6 +22,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
+ Note: data representations require Postgres 10 (Postgres 11 if using `IN` predicates); data representations are not implemented for RPC
- #2647, Allow to verify the PostgREST version in SQL: `select distinct application_name from pg_stat_activity`. - @laurenceisla
- #2856, Add the `--version` CLI option that prints the version information - @laurenceisla
- #1655, Add the number of rows affected to the `hint` field of response of `SingularityError`. - @taimoorzaeem
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- #1655, Add the number of rows affected to the `hint` field of response of `SingularityError`. - @taimoorzaeem
- #1655, Add the number of rows affected to the `hint` field of a singular response error. - @taimoorzaeem

SingularityError may confuse users, because it's an internal identifier in the code.

@@ -69,7 +69,7 @@ spec =
[("Prefer", "tx=commit"), singular]
[json| { address: "zzz" } |]
`shouldRespondWith`
[json|{"details":"Results contain 4 rows, application/vnd.pgrst.object+json requires 1 row","message":"JSON object requested, multiple (or no) rows returned","code":"PGRST116","hint":null}|]
[json|{"details":"Results contain 4 rows, application/vnd.pgrst.object+json requires 1 row","message":"JSON object requested, multiple (or no) rows returned","code":"PGRST116","hint":"4"}|]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, just noticing that we already have the affected rows on details. @laurenceisla Perhaps they were added after #1655 was opened and we forgot to close?

Copy link
Member

@laurenceisla laurenceisla Jul 26, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I understood that it was already present in the details, as shown in the issue's OP, but that an easy access to the number of rows was needed (as an alternative to the 404, 412), hence only the number of rows in the hint. That number is present in the details even in version 7.0.0, which was launched before the issue was opened, see this diff from 2017.

But maybe that wasn't contemplated in the issue too. , if that's the case, then yeah the 404, 412 should be the better solution.

@@ -85,7 +85,7 @@ spec =
[("Prefer", "tx=commit"), ("Prefer", "return=representation"), singular]
[json| { address: "zzz" } |]
`shouldRespondWith`
[json|{"details":"Results contain 4 rows, application/vnd.pgrst.object+json requires 1 row","message":"JSON object requested, multiple (or no) rows returned","code":"PGRST116","hint":null}|]
[json|{"details":"Results contain 4 rows, application/vnd.pgrst.object+json requires 1 row","message":"JSON object requested, multiple (or no) rows returned","code":"PGRST116","hint":"4"}|]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@taimoorzaeem Besides the hint (which is likely unnecessary now), we can make an improvement to the error message:

Suggested change
[json|{"details":"Results contain 4 rows, application/vnd.pgrst.object+json requires 1 row","message":"JSON object requested, multiple (or no) rows returned","code":"PGRST116","hint":"4"}|]
[json|{"details":"The result contains 4 rows","message":"JSON object requested, multiple (or no) rows returned","code":"PGRST116"}|]

The reasoning is that I've been noticing that users ignore the error message when they see the application/vnd.pgrst.object+json. This happens when they use PostgREST through client libraries, like https://github.com/supabase/postgrest-js.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also technically the error message is not accurate since it should refer to json array elements or array length and not "rows". It could be reworded.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@steve-chavez "rows" is more consistent with other error messages and also since "rows" refer to the rows returned from the database so it is accurate IMO. Perhaps maybe no need to reword that.

@taimoorzaeem
Copy link
Collaborator Author

taimoorzaeem commented Jul 26, 2023

Because we are making changes in a different direction now, I am closing this pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants