|
@@ -1102,7 +1102,7 @@ func Test_createLogicalPlan(t *testing.T) {
|
|
|
sendMeta: false,
|
|
|
}.Init(),
|
|
|
}, { // 13 analytic function plan
|
|
|
- sql: `SELECT lag(name), id1 FROM src1 WHERE lag(temp) > temp`,
|
|
|
+ sql: `SELECT latest(lag(name)), id1 FROM src1 WHERE lag(temp) > temp`,
|
|
|
p: ProjectPlan{
|
|
|
baseLogicalPlan: baseLogicalPlan{
|
|
|
children: []LogicalPlan{
|
|
@@ -1135,16 +1135,20 @@ func Test_createLogicalPlan(t *testing.T) {
|
|
|
},
|
|
|
funcs: []*ast.Call{
|
|
|
{
|
|
|
- Name: "lag", FuncId: 0, CachedField: "$$a_lag_0", FuncType: ast.FuncTypeScalar, Args: []ast.Expr{&ast.FieldRef{Name: "name", StreamName: "src1"}},
|
|
|
- }, {
|
|
|
Name: "lag",
|
|
|
- FuncId: 1,
|
|
|
- CachedField: "$$a_lag_1",
|
|
|
+ FuncId: 2,
|
|
|
+ CachedField: "$$a_lag_2",
|
|
|
Args: []ast.Expr{&ast.FieldRef{
|
|
|
Name: "temp",
|
|
|
StreamName: "src1",
|
|
|
}},
|
|
|
},
|
|
|
+ {
|
|
|
+ Name: "latest", FuncId: 1, CachedField: "$$a_latest_1", FuncType: ast.FuncTypeScalar, Args: []ast.Expr{&ast.Call{Name: "lag", FuncId: 0, Cached: true, CachedField: "$$a_lag_0", FuncType: ast.FuncTypeScalar, Args: []ast.Expr{&ast.FieldRef{Name: "name", StreamName: "src1"}}}},
|
|
|
+ },
|
|
|
+ {
|
|
|
+ Name: "lag", FuncId: 0, CachedField: "$$a_lag_0", FuncType: ast.FuncTypeScalar, Args: []ast.Expr{&ast.FieldRef{Name: "name", StreamName: "src1"}},
|
|
|
+ },
|
|
|
},
|
|
|
}.Init(),
|
|
|
},
|
|
@@ -1152,12 +1156,12 @@ func Test_createLogicalPlan(t *testing.T) {
|
|
|
condition: &ast.BinaryExpr{
|
|
|
LHS: &ast.Call{
|
|
|
Name: "lag",
|
|
|
- FuncId: 1,
|
|
|
+ FuncId: 2,
|
|
|
Args: []ast.Expr{&ast.FieldRef{
|
|
|
Name: "temp",
|
|
|
StreamName: "src1",
|
|
|
}},
|
|
|
- CachedField: "$$a_lag_1",
|
|
|
+ CachedField: "$$a_lag_2",
|
|
|
Cached: true,
|
|
|
},
|
|
|
OP: ast.GT,
|
|
@@ -1171,8 +1175,14 @@ func Test_createLogicalPlan(t *testing.T) {
|
|
|
},
|
|
|
fields: []ast.Field{
|
|
|
{
|
|
|
- Expr: &ast.Call{Name: "lag", FuncId: 0, FuncType: ast.FuncTypeScalar, Args: []ast.Expr{&ast.FieldRef{Name: "name", StreamName: "src1"}}, CachedField: "$$a_lag_0", Cached: true},
|
|
|
- Name: "lag",
|
|
|
+ Expr: &ast.Call{
|
|
|
+ Name: "latest",
|
|
|
+ FuncId: 1,
|
|
|
+ Args: []ast.Expr{&ast.Call{Name: "lag", FuncId: 0, Cached: true, CachedField: "$$a_lag_0", FuncType: ast.FuncTypeScalar, Args: []ast.Expr{&ast.FieldRef{Name: "name", StreamName: "src1"}}}},
|
|
|
+ CachedField: "$$a_latest_1",
|
|
|
+ Cached: true,
|
|
|
+ },
|
|
|
+ Name: "latest",
|
|
|
}, {
|
|
|
Expr: &ast.FieldRef{Name: "id1", StreamName: "src1"},
|
|
|
Name: "id1",
|