8000 Bool expr bindings (#223) · chenqin/arrow-datafusion-python@1b1300f · GitHub
[go: up one dir, main page]

Skip to content

Commit 1b1300f

Browse files
authored
Bool expr bindings (apache#223)
1 parent fa0d9d0 commit 1b1300f

File tree

4 files changed

+383
-0
lines changed

4 files changed

+383
-0
lines changed

datafusion/__init__.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@
5353
ScalarVariable,
5454
Sort,
5555
TableScan,
56+
Not,
57+
IsNotNull,
58+
IsTrue,
59+
IsFalse,
8000 60+
IsUnknown,
61+
IsNotTrue,
62+
IsNotFalse,
63+
IsNotUnknown,
64+
Negative,
5665
)
5766

5867
__version__ = importlib_metadata.version(__name__)
@@ -81,6 +90,15 @@
8190
"SimilarTo",
8291
"ScalarVariable",
8392
"Alias",
93+
"Not",
94+
"IsNotNull",
95+
"IsTrue",
96+
"IsFalse",
97+
"IsUnknown",
98+
"IsNotTrue",
99+
"IsNotFalse",
100+
"IsNotUnknown",
101+
"Negative",
84102
]
85103

86104

datafusion/tests/test_imports.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,15 @@
4949
SimilarTo,
5050
ScalarVariable,
5151
Alias,
52+
Not,
53+
IsNotNull,
54+
IsTrue,
55+
IsFalse,
56+
IsUnknown,
57+
IsNotTrue,
58+
IsNotFalse,
59+
IsNotUnknown,
60+
Negative,
5261
)
5362

5463

@@ -87,6 +96,15 @@ def test_class_module_is_datafusion():
8796
SimilarTo,
8897
ScalarVariable,
8998
Alias,
99+
Not,
100+
IsNotNull,
101+
IsTrue,
102+
IsFalse,
103+
IsUnknown,
104+
IsNotTrue,
105+
IsNotFalse,
106+
IsNotUnknown,
107+
Negative,
90108
]:
91109
assert klass.__module__ == "datafusion.expr"
92110

src/expr.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ use crate::expr::literal::PyLiteral;
3030
use datafusion::scalar::ScalarValue;
3131

3232
use self::alias::PyAlias;
33+
use self::bool_expr::{
34+
PyIsFalse, PyIsNotFalse, PyIsNotNull, PyIsNotTrue, PyIsNotUnknown, PyIsNull, PyIsTrue,
35+
PyIsUnknown, PyNegative, PyNot,
36+
};
3337
use self::like::{PyILike, PyLike, PySimilarTo};
3438
use self::scalar_variable::PyScalarVariable;
3539

@@ -38,6 +42,7 @@ pub mod aggregate_expr;
3842
pub mod alias;
3943
pub mod analyze;
4044
pub mod binary_expr;
45+
pub mod bool_expr;
4146
pub mod column;
4247
pub mod empty_relation;
4348
pub mod filter;
@@ -81,6 +86,16 @@ impl PyExpr {
8186
}
8287
Expr::Literal(value) => Ok(PyLiteral::from(value.clone()).into_py(py)),
8388
Expr::BinaryExpr(expr) => Ok(PyBinaryExpr::from(expr.clone()).into_py(py)),
89+
Expr::Not(expr) => Ok(PyNot::new(*expr.clone()).into_py(py)),
90+
Expr::IsNotNull(expr) => Ok(PyIsNotNull::new(*expr.clone()).into_py(py)),
91+
Expr::IsNull(expr) => Ok(PyIsNull::new(*expr.clone()).into_py(py)),
92+
Expr::IsTrue(expr) => Ok(PyIsTrue::new(*expr.clone()).into_py(py)),
93+
Expr::IsFalse(expr) => Ok(PyIsFalse::new(*expr.clone()).into_py(py)),
94+
Expr::IsUnknown(expr) => Ok(PyIsUnknown::new(*expr.clone()).into_py(py)),
95+
Expr::IsNotTrue(expr) => Ok(PyIsNotTrue::new(*expr.clone()).into_py(py)),
96+
Expr::IsNotFalse(expr) => Ok(PyIsNotFalse::new(*expr.clone()).into_py(py)),
97+
Expr::IsNotUnknown(expr) => Ok(PyIsNotUnknown::new(*expr.clone()).into_py(py)),
98+
Expr::Negative(expr) => Ok(PyNegative::new(*expr.clone()).into_py(py)),
8499
Expr::AggregateFunction(expr) => {
85100
Ok(PyAggregateFunction::from(expr.clone()).into_py(py))
86101
}
@@ -200,6 +215,16 @@ pub(crate) fn init_module(m: &PyModule) -> PyResult<()> {
200215
m.add_class::<PyBinaryExpr>()?;
201216
m.add_class::<PyLiteral>()?;
202217
m.add_class::<PyAggregateFunction>()?;
218+
m.add_class::<PyNot>()?;
219+
m.add_class::<PyIsNotNull>()?;
220+
m.add_class::<PyIsNull>()?;
221+
m.add_class::<PyIsTrue>()?;
222+
m.add_class::<PyIsFalse>()?;
223+
m.add_class::<PyIsUnknown>()?;
224+
m.add_class::<PyIsNotTrue>()?;
225+
m.add_class::<PyIsNotFalse>()?;
226+
m.add_class::<PyIsNotUnknown>()?;
227+
m.add_class::<PyNegative>()?;
203228
m.add_class::<PyLike>()?;
204229
m.add_class::<PyILike>()?;
205230
m.add_class::<PySimilarTo>()?;

0 commit comments

Comments
 (0)
0