fix: fix wrong http status on pg error 42P17 infinite recursion
This commit is contained in:
committed by
Wolfgang Walther
parent
903537d39d
commit
077e4a857e
@@ -14,6 +14,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
|
||||
|
||||
## [12.0.2] - 2023-12-20
|
||||
|
||||
|
||||
@@ -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 | |
|
||||
+--------------------------+-------------------------+---------------------------------+
|
||||
|
||||
@@ -482,6 +482,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
@@ -3768,3 +3768,10 @@ create aggregate test.outfunc_agg (anyelement) (
|
||||
, stype = "pg/outfunc"
|
||||
, sfunc = outfunc_trans
|
||||
);
|
||||
|
||||
-- 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