fix: fix wrong http status on pg error 42P17 infinite recursion
This commit is contained in:
committed by
Steve Chavez
parent
80f83f0366
commit
88abf600c4
@@ -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
|
||||
|
||||
|
||||
@@ -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 | |
|
||||
+--------------------------+-------------------------+---------------------------------+
|
||||
|
||||
@@ -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" ->
|
||||
|
||||
@@ -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 }
|
||||
|
||||
|
||||
Vendored
+7
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user