mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-24 00:40:40 +00:00
chore(deps): bump datafusion to the latest commit (#1967)
* bump deps Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix compile except pyo3 backend Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix promql-parser metric name matcher Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix tests Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix pyarrow convert Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix pyo3 compiling Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix tests Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix clippy Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * remove deadcode Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * update stream adapter display format Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix physical optimizer rule Signed-off-by: Ruihang Xia <waynestxia@gmail.com> --------- Signed-off-by: Ruihang Xia <waynestxia@gmail.com>
This commit is contained in:
@@ -61,7 +61,7 @@ rustpython-vm = { git = "https://github.com/discord9/RustPython", optional = tru
|
||||
"default",
|
||||
"codegen",
|
||||
] }
|
||||
pyo3 = { version = "0.18", optional = true, features = ["abi3", "abi3-py37"] }
|
||||
pyo3 = { version = "0.19", optional = true, features = ["abi3", "abi3-py37"] }
|
||||
session = { path = "../session" }
|
||||
snafu = { version = "0.7", features = ["backtraces"] }
|
||||
sql = { path = "../sql" }
|
||||
|
||||
@@ -178,24 +178,24 @@ coprocessor = copr
|
||||
/// 4. a single constant, will be expanded to a PyVector of length of `col_len`
|
||||
fn py_any_to_vec(obj: &PyAny, col_len: usize) -> PyResult<Vec<VectorRef>> {
|
||||
let is_literal = |obj: &PyAny| -> PyResult<bool> {
|
||||
Ok(obj.is_instance_of::<PyInt>()?
|
||||
|| obj.is_instance_of::<PyFloat>()?
|
||||
|| obj.is_instance_of::<PyString>()?
|
||||
|| obj.is_instance_of::<PyBool>()?)
|
||||
Ok(obj.is_instance_of::<PyInt>()
|
||||
|| obj.is_instance_of::<PyFloat>()
|
||||
|| obj.is_instance_of::<PyString>()
|
||||
|| obj.is_instance_of::<PyBool>())
|
||||
};
|
||||
let check = if obj.is_instance_of::<PyTuple>()? {
|
||||
let check = if obj.is_instance_of::<PyTuple>() {
|
||||
let tuple = obj.downcast::<PyTuple>()?;
|
||||
(0..tuple.len())
|
||||
.map(|idx| {
|
||||
tuple.get_item(idx).map(|i| -> PyResult<bool> {
|
||||
Ok(i.is_instance_of::<PyVector>()?
|
||||
|| i.is_instance_of::<PyList>()?
|
||||
Ok(i.is_instance_of::<PyVector>()
|
||||
|| i.is_instance_of::<PyList>()
|
||||
|| is_literal(i)?)
|
||||
})
|
||||
})
|
||||
.all(|i| matches!(i, Ok(Ok(true))))
|
||||
} else {
|
||||
obj.is_instance_of::<PyVector>()? || obj.is_instance_of::<PyList>()? || is_literal(obj)?
|
||||
obj.is_instance_of::<PyVector>() || obj.is_instance_of::<PyList>() || is_literal(obj)?
|
||||
};
|
||||
if !check {
|
||||
return Err(PyRuntimeError::new_err(format!(
|
||||
@@ -241,13 +241,13 @@ fn py_list_to_vec(list: &PyList) -> PyResult<VectorRef> {
|
||||
let mut expected_type = None;
|
||||
let mut v = Vec::with_capacity(list.len());
|
||||
for (idx, elem) in list.iter().enumerate() {
|
||||
let (elem_ty, con_type) = if elem.is_instance_of::<PyBool>()? {
|
||||
let (elem_ty, con_type) = if elem.is_instance_of::<PyBool>() {
|
||||
(ExpectType::Bool, ConcreteDataType::boolean_datatype())
|
||||
} else if elem.is_instance_of::<PyInt>()? {
|
||||
} else if elem.is_instance_of::<PyInt>() {
|
||||
(ExpectType::Int, ConcreteDataType::int64_datatype())
|
||||
} else if elem.is_instance_of::<PyFloat>()? {
|
||||
} else if elem.is_instance_of::<PyFloat>() {
|
||||
(ExpectType::Float, ConcreteDataType::float64_datatype())
|
||||
} else if elem.is_instance_of::<PyString>()? {
|
||||
} else if elem.is_instance_of::<PyString>() {
|
||||
(ExpectType::String, ConcreteDataType::string_datatype())
|
||||
} else {
|
||||
return Err(PyRuntimeError::new_err(format!(
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
use std::ops::Not;
|
||||
|
||||
use arrow::compute;
|
||||
use common_recordbatch::{DfRecordBatch, RecordBatch};
|
||||
use datafusion::dataframe::DataFrame as DfDataFrame;
|
||||
|
||||
@@ -246,8 +246,8 @@ pub fn try_into_columnar_value(py: Python<'_>, obj: PyObject) -> PyResult<Column
|
||||
}
|
||||
if let Ok(v) = obj.extract::<PyVector>(py) {
|
||||
Ok(ColumnarValue::Array(v.to_arrow_array()))
|
||||
} else if obj.as_ref(py).is_instance_of::<PyList>()?
|
||||
|| obj.as_ref(py).is_instance_of::<PyTuple>()?
|
||||
} else if obj.as_ref(py).is_instance_of::<PyList>()
|
||||
|| obj.as_ref(py).is_instance_of::<PyTuple>()
|
||||
{
|
||||
let ret: Vec<ScalarValue> = {
|
||||
if let Ok(val) = obj.downcast::<PyList>(py) {
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
// limitations under the License.
|
||||
|
||||
use arrow::array::{make_array, ArrayData};
|
||||
use arrow::pyarrow::PyArrowConvert;
|
||||
use arrow::pyarrow::{FromPyArrow, ToPyArrow};
|
||||
use datafusion::arrow::array::BooleanArray;
|
||||
use datafusion::arrow::compute;
|
||||
use datafusion::arrow::compute::kernels::{arithmetic, comparison};
|
||||
@@ -33,10 +33,10 @@ use crate::python::pyo3::utils::{pyo3_obj_try_to_typed_val, to_py_err};
|
||||
macro_rules! get_con_type {
|
||||
($obj:ident, $($pyty:ident => $con_ty:ident),*$(,)?) => {
|
||||
$(
|
||||
if $obj.is_instance_of::<$pyty>()?{
|
||||
if $obj.is_instance_of::<$pyty>() {
|
||||
Ok(ConcreteDataType::$con_ty())
|
||||
}
|
||||
)else* else{
|
||||
) else* else{
|
||||
Err(PyValueError::new_err("Unsupported pyobject type: {obj:?}"))
|
||||
}
|
||||
};
|
||||
|
||||
@@ -374,7 +374,7 @@ pub(crate) mod data_frame {
|
||||
#[pymethod(magic)]
|
||||
fn invert(zelf: PyObjectRef, vm: &VirtualMachine) -> PyResult<PyExpr> {
|
||||
let zelf = obj_cast_to::<Self>(zelf, vm)?;
|
||||
Ok(zelf.inner.clone().not().into())
|
||||
Ok((!zelf.inner.clone()).into())
|
||||
}
|
||||
|
||||
/// sort ascending&nulls_first
|
||||
|
||||
Reference in New Issue
Block a user