From 299ea810eb1c34f555fcc8141bd0734660d310b2 Mon Sep 17 00:00:00 2001 From: Abhi Date: Sun, 6 Sep 2026 04:32:14 +0000 Subject: [PATCH] fix(postgrest): use params.set() instead of params.add() for limit/offset/range Fixes duplicate query params when limit()/offset()/range() called multiple times. Before: .limit(10).limit(20) sent limit=10&limit=20 (httpx uses last, client sees first) After: .limit(10).limit(20) sends limit=20 (consistent with order() behavior) Closes #1617 --- src/postgrest/src/postgrest/base_request_builder.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/postgrest/src/postgrest/base_request_builder.py b/src/postgrest/src/postgrest/base_request_builder.py index fcbad9ad..e0fc1994 100644 --- a/src/postgrest/src/postgrest/base_request_builder.py +++ b/src/postgrest/src/postgrest/base_request_builder.py @@ -608,7 +608,7 @@ def limit(self: Self, size: int, *, foreign_table: Optional[str] = None) -> Self .. versionchanged:: 0.10.3 Allow limiting results returned for foreign tables with the foreign_table parameter. """ - self.request.params = self.request.params.add( + self.request.params = self.request.params.set( f"{foreign_table}.limit" if foreign_table else "limit", size, ) @@ -619,7 +619,7 @@ def offset(self: Self, size: int) -> Self: Args: size: The number of the row to start at """ - self.request.params = self.request.params.add( + self.request.params = self.request.params.set( "offset", size, ) @@ -628,10 +628,10 @@ def offset(self: Self, size: int) -> Self: def range( self: Self, start: int, end: int, foreign_table: Optional[str] = None ) -> Self: - self.request.params = self.request.params.add( + self.request.params = self.request.params.set( f"{foreign_table}.offset" if foreign_table else "offset", start ) - self.request.params = self.request.params.add( + self.request.params = self.request.params.set( f"{foreign_table}.limit" if foreign_table else "limit", end - start + 1, )