Commit Graph
262 Commits
Author SHA1 Message Date
rulego-team 4674ed2e47 test: stress 测试改多次 drain+GC 取最小 retained,修复慢 runner 泄漏误报 2026-07-08 19:07:02 +08:00
rulego-team 61b42ac256 fix(window): Reset 等后台 goroutine 退出,修复数据竞争 2026-07-08 18:45:15 +08:00
rulego-team 4a4123a73e ci: 修正 benchmark action 名称(github-action-benchmark) 2026-07-08 17:52:47 +08:00
rulego-team a03de09ec7 docs: README 补 GlobalWindow 说明 2026-07-08 17:36:19 +08:00
rulego-team 537b3a743f 优化代码注释 2026-07-08 17:26:28 +08:00
rulego-team a549bd7c44 test: 修复 TestLagFunctionInSQL 因处理时间窗口改对齐 epoch 导致的不稳定 2026-07-08 16:38:12 +08:00
rulego-team 4d8dfb4b25 refactor: 空接口 interface{} 统一替换为 any(公开 API 文件保留原写法) 2026-07-08 16:38:12 +08:00
rulego-team 16553708e2 fix(window): 聚合结果加 window_id 字段;整数时间戳缺单位时不猜测;修 session 回调竞争;删 counting 无用字段 2026-07-08 16:10:10 +08:00
rulego-team ab6702e174 fix(window): 处理时间窗口对齐到 epoch 边界;补充 IdleTimeout 取舍说明 2026-07-08 16:10:09 +08:00
rulego-team 0fce7281df fix(window): 修复 session 事件时间死锁、迟到更新漏事件、水位线丢包,事件时间缺时间戳改为丢行 2026-07-08 15:31:19 +08:00
rulego-team 852838c95d test(window): 补事件时间路径与公开方法单测,覆盖率 59.6%→86.8% 2026-07-08 15:06:56 +08:00
rulego-team e66630793c test: 新增大数据量并发压测——端到端吞吐/峰值堆/GC后残留(泄漏检测) 2026-07-08 14:52:28 +08:00
rulego-team e801bd1b83 chore: 升级 expr-lang/expr v1.17.7→v1.17.8 2026-07-08 14:34:20 +08:00
rulego-team 7a2dc63af9 test: 修复 goroutine 泄漏(未 Stop 的 Stream + 无缓冲 done channel)并加固 sliding window flaky 断言 2026-07-08 14:33:51 +08:00
rulego-team 7fc43018d5 test(global-window): e2e 补复合 AND 谓词 + 多聚合 SELECT 用例 2026-07-08 13:05:17 +08:00
rulego-team bad4e643b9 fix(global-window): 编程式配置的复合/相等 TRIGGER WHEN 谓词编译崩溃——buildTrigger 加 normalizeTriggerPredicate(AND→&&/OR→||/单=→==,跳过引号字面量) 2026-07-08 13:02:50 +08:00
rulego-team 69b19f5f17 feat: 新增 GlobalWindow + TRIGGER WHEN,对齐 Flink GlobalWindows 语义 2026-07-08 12:38:11 +08:00
rulego-team c02c61918a refactor(metrics): Stream 指标收敛到 metrics.Registry——input/output/dropped 改 Counter、删废弃 StatsCollector/StatsManager、新增 Metrics() 暴露 registry(破坏性) 2026-07-08 12:37:16 +08:00
rulego-team 9f7bae8be9 feat(B5): 新增 metrics 包——Counter/Gauge/Histogram/Registry,原子无锁 2026-07-08 12:17:49 +08:00
rulego-team 8b8f45cd2a feat(B5): logger 加结构化日志能力——Field 类型+构造器、StructuredLogger 接口、Text/JSON 双格式,纯增量不改现有 printf 接口 2026-07-08 11:44:37 +08:00
rulego-team 8cc395b991 test: 合并 coverage/perf/strategy/table_print 到 streamsql_test.go,根目录测试文件收敛到 3 个(options/benchmark/streamsql_test) 2026-07-08 11:15:15 +08:00
rulego-team f51c9035be test: streamsql_test.go 拆解迁移——18 个专门函数测试迁 test/e2e/function_advanced_test.go,9 个 e2e 已覆盖的基础测试删除,根目录仅留 TestStreamData 示例 2026-07-08 11:03:39 +08:00
rulego-team 27bc7bb4a0 test: e2e 启用 t.Parallel,314s→88s(-72%);注册函数的 custom_functions/plugin/quoted 保持串行避免全局 registry 重名冲突 2026-07-08 10:32:01 +08:00
rulego-team f57c1b7427 ci: 测试 timeout 600s→1200s,避免 e2e 在 race 检测下超时 2026-07-08 09:57:40 +08:00
rulego-team 872e717076 test: TriggerWindow 测试迁至 test/e2e,移除根目录独立文件 2026-07-08 09:32:52 +08:00
rulego-team 8a072120a5 ci: 覆盖率加 -coverpkg=./...,外部 test/e2e 包计入 streamsql 覆盖统计 2026-07-08 09:17:20 +08:00
rulego-team 06913aedba test: 集成测试迁移至 test/e2e 独立包(package e2e,统一走公开 API) 2026-07-08 09:14:42 +08:00
rulego-team 16ccc3d081 perf: 算术表达式走 compiledExpr 快速路径,ComputedFields 提速 33%(3787→2533ns,-1alloc) 2026-07-07 17:46:28 +08:00
rulego-team 956ff04894 feat: CountingWindow 支持 State TTL,高基数死 key 清理(WITH(STATETTL=...),默认禁用) 2026-07-07 16:59:15 +08:00
rulego-team 39ddcd1a8b feat: 新增 TriggerWindow 公开 API 手动触发窗口(测试架构迁移前置) 2026-07-07 16:30:45 +08:00
rulego-team ec38ff0a8d docs: 标注 CountingWindow 高基数与 EventTime idle 空闲的内存累积风险 2026-07-07 15:26:09 +08:00
rulego-team 013d0639d8 ci: 新增 benchmark 回归门禁(观察模式,退化仅告警不阻断) 2026-07-07 15:17:22 +08:00
rulego-team 148bbf1a25 feat: 新增 schema 包,运行期字段类型校验注册表(DataType/Schema/Registry/Validate) 2026-07-07 15:15:57 +08:00
rulego-team 122377d7ca fix: SessionWindow PT 路径清理 triggeredSessions,修复 allowedLateness>0 内存泄漏 2026-07-07 15:14:30 +08:00
rulego-team e51164015c fix: SELECT * 解析识别 TokenAsterisk,激活 SelectAll 标志 2026-07-07 14:50:10 +08:00
rulego-team cae738223e fix: trunc/pow/exp 非法入参与越界返回错误,不再静默返回 NaN/0 2026-07-07 14:44:18 +08:00
rulego-team b00a782fdd test: 锁定非 JOIN 直接路径的 WHERE filter 行为不变 #39 2026-07-07 14:17:20 +08:00
rulego-team f197654bb5 feat: 富化前移使 WHERE 可筛元表列,LEFT 无匹配用空 map 支持 IS NULL #39 2026-07-07 14:10:21 +08:00
rulego-team 17534a2776 test: JOIN 自定义源/生命周期/异步路径/Upsert/Delete/WHERE/别名场景 #39 2026-07-07 12:43:03 +08:00
rulego-team 25f0f24f43 refactor: RegisterTable 变参化,键从 JOIN ON 自动推导 #39 2026-07-07 12:07:50 +08:00
rulego-team 6299925b9c test: 多表 JOIN 富化用例 #39 2026-07-07 11:59:28 +08:00
rulego-team 906eff0c70 feat: 流-表 JOIN(v0.5 元数据富化) #39 2026-07-07 11:02:51 +08:00
rulego-team e483db8a2e fix: expr() 动态表达式走 env 路径取行数据,修复编译路径静默返回 nil
编译路径把 StreamSQL 函数烘焙进 program,闭包 ctx.Data 只含函数包装不含行数据。
expr() 读行数据求值动态子表达式,必须路由到 env 路径(闭包捕获真实 data)。
其余表达式仍走快速编译路径,性能不变。
2026-07-07 10:20:45 +08:00
rulego-team 978304aba9 perf: WHERE 复合快速路径放行字符串字面量
去掉对引号的保守排除——若字面量含 &&/|| 被误拆,逐段严格正则校验会拒绝并回退
(如 msg == 'a && b' 仍正确回退)。覆盖 status=='active' && temp>20 这类混合条件。
2026-07-07 09:29:39 +08:00
rulego-team 7270d39bcb perf: WHERE 快速路径扩展到扁平 AND/OR 复合条件
对 `a OP lit (&&|||) b OP lit ...`(纯数值、无括号/字符串)在编译期拆分识别为
fastCompound,运行期逐段快速比较,任一段类型不匹配则整体回退 expr-lang。
rsql 已把 AND/OR 下译为 &&/||,故按 &&/|| 拆分。

基准:
  MultiFieldFilter (temp>20 && humid<80) 1286ns/6alloc -> 668ns/3alloc (1.9x)
2026-07-07 09:27:49 +08:00
rulego-team 82a83dcf91 perf: WHERE 简单比较走快速路径,绕过 expr-lang 反射
对 `field OP literal`(数值/字符串单比较)在编译期用正则识别,运行期直接读 map 字段比较;
类型不匹配/字段缺失/复合条件自动回退 expr-lang,语义零偏差。

基准:
  孤立 WHERE 求值 216ns/1alloc -> 35ns/0alloc (6.2x, 零分配)
  FilterProject 915ns/5alloc -> 605ns/3alloc (1.5x)
  (MultiFieldFilter 的 AND 复合条件不匹配快速路径,回退 expr-lang,不变)
2026-07-07 09:23:07 +08:00
rulego-team d3b83891f0 perf: 消除求值路径的缓存键 fmt.Sprintf 与数据 env 拷贝
- 缓存键改用 reflect.TypeOf 比较(progCacheEntry),免去每次 fmt.Sprintf
- 编译路径直接把 data 传给 expr.Run(expr-lang 求值只读,不写 env),省去 createDataEnv 拷贝

ExprBridge 微基准:
  Arithmetic   1.13µs/6alloc -> 594ns/4alloc
  FunctionCall 0.99µs/7alloc -> 508ns/5alloc
  Field        0.74µs/3alloc -> 266ns/1alloc
主路径集成基准:
  ComputedFields 4671ns/22alloc -> 2692ns/14alloc
2026-07-07 01:13:00 +08:00
rulego-team f99a1b9ad4 test: 新增主路径集成基准(EmitSync,真实 RSQL)
FilterProject/MultiFieldFilter/ComputedFields/StringConcat/NoFilter,
用 EmitSync 同步测端到端每行延迟(用户实际调用路径)。
2026-07-07 01:00:29 +08:00
rulego-team b7c40d09f5 perf: 缓存表达式预处理结果(反引号/LIKE/IS NULL)
按输入表达式缓存确定性预处理结果,避免每行重复 ToUpper/Contains/正则扫描。
字符串拼接检查依赖 data,保留在 EvaluateExpression 每次执行。

基准(data-only env 之后 -> 现在):
  Arithmetic   2.1µs/10alloc -> 2.0µs/8alloc
  FunctionCall 1.9µs/11alloc -> 1.6µs/9alloc
  StringConcat 1.18µs/7alloc -> 0.82µs/5alloc
  Field        1.4µs/7alloc  -> 1.26µs/5alloc
2026-07-07 00:45:10 +08:00
rulego-team fe191d757b perf: 编译路径运行环境改为仅数据 env,省去每行重建函数包装闭包
编译时函数已通过 expr.Function 烘焙进 program,运行时 env 只需数据,
无需每行重建 ~44 个函数包装闭包。公开 CreateEnhancedExprEnvironment 不变;
expr.Eval 回退路径仍用完整 env。

基准(M15 之后 -> 现在):
  Arithmetic   146µs/317alloc -> 2.1µs/10alloc
  FunctionCall 140µs/318alloc -> 1.9µs/11alloc
  Field        136µs/314alloc -> 1.4µs/7alloc
对比初始基线(Arithmetic 413µs/1398alloc)累计约 197x 提升
2026-07-07 00:37:27 +08:00