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 |
|