|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from libcpp.string cimport string as c_string |
|
from libcpp.unordered_set cimport unordered_set as c_unordered_set |
|
from libc.stdint cimport int64_t, int32_t, uint8_t, uintptr_t |
|
|
|
from pyarrow.includes.common cimport * |
|
from pyarrow.includes.libarrow cimport * |
|
|
|
cdef extern from "gandiva/node.h" namespace "gandiva" nogil: |
|
|
|
cdef cppclass CNode" gandiva::Node": |
|
c_string ToString() |
|
shared_ptr[CDataType] return_type() |
|
|
|
cdef cppclass CGandivaExpression" gandiva::Expression": |
|
c_string ToString() |
|
shared_ptr[CNode] root() |
|
shared_ptr[CField] result() |
|
|
|
ctypedef vector[shared_ptr[CNode]] CNodeVector" gandiva::NodeVector" |
|
|
|
ctypedef vector[shared_ptr[CGandivaExpression]] \ |
|
CExpressionVector" gandiva::ExpressionVector" |
|
|
|
cdef extern from "gandiva/selection_vector.h" namespace "gandiva" nogil: |
|
|
|
cdef cppclass CSelectionVector" gandiva::SelectionVector": |
|
|
|
shared_ptr[CArray] ToArray() |
|
|
|
enum CSelectionVector_Mode" gandiva::SelectionVector::Mode": |
|
CSelectionVector_Mode_NONE" gandiva::SelectionVector::Mode::MODE_NONE" |
|
CSelectionVector_Mode_UINT16" \ |
|
gandiva::SelectionVector::Mode::MODE_UINT16" |
|
CSelectionVector_Mode_UINT32" \ |
|
gandiva::SelectionVector::Mode::MODE_UINT32" |
|
CSelectionVector_Mode_UINT64" \ |
|
gandiva::SelectionVector::Mode::MODE_UINT64" |
|
|
|
cdef CStatus SelectionVector_MakeInt16\ |
|
"gandiva::SelectionVector::MakeInt16"( |
|
int64_t max_slots, CMemoryPool* pool, |
|
shared_ptr[CSelectionVector]* selection_vector) |
|
|
|
cdef CStatus SelectionVector_MakeInt32\ |
|
"gandiva::SelectionVector::MakeInt32"( |
|
int64_t max_slots, CMemoryPool* pool, |
|
shared_ptr[CSelectionVector]* selection_vector) |
|
|
|
cdef CStatus SelectionVector_MakeInt64\ |
|
"gandiva::SelectionVector::MakeInt64"( |
|
int64_t max_slots, CMemoryPool* pool, |
|
shared_ptr[CSelectionVector]* selection_vector) |
|
|
|
cdef inline CSelectionVector_Mode _ensure_selection_mode(str name) except *: |
|
uppercase = name.upper() |
|
if uppercase == 'NONE': |
|
return CSelectionVector_Mode_NONE |
|
elif uppercase == 'UINT16': |
|
return CSelectionVector_Mode_UINT16 |
|
elif uppercase == 'UINT32': |
|
return CSelectionVector_Mode_UINT32 |
|
elif uppercase == 'UINT64': |
|
return CSelectionVector_Mode_UINT64 |
|
else: |
|
raise ValueError('Invalid value for Selection Mode: {!r}'.format(name)) |
|
|
|
cdef inline str _selection_mode_name(CSelectionVector_Mode ctype): |
|
if ctype == CSelectionVector_Mode_NONE: |
|
return 'NONE' |
|
elif ctype == CSelectionVector_Mode_UINT16: |
|
return 'UINT16' |
|
elif ctype == CSelectionVector_Mode_UINT32: |
|
return 'UINT32' |
|
elif ctype == CSelectionVector_Mode_UINT64: |
|
return 'UINT64' |
|
else: |
|
raise RuntimeError('Unexpected CSelectionVector_Mode value') |
|
|
|
cdef extern from "gandiva/condition.h" namespace "gandiva" nogil: |
|
|
|
cdef cppclass CCondition" gandiva::Condition": |
|
c_string ToString() |
|
shared_ptr[CNode] root() |
|
shared_ptr[CField] result() |
|
|
|
cdef extern from "gandiva/arrow.h" namespace "gandiva" nogil: |
|
|
|
ctypedef vector[shared_ptr[CArray]] CArrayVector" gandiva::ArrayVector" |
|
|
|
|
|
cdef extern from "gandiva/tree_expr_builder.h" namespace "gandiva" nogil: |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeBoolLiteral \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(c_bool value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeUInt8Literal \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(uint8_t value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeUInt16Literal \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(uint16_t value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeUInt32Literal \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(uint32_t value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeUInt64Literal \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(uint64_t value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInt8Literal \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(int8_t value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInt16Literal \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(int16_t value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInt32Literal \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(int32_t value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInt64Literal \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(int64_t value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeFloatLiteral \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(float value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeDoubleLiteral \ |
|
"gandiva::TreeExprBuilder::MakeLiteral"(double value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeStringLiteral \ |
|
"gandiva::TreeExprBuilder::MakeStringLiteral"(const c_string& value) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeBinaryLiteral \ |
|
"gandiva::TreeExprBuilder::MakeBinaryLiteral"(const c_string& value) |
|
|
|
cdef shared_ptr[CGandivaExpression] TreeExprBuilder_MakeExpression\ |
|
"gandiva::TreeExprBuilder::MakeExpression"( |
|
shared_ptr[CNode] root_node, shared_ptr[CField] result_field) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeFunction \ |
|
"gandiva::TreeExprBuilder::MakeFunction"( |
|
const c_string& name, const CNodeVector& children, |
|
shared_ptr[CDataType] return_type) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeField \ |
|
"gandiva::TreeExprBuilder::MakeField"(shared_ptr[CField] field) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeIf \ |
|
"gandiva::TreeExprBuilder::MakeIf"( |
|
shared_ptr[CNode] condition, shared_ptr[CNode] this_node, |
|
shared_ptr[CNode] else_node, shared_ptr[CDataType] return_type) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeAnd \ |
|
"gandiva::TreeExprBuilder::MakeAnd"(const CNodeVector& children) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeOr \ |
|
"gandiva::TreeExprBuilder::MakeOr"(const CNodeVector& children) |
|
|
|
cdef shared_ptr[CCondition] TreeExprBuilder_MakeCondition \ |
|
"gandiva::TreeExprBuilder::MakeCondition"( |
|
shared_ptr[CNode] condition) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionInt32 \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionInt32"( |
|
shared_ptr[CNode] node, const c_unordered_set[int32_t]& values) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionInt64 \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionInt64"( |
|
shared_ptr[CNode] node, const c_unordered_set[int64_t]& values) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionTime32 \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionTime32"( |
|
shared_ptr[CNode] node, const c_unordered_set[int32_t]& values) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionTime64 \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionTime64"( |
|
shared_ptr[CNode] node, const c_unordered_set[int64_t]& values) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionDate32 \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionDate32"( |
|
shared_ptr[CNode] node, const c_unordered_set[int32_t]& values) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionDate64 \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionDate64"( |
|
shared_ptr[CNode] node, const c_unordered_set[int64_t]& values) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionTimeStamp \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionTimeStamp"( |
|
shared_ptr[CNode] node, const c_unordered_set[int64_t]& values) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionString \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionString"( |
|
shared_ptr[CNode] node, const c_unordered_set[c_string]& values) |
|
|
|
cdef shared_ptr[CNode] TreeExprBuilder_MakeInExpressionBinary \ |
|
"gandiva::TreeExprBuilder::MakeInExpressionBinary"( |
|
shared_ptr[CNode] node, const c_unordered_set[c_string]& values) |
|
|
|
cdef extern from "gandiva/projector.h" namespace "gandiva" nogil: |
|
|
|
cdef cppclass CProjector" gandiva::Projector": |
|
|
|
CStatus Evaluate( |
|
const CRecordBatch& batch, CMemoryPool* pool, |
|
const CArrayVector* output) |
|
|
|
CStatus Evaluate( |
|
const CRecordBatch& batch, |
|
const CSelectionVector* selection, |
|
CMemoryPool* pool, |
|
const CArrayVector* output) |
|
|
|
c_string DumpIR() |
|
|
|
cdef CStatus Projector_Make \ |
|
"gandiva::Projector::Make"( |
|
shared_ptr[CSchema] schema, const CExpressionVector& children, |
|
shared_ptr[CProjector]* projector) |
|
|
|
cdef CStatus Projector_Make \ |
|
"gandiva::Projector::Make"( |
|
shared_ptr[CSchema] schema, const CExpressionVector& children, |
|
CSelectionVector_Mode mode, |
|
shared_ptr[CConfiguration] configuration, |
|
shared_ptr[CProjector]* projector) |
|
|
|
cdef extern from "gandiva/filter.h" namespace "gandiva" nogil: |
|
|
|
cdef cppclass CFilter" gandiva::Filter": |
|
|
|
CStatus Evaluate( |
|
const CRecordBatch& batch, |
|
shared_ptr[CSelectionVector] out_selection) |
|
|
|
c_string DumpIR() |
|
|
|
cdef CStatus Filter_Make \ |
|
"gandiva::Filter::Make"( |
|
shared_ptr[CSchema] schema, shared_ptr[CCondition] condition, |
|
shared_ptr[CConfiguration] configuration, |
|
shared_ptr[CFilter]* filter) |
|
|
|
cdef extern from "gandiva/function_signature.h" namespace "gandiva" nogil: |
|
|
|
cdef cppclass CFunctionSignature" gandiva::FunctionSignature": |
|
|
|
CFunctionSignature(const c_string& base_name, |
|
vector[shared_ptr[CDataType]] param_types, |
|
shared_ptr[CDataType] ret_type) |
|
|
|
shared_ptr[CDataType] ret_type() const |
|
|
|
const c_string& base_name() const |
|
|
|
vector[shared_ptr[CDataType]] param_types() const |
|
|
|
c_string ToString() const |
|
|
|
cdef extern from "gandiva/expression_registry.h" namespace "gandiva" nogil: |
|
|
|
cdef vector[shared_ptr[CFunctionSignature]] \ |
|
GetRegisteredFunctionSignatures() |
|
|
|
cdef extern from "gandiva/configuration.h" namespace "gandiva" nogil: |
|
|
|
cdef cppclass CConfiguration" gandiva::Configuration": |
|
|
|
CConfiguration() |
|
|
|
CConfiguration(bint optimize, bint dump_ir) |
|
|
|
void set_optimize(bint optimize) |
|
|
|
void set_dump_ir(bint dump_ir) |
|
|
|
cdef cppclass CConfigurationBuilder \ |
|
" gandiva::ConfigurationBuilder": |
|
@staticmethod |
|
shared_ptr[CConfiguration] DefaultConfiguration() |
|
|
|
CConfigurationBuilder() |
|
|
|
shared_ptr[CConfiguration] build() |
|
|