fix: fix incorrect 413 error on pg 54* errors

This commit is contained in:
Taimoor Zaeem
2024-05-20 18:59:33 -05:00
committed by Steve Chavez
parent 11c9e8dac9
commit 5cc32c7f87
5 changed files with 32 additions and 2 deletions
+1
View File
@@ -40,6 +40,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- #3533, #3536, Fix listener silently failing on read replica - @steve-chavez
+ If the LISTEN connection fails, it's retried with exponential backoff
- #3414, Force listener to connect to read-write instances using `target_session_attrs` - @steve-chavez
- #3255, Fix incorrect `413 Request Entity Too Large` on pg errors `54*` - @taimoorzaeem
### Deprecated
+1 -1
View File
@@ -71,7 +71,7 @@ PostgREST translates `PostgreSQL error codes <https://www.postgresql.org/docs/cu
+--------------------------+-------------------------+---------------------------------+
| 53* | 503 | insufficient resources |
+--------------------------+-------------------------+---------------------------------+
| 54* | 413 | too complex |
| 54* | 500 | too complex |
+--------------------------+-------------------------+---------------------------------+
| 55* | 500 | obj not in prerequisite state |
+--------------------------+-------------------------+---------------------------------+
+1 -1
View File
@@ -491,7 +491,7 @@ pgErrorStatus authed (SQL.SessionUsageError (SQL.QueryError _ _ (SQL.ResultError
'4':'0':_ -> HTTP.status500 -- tx rollback
"53400" -> HTTP.status500 -- config limit exceeded
'5':'3':_ -> HTTP.status503 -- insufficient resources
'5':'4':_ -> HTTP.status413 -- too complex
'5':'4':_ -> HTTP.status500 -- too complex
'5':'5':_ -> HTTP.status500 -- obj not on prereq state
"57P01" -> HTTP.status503 -- terminating connection due to administrator command
'5':'7':_ -> HTTP.status500 -- operator intervention
+12
View File
@@ -67,3 +67,15 @@ pgErrorCodeMapping = do
describe "PostreSQL error code mappings" $ do
it "should return 500 for cardinality_violation" $
get "/bad_subquery" `shouldRespondWith` 500
it "should return 500 for statement too complex" $
request methodPost "/infinite_inserts"
[]
[json|{"id": 3, "name": "qwer"}|]
`shouldRespondWith`
[json|
{"code": "54001",
"details": null,
"hint": "Increase the configuration parameter \"max_stack_depth\" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.",
"message": "stack depth limit exceeded"}|]
{ matchStatus = 500 }
+17
View File
@@ -3777,3 +3777,20 @@ create or replace function temp_file_limit()
returns bigint as $$
select COUNT(*) FROM generate_series('-infinity'::TIMESTAMP, 'epoch'::TIMESTAMP, INTERVAL '1 DAY');
$$ language sql security definer set temp_file_limit to '1kB';
-- https://github.com/PostgREST/postgrest/issues/3255
create table test.infinite_inserts(
id int
, name text
);
create or replace function infinite_inserts()
returns trigger as $$ begin
insert into infinite_inserts values (NEW.id, NEW.name);
end $$ language plpgsql;
create trigger do_infinite_inserts
after insert
on infinite_inserts
for each row
execute procedure infinite_inserts();