PostgREST 查询未显式指定
ORDER BY 时,默认使用物理元组标识符(ctid)排序,并叠加 Supabase 的 1000 行 HTTP Range 限制。查询成功返回,无异常或警告,但仅返回前 1000 行,其余数据静默丢失。- 问题根源:任何不带
ORDER BY 的 .select() 链会触发内部 ctid 排序,配合 HTTP Range 默认上限 1000 行- 后果:数据完整性被破坏,排序依赖表更新/删除历史,VACUUM FULL 后顺序变化
- 解决方案:ESLint 规则强制要求
.from(X).select(...) 链必须包含 .order() 或使用 .single() / .maybeSingle() / 显式 .limit(≤1000) 终止完整规则及示例见 GitHub:
GitHub
原文
#开发者 #工具
📢 频道:@DevToolboxHub
