Skip to content

[Bug]: get v1/files 接口在遇到文件ctime相同且请求参数传limit时可能触发查询结果不符合预期 #53

@chlsmile

Description

@chlsmile

Version

latest

Component

API (Backend)

Bug Description

get v1/files接口 在遇到多个file的ctime相同且传了limit的情况下,有可能会触发bug导致查询结果不符合预期

假设数据库中存在以下四条数据,它们的 CTIME(创建时间)完全相同:

id file_id ctime
1 f1 2025-11-14 00:00:00
2 f2 2025-11-14 00:00:00
3 f3 2025-11-14 00:00:00
4 f4 2025-11-14 00:00:00

操作步骤与结果分析:(假指定order 我asc)

  1. 第一次查询 (获取第一页数据)

    • 请求参数:limit = 2 (期望获取 2 条数据)
    • 数据库执行:由于所有数据的 CTIME 相同,且 ORDER BY 子句中没有其排序条件,数据库可能会以任意顺序返回前两条数据。
    • 可能返回结果:[f1, f2]
    • after :f2 的 FILE_ID 作为下一页的 after 游标。
  2. 第二次查询 (获取第二页数据)

    • 请求参数:limit = 2, after = f2
    • 程序处理:
      • 根据 after = f2,查询数据库获取 f2 的 CTIME,即 2025-11-14 00:00:00。
      • 构建查询条件:WHERE CTIME > '2025-11-14 00:00:00' (假设是升序排列)。
    • 数据库执行:数据库会查找 CTIME 严格大于 2025-11-14 00:00:00 的记录。
    • 实际返回结果:空列表 []。

Steps to Reproduce

同上面的描述

Expected Behavior

同上面的描述

Environment

Error Logs

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions