fix: regression that truncates error message when offset is out of bounds

- Happens when offset > the number of rows and when "Prefer: count=exact" header is sent
- Regression introduced in commit 57ef998
This commit is contained in:
Laurence Isla
2025-12-10 14:18:19 +00:00
parent 6573953ebd
commit 3b27b2220d
3 changed files with 10 additions and 4 deletions
+3
View File
@@ -10,6 +10,9 @@ All notable changes to this project will be documented in this file. From versio
## [14.1] - 2025-11-05 ## [14.1] - 2025-11-05
- Fix regression where the `PGRST103` error response was truncated by @laurenceisla in #4455
+ Happened when an `offset` was greater than the rows requested and `Prefer: count=exact` was sent.
## Fixed ## Fixed
- Fix `db-pre-config` function failing when function names are pg reserved words by @taimoorzaeem in #4380 - Fix `db-pre-config` function failing when function names are pg reserved words by @taimoorzaeem in #4380
+1 -1
View File
@@ -65,7 +65,7 @@ actionResponse :: DbResult -> ApiRequest -> (Text, Text) -> AppConfig -> SchemaC
actionResponse (DbCrudResult WrappedReadPlan{pMedia, wrHdrsOnly=headersOnly, crudQi=identifier} RSStandard{..}) ctxApiRequest@ApiRequest{iPreferences=Preferences{..},..} _ _ _ _ _ = do actionResponse (DbCrudResult WrappedReadPlan{pMedia, wrHdrsOnly=headersOnly, crudQi=identifier} RSStandard{..}) ctxApiRequest@ApiRequest{iPreferences=Preferences{..},..} _ _ _ _ _ = do
let let
(status, contentRange) = RangeQuery.rangeStatusHeader iTopLevelRange rsQueryTotal rsTableTotal (status, contentRange) = RangeQuery.rangeStatusHeader iTopLevelRange rsQueryTotal rsTableTotal
cLHeader = if headersOnly then mempty else [contentLengthHeaderStrict rsBody] cLHeader = if headersOnly then mempty else [contentLengthHeaderLazy bod]
prefHeader = maybeToList . prefAppliedHeader $ Preferences Nothing Nothing preferCount preferTransaction Nothing preferHandling preferTimezone Nothing [] prefHeader = maybeToList . prefAppliedHeader $ Preferences Nothing Nothing preferCount preferTransaction Nothing preferHandling preferTimezone Nothing []
headers = headers =
[ contentRange [ contentRange
+6 -3
View File
@@ -126,7 +126,8 @@ spec = do
"hint":null "hint":null
}|] }|]
{ matchStatus = 416 { matchStatus = 416
, matchHeaders = ["Content-Range" <:> "*/0"] , matchHeaders = [ "Content-Range" <:> "*/0"
, "Content-Length" <:> "144"]
} }
it "refuses a range requesting start past last item" $ it "refuses a range requesting start past last item" $
@@ -288,7 +289,8 @@ spec = do
"hint":null "hint":null
}|] }|]
{ matchStatus = 416 { matchStatus = 416
, matchHeaders = ["Content-Range" <:> "*/0"] , matchHeaders = [ "Content-Range" <:> "*/0"
, "Content-Length" <:> "144"]
} }
it "refuses a range requesting start past last item" $ it "refuses a range requesting start past last item" $
@@ -470,7 +472,8 @@ spec = do
"hint":null "hint":null
}|] }|]
{ matchStatus = 416 { matchStatus = 416
, matchHeaders = ["Content-Range" <:> "*/0"] , matchHeaders = [ "Content-Range" <:> "*/0"
, "Content-Length" <:> "144"]
} }
it "refuses a range requesting start past last item" $ it "refuses a range requesting start past last item" $