Skip to content

Commit add4db2

Browse files
committed
fix some todo
1 parent 2a35711 commit add4db2

File tree

8 files changed

+25
-41
lines changed

8 files changed

+25
-41
lines changed

src/common/io/src/cursor_ext/cursor_read_interval_ext.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -369,33 +369,6 @@ enum DatePartSpecifier {
369369
Hour,
370370
}
371371

372-
impl TryFrom<&str> for DatePartSpecifier {
373-
type Error = ErrorCode;
374-
375-
fn try_from(value: &str) -> Result<Self> {
376-
match value.to_lowercase().as_str() {
377-
"millennium" | "millennia" => Ok(DatePartSpecifier::Millennium),
378-
"century" | "centuries" => Ok(DatePartSpecifier::Century),
379-
"decade" | "decades" => Ok(DatePartSpecifier::Decade),
380-
"year" | "years" | "y" => Ok(DatePartSpecifier::Year),
381-
"quarter" | "quarters" | "q" => Ok(DatePartSpecifier::Quarter),
382-
"month" | "months" | "mon" => Ok(DatePartSpecifier::Month),
383-
"day" | "days" | "d" => Ok(DatePartSpecifier::Day),
384-
385-
"week" | "weeks" | "w" => Ok(DatePartSpecifier::Week),
386-
"microsecond" | "microseconds" | "us" => Ok(DatePartSpecifier::Microseconds),
387-
"millisecond" | "milliseconds" | "ms" => Ok(DatePartSpecifier::Milliseconds),
388-
"second" | "seconds" | "s" => Ok(DatePartSpecifier::Second),
389-
"minute" | "minutes" | "m" => Ok(DatePartSpecifier::Minute),
390-
"hour" | "hours" | "h" => Ok(DatePartSpecifier::Hour),
391-
_ => Err(ErrorCode::BadArguments(format!(
392-
"Invalid date part specifier: {}",
393-
value
394-
))),
395-
}
396-
}
397-
}
398-
399372
fn try_get_date_part_specifier(specifier_str: &str) -> Result<DatePartSpecifier> {
400373
match specifier_str.to_lowercase().as_str() {
401374
"millennium" | "millennia" => Ok(DatePartSpecifier::Millennium),

src/common/native/src/write/serialize.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use std::io::Write;
1616

1717
use databend_common_column::buffer::Buffer;
1818
use databend_common_column::types::i256;
19+
use databend_common_column::types::months_days_ns;
1920
use databend_common_expression::types::DecimalColumn;
2021
use databend_common_expression::types::GeographyColumn;
2122
use databend_common_expression::types::NumberColumn;
@@ -67,8 +68,8 @@ pub fn write<W: Write>(
6768
Column::Date(column) => {
6869
write_primitive::<i32, W>(w, &column, validity, write_options, scratch)
6970
}
70-
Column::Interval(_column) => {
71-
todo!()
71+
Column::Interval(column) => {
72+
write_primitive::<months_days_ns, W>(w, &column, validity, write_options, scratch)
7273
}
7374
Column::Binary(b)
7475
| Column::Bitmap(b)

src/query/expression/src/converts/arrow/from.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,6 @@ impl Column {
260260
}
261261
DataType::Interval => {
262262
todo!()
263-
// let array = arrow_cast::cast(array.as_ref(), &ArrowDataType::Interval(IntervalUnit::MonthDayNano))?;
264-
// let buffer: Buffer<months_days_ns> = array.to_data().buffers()[0].clone().into();
265-
// Column::Interval(buffer)
266263
}
267264
DataType::Nullable(_) => {
268265
let validity = match array.nulls() {

src/query/expression/src/converts/arrow/to.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,9 +295,7 @@ impl From<&Column> for ArrayData {
295295
Column::String(col) => col.clone().into(),
296296
Column::Timestamp(col) => buffer_to_array_data((col.clone(), arrow_type)),
297297
Column::Date(col) => buffer_to_array_data((col.clone(), arrow_type)),
298-
Column::Interval(_) => {
299-
todo!()
300-
}
298+
Column::Interval(col) => buffer_to_array_data((col.clone(), arrow_type)),
301299
Column::Array(col) => {
302300
let child_data = ArrayData::from(&col.values);
303301
let builder = ArrayDataBuilder::new(arrow_type)

src/query/expression/src/kernels/concat.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ use crate::types::BooleanType;
3535
use crate::types::DataType;
3636
use crate::types::DateType;
3737
use crate::types::DecimalType;
38+
use crate::types::IntervalType;
3839
use crate::types::MapType;
3940
use crate::types::NumberType;
4041
use crate::types::TimestampType;
@@ -166,6 +167,13 @@ impl Column {
166167
);
167168
Column::Date(buffer)
168169
}
170+
Column::Interval(_) => {
171+
let buffer = Self::concat_primitive_types(
172+
columns.map(|col| IntervalType::try_downcast_column(&col).unwrap()),
173+
capacity,
174+
);
175+
Column::Interval(buffer)
176+
}
169177
Column::Array(col) => {
170178
let mut offsets = Vec::with_capacity(capacity + 1);
171179
offsets.push(0);
@@ -215,7 +223,6 @@ impl Column {
215223
.collect::<Result<_>>()?;
216224
Column::Tuple(fields)
217225
}
218-
Column::Interval(_) => todo!(),
219226
Column::Variant(_)
220227
| Column::Geometry(_)
221228
| Column::Geography(_)

src/query/expression/src/kernels/take_chunks.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -694,8 +694,13 @@ impl Column {
694694
.unwrap();
695695
Column::Date(d)
696696
}
697-
ColumnVec::Interval(_columns) => {
698-
todo!()
697+
ColumnVec::Interval(columns) => {
698+
let builder = Self::take_block_vec_primitive_types(columns, indices);
699+
let i =
700+
<IntervalType>::upcast_column(<IntervalType>::column_from_vec(builder, &[]))
701+
.into_interval()
702+
.unwrap();
703+
Column::Interval(i)
699704
}
700705
ColumnVec::Array(columns) => {
701706
let data_type = data_type.as_array().unwrap();

src/query/expression/src/utils/visitor.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
use databend_common_column::bitmap::Bitmap;
1616
use databend_common_column::buffer::Buffer;
17+
use databend_common_column::types::months_days_ns;
1718
use databend_common_exception::Result;
1819
use decimal::DecimalType;
1920
use geometry::GeometryType;
@@ -79,6 +80,10 @@ pub trait ValueVisitor {
7980
self.visit_typed_column::<DateType>(buffer)
8081
}
8182

83+
fn visit_interval(&mut self, buffer: Buffer<months_days_ns>) -> Result<()> {
84+
self.visit_typed_column::<IntervalType>(buffer)
85+
}
86+
8287
fn visit_array(&mut self, column: Box<ArrayColumn<AnyType>>) -> Result<()> {
8388
self.visit_typed_column::<AnyType>(Column::Array(column))
8489
}
@@ -132,8 +137,7 @@ pub trait ValueVisitor {
132137
Column::String(column) => self.visit_string(column),
133138
Column::Timestamp(buffer) => self.visit_timestamp(buffer),
134139
Column::Date(buffer) => self.visit_date(buffer),
135-
// TODO: impl visitor
136-
Column::Interval(_) => unimplemented!(),
140+
Column::Interval(buffer) => self.visit_interval(buffer),
137141
Column::Array(column) => self.visit_array(column),
138142
Column::Map(column) => self.visit_map(column),
139143
Column::Tuple(columns) => self.visit_tuple(columns),

src/query/formats/src/field_decoder/fast_values.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ impl FastFieldDecoderValues {
157157
ColumnBuilder::Geometry(c) => self.read_geometry(c, reader, positions),
158158
ColumnBuilder::Geography(c) => self.read_geography(c, reader, positions),
159159
ColumnBuilder::Binary(_) => Err(ErrorCode::Unimplemented("binary literal")),
160-
// TODO
161160
ColumnBuilder::Interval(c) => self.read_interval(c, reader, positions),
162161
ColumnBuilder::EmptyArray { .. } | ColumnBuilder::EmptyMap { .. } => {
163162
Err(ErrorCode::Unimplemented("empty array/map literal"))

0 commit comments

Comments
 (0)