Skip to content

Commit 37c8fa0

Browse files
author
Jiayu Liu
committed
using array
1 parent 8b281c4 commit 37c8fa0

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

datafusion/src/physical_plan/math_expressions.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@
1616
// under the License.
1717

1818
//! Math expressions
19-
2019
use super::{ColumnarValue, ScalarValue};
2120
use crate::error::{DataFusionError, Result};
2221
use arrow::array::{make_array, Array, ArrayData, Float32Array, Float64Array};
2322
use arrow::buffer::Buffer;
2423
use arrow::datatypes::{DataType, ToByteSlice};
2524
use rand::{thread_rng, Rng};
25+
use std::sync::Arc;
2626

2727
macro_rules! compute_op {
2828
($ARRAY:expr, $FUNC:ident, $TYPE:ident) => {{
@@ -118,10 +118,15 @@ math_unary_function!("log2", log2);
118118
math_unary_function!("log10", log10);
119119

120120
/// random SQL function
121-
pub fn random(_: &[ColumnarValue]) -> Result<ColumnarValue> {
121+
pub fn random(args: &[ColumnarValue]) -> Result<ColumnarValue> {
122+
let len = match &args[0] {
123+
ColumnarValue::Array(array) => array.len(),
124+
_ => return Err(DataFusionError::Internal("d".to_string())),
125+
};
122126
let mut rng = thread_rng();
123-
let value: f64 = rng.gen_range(0.0..1.0);
124-
let scalar = ScalarValue::Float64(Some(value));
125-
let column_value = ColumnarValue::Scalar(scalar);
126-
Ok(column_value)
127+
let mut array = Vec::with_capacity(len);
128+
for _ in 0..len {
129+
array.push(Some(rng.gen_range(0.0..1.0)))
130+
}
131+
Ok(ColumnarValue::Array(Arc::new(Float64Array::from(array))))
127132
}

0 commit comments

Comments
 (0)