File tree Expand file tree Collapse file tree 3 files changed +25
-14
lines changed
tests/sqllogictests/suites/base/03_common Expand file tree Collapse file tree 3 files changed +25
-14
lines changed Original file line number Diff line number Diff line change @@ -396,20 +396,13 @@ impl<'a> Evaluator<'a> {
396396 validity. clone ( ) ,
397397 options,
398398 ) ? {
399- // remove wrapped null values.
400- let new_value = match new_value {
401- Value :: Scalar ( scalar) => {
402- if scalar == Scalar :: Null {
403- Value :: Scalar ( Scalar :: default_value ( dest_type) )
404- } else {
405- Value :: Scalar ( scalar)
406- }
407- }
408- Value :: Column ( column) => {
409- let nullable_column = column. as_nullable ( ) . unwrap ( ) ;
410- Value :: Column ( nullable_column. column . clone ( ) )
411- }
412- } ;
399+ let ( new_value, has_null) = new_value. remove_nullable ( ) ;
400+ if has_null {
401+ return Err ( ErrorCode :: BadArguments ( format ! (
402+ "unable to cast type `{src_type}` to type `{dest_type}`, result has null values"
403+ ) )
404+ . set_span ( span) ) ;
405+ }
413406 Ok ( new_value)
414407 } else {
415408 Err ( ErrorCode :: BadArguments ( format ! (
Original file line number Diff line number Diff line change @@ -345,6 +345,18 @@ impl Value<AnyType> {
345345 }
346346 }
347347
348+ // returns result without nullable and has_null flag
349+ pub fn remove_nullable ( self ) -> ( Self , bool ) {
350+ match self {
351+ Value :: Scalar ( Scalar :: Null ) => ( Value :: Scalar ( Scalar :: Null ) , true ) ,
352+ Value :: Column ( Column :: Nullable ( box nullable_column) ) => (
353+ Value :: Column ( nullable_column. column ) ,
354+ nullable_column. validity . null_count ( ) > 0 ,
355+ ) ,
356+ other => ( other, false ) ,
357+ }
358+ }
359+
348360 pub fn domain ( & self , data_type : & DataType ) -> Domain {
349361 match self {
350362 Value :: Scalar ( scalar) => scalar. as_ref ( ) . domain ( data_type) ,
Original file line number Diff line number Diff line change @@ -142,5 +142,11 @@ SELECT * FROM t5;
142142{"user_id":1} 1
143143{"user_id":2} 2
144144
145+ statement ok
146+ INSERT INTO t4 values('{}');
147+
148+ statement error
149+ INSERT INTO t5 SELECT data, data:user_id AS user_id FROM t4;
150+
145151statement ok
146152DROP DATABASE db1
You can’t perform that action at this time.
0 commit comments