mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-17 02:32:56 +00:00
feat: bind Greptime's own UDF&UDAF into Python Coprocessor Module (#335)
* feat: port own UDF&UDAF into py copr(untest yet) * refactor: move UDF&UDAF to greptime_builtins * feat: support List in val2py_obj * test: some testcases for newly added UDFs * test: complete test for all added gpdb's own UDF * refactor: add underscore for long func name * feat: better error message * fix: typo
This commit is contained in:
@@ -924,5 +924,198 @@ sum(prev(values))"#,
|
||||
ty: Float64,
|
||||
value: Float(3.0)
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"values": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([1.0, 2.0, 3.0])
|
||||
),
|
||||
"pows": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([1.0, 2.0, 3.0])
|
||||
),
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
pow_gp(values, pows)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: FloatVec([1.0, 4.0, 27.0])
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"values": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 0.5])
|
||||
),
|
||||
"lower": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([0.0, 0.0, 0.0])
|
||||
),
|
||||
"upper": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([1.0, 1.0, 1.0])
|
||||
),
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
clip(values, lower, upper)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: FloatVec([0.0, 1.0, 0.5])
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"values": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 2.0, 0.5])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
median(values)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: Float(1.25)
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"values": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 2.0, 0.5])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
diff(values)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: FloatVec([3.0, 0.0, -1.5])
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"values": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 2.0, 0.0])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
mean(values)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: Float(0.75)
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"p": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0])
|
||||
),
|
||||
"x": Var(
|
||||
ty: Int64,
|
||||
value: IntVec([1, 1])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
polyval(p, x)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: Float(1.0)
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"p": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 3.0])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
argmax(p)"#,
|
||||
expect: Ok((
|
||||
ty: Int64,
|
||||
value: Int(2)
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"p": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 3.0])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
argmin(p)"#,
|
||||
expect: Ok((
|
||||
ty: Int64,
|
||||
value: Int(0)
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"x": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 3.0])
|
||||
),
|
||||
"p": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([0.5, 0.5, 0.5])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
percentile(x, p)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: Float(-0.97)
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"x": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 3.0])
|
||||
),
|
||||
"p": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([0.5, 0.5, 0.5])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
scipy_stats_norm_cdf(x, p)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: Float(0.3444602779022303)
|
||||
))
|
||||
),
|
||||
TestCase(
|
||||
input: {
|
||||
"x": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([-1.0, 2.0, 3.0])
|
||||
),
|
||||
"p": Var(
|
||||
ty: Float64,
|
||||
value: FloatVec([0.5, 0.5, 0.5])
|
||||
)
|
||||
},
|
||||
script: r#"
|
||||
from greptime import *
|
||||
scipy_stats_norm_pdf(x, p)"#,
|
||||
expect: Ok((
|
||||
ty: Float64,
|
||||
value: Float(0.1768885735289059)
|
||||
))
|
||||
)
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user