This is an automated email from the ASF dual-hosted git repository.

vatamane pushed a commit to branch fix-time-seq-since-function-clause
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 8f3de42e29abc2d5fb3e0667dda7c47fba06ff85
Author: Nick Vatamaniuc <[email protected]>
AuthorDate: Mon Feb 23 18:08:13 2026 -0500

    Fix time_seq since function clause
    
    If user specifies a correctly formatted timestamp but it's before 0 unix 
time,
    return entries since 0 unix time (1970-01-01T00:00:00Z) instead of a 
function
    clause error.
---
 src/chttpd/test/eunit/chttpd_changes_test.erl | 8 ++++++++
 src/fabric/src/fabric.erl                     | 2 ++
 2 files changed, 10 insertions(+)

diff --git a/src/chttpd/test/eunit/chttpd_changes_test.erl 
b/src/chttpd/test/eunit/chttpd_changes_test.erl
index a89842ae3..8c70c3288 100644
--- a/src/chttpd/test/eunit/chttpd_changes_test.erl
+++ b/src/chttpd/test/eunit/chttpd_changes_test.erl
@@ -534,6 +534,14 @@ t_time_since({_, DbUrl}) ->
         "Invalid time"
     ),
 
+    Params4 = "?since=1000-01-01T01:01:01Z",
+    Res4 = {_, _, _} = changes(DbUrl, Params4),
+    ?assertEqual(
+        Res4,
+        changes(DbUrl, "?since=0"),
+        "Expected the same result as from '?since=0'"
+    ),
+
     {TSeqCode, TSeqRes} = reqraw(get, DbUrl ++ "/_time_seq"),
     ?assertEqual(200, TSeqCode),
     Year = integer_to_binary(element(1, date())),
diff --git a/src/fabric/src/fabric.erl b/src/fabric/src/fabric.erl
index 3a6ce7ebd..1b8434b03 100644
--- a/src/fabric/src/fabric.erl
+++ b/src/fabric/src/fabric.erl
@@ -678,6 +678,8 @@ time_seq_since(DbName, Time) when is_list(Time) ->
         _:_ ->
             {error, invalid_time_format}
     end;
+time_seq_since(DbName, Time) when is_integer(Time), Time < 0 ->
+    time_seq_since(DbName, 0);
 time_seq_since(DbName, Time) when is_integer(Time), Time >= 0 ->
     fabric_time_seq:since(dbname(DbName), Time).
 

Reply via email to