ThearchyHelios
39b89fd36b
差异说明在投影之后也说得清:COALESCE 套聚合、按当天现算的日期、取不到参数
逐格投影之后两边只剩一列,差别常常就在这一列的写法上,以前照样整段兜底。只改说明,判定一个不变(这几种本来就不等价):
- _Explainer._coalesced:同一位置上一边是 COALESCE(聚合, 常量)(IFNULL 也读成它)、另一边就是那个聚合,说「这次的销售额
套了 COALESCE(…, 0):没有符合条件的行、或者 amount 都为空时这次是 0、口径是空」;参数那一列表结构里一定不为空时只说
「没有符合条件的行时」;分组时说「某一组的 amount 都为空时」,参数一定不为空时两边一样、不说。只认会得出空值的
SUM / AVG / MIN / MAX,COUNT 套 COALESCE 两边其实一样,不说成不同。列名从原文取(规范形式去掉了外层别名)。
- _Explainer._relative:同一列上一边按运行当天现算(CURRENT_DATE、now()、SQLite 的 date('now', …),_now_based)、另一边写定
的常量,说「这次对 paid_date 的条件是 …,按运行当天现算(换一天运行,范围随之改变);口径写定的是 …」,要求同 _rewrites。
- match_template:口径有入口字段取不到值、又没有缺省值时,以前拿空值渲染出「paid_date >= ''」去比,说明里就出现不存在的
写法;改成一律说取不到参数,这次在那里写的是现算日期的逐个说清(_now_slots 按列和比较的方向认,只是说明)。解析不了的
照旧只说解析不了。评测逐题比 SQL 用的是同一个函数,跟着说得清。
测试:tests/test_ledger_cells.py 新增三条(COALESCE 那一格仍然不等价、说明先说多查了几列再说 COALESCE;在虚构库上没有行时
两边确实不同,COUNT 套 COALESCE 不说成不同;按当天现算的日期逐格比时说清取不到参数、和写定日期的 SQL 直接比时说清一边现算
一边写定)。去掉这三处再跑,三条失败;判等价的语料和执行守门照旧全过。
2026-10-17 13:09:55 +08:00
..
2026-10-16 13:48:09 +08:00
2026-10-17 07:59:19 +08:00
2026-10-15 12:09:29 +08:00
2026-10-16 12:46:48 +08:00
2026-10-04 23:40:20 +08:00
2026-10-16 16:38:09 +08:00
2026-10-16 14:23:41 +08:00
2026-10-06 11:44:58 +08:00
2026-10-16 13:48:09 +08:00
2026-10-16 14:15:51 +08:00
2026-10-16 14:15:51 +08:00
2026-10-14 21:55:51 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-25 15:20:46 +08:00
2026-09-30 08:05:15 +08:00
2026-10-14 21:55:51 +08:00
2026-10-14 21:55:51 +08:00
2026-10-15 12:09:29 +08:00
2026-10-14 21:55:51 +08:00
2026-10-15 07:15:37 +08:00
2026-10-16 10:14:27 +08:00
2026-10-15 07:15:37 +08:00
2026-10-14 21:55:51 +08:00
2026-10-15 08:35:28 +08:00
2026-10-17 12:00:58 +08:00
2026-10-15 13:55:19 +08:00
2026-10-16 19:52:03 +08:00
2026-09-29 05:26:34 +08:00
2026-10-04 12:03:14 +08:00
2026-10-16 10:14:27 +08:00
2026-10-15 08:35:28 +08:00
2026-10-15 07:15:37 +08:00
2026-10-14 20:05:23 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-15 14:32:25 +08:00
2026-10-15 13:55:19 +08:00
2026-10-15 17:31:20 +08:00
2026-10-15 13:55:19 +08:00
2026-10-15 13:55:19 +08:00
2026-10-17 12:00:58 +08:00
2026-10-16 10:14:27 +08:00
2026-09-30 09:48:16 +08:00
2026-10-16 12:46:48 +08:00
2026-10-16 12:46:48 +08:00
2026-10-12 17:23:27 +08:00
2026-10-12 19:09:50 +08:00
2026-10-06 19:21:23 +08:00
2026-10-12 19:09:50 +08:00
2026-10-16 12:46:48 +08:00
2026-10-12 23:01:09 +08:00
2026-09-17 18:29:16 +08:00
2026-10-16 16:20:25 +08:00
2026-10-14 22:08:33 +08:00
2026-10-15 14:44:26 +08:00
2026-10-14 21:55:51 +08:00
2026-10-16 14:17:06 +08:00
2026-10-16 14:17:06 +08:00
2026-10-14 09:59:19 +08:00
2026-10-16 10:25:28 +08:00
2026-10-14 14:07:14 +08:00
2026-10-14 22:17:00 +08:00
2026-10-13 20:30:02 +08:00
2026-10-14 20:05:23 +08:00
2026-10-13 20:30:02 +08:00
2026-10-17 08:51:51 +08:00
2026-10-16 10:45:45 +08:00
2026-10-15 19:43:29 +08:00
2026-10-17 07:59:19 +08:00
2026-10-16 14:17:06 +08:00
2026-10-04 01:07:15 +08:00
2026-10-14 16:11:04 +08:00
2026-10-04 02:00:17 +08:00
2026-10-17 11:55:53 +08:00
2026-10-03 11:09:09 +08:00
2026-10-17 09:12:29 +08:00
2026-10-16 12:02:41 +08:00
2026-10-04 02:19:26 +08:00
2026-10-03 12:14:17 +08:00
2026-10-14 16:11:04 +08:00
2026-10-16 10:28:01 +08:00
2026-10-07 01:09:36 +08:00
2026-10-14 20:05:23 +08:00
2026-10-12 15:55:19 +08:00
2026-10-17 11:51:34 +08:00
2026-09-29 11:10:53 +08:00
2026-09-30 08:05:15 +08:00
2026-09-24 23:15:19 +08:00
2026-10-06 16:42:29 +08:00
2026-10-05 16:41:59 +08:00
2026-10-05 16:41:59 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-06 19:51:29 +08:00
2026-09-30 10:04:52 +08:00
2026-10-15 13:55:19 +08:00
2026-10-16 12:46:36 +08:00
2026-10-14 21:55:51 +08:00
2026-10-16 10:45:45 +08:00
2026-10-17 11:51:34 +08:00
2026-10-04 11:07:40 +08:00
2026-10-15 13:55:19 +08:00
2026-10-05 15:08:53 +08:00
2026-10-04 11:10:28 +08:00
2026-10-14 20:05:23 +08:00
2026-09-29 11:10:53 +08:00
2026-10-16 10:45:45 +08:00
2026-10-16 10:45:45 +08:00
2026-10-16 10:45:45 +08:00
2026-10-16 10:45:45 +08:00
2026-10-16 10:45:45 +08:00
2026-10-16 10:45:45 +08:00
2026-10-16 10:45:45 +08:00
2026-10-14 20:05:23 +08:00
2026-10-16 10:45:45 +08:00
2026-09-25 15:41:30 +08:00
2026-10-15 14:59:40 +08:00
2026-10-16 10:45:45 +08:00
2026-10-16 12:23:19 +08:00
2026-09-27 10:16:32 +08:00
2026-09-30 08:05:15 +08:00
2026-10-05 00:26:04 +08:00
2026-10-16 14:17:06 +08:00
2026-09-30 08:05:15 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 14:38:10 +08:00
2026-10-16 10:24:22 +08:00
2026-10-05 15:54:03 +08:00
2026-10-05 15:54:03 +08:00
2026-10-17 08:17:12 +08:00
2026-10-17 08:17:12 +08:00
2026-10-16 10:14:27 +08:00
2026-10-12 12:24:14 +08:00
2026-10-06 18:03:12 +08:00
2026-09-18 09:39:24 +08:00
2026-10-15 07:15:37 +08:00
2026-10-01 13:42:04 +08:00
2026-10-16 13:58:36 +08:00
2026-10-16 16:49:47 +08:00
2026-10-16 17:08:29 +08:00
2026-10-16 16:49:47 +08:00
2026-10-16 14:06:29 +08:00
2026-10-16 10:18:12 +08:00
2026-10-17 11:40:27 +08:00
2026-10-16 19:41:57 +08:00
2026-10-17 12:29:20 +08:00
2026-10-16 14:05:22 +08:00
2026-10-17 11:40:27 +08:00
2026-10-16 14:05:22 +08:00
2026-10-16 21:41:30 +08:00
2026-09-28 11:47:23 +08:00
2026-09-30 08:05:15 +08:00
2026-10-06 12:02:03 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-06 12:58:37 +08:00
2026-10-16 11:04:41 +08:00
2026-09-29 05:26:34 +08:00
2026-09-29 05:26:34 +08:00
2026-09-30 08:05:15 +08:00
2026-10-12 13:50:31 +08:00
2026-10-12 17:23:27 +08:00
2026-10-12 13:50:31 +08:00
2026-10-12 17:23:27 +08:00
2026-10-12 10:48:19 +08:00
2026-10-04 02:35:33 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-12 12:24:14 +08:00
2026-09-30 15:03:31 +08:00
2026-10-01 13:42:04 +08:00
2026-09-30 08:05:15 +08:00
2026-10-06 11:37:22 +08:00
2026-10-01 13:42:04 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 11:02:06 +08:00
2026-09-25 14:33:56 +08:00
2026-10-15 13:55:19 +08:00
2026-10-02 07:38:44 +08:00
2026-10-16 20:46:18 +08:00
2026-10-15 13:55:19 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 10:04:52 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 10:16:32 +08:00
2026-09-30 08:05:15 +08:00
2026-09-27 10:16:32 +08:00
2026-10-12 15:55:19 +08:00
2026-10-07 01:09:36 +08:00
2026-10-06 22:52:28 +08:00
2026-10-12 15:55:19 +08:00
2026-10-05 01:18:03 +08:00
2026-10-16 10:33:41 +08:00
2026-10-01 13:42:04 +08:00
2026-10-03 09:30:50 +08:00
2026-10-16 15:36:21 +08:00
2026-09-28 11:47:23 +08:00
2026-09-28 11:47:23 +08:00
2026-10-05 18:45:59 +08:00
2026-09-25 15:30:32 +08:00
2026-10-16 09:59:44 +08:00
2026-09-29 16:07:19 +08:00
2026-10-12 13:50:31 +08:00
2026-10-02 14:38:10 +08:00
2026-09-30 10:04:52 +08:00
2026-09-30 10:04:52 +08:00
2026-09-30 10:04:52 +08:00
2026-10-06 12:58:37 +08:00
2026-10-06 14:30:15 +08:00
2026-09-27 10:16:32 +08:00
2026-09-28 11:47:45 +08:00
2026-09-25 12:47:07 +08:00
2026-10-17 09:19:24 +08:00
2026-10-17 13:09:55 +08:00
2026-10-17 12:15:07 +08:00
2026-10-17 13:07:19 +08:00
2026-10-16 13:49:53 +08:00
2026-10-16 22:16:58 +08:00
2026-10-16 19:09:47 +08:00
2026-10-16 14:23:41 +08:00
2026-10-17 13:07:19 +08:00
2026-10-17 09:15:07 +08:00
2026-10-16 19:46:03 +08:00
2026-10-17 12:31:13 +08:00
2026-09-30 08:05:15 +08:00
2026-10-14 20:05:23 +08:00
2026-10-17 11:53:54 +08:00
2026-10-16 22:02:09 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-12 10:48:19 +08:00
2026-10-12 10:48:19 +08:00
2026-10-07 01:09:36 +08:00
2026-10-12 13:14:36 +08:00
2026-10-06 19:11:14 +08:00
2026-10-06 21:50:48 +08:00
2026-10-12 10:50:40 +08:00
2026-10-13 16:59:58 +08:00
2026-10-12 12:18:34 +08:00
2026-10-07 01:09:36 +08:00
2026-10-14 20:05:23 +08:00
2026-10-04 01:08:42 +08:00
2026-10-04 02:17:32 +08:00
2026-10-03 09:36:20 +08:00
2026-10-03 10:40:47 +08:00
2026-10-17 12:05:12 +08:00
2026-09-28 11:47:23 +08:00
2026-10-15 07:15:37 +08:00
2026-10-05 03:26:43 +08:00
2026-10-15 07:15:37 +08:00
2026-09-30 11:19:25 +08:00
2026-10-06 14:29:48 +08:00
2026-09-30 08:05:15 +08:00
2026-10-01 13:42:04 +08:00
2026-09-25 23:14:50 +08:00
2026-09-30 08:05:15 +08:00
2026-10-14 20:05:23 +08:00
2026-10-16 17:11:54 +08:00
2026-10-16 22:30:09 +08:00
2026-10-16 18:20:52 +08:00
2026-10-16 10:14:27 +08:00
2026-10-04 12:27:38 +08:00
2026-10-02 07:38:44 +08:00
2026-10-16 10:18:12 +08:00
2026-10-15 12:09:29 +08:00
2026-10-15 07:15:37 +08:00
2026-10-16 10:14:27 +08:00
2026-10-14 22:08:33 +08:00
2026-10-16 10:14:27 +08:00
2026-10-17 07:59:19 +08:00
2026-10-16 12:06:24 +08:00
2026-10-16 14:26:04 +08:00
2026-10-02 14:38:10 +08:00
2026-10-02 14:38:10 +08:00
2026-10-03 09:36:20 +08:00
2026-10-02 14:38:10 +08:00
2026-10-12 10:17:40 +08:00
2026-10-02 14:38:10 +08:00
2026-10-06 19:43:44 +08:00
2026-10-06 19:43:44 +08:00
2026-10-06 17:29:18 +08:00
2026-10-06 19:43:44 +08:00
2026-10-06 19:43:44 +08:00
2026-10-16 16:21:41 +08:00
2026-09-30 08:05:15 +08:00
2026-10-16 10:34:18 +08:00
2026-10-04 02:52:43 +08:00
2026-09-28 21:20:04 +08:00
2026-09-30 08:05:15 +08:00
2026-10-16 21:41:30 +08:00
2026-09-25 14:44:56 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-01 22:00:07 +08:00
2026-10-01 22:00:07 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-16 11:16:33 +08:00
2026-10-02 07:38:44 +08:00
2026-10-01 22:00:07 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 14:38:10 +08:00
2026-10-02 07:38:44 +08:00
2026-10-16 11:16:33 +08:00
2026-10-16 11:16:33 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-16 12:23:19 +08:00
2026-10-01 22:00:07 +08:00
2026-10-16 11:09:39 +08:00
2026-10-02 07:38:44 +08:00
2026-10-16 11:09:39 +08:00
2026-10-16 12:23:19 +08:00
2026-10-02 07:38:44 +08:00
2026-10-16 11:09:39 +08:00
2026-10-16 11:09:39 +08:00
2026-10-16 11:09:39 +08:00
2026-10-16 11:09:39 +08:00
2026-10-05 18:50:34 +08:00
2026-10-06 09:20:09 +08:00
2026-10-16 10:14:27 +08:00
2026-10-14 20:05:23 +08:00
2026-10-04 11:28:23 +08:00
2026-10-04 12:28:07 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 11:33:09 +08:00
2026-10-12 14:26:43 +08:00
2026-10-13 10:04:30 +08:00
2026-10-10 12:59:21 +08:00
2026-10-06 13:32:38 +08:00
2026-09-30 10:04:52 +08:00
2026-10-12 13:50:31 +08:00
2026-10-12 23:01:09 +08:00
2026-10-12 12:33:32 +08:00
2026-10-12 23:01:09 +08:00
2026-10-12 23:01:09 +08:00
2026-10-12 19:09:50 +08:00
2026-10-12 17:23:27 +08:00
2026-10-12 13:50:31 +08:00
2026-10-12 17:23:27 +08:00
2026-09-30 15:03:31 +08:00
2026-09-30 08:05:15 +08:00
2026-10-04 02:24:49 +08:00
2026-10-04 02:33:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-06 09:31:00 +08:00
2026-10-16 19:30:47 +08:00
2026-10-05 01:18:03 +08:00
2026-10-05 18:45:59 +08:00
2026-10-06 14:32:30 +08:00
2026-09-26 23:11:31 +08:00
2026-10-14 22:08:33 +08:00
2026-10-05 00:07:07 +08:00
2026-10-16 14:02:55 +08:00
2026-09-30 08:05:15 +08:00
2026-10-17 08:31:17 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-14 20:05:23 +08:00
2026-09-27 10:16:32 +08:00
2026-10-14 20:05:23 +08:00
2026-10-14 21:55:51 +08:00
2026-10-04 01:52:24 +08:00
2026-09-27 23:37:32 +08:00
2026-10-07 00:02:15 +08:00
2026-10-16 16:38:09 +08:00
2026-10-06 08:48:56 +08:00
2026-10-06 16:42:29 +08:00
2026-10-05 08:50:57 +08:00
2026-10-05 08:37:57 +08:00
2026-10-15 07:15:37 +08:00
2026-10-05 18:39:10 +08:00
2026-10-06 08:48:56 +08:00
2026-10-16 10:14:27 +08:00
2026-10-16 22:02:09 +08:00
2026-10-16 18:37:51 +08:00
2026-10-16 16:26:11 +08:00
2026-09-30 08:05:15 +08:00
2026-10-16 16:21:41 +08:00
2026-10-16 16:21:41 +08:00
2026-10-17 09:19:24 +08:00
2026-09-25 16:05:14 +08:00
2026-10-16 10:54:30 +08:00
2026-10-16 19:46:14 +08:00
2026-10-16 19:31:21 +08:00
2026-10-17 08:51:51 +08:00
2026-10-16 19:46:14 +08:00
2026-10-02 07:38:44 +08:00
2026-10-16 11:04:41 +08:00
2026-10-16 13:39:15 +08:00
2026-10-16 13:39:15 +08:00
2026-09-29 05:26:34 +08:00
2026-09-25 14:44:56 +08:00
2026-10-17 11:49:31 +08:00
2026-10-17 11:47:26 +08:00
2026-10-17 08:17:12 +08:00
2026-10-17 08:17:12 +08:00
2026-10-16 12:53:07 +08:00
2026-10-01 13:42:04 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-02 07:38:44 +08:00
2026-10-01 22:00:07 +08:00
2026-10-14 21:55:51 +08:00
2026-09-30 08:05:15 +08:00
2026-09-26 23:11:31 +08:00
2026-10-15 07:15:37 +08:00
2026-09-28 21:20:04 +08:00
2026-09-18 17:57:20 +08:00
2026-10-07 00:02:15 +08:00
2026-10-14 20:05:23 +08:00
2026-10-15 07:15:37 +08:00
2026-10-14 21:55:51 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-03 11:09:09 +08:00
2026-09-30 08:05:15 +08:00
2026-09-30 08:05:15 +08:00
2026-10-17 11:36:50 +08:00
2026-10-15 13:55:19 +08:00
2026-10-16 14:26:04 +08:00
2026-09-27 10:16:32 +08:00
2026-09-30 08:05:15 +08:00
2026-10-17 07:59:19 +08:00
2026-09-30 08:05:15 +08:00
2026-10-06 21:50:48 +08:00
2026-10-05 01:46:55 +08:00
2026-10-06 14:32:30 +08:00
2026-10-05 18:45:44 +08:00
2026-10-12 12:24:14 +08:00
2026-10-07 00:02:15 +08:00
2026-10-14 22:17:00 +08:00
2026-10-07 01:19:26 +08:00
2026-10-05 00:06:03 +08:00
2026-10-06 14:30:03 +08:00
2026-09-29 05:26:34 +08:00
2026-09-30 09:48:16 +08:00
2026-10-16 16:30:42 +08:00
2026-10-15 07:15:37 +08:00
2026-10-12 17:23:27 +08:00
2026-10-05 06:49:33 +08:00
2026-09-26 23:11:31 +08:00
2026-10-14 21:55:51 +08:00
2026-09-28 02:42:40 +08:00
2026-10-06 23:56:31 +08:00
2026-10-01 22:00:07 +08:00
2026-10-01 13:42:04 +08:00