Skip to content

Commit 5a2c77b

Browse files
committed
fix
1 parent 0d477e5 commit 5a2c77b

File tree

4 files changed

+22
-22
lines changed

4 files changed

+22
-22
lines changed

src/query/expression/src/types/nullable.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ impl NullableColumnBuilder<AnyType> {
355355
if self.validity.pop()? {
356356
Some(Some(self.builder.pop().unwrap()))
357357
} else {
358+
self.builder.pop().unwrap();
358359
Some(None)
359360
}
360361
}

src/query/expression/src/values.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1735,9 +1735,15 @@ impl ColumnBuilder {
17351735
ColumnBuilder::String(_) => DataType::String,
17361736
ColumnBuilder::Timestamp(_) => DataType::Timestamp,
17371737
ColumnBuilder::Date(_) => DataType::Date,
1738-
ColumnBuilder::Array(_) => DataType::Array(Box::new(self.data_type())),
1739-
ColumnBuilder::Map(_) => DataType::Map(Box::new(self.data_type())),
1740-
ColumnBuilder::Nullable(c) => DataType::Nullable(Box::new(c.builder.data_type())),
1738+
ColumnBuilder::Array(col) => {
1739+
let inner = col.builder.data_type();
1740+
DataType::Array(Box::new(inner))
1741+
}
1742+
ColumnBuilder::Map(col) => {
1743+
let inner = col.builder.data_type();
1744+
DataType::Map(Box::new(inner))
1745+
}
1746+
ColumnBuilder::Nullable(col) => DataType::Nullable(Box::new(col.builder.data_type())),
17411747
ColumnBuilder::Tuple(fields) => {
17421748
DataType::Tuple(fields.iter().map(|f| f.data_type()).collect::<Vec<_>>())
17431749
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ impl FastFieldDecoderValues {
168168
column.push_null();
169169
} else if reader.ignore_bytes(b"NULL") || reader.ignore_bytes(b"null") {
170170
column.push_null();
171-
return Ok(());
172171
} else {
173172
self.read_field(&mut column.builder, reader, positions)?;
174173
column.validity.push(true);

src/query/service/src/interpreters/interpreter_insert.rs

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ use common_expression::DataField;
4545
use common_expression::DataSchema;
4646
use common_expression::DataSchemaRef;
4747
use common_expression::Expr;
48-
use common_expression::Scalar as DataScalar;
48+
use common_expression::Scalar;
4949
use common_expression::Value;
5050
use common_formats::FastFieldDecoderValues;
5151
use common_io::cursor_ext::ReadBytesExt;
@@ -153,7 +153,7 @@ impl InsertInterpreter {
153153
}
154154
}
155155

156-
async fn prepared_values(&self, values_str: &str) -> Result<(DataSchemaRef, Vec<DataScalar>)> {
156+
async fn prepared_values(&self, values_str: &str) -> Result<(DataSchemaRef, Vec<Scalar>)> {
157157
let settings = self.ctx.get_settings();
158158
let sql_dialect = settings.get_sql_dialect()?;
159159
let tokens = tokenize_sql(values_str)?;
@@ -588,17 +588,16 @@ impl ValueSource {
588588
.map(|f| ColumnBuilder::with_capacity(f.data_type(), estimated_rows))
589589
.collect::<Vec<_>>();
590590

591-
let mut rows = 0;
592591
let format = self.ctx.get_format_settings()?;
593592
let field_decoder = FastFieldDecoderValues::create_for_insert(format);
594593

595-
loop {
594+
for row in 0.. {
596595
let _ = reader.ignore_white_spaces();
597596
if reader.eof() {
598597
break;
599598
}
600599
// Not the first row
601-
if rows != 0 {
600+
if row != 0 {
602601
reader.must_ignore_byte(b',')?;
603602
}
604603

@@ -611,11 +610,6 @@ impl ValueSource {
611610
self.metadata.clone(),
612611
)
613612
.await?;
614-
rows += 1;
615-
}
616-
617-
if rows == 0 {
618-
return Ok(DataBlock::empty_with_schema(self.schema.clone()));
619613
}
620614

621615
let columns = columns
@@ -702,8 +696,8 @@ impl ValueSource {
702696
)
703697
.await?;
704698

705-
for (append_idx, col) in columns.iter_mut().enumerate().take(col_size) {
706-
col.push(values[append_idx].as_ref());
699+
for (col, scalar) in columns.iter_mut().zip(values) {
700+
col.push(scalar.as_ref());
707701
}
708702
reader.set_position(end_pos_of_row);
709703
return Ok(());
@@ -798,13 +792,13 @@ async fn fill_default_value(
798792
if field.data_type().is_nullable() {
799793
let expr = Expr::Constant {
800794
span: None,
801-
scalar: DataScalar::Null,
795+
scalar: Scalar::Null,
802796
data_type: field.data_type().clone(),
803797
};
804798
map_exprs.push(expr);
805799
} else {
806800
let data_type = field.data_type().clone();
807-
let default_value = DataScalar::default_value(&data_type);
801+
let default_value = Scalar::default_value(&data_type);
808802
let expr = Expr::Constant {
809803
span: None,
810804
scalar: default_value,
@@ -823,7 +817,7 @@ async fn exprs_to_scalar(
823817
name_resolution_ctx: &NameResolutionContext,
824818
bind_context: &BindContext,
825819
metadata: MetadataRef,
826-
) -> Result<Vec<DataScalar>> {
820+
) -> Result<Vec<Scalar>> {
827821
let schema_fields_len = schema.fields().len();
828822
if exprs.len() != schema_fields_len {
829823
return Err(ErrorCode::TableSchemaMismatch(format!(
@@ -870,7 +864,7 @@ async fn exprs_to_scalar(
870864
let one_row_chunk = DataBlock::new(
871865
vec![BlockEntry {
872866
data_type: DataType::Number(NumberDataType::UInt8),
873-
value: Value::Scalar(DataScalar::Number(NumberScalar::UInt8(1))),
867+
value: Value::Scalar(Scalar::Number(NumberScalar::UInt8(1))),
874868
}],
875869
1,
876870
);
@@ -880,13 +874,13 @@ async fn exprs_to_scalar(
880874
ctx: func_ctx,
881875
};
882876
let res = expression_transform.transform(one_row_chunk)?;
883-
let data_scalars: Vec<DataScalar> = res
877+
let scalars: Vec<Scalar> = res
884878
.columns()
885879
.iter()
886880
.skip(1)
887881
.map(|col| unsafe { col.value.as_ref().index_unchecked(0).to_owned() })
888882
.collect();
889-
Ok(data_scalars)
883+
Ok(scalars)
890884
}
891885

892886
// TODO:(everpcpc) tmp copy from src/query/sql/src/planner/binder/copy.rs

0 commit comments

Comments
 (0)