Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
272 changes: 272 additions & 0 deletions python/src/functions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,251 @@ fn lit(value: i32) -> expression::Expression {
}
}

#[pyfunction]
fn array(value: Vec<expression::Expression>) -> expression::Expression {
expression::Expression {
expr: logical_plan::array(value.into_iter().map(|x| x.expr).collect::<Vec<_>>()),
}
}

#[pyfunction]
fn ascii(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::ascii(value.expr),
}
}

#[pyfunction]
fn sum(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::sum(value.expr),
}
}

#[pyfunction]
fn bit_length(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::bit_length(value.expr),
}
}

#[pyfunction]
fn btrim(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::btrim(value.expr),
}
}

#[pyfunction]
fn character_length(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::character_length(value.expr),
}
}

#[pyfunction]
fn chr(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::chr(value.expr),
}
}

#[pyfunction]
fn concat_ws(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::concat_ws(value.expr),
}
}

#[pyfunction]
fn in_list(expr: expression::Expression, value: Vec<expression::Expression>, negated: bool) -> expression::Expression {
expression::Expression {
expr: logical_plan::in_list(expr.expr, value.into_iter().map(|x| x.expr).collect::<Vec<_>>(), negated),
}
}

#[pyfunction]
fn initcap(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::initcap(value.expr),
}
}

#[pyfunction]
fn left(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::left(value.expr),
}
}

#[pyfunction]
fn lower(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::lower(value.expr),
}
}

#[pyfunction]
fn lpad(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::lpad(value.expr),
}
}

#[pyfunction]
fn ltrim(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::ltrim(value.expr),
}
}

#[pyfunction]
fn md5(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::md5(value.expr),
}
}

#[pyfunction]
fn octet_length(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::octet_length(value.expr),
}
}

#[pyfunction]
fn regexp_replace(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::regexp_replace(value.expr),
}
}

#[pyfunction]
fn repeat(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::repeat(value.expr),
}
}

#[pyfunction]
fn replace(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::replace(value.expr),
}
}

#[pyfunction]
fn reverse(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::reverse(value.expr),
}
}

#[pyfunction]
fn right(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::right(value.expr),
}
}

#[pyfunction]
fn rpad(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::rpad(value.expr),
}
}

#[pyfunction]
fn rtrim(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::rtrim(value.expr),
}
}

#[pyfunction]
fn sha224(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::sha224(value.expr),
}
}

#[pyfunction]
fn sha256(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::sha256(value.expr),
}
}

#[pyfunction]
fn sha384(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::sha384(value.expr),
}
}

#[pyfunction]
fn sha512(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::sha512(value.expr),
}
}

#[pyfunction]
fn split_part(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::split_part(value.expr),
}
}

#[pyfunction]
fn starts_with(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::starts_with(value.expr),
}
}

#[pyfunction]
fn strpos(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::strpos(value.expr),
}
}

#[pyfunction]
fn substr(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::substr(value.expr),
}
}

#[pyfunction]
fn to_hex(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::to_hex(value.expr),
}
}

#[pyfunction]
fn translate(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::translate(value.expr),
}
}

#[pyfunction]
fn trim(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::trim(value.expr),
}
}

#[pyfunction]
fn upper(value: expression::Expression) -> expression::Expression {
expression::Expression {
expr: logical_plan::upper(value.expr),
}
}

#[pyfunction]
fn avg(value: expression::Expression) -> expression::Expression {
expression::Expression {
Expand Down Expand Up @@ -155,6 +393,40 @@ pub fn init(module: &PyModule) -> PyResult<()> {
// see https://github.com/apache/arrow-datafusion/issues/226
//module.add_function(wrap_pyfunction!(concat, module)?)?;
module.add_function(wrap_pyfunction!(udf, module)?)?;
module.add_function(wrap_pyfunction!(array, module)?)?;
module.add_function(wrap_pyfunction!(ascii, module)?)?;
module.add_function(wrap_pyfunction!(bit_length, module)?)?;
module.add_function(wrap_pyfunction!(character_length, module)?)?;
module.add_function(wrap_pyfunction!(chr, module)?)?;
module.add_function(wrap_pyfunction!(btrim, module)?)?;
module.add_function(wrap_pyfunction!(concat_ws, module)?)?;
module.add_function(wrap_pyfunction!(in_list, module)?)?;
module.add_function(wrap_pyfunction!(initcap, module)?)?;
module.add_function(wrap_pyfunction!(left, module)?)?;
module.add_function(wrap_pyfunction!(lower, module)?)?;
module.add_function(wrap_pyfunction!(lpad, module)?)?;
module.add_function(wrap_pyfunction!(md5, module)?)?;
module.add_function(wrap_pyfunction!(ltrim, module)?)?;
module.add_function(wrap_pyfunction!(octet_length, module)?)?;
module.add_function(wrap_pyfunction!(regexp_replace, module)?)?;
module.add_function(wrap_pyfunction!(repeat, module)?)?;
module.add_function(wrap_pyfunction!(replace, module)?)?;
module.add_function(wrap_pyfunction!(reverse, module)?)?;
module.add_function(wrap_pyfunction!(right, module)?)?;
module.add_function(wrap_pyfunction!(rpad, module)?)?;
module.add_function(wrap_pyfunction!(rtrim, module)?)?;
module.add_function(wrap_pyfunction!(sha224, module)?)?;
module.add_function(wrap_pyfunction!(sha256, module)?)?;
module.add_function(wrap_pyfunction!(sha384, module)?)?;
module.add_function(wrap_pyfunction!(sha512, module)?)?;
module.add_function(wrap_pyfunction!(split_part, module)?)?;
module.add_function(wrap_pyfunction!(starts_with, module)?)?;
module.add_function(wrap_pyfunction!(strpos, module)?)?;
module.add_function(wrap_pyfunction!(substr, module)?)?;
module.add_function(wrap_pyfunction!(to_hex, module)?)?;
module.add_function(wrap_pyfunction!(translate, module)?)?;
module.add_function(wrap_pyfunction!(trim, module)?)?;
module.add_function(wrap_pyfunction!(upper, module)?)?;
module.add_function(wrap_pyfunction!(sum, module)?)?;
module.add_function(wrap_pyfunction!(count, module)?)?;
module.add_function(wrap_pyfunction!(min, module)?)?;
Expand Down