fix: fix wrong http status on pg error 42P17 infinite recursion

This commit is contained in:
Taimoor Zaeem
2024-04-22 13:40:07 -05:00
committed by Steve Chavez
parent 80f83f0366
commit 88abf600c4
5 changed files with 18 additions and 0 deletions
+1
View File
@@ -30,6 +30,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- #3361, Clarify PGRST204(column not found) error message - @steve-chavez
- #3373, Remove rejected mediatype `application/vnd.pgrst.object+json` from response - @taimoorzaeem
- #3418, Fix OpenAPI not tagging a FK column correctly on O2O relationships - @laurenceisla
- #3256, Fix wrong http status for pg error `42P17 infinite recursion` - @taimoorzaeem
### Deprecated
+2
View File
@@ -91,6 +91,8 @@ PostgREST translates `PostgreSQL error codes <https://www.postgresql.org/docs/cu
+--------------------------+-------------------------+---------------------------------+
| 42P01 | 404 | undefined table |
+--------------------------+-------------------------+---------------------------------+
| 42P17 | 500 | infinite recursion |
+--------------------------+-------------------------+---------------------------------+
| 42501 | | if authenticated 403, | insufficient privileges |
| | | else 401 | |
+--------------------------+-------------------------+---------------------------------+
+1
View File
@@ -489,6 +489,7 @@ pgErrorStatus authed (SQL.SessionUsageError (SQL.QueryError _ _ (SQL.ResultError
then HTTP.status406
else HTTP.status404 -- undefined function
"42P01" -> HTTP.status404 -- undefined table
"42P17" -> HTTP.status500 -- infinite recursion
"42501" -> if authed then HTTP.status403 else HTTP.status401 -- insufficient privilege
'P':'T':n -> fromMaybe HTTP.status500 (HTTP.mkStatus <$> readMaybe n <*> pure m)
"PGRST" ->
+7
View File
@@ -1407,3 +1407,10 @@ spec actualPgVersion = do
{ matchStatus = 200
, matchHeaders = [matchContentTypeJson]
}
context "test infinite recursion error 42P17" $
it "return http status 500" $
get "/infinite_recursion?select=*" `shouldRespondWith`
[json|{"code":"42P17","message":"infinite recursion detected in rules for relation \"infinite_recursion\"","details":null,"hint":null}|]
{ matchStatus = 500 }
+7
View File
@@ -3764,3 +3764,10 @@ create aggregate test.outfunc_agg (anyelement) (
create or replace function test.sleep(seconds double precision default 5) returns void as $$
select pg_sleep(seconds);
$$ language sql;
-- https://github.com/PostgREST/postgrest/issues/3256
create view test.infinite_recursion as
select * from test.projects;
create or replace view test.infinite_recursion as
select * from test.infinite_recursion;