Skip to content

[P0] StockLevel 对齐决赛:COUNT(DISTINCT) 联表最近 20 单 #8

Description

@Kosthi

父任务 / 依赖

背景

决赛新增:StockLevel 必须原生 COUNT(DISTINCT …),客户端固定发送单条联表查询,禁止客户端去重/拆分。

当前 src/transaction/stock_level.rs

SELECT COUNT(s_i_id) FROM stock WHERE s_w_id = ? AND s_quantity < ?

语义错误(无订单窗口、无 DISTINCT、无联表)。

目标逻辑(标识符可替换)

SELECT COUNT(DISTINCT s_i_id)
FROM order_line, stock
WHERE ol_w_id = :w_id
  AND ol_d_id = :d_id
  AND ol_o_id < :next_o_id
  AND ol_o_id >= :next_o_id - 20
  AND s_w_id = :w_id
  AND s_i_id = ol_i_id
  AND s_quantity < :threshold;

任务清单

  • 事务内读取 d_next_o_id(或赛题规定的 next order 获取方式)
  • 发送完整 COUNT(DISTINCT) 查询(兼容 COUNT(DISTINCT col)COUNT(DISTINCT(col)) 探测可选)
  • 使用正确 w_id / d_id / threshold(threshold 随机范围与 TPC-C 一致)
  • BEGIN/COMMIT 边界;最终迁入 2-batch prepared 路径
  • diagnose 增加 COUNT(DISTINCT) 探测项
  • 修正当前未使用 d_id 的 bug(_d_id

验收标准

  • 与赛题逻辑 SQL 结果一致(可用固定小数据集手工核对)
  • s_quantity < threshold(等于阈值不计入)
  • 不在客户端做二次去重

参考

赛题第三章(六)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    2026-final2026 final contest alignmentarea/transactionTPC-C transactionsenhancementNew feature or requestpriority/p0Blocker / protocol foundation

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions