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 |
|
rulego-team
|
bb1800c0a6
|
perf(M15): ExprBridge 缓存编译后的 *vm.Program
按 (env类型, 表达式) 缓存编译结果,相同表达式编译一次、多次运行,
消除每行重新构建函数 options 与 expr.Compile 的开销(原每次评估都重编译)。
基准(-benchtime=2s -count=3,取中位):
Arithmetic 413µs/1398alloc -> 146µs/317alloc (~2.8x 快, 4.4x 少分配)
FunctionCall 391µs/1405alloc -> 140µs/318alloc (~2.8x, 4.4x)
Field 387µs/1374alloc -> 136µs/314alloc (~2.8x, 4.4x)
StringConcat 1.23µs/7alloc -> 1.36µs/7alloc (走快速路径,无回归)
|
2026-07-07 00:23:48 +08:00 |
|
rulego-team
|
f14a3b4d7a
|
fix: P0 bug 批量修复 H12/M1/M9/M10/M11/M16
- H12: 表达式 tokenizer 不再把 <expr>-<digit> 粘成负数 token;parseExpression 顶层剩余 token 报错(price*2-1 原静默截断为 200,现正确为 199)
- M1: SlidingWindow.closeExpiredWindows 只清理 triggeredWindows 记账,行驱逐交给 extractWindowDataLocked,修复重叠窗口数据丢失
- M9: is_null/is_not_null 用 reflect 识别 typed-nil((*int)(nil) 等原误判为非空)
- M10: percentile 标量 Execute 排除百分位参数 p、校验 [0,1]、index clamp,修复数据污染与越界 panic
- M11: row_number 共享实例自增加锁,消除数据竞争
- M16: LIKE 匹配器改为 O(n*m) 双指针算法,消除对抗性模式指数回溯 DoS(三处同改)
- 测试: 新增 regression_test.go / tokenizer_regression_test.go / sliding_expiry_regression_test.go 覆盖以上场景;修正 streamsql_function_integration_test 过期的 cast('int') 期望(int32→int)
|
2026-07-07 00:15:29 +08:00 |
|
rulego-team
|
da04eb3d0b
|
test: date_format 锁定小写 yyyy-MM-dd 与 yyyy-MM-dd HH:mm:ss 支持
|
2026-07-06 23:18:44 +08:00 |
|
rulego-team
|
a0b8773d81
|
fix: date_format 区分 mm=分钟 / MM=月份,修复 HH:mm:ss 分钟被月份覆盖
|
2026-07-06 22:42:35 +08:00 |
|
rulego-team
|
6afa73fecc
|
feat: 实现 ORDER BY,窗口/批内排序,先排序后 LIMIT;顺带修 parseWhere 漏 ORDER 边界
|
2026-07-06 22:18:17 +08:00 |
|
rulego-team
|
ca0c4fefe1
|
fix: substring 按 rune 切片避免多字节截断;date_add/sub 越界返回错误
|
2026-07-06 21:18:51 +08:00 |
|
rulego-team
|
7fd5e8ed64
|
fix: Stop join 所有 sink/处理协程,消除 Stop 后泄漏与关闭期内联阻塞
|
2026-07-06 21:09:52 +08:00 |
|
rulego-team
|
1dc6b87a7f
|
fix: cast/ToInt64E 越界返回错误而非静默回绕
|
2026-07-06 16:38:32 +08:00 |
|
rulego-team
|
387ba0daa5
|
fix: LIKE 模式含 _ 或内部 % 时走 like_match 避免通配符丢失
|
2026-07-06 15:55:06 +08:00 |
|
rulego-team
|
016e613875
|
fix: 注册 percentile 为 AggregatorFunction 避免 CreateLegacyAggregator panic
|
2026-07-06 15:51:11 +08:00 |
|
rulego-team
|
3f7a5b3d37
|
fix: parseLimit 改用 token 流识别 LIMIT 避免子串误匹配
|
2026-07-06 15:42:49 +08:00 |
|
rulego-team
|
549412cd8f
|
fix: array 集合函数支持不可哈希元素避免 panic
|
2026-07-06 13:50:39 +08:00 |
|
rulego-team
|
b3ca746ac6
|
fix: fieldpath 修复 MapIndex 键类型不匹配 panic
|
2026-07-06 13:43:14 +08:00 |
|
rulego-team
|
b3e72e360e
|
fix: 窗口移除 close(outputChan) 消除关闭期 send-on-closed panic
|
2026-07-06 13:33:34 +08:00 |
|
rulego-team
|
cf5adbd4a5
|
fix: 移除 Stop 中 close(dataChan) 消除 send-on-closed panic
|
2026-07-06 13:12:21 +08:00 |
|
rulego-team
|
9aec9ac85f
|
fix: 修复 counting 窗口关闭 panic 等多处 panic/除零/静默缺陷
|
2026-07-06 12:51:23 +08:00 |
|
rulego-team
|
a717d41ba0
|
fix: 修复 tumbling/counting 窗口构造函数的 context 泄漏
|
2026-07-06 12:19:24 +08:00 |
|
rulego-team
|
9f6f545f9b
|
feat:支持数组取值
v0.10.7
|
2026-01-19 22:20:02 +08:00 |
|
rulego-team
|
1e1282a1f8
|
feat:json_extract支持map 和 array入参
|
2026-01-19 21:26:39 +08:00 |
|
rulego-team
|
52653b2143
|
ci:测试超时设置600s
v0.10.6
|
2025-12-21 11:57:52 +08:00 |
|
Whki
|
2db23f5b99
|
Merge pull request #45 from rulego/dependabot/go_modules/github.com/expr-lang/expr-1.17.7
chore(deps): bump github.com/expr-lang/expr from 1.17.6 to 1.17.7
|
2025-12-20 16:24:18 +08:00 |
|
rulego-team
|
c7cece15e2
|
feat:window输出结果增加溢出策略
|
2025-12-20 16:15:53 +08:00 |
|
rulego-team
|
09fe63102e
|
fix:SessionWindow和CountingWindow bufferSize初始化
|
2025-12-20 11:14:37 +08:00 |
|
rulego-team
|
b405a935b7
|
增加同步的获取结果的方法
|
2025-12-20 11:10:21 +08:00 |
|
dependabot[bot]
|
1c781979a6
|
chore(deps): bump github.com/expr-lang/expr from 1.17.6 to 1.17.7
Bumps [github.com/expr-lang/expr](https://github.com/expr-lang/expr) from 1.17.6 to 1.17.7.
- [Release notes](https://github.com/expr-lang/expr/releases)
- [Commits](https://github.com/expr-lang/expr/compare/v1.17.6...v1.17.7)
---
updated-dependencies:
- dependency-name: github.com/expr-lang/expr
dependency-version: 1.17.7
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
|
2025-12-17 02:14:17 +00:00 |
|
rulego-team
|
16778f2ac3
|
test:fix test fail
|
2025-12-16 17:40:23 +08:00 |
|
rulego-team
|
ba2cdd5629
|
fix:修复有特殊符号出现多余字段
v0.10.5
|
2025-12-16 11:50:34 +08:00 |
|
rulego-team
|
47b7e07c6b
|
fix:修复特殊符号被认为非法
|
2025-12-16 11:34:30 +08:00 |
|
rulego-team
|
9739f213e9
|
fix:修复Trigger未清除过期数据问题
|
2025-12-16 11:15:33 +08:00 |
|
rulego-team
|
4528d1f1a6
|
fix(window): 修复事件时间窗口未触发问题并添加调试日志
v0.10.4
|
2025-11-15 13:54:27 +08:00 |
|
Whki
|
6ce76d506c
|
Merge pull request #43 from rulego/dev
Dev
|
2025-11-15 13:15:05 +08:00 |
|
rulego-team
|
8207e6ba8c
|
fix:修复延迟数据处理逻辑
|
2025-11-15 13:06:06 +08:00 |
|
rulego-team
|
b2c638671a
|
ci:增加测试时间
|
2025-11-15 00:49:49 +08:00 |
|
rulego-team
|
1744502678
|
feat:增加事件时间窗口处理机制
|
2025-11-15 00:27:55 +08:00 |
|
Whki
|
8a6e41ab78
|
Merge pull request #42 from rulego/dev
Dev
|
2025-11-14 10:53:22 +08:00 |
|