@@ -45,7 +45,7 @@ use common_expression::DataField;
4545use common_expression:: DataSchema ;
4646use common_expression:: DataSchemaRef ;
4747use common_expression:: Expr ;
48- use common_expression:: Scalar as DataScalar ;
48+ use common_expression:: Scalar ;
4949use common_expression:: Value ;
5050use common_formats:: FastFieldDecoderValues ;
5151use 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