From e156880426dcf04ef14f9f1d78eae0fb5ea0430c Mon Sep 17 00:00:00 2001 From: coldWater Date: Fri, 28 Mar 2025 20:11:56 +0800 Subject: [PATCH 01/23] rewrite_function_to_cast --- src/query/expression/src/expression.rs | 129 ++++ src/query/expression/src/lib.rs | 1 + src/query/expression/src/type_check.rs | 119 ++-- src/query/functions/tests/it/scalars/mod.rs | 1 + .../tests/it/scalars/testdata/cast.txt | 566 +++++++++--------- .../sql/src/planner/semantic/type_check.rs | 4 + .../index/tests/it/filters/bloom_filter.rs | 1 + .../tests/it/testdata/test_bloom_filter.txt | 57 +- 8 files changed, 512 insertions(+), 366 deletions(-) diff --git a/src/query/expression/src/expression.rs b/src/query/expression/src/expression.rs index c1c503d0e851a..38d356f04dce1 100644 --- a/src/query/expression/src/expression.rs +++ b/src/query/expression/src/expression.rs @@ -12,12 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. +use std::borrow::Cow; use std::collections::HashMap; use std::fmt::Debug; use std::hash::Hash; use std::sync::Arc; use databend_common_ast::Span; +use databend_common_exception::ErrorCode; use educe::Educe; use enum_as_inner::EnumAsInner; use serde::Deserialize; @@ -287,6 +289,133 @@ impl PartialEq for Expr { } } +pub trait ExprVisitor: Sized { + type Error = ErrorCode; + + fn enter_constant<'a>( + &mut self, + expr: &'a Expr, + ) -> Result>, Self::Error> { + let Expr::Constant { .. } = expr else { + unreachable!() + }; + Ok(Cow::Borrowed(expr)) + } + + fn enter_column_ref<'a>( + &mut self, + expr: &'a Expr, + ) -> Result>, Self::Error> { + let Expr::ColumnRef { .. } = expr else { + unreachable!() + }; + Ok(Cow::Borrowed(expr)) + } + + fn enter_cast<'a>( + &mut self, + expr: &'a Expr, + ) -> Result>, Self::Error> { + let Expr::Cast { + span, + is_try, + expr: inner, + dest_type, + } = expr + else { + unreachable!() + }; + match visit_expr(inner, self)? { + Cow::Borrowed(_) => Ok(Cow::Borrowed(expr)), + Cow::Owned(inner) => Ok(Cow::Owned(Expr::Cast { + span: *span, + is_try: *is_try, + expr: Box::new(inner), + dest_type: dest_type.clone(), + })), + } + } + + fn enter_function_call<'a>( + &mut self, + expr: &'a Expr, + ) -> Result>, Self::Error> { + let Expr::FunctionCall { + span, + id, + function, + generics, + args, + return_type, + } = expr + else { + unreachable!() + }; + let args = args + .iter() + .map(|arg| visit_expr(arg, self)) + .collect::, _>>()?; + if args.iter().all(Cow::is_borrowed) { + Ok(Cow::Borrowed(expr)) + } else { + Ok(Cow::Owned(Expr::FunctionCall { + span: *span, + id: id.clone(), + function: function.clone(), + generics: generics.clone(), + args: args.into_iter().map(Cow::into_owned).collect(), + return_type: return_type.clone(), + })) + } + } + + fn enter_lambda_function_call<'a>( + &mut self, + expr: &'a Expr, + ) -> Result>, Self::Error> { + let Expr::LambdaFunctionCall { + span, + name, + args, + lambda_expr, + lambda_display, + return_type, + } = expr + else { + unreachable!() + }; + let args = args + .iter() + .map(|arg| visit_expr(arg, self)) + .collect::, _>>()?; + if args.iter().all(Cow::is_borrowed) { + Ok(Cow::Borrowed(expr)) + } else { + Ok(Cow::Owned(Expr::LambdaFunctionCall { + span: *span, + name: name.clone(), + args: args.into_iter().map(Cow::into_owned).collect(), + lambda_expr: lambda_expr.clone(), + lambda_display: lambda_display.clone(), + return_type: return_type.clone(), + })) + } + } +} + +pub fn visit_expr<'a, Index: ColumnIndex, V: ExprVisitor>( + expr: &'a Expr, + visitor: &mut V, +) -> Result>, V::Error> { + match expr { + Expr::Constant { .. } => visitor.enter_constant(expr), + Expr::ColumnRef { .. } => visitor.enter_column_ref(expr), + Expr::Cast { .. } => visitor.enter_cast(expr), + Expr::FunctionCall { .. } => visitor.enter_function_call(expr), + Expr::LambdaFunctionCall { .. } => visitor.enter_lambda_function_call(expr), + } +} + /// Serializable expression used to share executable expression between nodes. /// /// The remote node will recover the `Arc` pointer within `FunctionCall` by looking diff --git a/src/query/expression/src/lib.rs b/src/query/expression/src/lib.rs index 68c9757886dc3..0cf2469154129 100755 --- a/src/query/expression/src/lib.rs +++ b/src/query/expression/src/lib.rs @@ -41,6 +41,7 @@ #![feature(let_chains)] #![feature(trait_upcasting)] #![feature(alloc_layout_extra)] +#![feature(cow_is_borrowed)] #[allow(dead_code)] mod block; diff --git a/src/query/expression/src/type_check.rs b/src/query/expression/src/type_check.rs index fbfb271c15ede..be36a5fed1d2a 100755 --- a/src/query/expression/src/type_check.rs +++ b/src/query/expression/src/type_check.rs @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +use std::borrow::Cow; use std::collections::HashMap; use std::fmt::Write; @@ -20,7 +21,6 @@ use databend_common_exception::ErrorCode; use databend_common_exception::Result; use itertools::Itertools; -use crate::cast_scalar; use crate::expression::Expr; use crate::expression::RawExpr; use crate::function::FunctionRegistry; @@ -31,10 +31,11 @@ use crate::types::decimal::MAX_DECIMAL256_PRECISION; use crate::types::DataType; use crate::types::DecimalDataType; use crate::types::Number; -use crate::types::NumberScalar; +use crate::visit_expr; use crate::AutoCastRules; use crate::ColumnIndex; use crate::ConstantFolder; +use crate::ExprVisitor; use crate::FunctionContext; use crate::Scalar; @@ -82,42 +83,11 @@ pub fn check( args, params, } => { - let mut args_expr: Vec<_> = args + let args_expr: Vec<_> = args .iter() .map(|arg| check(arg, fn_registry)) .try_collect()?; - // https://github.com/datafuselabs/databend/issues/11541 - // c:int16 = 12456 will be resolve as `to_int32(c) == to_int32(12456)` - // This may hurt the bloom filter, we should try cast to literal as the datatype of column - if name == "eq" && args_expr.len() == 2 { - match args_expr.as_mut_slice() { - [e, Expr::Constant { - span, - scalar, - data_type, - }] - | [Expr::Constant { - span, - scalar, - data_type, - }, e] => { - let src_ty = data_type.remove_nullable(); - let dest_ty = e.data_type().remove_nullable(); - - if dest_ty.is_integer() && src_ty.is_integer() { - if let Ok(casted_scalar) = - cast_scalar(*span, scalar.clone(), dest_ty, fn_registry) - { - *scalar = casted_scalar; - *data_type = scalar.as_ref().infer_data_type(); - } - } - } - _ => {} - } - } - check_function(*span, name, params, &args_expr, fn_registry) } RawExpr::LambdaFunctionCall { @@ -150,7 +120,7 @@ pub fn check_cast( is_try: bool, expr: Expr, dest_type: &DataType, - fn_registry: &FunctionRegistry, + _: &FunctionRegistry, ) -> Result> { let wrapped_dest_type = if is_try { wrap_nullable_for_try_cast(span, dest_type)? @@ -168,26 +138,6 @@ pub fn check_cast( dest_type: wrapped_dest_type, }) } else { - // fast path to eval function for cast - if let Some(cast_fn) = get_simple_cast_function(is_try, expr.data_type(), dest_type) { - let params = if let DataType::Decimal(ty) = dest_type { - vec![ - Scalar::Number(NumberScalar::Int64(ty.precision() as _)), - Scalar::Number(NumberScalar::Int64(ty.scale() as _)), - ] - } else { - vec![] - }; - - if let Ok(cast_expr) = - check_function(span, &cast_fn, ¶ms, &[expr.clone()], fn_registry) - { - if cast_expr.data_type() == &wrapped_dest_type { - return Ok(cast_expr); - } - } - } - if !can_cast_to(expr.data_type(), dest_type) { return Err(ErrorCode::BadArguments(format!( "unable to cast type `{}` to type `{}`", @@ -786,3 +736,62 @@ pub const ALL_SIMPLE_CAST_FUNCTIONS: &[&str] = &[ pub fn is_simple_cast_function(name: &str) -> bool { ALL_SIMPLE_CAST_FUNCTIONS.contains(&name) } + +pub fn rewrite_function_to_cast(expr: Expr) -> Result> { + match visit_expr(&expr, &mut RewriteCast).unwrap() { + Cow::Borrowed(_) => Ok(expr), + Cow::Owned(expr) => Ok(expr), + } +} + +struct RewriteCast; + +impl ExprVisitor for RewriteCast { + type Error = (); + + fn enter_function_call<'a>( + &mut self, + expr: &'a Expr, + ) -> std::result::Result>, Self::Error> { + let Expr::FunctionCall { + span, + function, + generics, + args, + return_type, + .. + } = &expr + else { + unreachable!(); + }; + if !generics.is_empty() || args.len() != 1 { + return Ok(Cow::Borrowed(expr)); + } + if function.signature.name == "parse_json" { + return Ok(Cow::Owned(Expr::Cast { + span: *span, + is_try: false, + expr: Box::new(args.first().unwrap().clone()), + dest_type: return_type.clone(), + })); + } + let func_name = format!("to_{}", return_type.remove_nullable()); + if function.signature.name == func_name { + return Ok(Cow::Owned(Expr::Cast { + span: *span, + is_try: false, + expr: Box::new(args.first().unwrap().clone()), + dest_type: return_type.clone(), + })); + }; + if function.signature.name == format!("try_{func_name}") { + return Ok(Cow::Owned(Expr::Cast { + span: *span, + is_try: true, + expr: Box::new(args.first().unwrap().clone()), + dest_type: return_type.clone(), + })); + } + Ok(Cow::Borrowed(expr)) + } +} diff --git a/src/query/functions/tests/it/scalars/mod.rs b/src/query/functions/tests/it/scalars/mod.rs index 93fddf716f834..282d7923a815e 100644 --- a/src/query/functions/tests/it/scalars/mod.rs +++ b/src/query/functions/tests/it/scalars/mod.rs @@ -71,6 +71,7 @@ pub fn run_ast(file: &mut impl Write, text: impl AsRef, columns: &[(&str, C ); let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS)?; + let expr = type_check::rewrite_function_to_cast(expr)?; let input_domains = columns .iter() diff --git a/src/query/functions/tests/it/scalars/testdata/cast.txt b/src/query/functions/tests/it/scalars/testdata/cast.txt index 64e6868ad5e86..347e1fc66e80d 100644 --- a/src/query/functions/tests/it/scalars/testdata/cast.txt +++ b/src/query/functions/tests/it/scalars/testdata/cast.txt @@ -70,7 +70,7 @@ error: --> SQL:1:1 | 1 | CAST(1024 AS UINT8) - | ^^^^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_uint8(1024)` in expr `to_uint8(1024)` + | ^^^^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_uint8(1024)` in expr `to_uint8()`, during run expr: `CAST(1024 AS UInt8)` @@ -78,7 +78,7 @@ error: --> SQL:1:1 | 1 | CAST(a AS UINT8) - | ^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_uint8(512)` in expr `to_uint8(a)` + | ^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_uint8(512)` in expr `to_uint8()`, during run expr: `CAST(a AS UInt8)` @@ -86,13 +86,13 @@ error: --> SQL:1:1 | 1 | CAST(a AS UINT16) - | ^^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_uint16(-4)` in expr `to_uint16(a)` + | ^^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_uint16(-4)` in expr `to_uint16()`, during run expr: `CAST(a AS UInt16)` ast : CAST(a AS INT64) raw expr : CAST(a::Int16 AS Int64) -checked expr : to_int64(a) +checked expr : CAST(a AS Int64) evaluation: +--------+----------+----------+ | | a | Output | @@ -118,7 +118,7 @@ error: --> SQL:1:22 | 1 | (CAST(a AS FLOAT32), CAST(a AS INT32), CAST(b AS FLOAT32), CAST(b AS INT32)) - | ^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_int32(4294967295)` in expr `to_int32(a)`, during run expr: `tuple(to_float32(a), to_int32(a), to_float32(b), to_int32(b))` + | ^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_int32(4294967295)` in expr `to_int32()`, during run expr: `tuple(CAST(a AS Float32), CAST(a AS Int32), CAST(b AS Float32), CAST(b AS Int32))` @@ -140,7 +140,7 @@ error: ast : CAST(a AS INT16) raw expr : CAST(a::Float64 AS Int16) -checked expr : to_int16(a) +checked expr : CAST(a AS Int16) evaluation: +--------+--------------+----------+ | | a | Output | @@ -164,7 +164,7 @@ evaluation (internal): ast : CAST(b AS INT16) raw expr : CAST(b::Int8 AS Int16) -checked expr : to_int16(b) +checked expr : CAST(b AS Int16) evaluation: +--------+----------+----------+ | | b | Output | @@ -190,7 +190,7 @@ error: --> SQL:1:1 | 1 | CAST(a AS UINT16) - | ^^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_uint16(-4)` in expr `to_uint16(a)` + | ^^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_uint16(-4)` in expr `to_uint16()`, during run expr: `CAST(a AS UInt16)` @@ -198,7 +198,7 @@ error: --> SQL:1:1 | 1 | CAST(c AS INT16) - | ^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_int16(11111111111)` in expr `to_int16(c)` + | ^^^^^^^^^^^^^^^^ number overflowed while evaluating function `to_int16(11111111111)` in expr `to_int16()`, during run expr: `CAST(c AS Int16)` @@ -212,7 +212,7 @@ error: ast : CAST(0 AS VARIANT) raw expr : CAST(0 AS Variant) -checked expr : to_variant(0_u8) +checked expr : CAST(0_u8 AS Variant) optimized expr : 0x200000002000000100 output type : Variant output domain : Undefined @@ -221,7 +221,7 @@ output : '0' ast : CAST(-1 AS VARIANT) raw expr : CAST(minus(1) AS Variant) -checked expr : to_variant(minus(1_u8)) +checked expr : CAST(minus(1_u8) AS Variant) optimized expr : 0x200000002000000240ff output type : Variant output domain : Undefined @@ -230,7 +230,7 @@ output : '-1' ast : CAST(1.1 AS VARIANT) raw expr : CAST(1.1 AS Variant) -checked expr : to_variant(1.1_d128(2,1)) +checked expr : CAST(1.1_d128(2,1) AS Variant) optimized expr : 0x2000000020000009603ff199999999999a output type : Variant output domain : Undefined @@ -241,13 +241,13 @@ error: --> SQL:1:1 | 1 | CAST('🍦 が美味しい' AS VARIANT) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected value, pos 1 while evaluating function `parse_json('🍦 が美味しい')` in expr `parse_json('🍦 が美味しい')` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected value, pos 1 while evaluating function `parse_json('🍦 が美味しい')` in expr `parse_json()`, during run expr: `CAST('🍦 が美味しい' AS Variant)` ast : CAST([0, 1, 2] AS VARIANT) raw expr : CAST(array(0, 1, 2) AS Variant) -checked expr : to_variant(array(0_u8, 1_u8, 2_u8)) +checked expr : CAST(array(0_u8, 1_u8, 2_u8) AS Variant) optimized expr : 0x800000032000000120000002200000020050015002 output type : Variant output domain : Undefined @@ -256,7 +256,7 @@ output : '[0,1,2]' ast : CAST([0::VARIANT, '"a"'::VARIANT] AS VARIANT) raw expr : CAST(array(CAST(0 AS Variant), CAST('"a"' AS Variant)) AS Variant) -checked expr : to_variant(array(to_variant(0_u8), parse_json("\"a\""))) +checked expr : CAST(array(CAST(0_u8 AS Variant), CAST("\"a\"" AS Variant)) AS Variant) optimized expr : 0x8000000220000001100000010061 output type : Variant output domain : Undefined @@ -265,7 +265,7 @@ output : '[0,"a"]' ast : CAST(to_timestamp(1000000) AS VARIANT) raw expr : CAST(to_timestamp(1000000) AS Variant) -checked expr : to_variant(to_timestamp(to_int64(1000000_u32))) +checked expr : CAST(to_timestamp(CAST(1000000_u32 AS Int64)) AS Variant) optimized expr : 0x200000001000001a313937302d30312d31322031333a34363a34302e303030303030 output type : Variant output domain : Undefined @@ -274,7 +274,7 @@ output : '"1970-01-12 13:46:40.000000"' ast : CAST(false AS VARIANT) raw expr : CAST(false AS Variant) -checked expr : to_variant(false) +checked expr : CAST(false AS Variant) optimized expr : 0x2000000030000000 output type : Variant output domain : Undefined @@ -283,7 +283,7 @@ output : 'false' ast : CAST(true AS VARIANT) raw expr : CAST(true AS Variant) -checked expr : to_variant(true) +checked expr : CAST(true AS Variant) optimized expr : 0x2000000040000000 output type : Variant output domain : Undefined @@ -292,7 +292,7 @@ output : 'true' ast : CAST(CAST('"🍦 が美味しい"' AS VARIANT) AS VARIANT) raw expr : CAST(CAST('"🍦 が美味しい"' AS Variant) AS Variant) -checked expr : parse_json("\"🍦 が美味しい\"") +checked expr : CAST("\"🍦 が美味しい\"" AS Variant) optimized expr : 0x2000000010000014f09f8da620e3818ce7be8ee591b3e38197e38184 output type : Variant output domain : Undefined @@ -301,7 +301,7 @@ output : '"🍦 が美味しい"' ast : CAST((1,) AS VARIANT) raw expr : CAST(tuple(1) AS Variant) -checked expr : to_variant(tuple(1_u8)) +checked expr : CAST(tuple(1_u8) AS Variant) optimized expr : 0x400000011000000120000002315001 output type : Variant output domain : Undefined @@ -310,7 +310,7 @@ output : '{"1":1}' ast : CAST((1, 2) AS VARIANT) raw expr : CAST(tuple(1, 2) AS Variant) -checked expr : to_variant(tuple(1_u8, 2_u8)) +checked expr : CAST(tuple(1_u8, 2_u8) AS Variant) optimized expr : 0x4000000210000001100000012000000220000002313250015002 output type : Variant output domain : Undefined @@ -319,7 +319,7 @@ output : '{"1":1,"2":2}' ast : CAST((false, true) AS VARIANT) raw expr : CAST(tuple(false, true) AS Variant) -checked expr : to_variant(tuple(false, true)) +checked expr : CAST(tuple(false, true) AS Variant) optimized expr : 0x40000002100000011000000130000000400000003132 output type : Variant output domain : Undefined @@ -328,7 +328,7 @@ output : '{"1":false,"2":true}' ast : CAST(('a',) AS VARIANT) raw expr : CAST(tuple('a') AS Variant) -checked expr : to_variant(tuple("a")) +checked expr : CAST(tuple("a") AS Variant) optimized expr : 0x4000000110000001100000013161 output type : Variant output domain : Undefined @@ -337,7 +337,7 @@ output : '{"1":"a"}' ast : CAST((1, 2, (false, true, ('a',))) AS VARIANT) raw expr : CAST(tuple(1, 2, tuple(false, true, tuple('a'))) AS Variant) -checked expr : to_variant(tuple(1_u8, 2_u8, tuple(false, true, tuple("a")))) +checked expr : CAST(tuple(1_u8, 2_u8, tuple(false, true, tuple("a"))) AS Variant) optimized expr : 0x4000000310000001100000011000000120000002200000025000002d313233500150024000000310000001100000011000000130000000400000005000000e3132334000000110000001100000013161 output type : Variant output domain : Undefined @@ -354,7 +354,7 @@ error: ast : CAST(a AS VARIANT) raw expr : CAST(a::Bitmap AS Variant) -checked expr : to_variant(a) +checked expr : CAST(a AS Variant) evaluation: +--------+-------------+---------------+ | | a | Output | @@ -377,7 +377,7 @@ evaluation (internal): ast : CAST(-30610224000000001 AS TIMESTAMP) raw expr : CAST(minus(30610224000000001) AS Timestamp) -checked expr : to_timestamp(minus(30610224000000001_u64)) +checked expr : CAST(minus(30610224000000001_u64) AS Timestamp) optimized expr : -30610224000000001 output type : Timestamp output domain : {-30610224000000001..=-30610224000000001} @@ -386,7 +386,7 @@ output : '0999-12-31 23:59:59.999999' ast : CAST(-315360000000000 AS TIMESTAMP) raw expr : CAST(minus(315360000000000) AS Timestamp) -checked expr : to_timestamp(minus(315360000000000_u64)) +checked expr : CAST(minus(315360000000000_u64) AS Timestamp) optimized expr : -315360000000000 output type : Timestamp output domain : {-315360000000000..=-315360000000000} @@ -395,7 +395,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(-315360000000 AS TIMESTAMP) raw expr : CAST(minus(315360000000) AS Timestamp) -checked expr : to_timestamp(minus(315360000000_u64)) +checked expr : CAST(minus(315360000000_u64) AS Timestamp) optimized expr : -315360000000000 output type : Timestamp output domain : {-315360000000000..=-315360000000000} @@ -404,7 +404,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(-100 AS TIMESTAMP) raw expr : CAST(minus(100) AS Timestamp) -checked expr : to_timestamp(to_int64(minus(100_u8))) +checked expr : CAST(minus(100_u8) AS Timestamp) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -413,7 +413,7 @@ output : '1969-12-31 23:58:20.000000' ast : CAST(-0 AS TIMESTAMP) raw expr : CAST(minus(0) AS Timestamp) -checked expr : to_timestamp(to_int64(minus(0_u8))) +checked expr : CAST(minus(0_u8) AS Timestamp) optimized expr : 0 output type : Timestamp output domain : {0..=0} @@ -422,7 +422,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(0 AS TIMESTAMP) raw expr : CAST(0 AS Timestamp) -checked expr : to_timestamp(to_int64(0_u8)) +checked expr : CAST(0_u8 AS Timestamp) optimized expr : 0 output type : Timestamp output domain : {0..=0} @@ -431,7 +431,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(100 AS TIMESTAMP) raw expr : CAST(100 AS Timestamp) -checked expr : to_timestamp(to_int64(100_u8)) +checked expr : CAST(100_u8 AS Timestamp) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -440,7 +440,7 @@ output : '1970-01-01 00:01:40.000000' ast : CAST(315360000000 AS TIMESTAMP) raw expr : CAST(315360000000 AS Timestamp) -checked expr : to_timestamp(to_int64(315360000000_u64)) +checked expr : CAST(315360000000_u64 AS Timestamp) optimized expr : 315360000000000 output type : Timestamp output domain : {315360000000000..=315360000000000} @@ -449,7 +449,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(315360000000000 AS TIMESTAMP) raw expr : CAST(315360000000000 AS Timestamp) -checked expr : to_timestamp(to_int64(315360000000000_u64)) +checked expr : CAST(315360000000000_u64 AS Timestamp) optimized expr : 315360000000000 output type : Timestamp output domain : {315360000000000..=315360000000000} @@ -458,7 +458,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(253402300800000000 AS TIMESTAMP) raw expr : CAST(253402300800000000 AS Timestamp) -checked expr : to_timestamp(to_int64(253402300800000000_u64)) +checked expr : CAST(253402300800000000_u64 AS Timestamp) optimized expr : -62135596800000000 output type : Timestamp output domain : {-62135596800000000..=-62135596800000000} @@ -467,7 +467,7 @@ output : '0001-01-01 00:00:00.000000' ast : CAST(a AS TIMESTAMP) raw expr : CAST(a::Int64 AS Timestamp) -checked expr : to_timestamp(a) +checked expr : CAST(a AS Timestamp) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -493,7 +493,7 @@ evaluation (internal): ast : CAST(TO_TIMESTAMP(-315360000000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(315360000000000)) AS Int64) -checked expr : to_int64(to_timestamp(minus(315360000000000_u64))) +checked expr : CAST(to_timestamp(minus(315360000000000_u64)) AS Int64) optimized expr : -315360000000000_i64 output type : Int64 output domain : {-315360000000000..=-315360000000000} @@ -502,7 +502,7 @@ output : -315360000000000 ast : CAST(TO_TIMESTAMP(-315360000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(315360000000)) AS Int64) -checked expr : to_int64(to_timestamp(minus(315360000000_u64))) +checked expr : CAST(to_timestamp(minus(315360000000_u64)) AS Int64) optimized expr : -315360000000000_i64 output type : Int64 output domain : {-315360000000000..=-315360000000000} @@ -511,7 +511,7 @@ output : -315360000000000 ast : CAST(TO_TIMESTAMP(-100) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(100)) AS Int64) -checked expr : to_int64(to_timestamp(to_int64(minus(100_u8)))) +checked expr : CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS Int64) optimized expr : -100000000_i64 output type : Int64 output domain : {-100000000..=-100000000} @@ -520,7 +520,7 @@ output : -100000000 ast : CAST(TO_TIMESTAMP(-0) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(0)) AS Int64) -checked expr : to_int64(to_timestamp(to_int64(minus(0_u8)))) +checked expr : CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -529,7 +529,7 @@ output : 0 ast : CAST(TO_TIMESTAMP(0) AS INT64) raw expr : CAST(TO_TIMESTAMP(0) AS Int64) -checked expr : to_int64(to_timestamp(to_int64(0_u8))) +checked expr : CAST(to_timestamp(CAST(0_u8 AS Int64)) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -538,7 +538,7 @@ output : 0 ast : CAST(TO_TIMESTAMP(100) AS INT64) raw expr : CAST(TO_TIMESTAMP(100) AS Int64) -checked expr : to_int64(to_timestamp(to_int64(100_u8))) +checked expr : CAST(to_timestamp(CAST(100_u8 AS Int64)) AS Int64) optimized expr : 100000000_i64 output type : Int64 output domain : {100000000..=100000000} @@ -547,7 +547,7 @@ output : 100000000 ast : CAST(TO_TIMESTAMP(315360000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(315360000000) AS Int64) -checked expr : to_int64(to_timestamp(to_int64(315360000000_u64))) +checked expr : CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS Int64) optimized expr : 315360000000000_i64 output type : Int64 output domain : {315360000000000..=315360000000000} @@ -556,7 +556,7 @@ output : 315360000000000 ast : CAST(TO_TIMESTAMP(315360000000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(315360000000000) AS Int64) -checked expr : to_int64(to_timestamp(to_int64(315360000000000_u64))) +checked expr : CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS Int64) optimized expr : 315360000000000_i64 output type : Int64 output domain : {315360000000000..=315360000000000} @@ -565,7 +565,7 @@ output : 315360000000000 ast : CAST(a AS INT64) raw expr : CAST(a::Timestamp AS Int64) -checked expr : to_int64(a) +checked expr : CAST(a AS Int64) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -591,7 +591,7 @@ evaluation (internal): ast : CAST(-354286 AS DATE) raw expr : CAST(minus(354286) AS Date) -checked expr : to_date(minus(354286_u32)) +checked expr : CAST(minus(354286_u32) AS Date) optimized expr : -354286 output type : Date output domain : {-354286..=-354286} @@ -600,7 +600,7 @@ output : '0999-12-31' ast : CAST(-354285 AS DATE) raw expr : CAST(minus(354285) AS Date) -checked expr : to_date(minus(354285_u32)) +checked expr : CAST(minus(354285_u32) AS Date) optimized expr : -354285 output type : Date output domain : {-354285..=-354285} @@ -609,7 +609,7 @@ output : '1000-01-01' ast : CAST(-100 AS DATE) raw expr : CAST(minus(100) AS Date) -checked expr : to_date(to_int64(minus(100_u8))) +checked expr : CAST(minus(100_u8) AS Date) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -618,7 +618,7 @@ output : '1969-09-23' ast : CAST(-0 AS DATE) raw expr : CAST(minus(0) AS Date) -checked expr : to_date(to_int64(minus(0_u8))) +checked expr : CAST(minus(0_u8) AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -627,7 +627,7 @@ output : '1970-01-01' ast : CAST(0 AS DATE) raw expr : CAST(0 AS Date) -checked expr : to_date(to_int64(0_u8)) +checked expr : CAST(0_u8 AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -636,7 +636,7 @@ output : '1970-01-01' ast : CAST(100 AS DATE) raw expr : CAST(100 AS Date) -checked expr : to_date(to_int64(100_u8)) +checked expr : CAST(100_u8 AS Date) optimized expr : 100 output type : Date output domain : {100..=100} @@ -645,7 +645,7 @@ output : '1970-04-11' ast : CAST(2932896 AS DATE) raw expr : CAST(2932896 AS Date) -checked expr : to_date(to_int64(2932896_u32)) +checked expr : CAST(2932896_u32 AS Date) optimized expr : 2932896 output type : Date output domain : {2932896..=2932896} @@ -654,7 +654,7 @@ output : '9999-12-31' ast : CAST(2932897 AS DATE) raw expr : CAST(2932897 AS Date) -checked expr : to_date(to_int64(2932897_u32)) +checked expr : CAST(2932897_u32 AS Date) optimized expr : -719162 output type : Date output domain : {-719162..=-719162} @@ -663,7 +663,7 @@ output : '0001-01-01' ast : CAST(a AS DATE) raw expr : CAST(a::Int32 AS Date) -checked expr : to_date(to_int64(a)) +checked expr : CAST(a AS Date) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -687,7 +687,7 @@ evaluation (internal): ast : CAST(TO_DATE(-354285) AS INT64) raw expr : CAST(TO_DATE(minus(354285)) AS Int64) -checked expr : to_int64(to_date(minus(354285_u32))) +checked expr : CAST(to_date(minus(354285_u32)) AS Int64) optimized expr : -354285_i64 output type : Int64 output domain : {-354285..=-354285} @@ -696,7 +696,7 @@ output : -354285 ast : CAST(TO_DATE(-100) AS INT64) raw expr : CAST(TO_DATE(minus(100)) AS Int64) -checked expr : to_int64(to_date(to_int64(minus(100_u8)))) +checked expr : CAST(to_date(CAST(minus(100_u8) AS Int64)) AS Int64) optimized expr : -100_i64 output type : Int64 output domain : {-100..=-100} @@ -705,7 +705,7 @@ output : -100 ast : CAST(TO_DATE(-0) AS INT64) raw expr : CAST(TO_DATE(minus(0)) AS Int64) -checked expr : to_int64(to_date(to_int64(minus(0_u8)))) +checked expr : CAST(to_date(CAST(minus(0_u8) AS Int64)) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -714,7 +714,7 @@ output : 0 ast : CAST(TO_DATE(0) AS INT64) raw expr : CAST(TO_DATE(0) AS Int64) -checked expr : to_int64(to_date(to_int64(0_u8))) +checked expr : CAST(to_date(CAST(0_u8 AS Int64)) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -723,7 +723,7 @@ output : 0 ast : CAST(TO_DATE(100) AS INT64) raw expr : CAST(TO_DATE(100) AS Int64) -checked expr : to_int64(to_date(to_int64(100_u8))) +checked expr : CAST(to_date(CAST(100_u8 AS Int64)) AS Int64) optimized expr : 100_i64 output type : Int64 output domain : {100..=100} @@ -732,7 +732,7 @@ output : 100 ast : CAST(TO_DATE(2932896) AS INT64) raw expr : CAST(TO_DATE(2932896) AS Int64) -checked expr : to_int64(to_date(to_int64(2932896_u32))) +checked expr : CAST(to_date(CAST(2932896_u32 AS Int64)) AS Int64) optimized expr : 2932896_i64 output type : Int64 output domain : {2932896..=2932896} @@ -741,7 +741,7 @@ output : 2932896 ast : CAST(a AS INT64) raw expr : CAST(a::Date AS Int64) -checked expr : to_int64(a) +checked expr : CAST(a AS Int64) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -767,7 +767,7 @@ error: --> SQL:1:1 | 1 | CAST('foo' AS UINT64) - | ^^^^^^^^^^^^^^^^^^^^^ invalid digit found in string while evaluating function `to_uint64('foo')` in expr `to_uint64('foo')` + | ^^^^^^^^^^^^^^^^^^^^^ invalid digit found in string while evaluating function `to_uint64('foo')` in expr `to_uint64()`, during run expr: `CAST('foo' AS UInt64)` @@ -775,7 +775,7 @@ error: --> SQL:1:1 | 1 | CAST('1foo' AS INT32) - | ^^^^^^^^^^^^^^^^^^^^^ invalid digit found in string while evaluating function `to_int32('1foo')` in expr `to_int32('1foo')` + | ^^^^^^^^^^^^^^^^^^^^^ invalid digit found in string while evaluating function `to_int32('1foo')` in expr `to_int32()`, during run expr: `CAST('1foo' AS Int32)` @@ -783,7 +783,7 @@ error: --> SQL:1:1 | 1 | CAST('-1' AS UINT64) - | ^^^^^^^^^^^^^^^^^^^^ invalid digit found in string while evaluating function `to_uint64('-1')` in expr `to_uint64('-1')` + | ^^^^^^^^^^^^^^^^^^^^ invalid digit found in string while evaluating function `to_uint64('-1')` in expr `to_uint64()`, during run expr: `CAST('-1' AS UInt64)` @@ -791,13 +791,13 @@ error: --> SQL:1:1 | 1 | CAST('256' AS UINT8) - | ^^^^^^^^^^^^^^^^^^^^ number too large to fit in target type while evaluating function `to_uint8('256')` in expr `to_uint8('256')` + | ^^^^^^^^^^^^^^^^^^^^ number too large to fit in target type while evaluating function `to_uint8('256')` in expr `to_uint8()`, during run expr: `CAST('256' AS UInt8)` ast : CAST('1' AS UINT64) raw expr : CAST('1' AS UInt64) -checked expr : to_uint64("1") +checked expr : CAST("1" AS UInt64) optimized expr : 1_u64 output type : UInt64 output domain : {1..=1} @@ -806,7 +806,7 @@ output : 1 ast : CAST(str AS INT64) raw expr : CAST(str::String AS Int64) -checked expr : to_int64(str) +checked expr : CAST(str AS Int64) evaluation: +--------+--------------------------------+----------------------+ | | str | Output | @@ -838,7 +838,7 @@ error: ast : CAST(num AS STRING) raw expr : CAST(num::Int64 AS String) -checked expr : to_string(num) +checked expr : CAST(num AS String) evaluation: +--------+----------------------------------------------+------------------------+ | | num | Output | @@ -862,7 +862,7 @@ evaluation (internal): ast : CAST(num AS STRING) raw expr : CAST(num::UInt64 AS String) -checked expr : to_string(num) +checked expr : CAST(num AS String) evaluation: +--------+----------------------------+------------------------+ | | num | Output | @@ -886,7 +886,7 @@ error: --> SQL:1:1 | 1 | CAST('t' AS BOOLEAN) - | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('t')` in expr `to_boolean('t')` + | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('t')` in expr `to_boolean()`, during run expr: `CAST('t' AS Boolean)` @@ -894,7 +894,7 @@ error: --> SQL:1:1 | 1 | CAST('f' AS BOOLEAN) - | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('f')` in expr `to_boolean('f')` + | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('f')` in expr `to_boolean()`, during run expr: `CAST('f' AS Boolean)` @@ -902,7 +902,7 @@ error: --> SQL:1:1 | 1 | CAST('0' AS BOOLEAN) - | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('0')` in expr `to_boolean('0')` + | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('0')` in expr `to_boolean()`, during run expr: `CAST('0' AS Boolean)` @@ -910,13 +910,13 @@ error: --> SQL:1:1 | 1 | CAST('1' AS BOOLEAN) - | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('1')` in expr `to_boolean('1')` + | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('1')` in expr `to_boolean()`, during run expr: `CAST('1' AS Boolean)` ast : CAST('true' AS BOOLEAN) raw expr : CAST('true' AS Boolean) -checked expr : to_boolean("true") +checked expr : CAST("true" AS Boolean) optimized expr : true output type : Boolean output domain : {TRUE} @@ -925,7 +925,7 @@ output : true ast : CAST('false' AS BOOLEAN) raw expr : CAST('false' AS Boolean) -checked expr : to_boolean("false") +checked expr : CAST("false" AS Boolean) optimized expr : false output type : Boolean output domain : {FALSE} @@ -934,7 +934,7 @@ output : false ast : CAST('TRUE' AS BOOLEAN) raw expr : CAST('TRUE' AS Boolean) -checked expr : to_boolean("TRUE") +checked expr : CAST("TRUE" AS Boolean) optimized expr : true output type : Boolean output domain : {TRUE} @@ -943,7 +943,7 @@ output : true ast : CAST('FaLse' AS BOOLEAN) raw expr : CAST('FaLse' AS Boolean) -checked expr : to_boolean("FaLse") +checked expr : CAST("FaLse" AS Boolean) optimized expr : false output type : Boolean output domain : {FALSE} @@ -952,7 +952,7 @@ output : false ast : CAST(bool AS STRING) raw expr : CAST(bool::Boolean AS String) -checked expr : to_string(bool) +checked expr : CAST(bool AS String) evaluation: +--------+---------------+---------+ | | bool | Output | @@ -973,7 +973,7 @@ evaluation (internal): ast : CAST('010.010' AS DECIMAL(5,3)) raw expr : CAST('010.010' AS Decimal(5, 3)) -checked expr : to_decimal(5, 3)("010.010") +checked expr : CAST("010.010" AS Decimal(5, 3)) optimized expr : 10.010_d128(5,3) output type : Decimal(5, 3) output domain : {10.010..=10.010} @@ -984,13 +984,13 @@ error: --> SQL:1:1 | 1 | CAST('010.010' AS DECIMAL(5,4)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Decimal overflow while evaluating function `to_decimal(5, 4)('010.010')` in expr `to_decimal(5, 4)('010.010')` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Decimal overflow while evaluating function `to_decimal(5, 4)('010.010')` in expr `to_decimal(5, 4)()`, during run expr: `CAST('010.010' AS Decimal(5, 4))` ast : CAST('010.010' AS DECIMAL(5,2)) raw expr : CAST('010.010' AS Decimal(5, 2)) -checked expr : to_decimal(5, 2)("010.010") +checked expr : CAST("010.010" AS Decimal(5, 2)) optimized expr : 10.01_d128(5,2) output type : Decimal(5, 2) output domain : {10.01..=10.01} @@ -1001,13 +1001,13 @@ error: --> SQL:1:1 | 1 | CAST('010.010' AS DECIMAL(4,3)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Decimal overflow while evaluating function `to_decimal(4, 3)('010.010')` in expr `to_decimal(4, 3)('010.010')` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Decimal overflow while evaluating function `to_decimal(4, 3)('010.010')` in expr `to_decimal(4, 3)()`, during run expr: `CAST('010.010' AS Decimal(4, 3))` ast : CAST('010.010' AS DECIMAL(4,2)) raw expr : CAST('010.010' AS Decimal(4, 2)) -checked expr : to_decimal(4, 2)("010.010") +checked expr : CAST("010.010" AS Decimal(4, 2)) optimized expr : 10.01_d128(4,2) output type : Decimal(4, 2) output domain : {10.01..=10.01} @@ -1016,7 +1016,7 @@ output : 10.01 ast : CAST('-1010.010' AS DECIMAL(7,3)) raw expr : CAST('-1010.010' AS Decimal(7, 3)) -checked expr : to_decimal(7, 3)("-1010.010") +checked expr : CAST("-1010.010" AS Decimal(7, 3)) optimized expr : -1010.010_d128(7,3) output type : Decimal(7, 3) output domain : {-1010.010..=-1010.010} @@ -1025,7 +1025,7 @@ output : -1010.010 ast : CAST('00' AS DECIMAL(2,1)) raw expr : CAST('00' AS Decimal(2, 1)) -checked expr : to_decimal(2, 1)("00") +checked expr : CAST("00" AS Decimal(2, 1)) optimized expr : 0.0_d128(2,1) output type : Decimal(2, 1) output domain : {0.0..=0.0} @@ -1034,7 +1034,7 @@ output : 0.0 ast : CAST('0.0' AS DECIMAL(2,0)) raw expr : CAST('0.0' AS Decimal(2, 0)) -checked expr : to_decimal(2, 0)("0.0") +checked expr : CAST("0.0" AS Decimal(2, 0)) optimized expr : 0_d128(2,0) output type : Decimal(2, 0) output domain : {0..=0} @@ -1043,7 +1043,7 @@ output : 0 ast : CAST('.0' AS DECIMAL(1,0)) raw expr : CAST('.0' AS Decimal(1, 0)) -checked expr : to_decimal(1, 0)(".0") +checked expr : CAST(".0" AS Decimal(1, 0)) optimized expr : 0_d128(1,0) output type : Decimal(1, 0) output domain : {0..=0} @@ -1052,7 +1052,7 @@ output : 0 ast : CAST('+1.0e-10' AS DECIMAL(11, 10)) raw expr : CAST('+1.0e-10' AS Decimal(11, 10)) -checked expr : to_decimal(11, 10)("+1.0e-10") +checked expr : CAST("+1.0e-10" AS Decimal(11, 10)) optimized expr : 0.0000000001_d128(11,10) output type : Decimal(11, 10) output domain : {0.0000000001..=0.0000000001} @@ -1061,7 +1061,7 @@ output : 0.0000000001 ast : CAST('-1.0e+10' AS DECIMAL(11, 0)) raw expr : CAST('-1.0e+10' AS Decimal(11, 0)) -checked expr : to_decimal(11, 0)("-1.0e+10") +checked expr : CAST("-1.0e+10" AS Decimal(11, 0)) optimized expr : -10000000000_d128(11,0) output type : Decimal(11, 0) output domain : {-10000000000..=-10000000000} @@ -1070,7 +1070,7 @@ output : -10000000000 ast : CAST('-0.000000' AS DECIMAL(11, 0)) raw expr : CAST('-0.000000' AS Decimal(11, 0)) -checked expr : to_decimal(11, 0)("-0.000000") +checked expr : CAST("-0.000000" AS Decimal(11, 0)) optimized expr : 0_d128(11,0) output type : Decimal(11, 0) output domain : {0..=0} @@ -1079,7 +1079,7 @@ output : 0 ast : CAST(0 AS BOOLEAN) raw expr : CAST(0 AS Boolean) -checked expr : to_boolean(0_u8) +checked expr : CAST(0_u8 AS Boolean) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1088,7 +1088,7 @@ output : false ast : CAST(1 AS BOOLEAN) raw expr : CAST(1 AS Boolean) -checked expr : to_boolean(1_u8) +checked expr : CAST(1_u8 AS Boolean) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1097,7 +1097,7 @@ output : true ast : CAST(false AS UINT64) raw expr : CAST(false AS UInt64) -checked expr : to_uint64(false) +checked expr : CAST(false AS UInt64) optimized expr : 0_u64 output type : UInt64 output domain : {0..=0} @@ -1106,7 +1106,7 @@ output : 0 ast : CAST(true AS INT64) raw expr : CAST(true AS Int64) -checked expr : to_int64(true) +checked expr : CAST(true AS Int64) optimized expr : 1_i64 output type : Int64 output domain : {1..=1} @@ -1115,7 +1115,7 @@ output : 1 ast : CAST(0.0 AS BOOLEAN) raw expr : CAST(0.0 AS Boolean) -checked expr : to_boolean(to_float64(0.0_d128(1,1))) +checked expr : CAST(0.0_d128(1,1) AS Boolean) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1124,7 +1124,7 @@ output : false ast : CAST(1.0 AS BOOLEAN) raw expr : CAST(1.0 AS Boolean) -checked expr : to_boolean(to_float64(1.0_d128(2,1))) +checked expr : CAST(1.0_d128(2,1) AS Boolean) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1133,7 +1133,7 @@ output : true ast : CAST(false AS FLOAT32) raw expr : CAST(false AS Float32) -checked expr : to_float32(false) +checked expr : CAST(false AS Float32) optimized expr : 0_f32 output type : Float32 output domain : {0..=0} @@ -1142,7 +1142,7 @@ output : 0 ast : CAST(true AS FLOAT64) raw expr : CAST(true AS Float64) -checked expr : to_float64(true) +checked expr : CAST(true AS Float64) optimized expr : 1_f64 output type : Float64 output domain : {1..=1} @@ -1151,7 +1151,7 @@ output : 1 ast : CAST(false AS DECIMAL(4,3)) raw expr : CAST(false AS Decimal(4, 3)) -checked expr : to_decimal(4, 3)(false) +checked expr : CAST(false AS Decimal(4, 3)) optimized expr : 0.000_d128(4,3) output type : Decimal(4, 3) output domain : {0.000..=0.000} @@ -1160,7 +1160,7 @@ output : 0.000 ast : CAST(true AS DECIMAL(4,2)) raw expr : CAST(true AS Decimal(4, 2)) -checked expr : to_decimal(4, 2)(true) +checked expr : CAST(true AS Decimal(4, 2)) optimized expr : 1.00_d128(4,2) output type : Decimal(4, 2) output domain : {1.00..=1.00} @@ -1169,7 +1169,7 @@ output : 1.00 ast : CAST(num AS BOOLEAN) raw expr : CAST(num::Int64 AS Boolean) -checked expr : to_boolean(num) +checked expr : CAST(num AS Boolean) evaluation: +--------+----------+---------------+ | | num | Output | @@ -1192,7 +1192,7 @@ evaluation (internal): ast : CAST(num AS BOOLEAN) raw expr : CAST(num::UInt64 AS Boolean) -checked expr : to_boolean(num) +checked expr : CAST(num AS Boolean) evaluation: +--------+---------+---------------+ | | num | Output | @@ -1214,7 +1214,7 @@ evaluation (internal): ast : CAST(bool AS UINT64) raw expr : CAST(bool::Boolean AS UInt64) -checked expr : to_uint64(bool) +checked expr : CAST(bool AS UInt64) evaluation: +--------+---------------+---------+ | | bool | Output | @@ -1235,7 +1235,7 @@ evaluation (internal): ast : CAST(bool AS INT64) raw expr : CAST(bool::Boolean AS Int64) -checked expr : to_int64(bool) +checked expr : CAST(bool AS Int64) evaluation: +--------+---------------+---------+ | | bool | Output | @@ -1256,7 +1256,7 @@ evaluation (internal): ast : CAST(TO_DATE(1) AS TIMESTAMP) raw expr : CAST(TO_DATE(1) AS Timestamp) -checked expr : to_timestamp(to_date(to_int64(1_u8))) +checked expr : CAST(to_date(CAST(1_u8 AS Int64)) AS Timestamp) optimized expr : 86400000000 output type : Timestamp output domain : {86400000000..=86400000000} @@ -1265,7 +1265,7 @@ output : '1970-01-02 00:00:00.000000' ast : CAST(TO_TIMESTAMP(1) AS DATE) raw expr : CAST(TO_TIMESTAMP(1) AS Date) -checked expr : to_date(to_timestamp(to_int64(1_u8))) +checked expr : CAST(to_timestamp(CAST(1_u8 AS Int64)) AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -1274,7 +1274,7 @@ output : '1970-01-01' ast : CAST(a AS DATE) raw expr : CAST(a::Timestamp AS Date) -checked expr : to_date(a) +checked expr : CAST(a AS Date) evaluation: +--------+--------------------------------------+----------------+ | | a | Output | @@ -1300,7 +1300,7 @@ evaluation (internal): ast : CAST(a AS TIMESTAMP) raw expr : CAST(a::Date AS Timestamp) -checked expr : to_timestamp(a) +checked expr : CAST(a AS Timestamp) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -1324,7 +1324,7 @@ evaluation (internal): ast : CAST(TO_DATE(a) AS TIMESTAMP) raw expr : CAST(TO_DATE(a::Int32) AS Timestamp) -checked expr : to_timestamp(to_date(to_int64(a))) +checked expr : CAST(to_date(CAST(a AS Int64)) AS Timestamp) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -1348,7 +1348,7 @@ evaluation (internal): ast : CAST(a AS TIMESTAMP) raw expr : CAST(a::Int64 AS Timestamp) -checked expr : to_timestamp(a) +checked expr : CAST(a AS Timestamp) optimized expr : -62135596800000000 evaluation: +--------+---------------------------------------------+-------------------------------------------+ @@ -1369,7 +1369,7 @@ evaluation (internal): ast : CAST(a AS DATE) raw expr : CAST(a::Int64 AS Date) -checked expr : to_date(a) +checked expr : CAST(a AS Date) optimized expr : -719162 evaluation: +--------+---------------------------------------------+---------------------+ @@ -1492,7 +1492,7 @@ evaluation (internal): ast : CAST(TO_TIMESTAMP(-315360000000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(315360000000000)) AS String) -checked expr : to_string(to_timestamp(minus(315360000000000_u64))) +checked expr : CAST(to_timestamp(minus(315360000000000_u64)) AS String) optimized expr : "1960-01-04 00:00:00.000000" output type : String output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -1501,7 +1501,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(TO_TIMESTAMP(-315360000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(315360000000)) AS String) -checked expr : to_string(to_timestamp(minus(315360000000_u64))) +checked expr : CAST(to_timestamp(minus(315360000000_u64)) AS String) optimized expr : "1960-01-04 00:00:00.000000" output type : String output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -1510,7 +1510,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(TO_TIMESTAMP(-100) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(100)) AS String) -checked expr : to_string(to_timestamp(to_int64(minus(100_u8)))) +checked expr : CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS String) optimized expr : "1969-12-31 23:58:20.000000" output type : String output domain : {"1969-12-31 23:58:20.000000"..="1969-12-31 23:58:20.000000"} @@ -1519,7 +1519,7 @@ output : '1969-12-31 23:58:20.000000' ast : CAST(TO_TIMESTAMP(-0) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(0)) AS String) -checked expr : to_string(to_timestamp(to_int64(minus(0_u8)))) +checked expr : CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS String) optimized expr : "1970-01-01 00:00:00.000000" output type : String output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -1528,7 +1528,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(TO_TIMESTAMP(0) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(0) AS String) -checked expr : to_string(to_timestamp(to_int64(0_u8))) +checked expr : CAST(to_timestamp(CAST(0_u8 AS Int64)) AS String) optimized expr : "1970-01-01 00:00:00.000000" output type : String output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -1537,7 +1537,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(TO_TIMESTAMP(100) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(100) AS String) -checked expr : to_string(to_timestamp(to_int64(100_u8))) +checked expr : CAST(to_timestamp(CAST(100_u8 AS Int64)) AS String) optimized expr : "1970-01-01 00:01:40.000000" output type : String output domain : {"1970-01-01 00:01:40.000000"..="1970-01-01 00:01:40.000000"} @@ -1546,7 +1546,7 @@ output : '1970-01-01 00:01:40.000000' ast : CAST(TO_TIMESTAMP(315360000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(315360000000) AS String) -checked expr : to_string(to_timestamp(to_int64(315360000000_u64))) +checked expr : CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS String) optimized expr : "1979-12-30 00:00:00.000000" output type : String output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -1555,7 +1555,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(TO_TIMESTAMP(315360000000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(315360000000000) AS String) -checked expr : to_string(to_timestamp(to_int64(315360000000000_u64))) +checked expr : CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS String) optimized expr : "1979-12-30 00:00:00.000000" output type : String output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -1564,7 +1564,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(a AS VARCHAR) raw expr : CAST(a::Timestamp AS String) -checked expr : to_string(a) +checked expr : CAST(a AS String) evaluation: +--------+--------------------------------------+------------------------------+ | | a | Output | @@ -1693,7 +1693,7 @@ evaluation (internal): ast : CAST(TO_DATE(-354285) AS VARCHAR) raw expr : CAST(TO_DATE(minus(354285)) AS String) -checked expr : to_string(to_date(minus(354285_u32))) +checked expr : CAST(to_date(minus(354285_u32)) AS String) optimized expr : "1000-01-01" output type : String output domain : {"1000-01-01"..="1000-01-01"} @@ -1702,7 +1702,7 @@ output : '1000-01-01' ast : CAST(TO_DATE(-100) AS VARCHAR) raw expr : CAST(TO_DATE(minus(100)) AS String) -checked expr : to_string(to_date(to_int64(minus(100_u8)))) +checked expr : CAST(to_date(CAST(minus(100_u8) AS Int64)) AS String) optimized expr : "1969-09-23" output type : String output domain : {"1969-09-23"..="1969-09-23"} @@ -1711,7 +1711,7 @@ output : '1969-09-23' ast : CAST(TO_DATE(-0) AS VARCHAR) raw expr : CAST(TO_DATE(minus(0)) AS String) -checked expr : to_string(to_date(to_int64(minus(0_u8)))) +checked expr : CAST(to_date(CAST(minus(0_u8) AS Int64)) AS String) optimized expr : "1970-01-01" output type : String output domain : {"1970-01-01"..="1970-01-01"} @@ -1720,7 +1720,7 @@ output : '1970-01-01' ast : CAST(TO_DATE(0) AS VARCHAR) raw expr : CAST(TO_DATE(0) AS String) -checked expr : to_string(to_date(to_int64(0_u8))) +checked expr : CAST(to_date(CAST(0_u8 AS Int64)) AS String) optimized expr : "1970-01-01" output type : String output domain : {"1970-01-01"..="1970-01-01"} @@ -1729,7 +1729,7 @@ output : '1970-01-01' ast : CAST(TO_DATE(100) AS VARCHAR) raw expr : CAST(TO_DATE(100) AS String) -checked expr : to_string(to_date(to_int64(100_u8))) +checked expr : CAST(to_date(CAST(100_u8 AS Int64)) AS String) optimized expr : "1970-04-11" output type : String output domain : {"1970-04-11"..="1970-04-11"} @@ -1738,7 +1738,7 @@ output : '1970-04-11' ast : CAST(TO_DATE(2932896) AS VARCHAR) raw expr : CAST(TO_DATE(2932896) AS String) -checked expr : to_string(to_date(to_int64(2932896_u32))) +checked expr : CAST(to_date(CAST(2932896_u32 AS Int64)) AS String) optimized expr : "9999-12-31" output type : String output domain : {"9999-12-31"..="9999-12-31"} @@ -1747,7 +1747,7 @@ output : '9999-12-31' ast : CAST(a AS VARCHAR) raw expr : CAST(a::Date AS String) -checked expr : to_string(a) +checked expr : CAST(a AS String) evaluation: +--------+---------------------+-------------------------------+ | | a | Output | @@ -1796,7 +1796,7 @@ output : ((1, 1), 1) ast : CAST(TRY_CAST(1 AS INT32) AS INT32) raw expr : CAST(TRY_CAST(1 AS Int32) AS Int32) -checked expr : CAST(try_to_int32(1_u8) AS Int32) +checked expr : CAST(TRY_CAST(1_u8 AS Int32 NULL) AS Int32) optimized expr : 1_i32 output type : Int32 output domain : {1..=1} @@ -1863,7 +1863,7 @@ error: ast : CAST('Abc' AS BINARY) raw expr : CAST('Abc' AS Binary) -checked expr : to_binary("Abc") +checked expr : CAST("Abc" AS Binary) optimized expr : 416263 output type : Binary output domain : Undefined @@ -1872,7 +1872,7 @@ output : 416263 ast : CAST('Dobrý den' AS BINARY) raw expr : CAST('Dobrý den' AS Binary) -checked expr : to_binary("Dobrý den") +checked expr : CAST("Dobrý den" AS Binary) optimized expr : 446F6272C3BD2064656E output type : Binary output domain : Undefined @@ -1881,7 +1881,7 @@ output : 446F6272C3BD2064656E ast : CAST('ß😀山' AS BINARY) raw expr : CAST('ß😀山' AS Binary) -checked expr : to_binary("ß😀山") +checked expr : CAST("ß😀山" AS Binary) optimized expr : C39FF09F9880E5B1B1 output type : Binary output domain : Undefined @@ -1907,7 +1907,7 @@ output : NULL ast : CAST(a AS BINARY) raw expr : CAST(a::String AS Binary) -checked expr : to_binary(a) +checked expr : CAST(a AS Binary) evaluation: +--------+-------------------+----------------------+ | | a | Output | @@ -1959,7 +1959,7 @@ evaluation (internal): ast : CAST(CAST('Abc' AS BINARY) AS STRING) raw expr : CAST(CAST('Abc' AS Binary) AS String) -checked expr : to_string(to_binary("Abc")) +checked expr : CAST(CAST("Abc" AS Binary) AS String) optimized expr : "Abc" output type : String output domain : {"Abc"..="Abc"} @@ -1968,7 +1968,7 @@ output : 'Abc' ast : CAST(CAST('Dobrý den' AS BINARY) AS STRING) raw expr : CAST(CAST('Dobrý den' AS Binary) AS String) -checked expr : to_string(to_binary("Dobrý den")) +checked expr : CAST(CAST("Dobrý den" AS Binary) AS String) optimized expr : "Dobrý den" output type : String output domain : {"Dobrý den"..="Dobrý den"} @@ -1977,7 +1977,7 @@ output : 'Dobrý den' ast : CAST(CAST('ß😀山' AS BINARY) AS STRING) raw expr : CAST(CAST('ß😀山' AS Binary) AS String) -checked expr : to_string(to_binary("ß😀山")) +checked expr : CAST(CAST("ß😀山" AS Binary) AS String) optimized expr : "ß😀山" output type : String output domain : {"ß😀山"..="ß😀山"} @@ -1988,7 +1988,7 @@ error: --> SQL:1:6 | 1 | CAST(CAST(NULL AS BINARY) AS STRING) - | ^^^^^^^^^^^^^^^^^^^^ unable to cast type `NULL` to type `Binary`, during run expr: `to_string(CAST(NULL AS Binary))` + | ^^^^^^^^^^^^^^^^^^^^ unable to cast type `NULL` to type `Binary`, during run expr: `CAST(CAST(NULL AS Binary) AS String)` @@ -2003,7 +2003,7 @@ output : NULL ast : CAST(CAST(a AS BINARY) AS STRING) raw expr : CAST(CAST(a::String AS Binary) AS String) -checked expr : to_string(to_binary(a)) +checked expr : CAST(CAST(a AS Binary) AS String) evaluation: +--------+-------------------+-------------+ | | a | Output | @@ -2027,7 +2027,7 @@ error: --> SQL:1:6 | 1 | CAST(CAST(a AS BINARY) AS STRING) - | ^^^^^^^^^^^^^^^^^ unable to cast `NULL` to type `Binary`, during run expr: `to_string(CAST(a AS Binary))` + | ^^^^^^^^^^^^^^^^^ unable to cast `NULL` to type `Binary`, during run expr: `CAST(CAST(a AS Binary) AS String)` @@ -2091,7 +2091,7 @@ output : 'str' ast : TRY_CAST(NULL AS UINT8) raw expr : TRY_CAST(NULL AS UInt8) -checked expr : try_to_uint8(CAST(NULL AS Variant NULL)) +checked expr : TRY_CAST(NULL AS UInt8 NULL) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -2109,7 +2109,7 @@ output : NULL ast : TRY_CAST(NULL AS STRING) raw expr : TRY_CAST(NULL AS String) -checked expr : try_to_string(CAST(NULL AS Variant NULL)) +checked expr : TRY_CAST(NULL AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -2127,7 +2127,7 @@ output : NULL ast : TRY_CAST(1024 AS UINT8) raw expr : TRY_CAST(1024 AS UInt8) -checked expr : try_to_uint8(1024_u16) +checked expr : TRY_CAST(1024_u16 AS UInt8 NULL) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -2136,7 +2136,7 @@ output : NULL ast : TRY_CAST(a AS UINT8) raw expr : TRY_CAST(a::UInt16 AS UInt8) -checked expr : try_to_uint8(a) +checked expr : TRY_CAST(a AS UInt8 NULL) evaluation: +--------+------------+--------------------+ | | a | Output | @@ -2160,7 +2160,7 @@ evaluation (internal): ast : TRY_CAST(a AS UINT16) raw expr : TRY_CAST(a::Int16 AS UInt16) -checked expr : try_to_uint16(a) +checked expr : TRY_CAST(a AS UInt16 NULL) evaluation: +--------+----------+------------------+ | | a | Output | @@ -2184,7 +2184,7 @@ evaluation (internal): ast : TRY_CAST(a AS INT64) raw expr : TRY_CAST(a::Int16 AS Int64) -checked expr : try_to_int64(a) +checked expr : TRY_CAST(a AS Int64 NULL) evaluation: +--------+----------+------------+ | | a | Output | @@ -2208,7 +2208,7 @@ evaluation (internal): ast : (TRY_CAST(a AS FLOAT32), TRY_CAST(a AS INT32), TRY_CAST(b AS FLOAT32), TRY_CAST(b AS INT32)) raw expr : tuple(TRY_CAST(a::UInt64 AS Float32), TRY_CAST(a::UInt64 AS Int32), TRY_CAST(b::Float64 AS Float32), TRY_CAST(b::Float64 AS Int32)) -checked expr : tuple(try_to_float32(a), try_to_int32(a), try_to_float32(b), try_to_int32(b)) +checked expr : tuple(TRY_CAST(a AS Float32 NULL), TRY_CAST(a AS Int32 NULL), TRY_CAST(b AS Float32 NULL), TRY_CAST(b AS Int32 NULL)) evaluation: +--------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ | | a | b | Output | @@ -2285,7 +2285,7 @@ evaluation (internal): ast : TRY_CAST(a AS INT16) raw expr : TRY_CAST(a::Float64 AS Int16) -checked expr : try_to_int16(a) +checked expr : TRY_CAST(a AS Int16 NULL) evaluation: +--------+--------------+------------+ | | a | Output | @@ -2309,7 +2309,7 @@ evaluation (internal): ast : TRY_CAST(b AS INT16) raw expr : TRY_CAST(b::Int8 AS Int16) -checked expr : try_to_int16(b) +checked expr : TRY_CAST(b AS Int16 NULL) evaluation: +--------+----------+------------+ | | b | Output | @@ -2333,7 +2333,7 @@ evaluation (internal): ast : TRY_CAST(a AS UINT16) raw expr : TRY_CAST(a::Int16 AS UInt16) -checked expr : try_to_uint16(a) +checked expr : TRY_CAST(a AS UInt16 NULL) evaluation: +--------+----------+------------------+ | | a | Output | @@ -2357,7 +2357,7 @@ evaluation (internal): ast : TRY_CAST(c AS INT16) raw expr : TRY_CAST(c::Int64 AS Int16) -checked expr : try_to_int16(c) +checked expr : TRY_CAST(c AS Int16 NULL) evaluation: +--------+--------------------+-----------------------+ | | c | Output | @@ -2381,7 +2381,7 @@ evaluation (internal): ast : TRY_CAST(NULL AS VARIANT) raw expr : TRY_CAST(NULL AS Variant) -checked expr : try_to_variant(NULL) +checked expr : TRY_CAST(NULL AS Variant NULL) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -2390,7 +2390,7 @@ output : NULL ast : TRY_CAST(0 AS VARIANT) raw expr : TRY_CAST(0 AS Variant) -checked expr : try_to_variant(0_u8) +checked expr : TRY_CAST(0_u8 AS Variant NULL) optimized expr : 0x200000002000000100 output type : Variant NULL output domain : Undefined @@ -2399,7 +2399,7 @@ output : '0' ast : TRY_CAST(-1 AS VARIANT) raw expr : TRY_CAST(minus(1) AS Variant) -checked expr : try_to_variant(minus(1_u8)) +checked expr : TRY_CAST(minus(1_u8) AS Variant NULL) optimized expr : 0x200000002000000240ff output type : Variant NULL output domain : Undefined @@ -2408,7 +2408,7 @@ output : '-1' ast : TRY_CAST(1.1 AS VARIANT) raw expr : TRY_CAST(1.1 AS Variant) -checked expr : try_to_variant(1.1_d128(2,1)) +checked expr : TRY_CAST(1.1_d128(2,1) AS Variant NULL) optimized expr : 0x2000000020000009603ff199999999999a output type : Variant NULL output domain : Undefined @@ -2417,7 +2417,7 @@ output : '1.1' ast : TRY_CAST('🍦 が美味しい' AS VARIANT) raw expr : TRY_CAST('🍦 が美味しい' AS Variant) -checked expr : try_parse_json("🍦 が美味しい") +checked expr : TRY_CAST("🍦 が美味しい" AS Variant NULL) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -2426,7 +2426,7 @@ output : NULL ast : TRY_CAST([0, 1, 2] AS VARIANT) raw expr : TRY_CAST(array(0, 1, 2) AS Variant) -checked expr : try_to_variant(array(0_u8, 1_u8, 2_u8)) +checked expr : TRY_CAST(array(0_u8, 1_u8, 2_u8) AS Variant NULL) optimized expr : 0x800000032000000120000002200000020050015002 output type : Variant NULL output domain : Undefined @@ -2435,7 +2435,7 @@ output : '[0,1,2]' ast : TRY_CAST([0::VARIANT, '"a"'::VARIANT] AS VARIANT) raw expr : TRY_CAST(array(CAST(0 AS Variant), CAST('"a"' AS Variant)) AS Variant) -checked expr : try_to_variant(array(to_variant(0_u8), parse_json("\"a\""))) +checked expr : TRY_CAST(array(CAST(0_u8 AS Variant), CAST("\"a\"" AS Variant)) AS Variant NULL) optimized expr : 0x8000000220000001100000010061 output type : Variant NULL output domain : Undefined @@ -2444,7 +2444,7 @@ output : '[0,"a"]' ast : TRY_CAST(to_timestamp(1000000) AS VARIANT) raw expr : TRY_CAST(to_timestamp(1000000) AS Variant) -checked expr : try_to_variant(to_timestamp(to_int64(1000000_u32))) +checked expr : TRY_CAST(to_timestamp(CAST(1000000_u32 AS Int64)) AS Variant NULL) optimized expr : 0x200000001000001a313937302d30312d31322031333a34363a34302e303030303030 output type : Variant NULL output domain : Undefined @@ -2453,7 +2453,7 @@ output : '"1970-01-12 13:46:40.000000"' ast : TRY_CAST(false AS VARIANT) raw expr : TRY_CAST(false AS Variant) -checked expr : try_to_variant(false) +checked expr : TRY_CAST(false AS Variant NULL) optimized expr : 0x2000000030000000 output type : Variant NULL output domain : Undefined @@ -2462,7 +2462,7 @@ output : 'false' ast : TRY_CAST(true AS VARIANT) raw expr : TRY_CAST(true AS Variant) -checked expr : try_to_variant(true) +checked expr : TRY_CAST(true AS Variant NULL) optimized expr : 0x2000000040000000 output type : Variant NULL output domain : Undefined @@ -2471,7 +2471,7 @@ output : 'true' ast : TRY_CAST(TRY_CAST('"🍦 が美味しい"' AS VARIANT) AS VARIANT) raw expr : TRY_CAST(TRY_CAST('"🍦 が美味しい"' AS Variant) AS Variant) -checked expr : try_parse_json("\"🍦 が美味しい\"") +checked expr : TRY_CAST("\"🍦 が美味しい\"" AS Variant NULL) optimized expr : 0x2000000010000014f09f8da620e3818ce7be8ee591b3e38197e38184 output type : Variant NULL output domain : Undefined @@ -2480,7 +2480,7 @@ output : '"🍦 が美味しい"' ast : TRY_CAST((1,) AS VARIANT) raw expr : TRY_CAST(tuple(1) AS Variant) -checked expr : try_to_variant(tuple(1_u8)) +checked expr : TRY_CAST(tuple(1_u8) AS Variant NULL) optimized expr : 0x400000011000000120000002315001 output type : Variant NULL output domain : Undefined @@ -2489,7 +2489,7 @@ output : '{"1":1}' ast : TRY_CAST((1, 2) AS VARIANT) raw expr : TRY_CAST(tuple(1, 2) AS Variant) -checked expr : try_to_variant(tuple(1_u8, 2_u8)) +checked expr : TRY_CAST(tuple(1_u8, 2_u8) AS Variant NULL) optimized expr : 0x4000000210000001100000012000000220000002313250015002 output type : Variant NULL output domain : Undefined @@ -2498,7 +2498,7 @@ output : '{"1":1,"2":2}' ast : TRY_CAST((false, true) AS VARIANT) raw expr : TRY_CAST(tuple(false, true) AS Variant) -checked expr : try_to_variant(tuple(false, true)) +checked expr : TRY_CAST(tuple(false, true) AS Variant NULL) optimized expr : 0x40000002100000011000000130000000400000003132 output type : Variant NULL output domain : Undefined @@ -2507,7 +2507,7 @@ output : '{"1":false,"2":true}' ast : TRY_CAST(('a',) AS VARIANT) raw expr : TRY_CAST(tuple('a') AS Variant) -checked expr : try_to_variant(tuple("a")) +checked expr : TRY_CAST(tuple("a") AS Variant NULL) optimized expr : 0x4000000110000001100000013161 output type : Variant NULL output domain : Undefined @@ -2516,7 +2516,7 @@ output : '{"1":"a"}' ast : TRY_CAST((1, 2, (false, true, ('a',))) AS VARIANT) raw expr : TRY_CAST(tuple(1, 2, tuple(false, true, tuple('a'))) AS Variant) -checked expr : try_to_variant(tuple(1_u8, 2_u8, tuple(false, true, tuple("a")))) +checked expr : TRY_CAST(tuple(1_u8, 2_u8, tuple(false, true, tuple("a"))) AS Variant NULL) optimized expr : 0x4000000310000001100000011000000120000002200000025000002d313233500150024000000310000001100000011000000130000000400000005000000e3132334000000110000001100000013161 output type : Variant NULL output domain : Undefined @@ -2525,7 +2525,7 @@ output : '{"1":1,"2":2,"3":{"1":false,"2":true,"3":{"1":"a"}}}' ast : TRY_CAST(a AS VARIANT) raw expr : TRY_CAST(a::String NULL AS Variant) -checked expr : try_parse_json(a) +checked expr : TRY_CAST(a AS Variant NULL) evaluation: +--------+-------------------------------+--------------------+ | | a | Output | @@ -2547,7 +2547,7 @@ evaluation (internal): ast : TRY_CAST(a AS VARIANT) raw expr : TRY_CAST(a::Bitmap AS Variant) -checked expr : try_to_variant(a) +checked expr : TRY_CAST(a AS Variant NULL) evaluation: +--------+-------------+---------------+ | | a | Output | @@ -2570,7 +2570,7 @@ evaluation (internal): ast : TRY_CAST(-30610224000000001 AS TIMESTAMP) raw expr : TRY_CAST(minus(30610224000000001) AS Timestamp) -checked expr : try_to_timestamp(minus(30610224000000001_u64)) +checked expr : TRY_CAST(minus(30610224000000001_u64) AS Timestamp NULL) optimized expr : -30610224000000001 output type : Timestamp NULL output domain : {-30610224000000001..=-30610224000000001} @@ -2579,7 +2579,7 @@ output : '0999-12-31 23:59:59.999999' ast : TRY_CAST(-315360000000000 AS TIMESTAMP) raw expr : TRY_CAST(minus(315360000000000) AS Timestamp) -checked expr : try_to_timestamp(minus(315360000000000_u64)) +checked expr : TRY_CAST(minus(315360000000000_u64) AS Timestamp NULL) optimized expr : -315360000000000 output type : Timestamp NULL output domain : {-315360000000000..=-315360000000000} @@ -2588,7 +2588,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(-315360000000 AS TIMESTAMP) raw expr : TRY_CAST(minus(315360000000) AS Timestamp) -checked expr : try_to_timestamp(minus(315360000000_u64)) +checked expr : TRY_CAST(minus(315360000000_u64) AS Timestamp NULL) optimized expr : -315360000000000 output type : Timestamp NULL output domain : {-315360000000000..=-315360000000000} @@ -2597,7 +2597,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(-100 AS TIMESTAMP) raw expr : TRY_CAST(minus(100) AS Timestamp) -checked expr : try_to_timestamp(to_int64(minus(100_u8))) +checked expr : TRY_CAST(minus(100_u8) AS Timestamp NULL) optimized expr : -100000000 output type : Timestamp NULL output domain : {-100000000..=-100000000} @@ -2606,7 +2606,7 @@ output : '1969-12-31 23:58:20.000000' ast : TRY_CAST(-0 AS TIMESTAMP) raw expr : TRY_CAST(minus(0) AS Timestamp) -checked expr : try_to_timestamp(to_int64(minus(0_u8))) +checked expr : TRY_CAST(minus(0_u8) AS Timestamp NULL) optimized expr : 0 output type : Timestamp NULL output domain : {0..=0} @@ -2615,7 +2615,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(0 AS TIMESTAMP) raw expr : TRY_CAST(0 AS Timestamp) -checked expr : try_to_timestamp(to_int64(0_u8)) +checked expr : TRY_CAST(0_u8 AS Timestamp NULL) optimized expr : 0 output type : Timestamp NULL output domain : {0..=0} @@ -2624,7 +2624,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(100 AS TIMESTAMP) raw expr : TRY_CAST(100 AS Timestamp) -checked expr : try_to_timestamp(to_int64(100_u8)) +checked expr : TRY_CAST(100_u8 AS Timestamp NULL) optimized expr : 100000000 output type : Timestamp NULL output domain : {100000000..=100000000} @@ -2633,7 +2633,7 @@ output : '1970-01-01 00:01:40.000000' ast : TRY_CAST(315360000000 AS TIMESTAMP) raw expr : TRY_CAST(315360000000 AS Timestamp) -checked expr : try_to_timestamp(to_int64(315360000000_u64)) +checked expr : TRY_CAST(315360000000_u64 AS Timestamp NULL) optimized expr : 315360000000000 output type : Timestamp NULL output domain : {315360000000000..=315360000000000} @@ -2642,7 +2642,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(315360000000000 AS TIMESTAMP) raw expr : TRY_CAST(315360000000000 AS Timestamp) -checked expr : try_to_timestamp(to_int64(315360000000000_u64)) +checked expr : TRY_CAST(315360000000000_u64 AS Timestamp NULL) optimized expr : 315360000000000 output type : Timestamp NULL output domain : {315360000000000..=315360000000000} @@ -2651,7 +2651,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(253402300800000000 AS TIMESTAMP) raw expr : TRY_CAST(253402300800000000 AS Timestamp) -checked expr : try_to_timestamp(to_int64(253402300800000000_u64)) +checked expr : TRY_CAST(253402300800000000_u64 AS Timestamp NULL) optimized expr : -62135596800000000 output type : Timestamp NULL output domain : {-62135596800000000..=-62135596800000000} @@ -2660,7 +2660,7 @@ output : '0001-01-01 00:00:00.000000' ast : TRY_CAST(a AS TIMESTAMP) raw expr : TRY_CAST(a::Int64 AS Timestamp) -checked expr : try_to_timestamp(a) +checked expr : TRY_CAST(a AS Timestamp NULL) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -2686,7 +2686,7 @@ evaluation (internal): ast : TRY_CAST(TO_TIMESTAMP(-315360000000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000000)) AS Int64) -checked expr : try_to_int64(to_timestamp(minus(315360000000000_u64))) +checked expr : TRY_CAST(to_timestamp(minus(315360000000000_u64)) AS Int64 NULL) optimized expr : -315360000000000_i64 output type : Int64 NULL output domain : {-315360000000000..=-315360000000000} @@ -2695,7 +2695,7 @@ output : -315360000000000 ast : TRY_CAST(TO_TIMESTAMP(-315360000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000)) AS Int64) -checked expr : try_to_int64(to_timestamp(minus(315360000000_u64))) +checked expr : TRY_CAST(to_timestamp(minus(315360000000_u64)) AS Int64 NULL) optimized expr : -315360000000000_i64 output type : Int64 NULL output domain : {-315360000000000..=-315360000000000} @@ -2704,7 +2704,7 @@ output : -315360000000000 ast : TRY_CAST(TO_TIMESTAMP(-100) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(100)) AS Int64) -checked expr : try_to_int64(to_timestamp(to_int64(minus(100_u8)))) +checked expr : TRY_CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS Int64 NULL) optimized expr : -100000000_i64 output type : Int64 NULL output domain : {-100000000..=-100000000} @@ -2713,7 +2713,7 @@ output : -100000000 ast : TRY_CAST(TO_TIMESTAMP(-0) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(0)) AS Int64) -checked expr : try_to_int64(to_timestamp(to_int64(minus(0_u8)))) +checked expr : TRY_CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2722,7 +2722,7 @@ output : 0 ast : TRY_CAST(TO_TIMESTAMP(0) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(0) AS Int64) -checked expr : try_to_int64(to_timestamp(to_int64(0_u8))) +checked expr : TRY_CAST(to_timestamp(CAST(0_u8 AS Int64)) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2731,7 +2731,7 @@ output : 0 ast : TRY_CAST(TO_TIMESTAMP(100) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(100) AS Int64) -checked expr : try_to_int64(to_timestamp(to_int64(100_u8))) +checked expr : TRY_CAST(to_timestamp(CAST(100_u8 AS Int64)) AS Int64 NULL) optimized expr : 100000000_i64 output type : Int64 NULL output domain : {100000000..=100000000} @@ -2740,7 +2740,7 @@ output : 100000000 ast : TRY_CAST(TO_TIMESTAMP(315360000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000) AS Int64) -checked expr : try_to_int64(to_timestamp(to_int64(315360000000_u64))) +checked expr : TRY_CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS Int64 NULL) optimized expr : 315360000000000_i64 output type : Int64 NULL output domain : {315360000000000..=315360000000000} @@ -2749,7 +2749,7 @@ output : 315360000000000 ast : TRY_CAST(TO_TIMESTAMP(315360000000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000000) AS Int64) -checked expr : try_to_int64(to_timestamp(to_int64(315360000000000_u64))) +checked expr : TRY_CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS Int64 NULL) optimized expr : 315360000000000_i64 output type : Int64 NULL output domain : {315360000000000..=315360000000000} @@ -2758,7 +2758,7 @@ output : 315360000000000 ast : TRY_CAST(a AS INT64) raw expr : TRY_CAST(a::Timestamp AS Int64) -checked expr : try_to_int64(a) +checked expr : TRY_CAST(a AS Int64 NULL) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -2784,7 +2784,7 @@ evaluation (internal): ast : TRY_CAST(-354286 AS DATE) raw expr : TRY_CAST(minus(354286) AS Date) -checked expr : try_to_date(minus(354286_u32)) +checked expr : TRY_CAST(minus(354286_u32) AS Date NULL) optimized expr : -354286 output type : Date NULL output domain : {-354286..=-354286} @@ -2793,7 +2793,7 @@ output : '0999-12-31' ast : TRY_CAST(-354285 AS DATE) raw expr : TRY_CAST(minus(354285) AS Date) -checked expr : try_to_date(minus(354285_u32)) +checked expr : TRY_CAST(minus(354285_u32) AS Date NULL) optimized expr : -354285 output type : Date NULL output domain : {-354285..=-354285} @@ -2802,7 +2802,7 @@ output : '1000-01-01' ast : TRY_CAST(-100 AS DATE) raw expr : TRY_CAST(minus(100) AS Date) -checked expr : try_to_date(to_int64(minus(100_u8))) +checked expr : TRY_CAST(minus(100_u8) AS Date NULL) optimized expr : -100 output type : Date NULL output domain : {-100..=-100} @@ -2811,7 +2811,7 @@ output : '1969-09-23' ast : TRY_CAST(-0 AS DATE) raw expr : TRY_CAST(minus(0) AS Date) -checked expr : try_to_date(to_int64(minus(0_u8))) +checked expr : TRY_CAST(minus(0_u8) AS Date NULL) optimized expr : 0 output type : Date NULL output domain : {0..=0} @@ -2820,7 +2820,7 @@ output : '1970-01-01' ast : TRY_CAST(0 AS DATE) raw expr : TRY_CAST(0 AS Date) -checked expr : try_to_date(to_int64(0_u8)) +checked expr : TRY_CAST(0_u8 AS Date NULL) optimized expr : 0 output type : Date NULL output domain : {0..=0} @@ -2829,7 +2829,7 @@ output : '1970-01-01' ast : TRY_CAST(100 AS DATE) raw expr : TRY_CAST(100 AS Date) -checked expr : try_to_date(to_int64(100_u8)) +checked expr : TRY_CAST(100_u8 AS Date NULL) optimized expr : 100 output type : Date NULL output domain : {100..=100} @@ -2838,7 +2838,7 @@ output : '1970-04-11' ast : TRY_CAST(2932896 AS DATE) raw expr : TRY_CAST(2932896 AS Date) -checked expr : try_to_date(to_int64(2932896_u32)) +checked expr : TRY_CAST(2932896_u32 AS Date NULL) optimized expr : 2932896 output type : Date NULL output domain : {2932896..=2932896} @@ -2847,7 +2847,7 @@ output : '9999-12-31' ast : TRY_CAST(2932897 AS DATE) raw expr : TRY_CAST(2932897 AS Date) -checked expr : try_to_date(to_int64(2932897_u32)) +checked expr : TRY_CAST(2932897_u32 AS Date NULL) optimized expr : -719162 output type : Date NULL output domain : {-719162..=-719162} @@ -2856,7 +2856,7 @@ output : '0001-01-01' ast : TRY_CAST(a AS DATE) raw expr : TRY_CAST(a::Int32 AS Date) -checked expr : try_to_date(to_int64(a)) +checked expr : TRY_CAST(a AS Date NULL) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -2880,7 +2880,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(-354285) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(354285)) AS Int64) -checked expr : try_to_int64(to_date(minus(354285_u32))) +checked expr : TRY_CAST(to_date(minus(354285_u32)) AS Int64 NULL) optimized expr : -354285_i64 output type : Int64 NULL output domain : {-354285..=-354285} @@ -2889,7 +2889,7 @@ output : -354285 ast : TRY_CAST(TO_DATE(-100) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(100)) AS Int64) -checked expr : try_to_int64(to_date(to_int64(minus(100_u8)))) +checked expr : TRY_CAST(to_date(CAST(minus(100_u8) AS Int64)) AS Int64 NULL) optimized expr : -100_i64 output type : Int64 NULL output domain : {-100..=-100} @@ -2898,7 +2898,7 @@ output : -100 ast : TRY_CAST(TO_DATE(-0) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(0)) AS Int64) -checked expr : try_to_int64(to_date(to_int64(minus(0_u8)))) +checked expr : TRY_CAST(to_date(CAST(minus(0_u8) AS Int64)) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2907,7 +2907,7 @@ output : 0 ast : TRY_CAST(TO_DATE(0) AS INT64) raw expr : TRY_CAST(TO_DATE(0) AS Int64) -checked expr : try_to_int64(to_date(to_int64(0_u8))) +checked expr : TRY_CAST(to_date(CAST(0_u8 AS Int64)) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2916,7 +2916,7 @@ output : 0 ast : TRY_CAST(TO_DATE(100) AS INT64) raw expr : TRY_CAST(TO_DATE(100) AS Int64) -checked expr : try_to_int64(to_date(to_int64(100_u8))) +checked expr : TRY_CAST(to_date(CAST(100_u8 AS Int64)) AS Int64 NULL) optimized expr : 100_i64 output type : Int64 NULL output domain : {100..=100} @@ -2925,7 +2925,7 @@ output : 100 ast : TRY_CAST(TO_DATE(2932896) AS INT64) raw expr : TRY_CAST(TO_DATE(2932896) AS Int64) -checked expr : try_to_int64(to_date(to_int64(2932896_u32))) +checked expr : TRY_CAST(to_date(CAST(2932896_u32 AS Int64)) AS Int64 NULL) optimized expr : 2932896_i64 output type : Int64 NULL output domain : {2932896..=2932896} @@ -2934,7 +2934,7 @@ output : 2932896 ast : TRY_CAST(a AS INT64) raw expr : TRY_CAST(a::Date AS Int64) -checked expr : try_to_int64(a) +checked expr : TRY_CAST(a AS Int64 NULL) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -2958,7 +2958,7 @@ evaluation (internal): ast : TRY_CAST('foo' AS UINT64) raw expr : TRY_CAST('foo' AS UInt64) -checked expr : try_to_uint64("foo") +checked expr : TRY_CAST("foo" AS UInt64 NULL) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -2967,7 +2967,7 @@ output : NULL ast : TRY_CAST('1foo' AS INT32) raw expr : TRY_CAST('1foo' AS Int32) -checked expr : try_to_int32("1foo") +checked expr : TRY_CAST("1foo" AS Int32 NULL) optimized expr : NULL output type : Int32 NULL output domain : {NULL} @@ -2976,7 +2976,7 @@ output : NULL ast : TRY_CAST('-1' AS UINT64) raw expr : TRY_CAST('-1' AS UInt64) -checked expr : try_to_uint64("-1") +checked expr : TRY_CAST("-1" AS UInt64 NULL) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -2985,7 +2985,7 @@ output : NULL ast : TRY_CAST('256' AS UINT8) raw expr : TRY_CAST('256' AS UInt8) -checked expr : try_to_uint8("256") +checked expr : TRY_CAST("256" AS UInt8 NULL) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -2994,7 +2994,7 @@ output : NULL ast : TRY_CAST('1' AS UINT64) raw expr : TRY_CAST('1' AS UInt64) -checked expr : try_to_uint64("1") +checked expr : TRY_CAST("1" AS UInt64 NULL) optimized expr : 1_u64 output type : UInt64 NULL output domain : {1..=1} @@ -3003,7 +3003,7 @@ output : 1 ast : TRY_CAST(str AS INT64) raw expr : TRY_CAST(str::String AS Int64) -checked expr : try_to_int64(str) +checked expr : TRY_CAST(str AS Int64 NULL) evaluation: +--------+--------------------------------+-------------------------------------------------------+ | | str | Output | @@ -3027,7 +3027,7 @@ evaluation (internal): ast : TRY_CAST(str AS INT64) raw expr : TRY_CAST(str::String NULL AS Int64) -checked expr : try_to_int64(str) +checked expr : TRY_CAST(str AS Int64 NULL) evaluation: +--------+------------------------+-------------------------------------------------------+ | | str | Output | @@ -3050,7 +3050,7 @@ evaluation (internal): ast : TRY_CAST(num AS STRING) raw expr : TRY_CAST(num::Int64 AS String) -checked expr : try_to_string(num) +checked expr : TRY_CAST(num AS String NULL) evaluation: +--------+----------------------------------------------+------------------------+ | | num | Output | @@ -3074,7 +3074,7 @@ evaluation (internal): ast : TRY_CAST(num AS STRING) raw expr : TRY_CAST(num::UInt64 AS String) -checked expr : try_to_string(num) +checked expr : TRY_CAST(num AS String NULL) evaluation: +--------+----------------------------+------------------------+ | | num | Output | @@ -3096,7 +3096,7 @@ evaluation (internal): ast : TRY_CAST('t' AS BOOLEAN) raw expr : TRY_CAST('t' AS Boolean) -checked expr : try_to_boolean("t") +checked expr : TRY_CAST("t" AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3105,7 +3105,7 @@ output : NULL ast : TRY_CAST('f' AS BOOLEAN) raw expr : TRY_CAST('f' AS Boolean) -checked expr : try_to_boolean("f") +checked expr : TRY_CAST("f" AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3114,7 +3114,7 @@ output : NULL ast : TRY_CAST('0' AS BOOLEAN) raw expr : TRY_CAST('0' AS Boolean) -checked expr : try_to_boolean("0") +checked expr : TRY_CAST("0" AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3123,7 +3123,7 @@ output : NULL ast : TRY_CAST('1' AS BOOLEAN) raw expr : TRY_CAST('1' AS Boolean) -checked expr : try_to_boolean("1") +checked expr : TRY_CAST("1" AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3132,7 +3132,7 @@ output : NULL ast : TRY_CAST('true' AS BOOLEAN) raw expr : TRY_CAST('true' AS Boolean) -checked expr : try_to_boolean("true") +checked expr : TRY_CAST("true" AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3141,7 +3141,7 @@ output : true ast : TRY_CAST('false' AS BOOLEAN) raw expr : TRY_CAST('false' AS Boolean) -checked expr : try_to_boolean("false") +checked expr : TRY_CAST("false" AS Boolean NULL) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3150,7 +3150,7 @@ output : false ast : TRY_CAST('TRUE' AS BOOLEAN) raw expr : TRY_CAST('TRUE' AS Boolean) -checked expr : try_to_boolean("TRUE") +checked expr : TRY_CAST("TRUE" AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3159,7 +3159,7 @@ output : true ast : TRY_CAST('FaLse' AS BOOLEAN) raw expr : TRY_CAST('FaLse' AS Boolean) -checked expr : try_to_boolean("FaLse") +checked expr : TRY_CAST("FaLse" AS Boolean NULL) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3168,7 +3168,7 @@ output : false ast : TRY_CAST(bool AS STRING) raw expr : TRY_CAST(bool::Boolean AS String) -checked expr : try_to_string(bool) +checked expr : TRY_CAST(bool AS String NULL) evaluation: +--------+---------------+-----------------+ | | bool | Output | @@ -3189,7 +3189,7 @@ evaluation (internal): ast : TRY_CAST('010.010' AS DECIMAL(5,3)) raw expr : TRY_CAST('010.010' AS Decimal(5, 3)) -checked expr : try_to_decimal(5, 3)("010.010") +checked expr : TRY_CAST("010.010" AS Decimal(5, 3) NULL) optimized expr : 10.010_d128(5,3) output type : Decimal(5, 3) NULL output domain : {10.010..=10.010} @@ -3198,7 +3198,7 @@ output : 10.010 ast : TRY_CAST('010.010' AS DECIMAL(5,4)) raw expr : TRY_CAST('010.010' AS Decimal(5, 4)) -checked expr : try_to_decimal(5, 4)("010.010") +checked expr : TRY_CAST("010.010" AS Decimal(5, 4) NULL) optimized expr : NULL output type : Decimal(5, 4) NULL output domain : {NULL} @@ -3207,7 +3207,7 @@ output : NULL ast : TRY_CAST('010.010' AS DECIMAL(5,2)) raw expr : TRY_CAST('010.010' AS Decimal(5, 2)) -checked expr : try_to_decimal(5, 2)("010.010") +checked expr : TRY_CAST("010.010" AS Decimal(5, 2) NULL) optimized expr : 10.01_d128(5,2) output type : Decimal(5, 2) NULL output domain : {10.01..=10.01} @@ -3216,7 +3216,7 @@ output : 10.01 ast : TRY_CAST('010.010' AS DECIMAL(4,3)) raw expr : TRY_CAST('010.010' AS Decimal(4, 3)) -checked expr : try_to_decimal(4, 3)("010.010") +checked expr : TRY_CAST("010.010" AS Decimal(4, 3) NULL) optimized expr : NULL output type : Decimal(4, 3) NULL output domain : {NULL} @@ -3225,7 +3225,7 @@ output : NULL ast : TRY_CAST('010.010' AS DECIMAL(4,2)) raw expr : TRY_CAST('010.010' AS Decimal(4, 2)) -checked expr : try_to_decimal(4, 2)("010.010") +checked expr : TRY_CAST("010.010" AS Decimal(4, 2) NULL) optimized expr : 10.01_d128(4,2) output type : Decimal(4, 2) NULL output domain : {10.01..=10.01} @@ -3234,7 +3234,7 @@ output : 10.01 ast : TRY_CAST('-1010.010' AS DECIMAL(7,3)) raw expr : TRY_CAST('-1010.010' AS Decimal(7, 3)) -checked expr : try_to_decimal(7, 3)("-1010.010") +checked expr : TRY_CAST("-1010.010" AS Decimal(7, 3) NULL) optimized expr : -1010.010_d128(7,3) output type : Decimal(7, 3) NULL output domain : {-1010.010..=-1010.010} @@ -3243,7 +3243,7 @@ output : -1010.010 ast : TRY_CAST('00' AS DECIMAL(2,1)) raw expr : TRY_CAST('00' AS Decimal(2, 1)) -checked expr : try_to_decimal(2, 1)("00") +checked expr : TRY_CAST("00" AS Decimal(2, 1) NULL) optimized expr : 0.0_d128(2,1) output type : Decimal(2, 1) NULL output domain : {0.0..=0.0} @@ -3252,7 +3252,7 @@ output : 0.0 ast : TRY_CAST('0.0' AS DECIMAL(2,0)) raw expr : TRY_CAST('0.0' AS Decimal(2, 0)) -checked expr : try_to_decimal(2, 0)("0.0") +checked expr : TRY_CAST("0.0" AS Decimal(2, 0) NULL) optimized expr : 0_d128(2,0) output type : Decimal(2, 0) NULL output domain : {0..=0} @@ -3261,7 +3261,7 @@ output : 0 ast : TRY_CAST('.0' AS DECIMAL(1,0)) raw expr : TRY_CAST('.0' AS Decimal(1, 0)) -checked expr : try_to_decimal(1, 0)(".0") +checked expr : TRY_CAST(".0" AS Decimal(1, 0) NULL) optimized expr : 0_d128(1,0) output type : Decimal(1, 0) NULL output domain : {0..=0} @@ -3270,7 +3270,7 @@ output : 0 ast : TRY_CAST('+1.0e-10' AS DECIMAL(11, 10)) raw expr : TRY_CAST('+1.0e-10' AS Decimal(11, 10)) -checked expr : try_to_decimal(11, 10)("+1.0e-10") +checked expr : TRY_CAST("+1.0e-10" AS Decimal(11, 10) NULL) optimized expr : 0.0000000001_d128(11,10) output type : Decimal(11, 10) NULL output domain : {0.0000000001..=0.0000000001} @@ -3279,7 +3279,7 @@ output : 0.0000000001 ast : TRY_CAST('-1.0e+10' AS DECIMAL(11, 0)) raw expr : TRY_CAST('-1.0e+10' AS Decimal(11, 0)) -checked expr : try_to_decimal(11, 0)("-1.0e+10") +checked expr : TRY_CAST("-1.0e+10" AS Decimal(11, 0) NULL) optimized expr : -10000000000_d128(11,0) output type : Decimal(11, 0) NULL output domain : {-10000000000..=-10000000000} @@ -3288,7 +3288,7 @@ output : -10000000000 ast : TRY_CAST('-0.000000' AS DECIMAL(11, 0)) raw expr : TRY_CAST('-0.000000' AS Decimal(11, 0)) -checked expr : try_to_decimal(11, 0)("-0.000000") +checked expr : TRY_CAST("-0.000000" AS Decimal(11, 0) NULL) optimized expr : 0_d128(11,0) output type : Decimal(11, 0) NULL output domain : {0..=0} @@ -3297,7 +3297,7 @@ output : 0 ast : TRY_CAST(0 AS BOOLEAN) raw expr : TRY_CAST(0 AS Boolean) -checked expr : try_to_boolean(0_u8) +checked expr : TRY_CAST(0_u8 AS Boolean NULL) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3306,7 +3306,7 @@ output : false ast : TRY_CAST(1 AS BOOLEAN) raw expr : TRY_CAST(1 AS Boolean) -checked expr : try_to_boolean(1_u8) +checked expr : TRY_CAST(1_u8 AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3315,7 +3315,7 @@ output : true ast : TRY_CAST(false AS UINT64) raw expr : TRY_CAST(false AS UInt64) -checked expr : try_to_uint64(false) +checked expr : TRY_CAST(false AS UInt64 NULL) optimized expr : 0_u64 output type : UInt64 NULL output domain : {0..=0} @@ -3324,7 +3324,7 @@ output : 0 ast : TRY_CAST(true AS INT64) raw expr : TRY_CAST(true AS Int64) -checked expr : try_to_int64(true) +checked expr : TRY_CAST(true AS Int64 NULL) optimized expr : 1_i64 output type : Int64 NULL output domain : {1..=1} @@ -3333,7 +3333,7 @@ output : 1 ast : TRY_CAST(0.0 AS BOOLEAN) raw expr : TRY_CAST(0.0 AS Boolean) -checked expr : try_to_boolean(to_float64(0.0_d128(1,1))) +checked expr : TRY_CAST(0.0_d128(1,1) AS Boolean NULL) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3342,7 +3342,7 @@ output : false ast : TRY_CAST(1.0 AS BOOLEAN) raw expr : TRY_CAST(1.0 AS Boolean) -checked expr : try_to_boolean(to_float64(1.0_d128(2,1))) +checked expr : TRY_CAST(1.0_d128(2,1) AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3351,7 +3351,7 @@ output : true ast : TRY_CAST(false AS FLOAT32) raw expr : TRY_CAST(false AS Float32) -checked expr : try_to_float32(false) +checked expr : TRY_CAST(false AS Float32 NULL) optimized expr : 0_f32 output type : Float32 NULL output domain : {0..=0} @@ -3360,7 +3360,7 @@ output : 0 ast : TRY_CAST(true AS FLOAT64) raw expr : TRY_CAST(true AS Float64) -checked expr : try_to_float64(true) +checked expr : TRY_CAST(true AS Float64 NULL) optimized expr : 1_f64 output type : Float64 NULL output domain : {1..=1} @@ -3369,7 +3369,7 @@ output : 1 ast : TRY_CAST(false AS DECIMAL(4,3)) raw expr : TRY_CAST(false AS Decimal(4, 3)) -checked expr : try_to_decimal(4, 3)(false) +checked expr : TRY_CAST(false AS Decimal(4, 3) NULL) optimized expr : 0.000_d128(4,3) output type : Decimal(4, 3) NULL output domain : {0.000..=0.000} @@ -3378,7 +3378,7 @@ output : 0.000 ast : TRY_CAST(true AS DECIMAL(4,2)) raw expr : TRY_CAST(true AS Decimal(4, 2)) -checked expr : try_to_decimal(4, 2)(true) +checked expr : TRY_CAST(true AS Decimal(4, 2) NULL) optimized expr : 1.00_d128(4,2) output type : Decimal(4, 2) NULL output domain : {1.00..=1.00} @@ -3387,7 +3387,7 @@ output : 1.00 ast : TRY_CAST(num AS BOOLEAN) raw expr : TRY_CAST(num::Int64 AS Boolean) -checked expr : try_to_boolean(num) +checked expr : TRY_CAST(num AS Boolean NULL) evaluation: +--------+----------+---------------+ | | num | Output | @@ -3410,7 +3410,7 @@ evaluation (internal): ast : TRY_CAST(num AS BOOLEAN) raw expr : TRY_CAST(num::UInt64 AS Boolean) -checked expr : try_to_boolean(num) +checked expr : TRY_CAST(num AS Boolean NULL) evaluation: +--------+---------+---------------+ | | num | Output | @@ -3432,7 +3432,7 @@ evaluation (internal): ast : TRY_CAST(bool AS UINT64) raw expr : TRY_CAST(bool::Boolean AS UInt64) -checked expr : try_to_uint64(bool) +checked expr : TRY_CAST(bool AS UInt64 NULL) evaluation: +--------+---------------+-------------+ | | bool | Output | @@ -3453,7 +3453,7 @@ evaluation (internal): ast : TRY_CAST(bool AS INT64) raw expr : TRY_CAST(bool::Boolean AS Int64) -checked expr : try_to_int64(bool) +checked expr : TRY_CAST(bool AS Int64 NULL) evaluation: +--------+---------------+------------+ | | bool | Output | @@ -3474,7 +3474,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(1) AS TIMESTAMP) raw expr : TRY_CAST(TO_DATE(1) AS Timestamp) -checked expr : try_to_timestamp(to_date(to_int64(1_u8))) +checked expr : TRY_CAST(to_date(CAST(1_u8 AS Int64)) AS Timestamp NULL) optimized expr : 86400000000 output type : Timestamp NULL output domain : {86400000000..=86400000000} @@ -3483,7 +3483,7 @@ output : '1970-01-02 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(1) AS DATE) raw expr : TRY_CAST(TO_TIMESTAMP(1) AS Date) -checked expr : try_to_date(to_timestamp(to_int64(1_u8))) +checked expr : TRY_CAST(to_timestamp(CAST(1_u8 AS Int64)) AS Date NULL) optimized expr : 0 output type : Date NULL output domain : {0..=0} @@ -3492,7 +3492,7 @@ output : '1970-01-01' ast : TRY_CAST(a AS DATE) raw expr : TRY_CAST(a::Timestamp AS Date) -checked expr : try_to_date(a) +checked expr : TRY_CAST(a AS Date NULL) evaluation: +--------+--------------------------------------+----------------+ | | a | Output | @@ -3518,7 +3518,7 @@ evaluation (internal): ast : TRY_CAST(a AS TIMESTAMP) raw expr : TRY_CAST(a::Date AS Timestamp) -checked expr : try_to_timestamp(a) +checked expr : TRY_CAST(a AS Timestamp NULL) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -3542,7 +3542,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(a) AS TIMESTAMP) raw expr : TRY_CAST(TO_DATE(a::Int32) AS Timestamp) -checked expr : try_to_timestamp(to_date(to_int64(a))) +checked expr : TRY_CAST(to_date(CAST(a AS Int64)) AS Timestamp NULL) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -3566,7 +3566,7 @@ evaluation (internal): ast : TRY_CAST(a AS TIMESTAMP) raw expr : TRY_CAST(a::Int64 AS Timestamp) -checked expr : try_to_timestamp(a) +checked expr : TRY_CAST(a AS Timestamp NULL) optimized expr : -62135596800000000 evaluation: +--------+---------------------------------------------+-------------------------------------------+ @@ -3587,7 +3587,7 @@ evaluation (internal): ast : TRY_CAST(a AS DATE) raw expr : TRY_CAST(a::Int64 AS Date) -checked expr : try_to_date(a) +checked expr : TRY_CAST(a AS Date NULL) optimized expr : -719162 evaluation: +--------+---------------------------------------------+---------------------+ @@ -3713,7 +3713,7 @@ evaluation (internal): ast : TRY_CAST(TO_TIMESTAMP(-315360000000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000000)) AS String) -checked expr : try_to_string(to_timestamp(minus(315360000000000_u64))) +checked expr : TRY_CAST(to_timestamp(minus(315360000000000_u64)) AS String NULL) optimized expr : "1960-01-04 00:00:00.000000" output type : String NULL output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -3722,7 +3722,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(-315360000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000)) AS String) -checked expr : try_to_string(to_timestamp(minus(315360000000_u64))) +checked expr : TRY_CAST(to_timestamp(minus(315360000000_u64)) AS String NULL) optimized expr : "1960-01-04 00:00:00.000000" output type : String NULL output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -3731,7 +3731,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(-100) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(100)) AS String) -checked expr : try_to_string(to_timestamp(to_int64(minus(100_u8)))) +checked expr : TRY_CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS String NULL) optimized expr : "1969-12-31 23:58:20.000000" output type : String NULL output domain : {"1969-12-31 23:58:20.000000"..="1969-12-31 23:58:20.000000"} @@ -3740,7 +3740,7 @@ output : '1969-12-31 23:58:20.000000' ast : TRY_CAST(TO_TIMESTAMP(-0) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(0)) AS String) -checked expr : try_to_string(to_timestamp(to_int64(minus(0_u8)))) +checked expr : TRY_CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS String NULL) optimized expr : "1970-01-01 00:00:00.000000" output type : String NULL output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -3749,7 +3749,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(0) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(0) AS String) -checked expr : try_to_string(to_timestamp(to_int64(0_u8))) +checked expr : TRY_CAST(to_timestamp(CAST(0_u8 AS Int64)) AS String NULL) optimized expr : "1970-01-01 00:00:00.000000" output type : String NULL output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -3758,7 +3758,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(100) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(100) AS String) -checked expr : try_to_string(to_timestamp(to_int64(100_u8))) +checked expr : TRY_CAST(to_timestamp(CAST(100_u8 AS Int64)) AS String NULL) optimized expr : "1970-01-01 00:01:40.000000" output type : String NULL output domain : {"1970-01-01 00:01:40.000000"..="1970-01-01 00:01:40.000000"} @@ -3767,7 +3767,7 @@ output : '1970-01-01 00:01:40.000000' ast : TRY_CAST(TO_TIMESTAMP(315360000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000) AS String) -checked expr : try_to_string(to_timestamp(to_int64(315360000000_u64))) +checked expr : TRY_CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS String NULL) optimized expr : "1979-12-30 00:00:00.000000" output type : String NULL output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -3776,7 +3776,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(315360000000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000000) AS String) -checked expr : try_to_string(to_timestamp(to_int64(315360000000000_u64))) +checked expr : TRY_CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS String NULL) optimized expr : "1979-12-30 00:00:00.000000" output type : String NULL output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -3785,7 +3785,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(a AS VARCHAR) raw expr : TRY_CAST(a::Timestamp AS String) -checked expr : try_to_string(a) +checked expr : TRY_CAST(a AS String NULL) evaluation: +--------+--------------------------------------+------------------------------+ | | a | Output | @@ -3916,7 +3916,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(-354285) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(354285)) AS String) -checked expr : try_to_string(to_date(minus(354285_u32))) +checked expr : TRY_CAST(to_date(minus(354285_u32)) AS String NULL) optimized expr : "1000-01-01" output type : String NULL output domain : {"1000-01-01"..="1000-01-01"} @@ -3925,7 +3925,7 @@ output : '1000-01-01' ast : TRY_CAST(TO_DATE(-100) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(100)) AS String) -checked expr : try_to_string(to_date(to_int64(minus(100_u8)))) +checked expr : TRY_CAST(to_date(CAST(minus(100_u8) AS Int64)) AS String NULL) optimized expr : "1969-09-23" output type : String NULL output domain : {"1969-09-23"..="1969-09-23"} @@ -3934,7 +3934,7 @@ output : '1969-09-23' ast : TRY_CAST(TO_DATE(-0) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(0)) AS String) -checked expr : try_to_string(to_date(to_int64(minus(0_u8)))) +checked expr : TRY_CAST(to_date(CAST(minus(0_u8) AS Int64)) AS String NULL) optimized expr : "1970-01-01" output type : String NULL output domain : {"1970-01-01"..="1970-01-01"} @@ -3943,7 +3943,7 @@ output : '1970-01-01' ast : TRY_CAST(TO_DATE(0) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(0) AS String) -checked expr : try_to_string(to_date(to_int64(0_u8))) +checked expr : TRY_CAST(to_date(CAST(0_u8 AS Int64)) AS String NULL) optimized expr : "1970-01-01" output type : String NULL output domain : {"1970-01-01"..="1970-01-01"} @@ -3952,7 +3952,7 @@ output : '1970-01-01' ast : TRY_CAST(TO_DATE(100) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(100) AS String) -checked expr : try_to_string(to_date(to_int64(100_u8))) +checked expr : TRY_CAST(to_date(CAST(100_u8 AS Int64)) AS String NULL) optimized expr : "1970-04-11" output type : String NULL output domain : {"1970-04-11"..="1970-04-11"} @@ -3961,7 +3961,7 @@ output : '1970-04-11' ast : TRY_CAST(TO_DATE(2932896) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(2932896) AS String) -checked expr : try_to_string(to_date(to_int64(2932896_u32))) +checked expr : TRY_CAST(to_date(CAST(2932896_u32 AS Int64)) AS String NULL) optimized expr : "9999-12-31" output type : String NULL output domain : {"9999-12-31"..="9999-12-31"} @@ -3970,7 +3970,7 @@ output : '9999-12-31' ast : TRY_CAST(a AS VARCHAR) raw expr : TRY_CAST(a::Date AS String) -checked expr : try_to_string(a) +checked expr : TRY_CAST(a AS String NULL) evaluation: +--------+---------------------+--------------+ | | a | Output | @@ -4020,7 +4020,7 @@ output : ((1, 1), 1) ast : TRY_CAST(TRY_CAST(1 AS INT32) AS INT32) raw expr : TRY_CAST(TRY_CAST(1 AS Int32) AS Int32) -checked expr : try_to_int32(1_u8) +checked expr : TRY_CAST(1_u8 AS Int32 NULL) optimized expr : 1_i32 output type : Int32 NULL output domain : {1..=1} @@ -4092,7 +4092,7 @@ output : [[NULL], [NULL, NULL]] ast : TRY_CAST('Abc' AS BINARY) raw expr : TRY_CAST('Abc' AS Binary) -checked expr : try_to_binary("Abc") +checked expr : TRY_CAST("Abc" AS Binary NULL) optimized expr : 416263 output type : Binary NULL output domain : Undefined @@ -4101,7 +4101,7 @@ output : 416263 ast : TRY_CAST('Dobrý den' AS BINARY) raw expr : TRY_CAST('Dobrý den' AS Binary) -checked expr : try_to_binary("Dobrý den") +checked expr : TRY_CAST("Dobrý den" AS Binary NULL) optimized expr : 446F6272C3BD2064656E output type : Binary NULL output domain : Undefined @@ -4110,7 +4110,7 @@ output : 446F6272C3BD2064656E ast : TRY_CAST('ß😀山' AS BINARY) raw expr : TRY_CAST('ß😀山' AS Binary) -checked expr : try_to_binary("ß😀山") +checked expr : TRY_CAST("ß😀山" AS Binary NULL) optimized expr : C39FF09F9880E5B1B1 output type : Binary NULL output domain : Undefined @@ -4119,7 +4119,7 @@ output : C39FF09F9880E5B1B1 ast : TRY_CAST(NULL AS BINARY) raw expr : TRY_CAST(NULL AS Binary) -checked expr : try_to_binary(CAST(NULL AS Variant NULL)) +checked expr : TRY_CAST(NULL AS Binary NULL) optimized expr : NULL output type : Binary NULL output domain : {NULL} @@ -4137,7 +4137,7 @@ output : NULL ast : TRY_CAST(a AS BINARY) raw expr : TRY_CAST(a::String AS Binary) -checked expr : try_to_binary(a) +checked expr : TRY_CAST(a AS Binary NULL) evaluation: +--------+-------------------+----------------------+ | | a | Output | @@ -4159,7 +4159,7 @@ evaluation (internal): ast : TRY_CAST(a AS BINARY) raw expr : TRY_CAST(a::String NULL AS Binary) -checked expr : try_to_binary(a) +checked expr : TRY_CAST(a AS Binary NULL) evaluation: +--------+--------------------------------+----------------------+ | | a | Output | @@ -4203,7 +4203,7 @@ evaluation (internal): ast : TRY_CAST(TRY_CAST('Abc' AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST('Abc' AS Binary) AS String) -checked expr : try_to_string(try_to_binary("Abc")) +checked expr : TRY_CAST(TRY_CAST("Abc" AS Binary NULL) AS String NULL) optimized expr : "Abc" output type : String NULL output domain : {"Abc"..="Abc"} @@ -4212,7 +4212,7 @@ output : 'Abc' ast : TRY_CAST(TRY_CAST('Dobrý den' AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST('Dobrý den' AS Binary) AS String) -checked expr : try_to_string(try_to_binary("Dobrý den")) +checked expr : TRY_CAST(TRY_CAST("Dobrý den" AS Binary NULL) AS String NULL) optimized expr : "Dobrý den" output type : String NULL output domain : {"Dobrý den"..="Dobrý den"} @@ -4221,7 +4221,7 @@ output : 'Dobrý den' ast : TRY_CAST(TRY_CAST('ß😀山' AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST('ß😀山' AS Binary) AS String) -checked expr : try_to_string(try_to_binary("ß😀山")) +checked expr : TRY_CAST(TRY_CAST("ß😀山" AS Binary NULL) AS String NULL) optimized expr : "ß😀山" output type : String NULL output domain : {"ß😀山"..="ß😀山"} @@ -4230,7 +4230,7 @@ output : 'ß😀山' ast : TRY_CAST(TRY_CAST(NULL AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST(NULL AS Binary) AS String) -checked expr : try_to_string(try_to_binary(CAST(NULL AS Variant NULL))) +checked expr : TRY_CAST(TRY_CAST(NULL AS Binary NULL) AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -4248,7 +4248,7 @@ output : NULL ast : TRY_CAST(TRY_CAST(a AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST(a::String AS Binary) AS String) -checked expr : try_to_string(try_to_binary(a)) +checked expr : TRY_CAST(TRY_CAST(a AS Binary NULL) AS String NULL) evaluation: +--------+-------------------+-----------------+ | | a | Output | @@ -4270,7 +4270,7 @@ evaluation (internal): ast : TRY_CAST(TRY_CAST(a AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST(a::String NULL AS Binary) AS String) -checked expr : try_to_string(try_to_binary(a)) +checked expr : TRY_CAST(TRY_CAST(a AS Binary NULL) AS String NULL) evaluation: +--------+--------------------------------+-----------------+ | | a | Output | diff --git a/src/query/sql/src/planner/semantic/type_check.rs b/src/query/sql/src/planner/semantic/type_check.rs index 51c52360f13b9..366fb9c67dbeb 100644 --- a/src/query/sql/src/planner/semantic/type_check.rs +++ b/src/query/sql/src/planner/semantic/type_check.rs @@ -598,6 +598,7 @@ impl<'a> TypeChecker<'a> { }; let registry = &BUILTIN_FUNCTIONS; let checked_expr = type_check::check(&raw_expr, registry)?; + let checked_expr = type_check::rewrite_function_to_cast(checked_expr)?; if let Some(constant) = self.try_fold_constant(&checked_expr, false) { return Ok(constant); @@ -646,6 +647,7 @@ impl<'a> TypeChecker<'a> { }; let registry = &BUILTIN_FUNCTIONS; let checked_expr = type_check::check(&raw_expr, registry)?; + let checked_expr = type_check::rewrite_function_to_cast(checked_expr)?; if let Some(constant) = self.try_fold_constant(&checked_expr, false) { return Ok(constant); @@ -2153,6 +2155,7 @@ impl<'a> TypeChecker<'a> { .project_column_ref(|index| { lambda_schema.index_of(&index.to_string()).unwrap() }); + let expr = type_check::rewrite_function_to_cast(expr)?; let (expr, _) = ConstantFolder::fold(&expr, &self.func_ctx, &BUILTIN_FUNCTIONS); let remote_lambda_expr = expr.as_remote_expr(); let lambda_display = format!("{:?} -> {}", params, expr.sql_display()); @@ -2873,6 +2876,7 @@ impl<'a> TypeChecker<'a> { }; let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS)?; + let expr = type_check::rewrite_function_to_cast(expr)?; // Run constant folding for arguments of the scalar function. // This will be helpful to simplify some constant expressions, especially diff --git a/src/query/storages/common/index/tests/it/filters/bloom_filter.rs b/src/query/storages/common/index/tests/it/filters/bloom_filter.rs index fcf9205411422..786f22fd0fb2d 100644 --- a/src/query/storages/common/index/tests/it/filters/bloom_filter.rs +++ b/src/query/storages/common/index/tests/it/filters/bloom_filter.rs @@ -442,6 +442,7 @@ fn eval_text( let raw_expr = parse_raw_expr(text, &columns); let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS).unwrap(); + let expr = type_check::rewrite_function_to_cast(expr).unwrap(); let expr = expr.project_column_ref(|i| columns[*i].0.to_string()); eval_index_expr(file, &block, &bloom_columns, schema, expr); diff --git a/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt b/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt index c54118a1aeb34..f6863cc44c1b1 100644 --- a/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt +++ b/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt @@ -201,7 +201,7 @@ result : Uncertain +-----------+-------+-----------------------+ | 0 | UInt8 | Column(UInt8([1, 2])) | +-----------+-------+-----------------------+ -expr : eq(to_string(x), "5") +expr : eq(CAST(x AS String), "5") filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Number(UInt8(SimpleDomain { min: 1, max: 2 }))} result : MustFalse @@ -212,8 +212,8 @@ result : MustFalse +-----------+------+-------------------------+ | 0 | Int8 | Column(Int8([0, 1, 2])) | +-----------+------+-------------------------+ -expr : eq(to_decimal(5, 0)(x), 1.2_d128(2,1)) -filter : eq(to_decimal(5, 0)(x), 1.2_d128(2,1)) +expr : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) +filter : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int8(SimpleDomain { min: 0, max: 2 }))} result : Uncertain @@ -223,7 +223,7 @@ result : Uncertain +-----------+------+----------------------+ | 0 | Int8 | Column(Int8([0, 1])) | +-----------+------+----------------------+ -expr : eq(to_decimal(5, 0)(x), 2.00_d128(3,2)) +expr : eq(CAST(x AS Decimal(5, 0)), 2.00_d128(3,2)) filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Number(Int8(SimpleDomain { min: 0, max: 1 }))} result : MustFalse @@ -234,8 +234,8 @@ result : MustFalse +-----------+-------+--------------------------+ | 0 | Int16 | Column(Int16([0, 1, 2])) | +-----------+-------+--------------------------+ -expr : eq(to_decimal(5, 0)(x), 1.2_d128(2,1)) -filter : eq(to_decimal(5, 0)(x), 1.2_d128(2,1)) +expr : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) +filter : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int16(SimpleDomain { min: 0, max: 2 }))} result : Uncertain @@ -245,8 +245,8 @@ result : Uncertain +-----------+-------+----------------------------+ | 0 | Int16 | Column(Int16([1, 3, 100])) | +-----------+-------+----------------------------+ -expr : eq(to_string(x), "+3") -filter : eq(to_string(x), "+3") +expr : eq(CAST(x AS String), "+3") +filter : eq(CAST(x AS String), "+3") domains : {"x": Number(Int16(SimpleDomain { min: 1, max: 100 }))} result : Uncertain @@ -256,7 +256,7 @@ result : Uncertain +-----------+-------+---------------------------+ | 0 | Int16 | Column(Int16([100, 200])) | +-----------+-------+---------------------------+ -expr : eq(to_string(x), "+3") +expr : eq(CAST(x AS String), "+3") filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Number(Int16(SimpleDomain { min: 100, max: 200 }))} result : MustFalse @@ -267,8 +267,8 @@ result : MustFalse +-----------+------+----------------------+ | 0 | Int8 | Column(Int8([0, 2])) | +-----------+------+----------------------+ -expr : eq(to_decimal(10, 0)(to_int32(to_int16(x))), 1.2_d128(2,1)) -filter : eq(to_decimal(10, 0)(to_int32(to_int16(x))), 1.2_d128(2,1)) +expr : eq(CAST(to_int32(to_int16(x)) AS Decimal(10, 0)), 1.2_d128(2,1)) +filter : eq(CAST(to_int32(to_int16(x)) AS Decimal(10, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int8(SimpleDomain { min: 0, max: 2 }))} result : Uncertain @@ -278,8 +278,9 @@ result : Uncertain +-----------+-------+--------------------------+ | 0 | Int32 | Column(Int32([0, 6000])) | +-----------+-------+--------------------------+ -expr : eq(to_int8(x), 10_i8) -filter : eq(to_int8(x), 10_i8) +expr : eq(CAST(CAST(x AS Int8) AS Int16), CAST(10_u8 AS Int16)) +fold_expr: eq(CAST(CAST(x AS Int8) AS Int16), 10_i16) +filter : eq(CAST(CAST(x AS Int8) AS Int16), 10_i16) domains : {"x": Number(Int32(SimpleDomain { min: 0, max: 6000 }))} result : Uncertain @@ -289,9 +290,9 @@ result : Uncertain +-----------+--------+----------------------------------------------------------------+ | 0 | String | Column(StringColumn[2021-03-05 01:01:01, 2021-03-05 01:01:02]) | +-----------+--------+----------------------------------------------------------------+ -expr : eq(to_timestamp(x), to_timestamp("2021-03-05 01:01:01")) -fold_expr: eq(to_timestamp(x), 1614906061000000) -filter : eq(to_timestamp(x), 1614906061000000) +expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 01:01:01" AS Timestamp)) +fold_expr: eq(CAST(x AS Timestamp), 1614906061000000) +filter : eq(CAST(x AS Timestamp), 1614906061000000) domains : {"x": String(StringDomain { min: "2021-03-05 01:01:01", max: Some("2021-03-05 01:01:02") })} result : Uncertain @@ -301,9 +302,9 @@ result : Uncertain +-----------+------+-------------------------------+ | 0 | Date | Column([18600, 18691, 19000]) | +-----------+------+-------------------------------+ -expr : eq(to_timestamp(x), to_timestamp("2021-03-05 01:01:03")) -fold_expr: eq(to_timestamp(x), 1614906063000000) -filter : eq(to_timestamp(x), 1614906063000000) +expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 01:01:03" AS Timestamp)) +fold_expr: eq(CAST(x AS Timestamp), 1614906063000000) +filter : eq(CAST(x AS Timestamp), 1614906063000000) domains : {"x": Date(SimpleDomain { min: 18600, max: 19000 })} result : Uncertain @@ -313,9 +314,9 @@ result : Uncertain +-----------+------+-------------------------------+ | 0 | Date | Column([18600, 18691, 19000]) | +-----------+------+-------------------------------+ -expr : eq(to_timestamp(x), to_timestamp("2021-03-05 00:00:00")) -fold_expr: eq(to_timestamp(x), 1614902400000000) -filter : eq(to_timestamp(x), 1614902400000000) +expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 00:00:00" AS Timestamp)) +fold_expr: eq(CAST(x AS Timestamp), 1614902400000000) +filter : eq(CAST(x AS Timestamp), 1614902400000000) domains : {"x": Date(SimpleDomain { min: 18600, max: 19000 })} result : Uncertain @@ -325,8 +326,8 @@ result : Uncertain +-----------+------+-------------------------------+ | 0 | Date | Column([18600, 18691, 19000]) | +-----------+------+-------------------------------+ -expr : eq(to_timestamp(x), to_timestamp("2030-03-05 00:00:00")) -fold_expr: eq(to_timestamp(x), 1898899200000000) +expr : eq(CAST(x AS Timestamp), CAST("2030-03-05 00:00:00" AS Timestamp)) +fold_expr: eq(CAST(x AS Timestamp), 1898899200000000) filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Date(SimpleDomain { min: 18600, max: 19000 })} result : MustFalse @@ -337,8 +338,8 @@ result : MustFalse +-----------+-------+-------------------------+ | 0 | Int16 | Column(Int16([0, 300])) | +-----------+-------+-------------------------+ -expr : eq(to_decimal(3, 0)(to_int8(x)), 1.2_d128(2,1)) -filter : eq(to_decimal(3, 0)(to_int8(x)), 1.2_d128(2,1)) +expr : eq(CAST(to_int8(x) AS Decimal(3, 0)), 1.2_d128(2,1)) +filter : eq(CAST(to_int8(x) AS Decimal(3, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int16(SimpleDomain { min: 0, max: 300 }))} result : Uncertain @@ -348,7 +349,7 @@ result : Uncertain +-----------+------------+----------------------------------------------------------------------------+ | 0 | Int16 NULL | Column(NullableColumn { column: Int16([0, 100]), validity: [0b______11] }) | +-----------+------------+----------------------------------------------------------------------------+ -expr : eq(x, to_int16(to_int8(1_u8))) +expr : eq(x, CAST(CAST(1_u8 AS Int8) AS Int16)) fold_expr: eq(x, 1_i16) filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Number(Int16(SimpleDomain { min: 0, max: 100 }))} @@ -360,7 +361,7 @@ result : MustFalse +-----------+------------+----------------------------------------------------------------------------+ | 0 | Int16 NULL | Column(NullableColumn { column: Int16([0, 100]), validity: [0b______11] }) | +-----------+------------+----------------------------------------------------------------------------+ -expr : eq(CAST(x AS Int8 NULL), CAST(to_int8(1_u8) AS Int8 NULL)) +expr : eq(CAST(x AS Int8 NULL), CAST(CAST(1_u8 AS Int8) AS Int8 NULL)) fold_expr: eq(CAST(x AS Int8 NULL), 1_i8) filter : eq(CAST(x AS Int8 NULL), 1_i8) domains : {"x": Number(Int16(SimpleDomain { min: 0, max: 100 }))} From aa2f0adc39d62c2a2601f73ac52ec7c7df56b553 Mon Sep 17 00:00:00 2001 From: coldWater Date: Sat, 29 Mar 2025 14:41:13 +0800 Subject: [PATCH 02/23] test --- src/query/expression/src/type_check.rs | 2 +- src/query/expression/src/utils/display.rs | 5 +- .../tests/it/scalars/testdata/arithmetic.txt | 102 +-- .../tests/it/scalars/testdata/array.txt | 186 +++--- .../tests/it/scalars/testdata/binary.txt | 30 +- .../tests/it/scalars/testdata/bitmap.txt | 42 +- .../tests/it/scalars/testdata/boolean.txt | 66 +- .../tests/it/scalars/testdata/cast.txt | 594 +++++++++--------- .../tests/it/scalars/testdata/comparison.txt | 34 +- .../tests/it/scalars/testdata/control.txt | 46 +- .../tests/it/scalars/testdata/datetime.txt | 464 +++++++------- .../tests/it/scalars/testdata/geo.txt | 36 +- .../tests/it/scalars/testdata/geo_h3.txt | 86 +-- .../tests/it/scalars/testdata/geography.txt | 2 +- .../tests/it/scalars/testdata/geometry.txt | 72 +-- .../tests/it/scalars/testdata/hash.txt | 56 +- .../tests/it/scalars/testdata/map.txt | 50 +- .../tests/it/scalars/testdata/math.txt | 44 +- .../tests/it/scalars/testdata/misc.txt | 4 +- .../tests/it/scalars/testdata/obfuscator.txt | 10 +- .../tests/it/scalars/testdata/other.txt | 28 +- .../tests/it/scalars/testdata/regexp.txt | 38 +- .../tests/it/scalars/testdata/string.txt | 216 +++---- .../tests/it/scalars/testdata/variant.txt | 284 ++++----- .../mode/standalone/explain/infer_filter.test | 17 +- 25 files changed, 1250 insertions(+), 1264 deletions(-) diff --git a/src/query/expression/src/type_check.rs b/src/query/expression/src/type_check.rs index be36a5fed1d2a..ed117a5905f7b 100755 --- a/src/query/expression/src/type_check.rs +++ b/src/query/expression/src/type_check.rs @@ -733,7 +733,7 @@ pub const ALL_SIMPLE_CAST_FUNCTIONS: &[&str] = &[ "parse_json", ]; -pub fn is_simple_cast_function(name: &str) -> bool { +fn is_simple_cast_function(name: &str) -> bool { ALL_SIMPLE_CAST_FUNCTIONS.contains(&name) } diff --git a/src/query/expression/src/utils/display.rs b/src/query/expression/src/utils/display.rs index 4928dcb741992..8bfaa79a397df 100755 --- a/src/query/expression/src/utils/display.rs +++ b/src/query/expression/src/utils/display.rs @@ -637,10 +637,9 @@ impl Display for Expr { .. } => { if *is_try { - write!(f, "TRY_CAST({expr} AS {dest_type})") - } else { - write!(f, "CAST({expr} AS {dest_type})") + write!(f, "TRY_")?; } + write!(f, "CAST<{}>({expr} AS {dest_type})", expr.data_type()) } Expr::FunctionCall { function, diff --git a/src/query/functions/tests/it/scalars/testdata/arithmetic.txt b/src/query/functions/tests/it/scalars/testdata/arithmetic.txt index c3cc2b534b55a..57dbd0a45da46 100644 --- a/src/query/functions/tests/it/scalars/testdata/arithmetic.txt +++ b/src/query/functions/tests/it/scalars/testdata/arithmetic.txt @@ -23,7 +23,7 @@ evaluation (internal): ast : a2 + 10 raw expr : plus(a2::UInt8 NULL, 10) -checked expr : plus(a2, CAST(10_u8 AS UInt8 NULL)) +checked expr : plus(a2, CAST(10_u8 AS UInt8 NULL)) optimized expr : plus(a2, 10_u8) evaluation: +--------+------------------+--------------------+ @@ -46,7 +46,7 @@ evaluation (internal): ast : a2 + c raw expr : plus(a2::UInt8 NULL, c::UInt32) -checked expr : plus(a2, CAST(c AS UInt32 NULL)) +checked expr : plus(a2, CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+--------------------+ | | a2 | c | Output | @@ -160,7 +160,7 @@ evaluation (internal): ast : d + e raw expr : plus(d::Float64, e::Decimal(10, 1)) -checked expr : plus(d, to_float64(e)) +checked expr : plus(d, CAST(e AS Float64)) evaluation: +--------+------------+----------------+-----------------+ | | d | e | Output | @@ -183,7 +183,7 @@ evaluation (internal): ast : d2 + e raw expr : plus(d2::UInt8 NULL, e::Decimal(10, 1)) -checked expr : plus(d2, CAST(e AS Decimal(10, 1) NULL)) +checked expr : plus(d2, CAST(e AS Decimal(10, 1) NULL)) evaluation: +--------+------------------+----------------+------------------------+ | | d2 | e | Output | @@ -206,7 +206,7 @@ evaluation (internal): ast : d2 + f raw expr : plus(d2::UInt8 NULL, f::Decimal(76, 2)) -checked expr : plus(d2, CAST(f AS Decimal(76, 2) NULL)) +checked expr : plus(d2, CAST(f AS Decimal(76, 2) NULL)) evaluation: +--------+------------------+----------------+-------------------------+ | | d2 | f | Output | @@ -275,7 +275,7 @@ evaluation (internal): ast : a2 - 10 raw expr : minus(a2::UInt8 NULL, 10) -checked expr : minus(a2, CAST(10_u8 AS UInt8 NULL)) +checked expr : minus(a2, CAST(10_u8 AS UInt8 NULL)) optimized expr : minus(a2, 10_u8) evaluation: +--------+------------------+--------------------+ @@ -298,7 +298,7 @@ evaluation (internal): ast : a2 - c raw expr : minus(a2::UInt8 NULL, c::UInt32) -checked expr : minus(a2, CAST(c AS UInt32 NULL)) +checked expr : minus(a2, CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+---------------------+ | | a2 | c | Output | @@ -412,7 +412,7 @@ evaluation (internal): ast : d - e raw expr : minus(d::Float64, e::Decimal(10, 1)) -checked expr : minus(d, to_float64(e)) +checked expr : minus(d, CAST(e AS Float64)) evaluation: +--------+------------+----------------+-----------------+ | | d | e | Output | @@ -435,7 +435,7 @@ evaluation (internal): ast : d2 - e raw expr : minus(d2::UInt8 NULL, e::Decimal(10, 1)) -checked expr : minus(d2, CAST(e AS Decimal(10, 1) NULL)) +checked expr : minus(d2, CAST(e AS Decimal(10, 1) NULL)) evaluation: +--------+------------------+----------------+--------------------------+ | | d2 | e | Output | @@ -458,7 +458,7 @@ evaluation (internal): ast : d2 - f raw expr : minus(d2::UInt8 NULL, f::Decimal(76, 2)) -checked expr : minus(d2, CAST(f AS Decimal(76, 2) NULL)) +checked expr : minus(d2, CAST(f AS Decimal(76, 2) NULL)) evaluation: +--------+------------------+----------------+--------------------------+ | | d2 | f | Output | @@ -711,7 +711,7 @@ evaluation (internal): ast : a2 * 10 raw expr : multiply(a2::UInt8 NULL, 10) -checked expr : multiply(a2, CAST(10_u8 AS UInt8 NULL)) +checked expr : multiply(a2, CAST(10_u8 AS UInt8 NULL)) optimized expr : multiply(a2, 10_u8) evaluation: +--------+------------------+--------------------+ @@ -734,7 +734,7 @@ evaluation (internal): ast : a2 * c raw expr : multiply(a2::UInt8 NULL, c::UInt32) -checked expr : multiply(a2, CAST(c AS UInt32 NULL)) +checked expr : multiply(a2, CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+--------------------+ | | a2 | c | Output | @@ -848,7 +848,7 @@ evaluation (internal): ast : d * e raw expr : multiply(d::Float64, e::Decimal(10, 1)) -checked expr : multiply(d, to_float64(e)) +checked expr : multiply(d, CAST(e AS Float64)) evaluation: +--------+------------+----------------+----------------+ | | d | e | Output | @@ -871,7 +871,7 @@ evaluation (internal): ast : d2 * e raw expr : multiply(d2::UInt8 NULL, e::Decimal(10, 1)) -checked expr : multiply(d2, CAST(e AS Decimal(10, 1) NULL)) +checked expr : multiply(d2, CAST(e AS Decimal(10, 1) NULL)) evaluation: +--------+------------------+----------------+------------------------+ | | d2 | e | Output | @@ -894,7 +894,7 @@ evaluation (internal): ast : d2 * f raw expr : multiply(d2::UInt8 NULL, f::Decimal(76, 2)) -checked expr : multiply(d2, CAST(f AS Decimal(76, 2) NULL)) +checked expr : multiply(d2, CAST(f AS Decimal(76, 2) NULL)) evaluation: +--------+------------------+----------------+-------------------------+ | | d2 | f | Output | @@ -1029,7 +1029,7 @@ evaluation (internal): ast : a2 / 10 raw expr : divide(a2::UInt8 NULL, 10) -checked expr : divide(a2, CAST(10_u8 AS UInt8 NULL)) +checked expr : divide(a2, CAST(10_u8 AS UInt8 NULL)) optimized expr : divide(a2, 10_u8) evaluation: +--------+------------------+--------------+ @@ -1052,7 +1052,7 @@ evaluation (internal): ast : a2 / c raw expr : divide(a2::UInt8 NULL, c::UInt32) -checked expr : divide(a2, CAST(c AS UInt32 NULL)) +checked expr : divide(a2, CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+--------------+ | | a2 | c | Output | @@ -1143,7 +1143,7 @@ evaluation (internal): ast : b / d2 raw expr : divide(b::Int16, d2::UInt8 NULL) -checked expr : divide(CAST(b AS Int16 NULL), d2) +checked expr : divide(CAST(b AS Int16 NULL), d2) evaluation: +--------+---------+------------------+--------------+ | | b | d2 | Output | @@ -1197,7 +1197,7 @@ evaluation (internal): ast : d / e raw expr : divide(d::Float64, e::Decimal(10, 1)) -checked expr : divide(d, to_float64(e)) +checked expr : divide(d, CAST(e AS Float64)) evaluation: +--------+------------+----------------+---------------+ | | d | e | Output | @@ -1220,7 +1220,7 @@ evaluation (internal): ast : d2 / e raw expr : divide(d2::UInt8 NULL, e::Decimal(10, 1)) -checked expr : divide(d2, CAST(e AS Decimal(10, 1) NULL)) +checked expr : divide(d2, CAST(e AS Decimal(10, 1) NULL)) evaluation: +--------+------------------+----------------+---------------------+ | | d2 | e | Output | @@ -1243,7 +1243,7 @@ evaluation (internal): ast : d2 / f raw expr : divide(d2::UInt8 NULL, f::Decimal(76, 2)) -checked expr : divide(d2, CAST(f AS Decimal(76, 2) NULL)) +checked expr : divide(d2, CAST(f AS Decimal(76, 2) NULL)) evaluation: +--------+------------------+----------------+---------------------+ | | d2 | f | Output | @@ -1312,7 +1312,7 @@ evaluation (internal): ast : a2 div 10 raw expr : div(a2::UInt8 NULL, 10) -checked expr : div(a2, CAST(10_u8 AS UInt8 NULL)) +checked expr : div(a2, CAST(10_u8 AS UInt8 NULL)) optimized expr : div(a2, 10_u8) evaluation: +--------+------------------+------------+ @@ -1335,7 +1335,7 @@ evaluation (internal): ast : a2 div c raw expr : div(a2::UInt8 NULL, c::UInt32) -checked expr : div(a2, CAST(c AS UInt32 NULL)) +checked expr : div(a2, CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+-------------+ | | a2 | c | Output | @@ -1358,7 +1358,7 @@ evaluation (internal): ast : c div 0.5 raw expr : div(c::UInt32, 0.5) -checked expr : div(c, to_float64(0.5_d128(1,1))) +checked expr : div(c, CAST(0.5_d128(1,1) AS Float64)) optimized expr : div(c, 0.5_f64) evaluation: +--------+-----------+---------+ @@ -1427,7 +1427,7 @@ evaluation (internal): ast : c div d2 raw expr : div(c::UInt32, d2::UInt8 NULL) -checked expr : div(CAST(c AS UInt32 NULL), d2) +checked expr : div(CAST(c AS UInt32 NULL), d2) evaluation: +--------+-----------+------------------+-------------+ | | c | d2 | Output | @@ -1481,7 +1481,7 @@ evaluation (internal): ast : a2 % 4 raw expr : modulo(a2::UInt8 NULL, 4) -checked expr : modulo(a2, CAST(4_u8 AS UInt8 NULL)) +checked expr : modulo(a2, CAST(4_u8 AS UInt8 NULL)) optimized expr : modulo(a2, 4_u8) evaluation: +--------+------------------+------------+ @@ -1504,8 +1504,8 @@ evaluation (internal): ast : (a2 + 4) % c raw expr : modulo(plus(a2::UInt8 NULL, 4), c::UInt32) -checked expr : modulo(plus(a2, CAST(4_u8 AS UInt8 NULL)), CAST(c AS UInt32 NULL)) -optimized expr : modulo(plus(a2, 4_u8), CAST(c AS UInt32 NULL)) +checked expr : modulo(plus(a2, CAST(4_u8 AS UInt8 NULL)), CAST(c AS UInt32 NULL)) +optimized expr : modulo(plus(a2, 4_u8), CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+-------------+ | | a2 | c | Output | @@ -1582,7 +1582,7 @@ error: ast : c % d2 raw expr : modulo(c::UInt32, d2::UInt8 NULL) -checked expr : modulo(CAST(c AS UInt32 NULL), d2) +checked expr : modulo(CAST(c AS UInt32 NULL), d2) evaluation: +--------+-----------+------------------+------------+ | | c | d2 | Output | @@ -1781,8 +1781,8 @@ evaluation (internal): ast : a ^ 2 raw expr : pow(a::Int8, 2) -checked expr : pow(to_float64(a), to_float64(2_u8)) -optimized expr : pow(to_float64(a), 2_f64) +checked expr : pow(CAST(a AS Float64), CAST(2_u8 AS Float64)) +optimized expr : pow(CAST(a AS Float64), 2_f64) evaluation: +--------+---------+--------------+ | | a | Output | @@ -1804,7 +1804,7 @@ evaluation (internal): ast : a ^ a raw expr : pow(a::Int8, a::Int8) -checked expr : pow(to_float64(a), to_float64(a)) +checked expr : pow(CAST(a AS Float64), CAST(a AS Float64)) evaluation: +--------+---------+--------------+ | | a | Output | @@ -1826,7 +1826,7 @@ evaluation (internal): ast : a ^ a2 raw expr : pow(a::Int8, a2::UInt8 NULL) -checked expr : pow(CAST(a AS Float64 NULL), CAST(a2 AS Float64 NULL)) +checked expr : pow(CAST(a AS Float64 NULL), CAST(a2 AS Float64 NULL)) evaluation: +--------+---------+------------------+-----------------------+ | | a | a2 | Output | @@ -1849,8 +1849,8 @@ evaluation (internal): ast : c ^ 0 raw expr : pow(c::UInt32, 0) -checked expr : pow(to_float64(c), to_float64(0_u8)) -optimized expr : pow(to_float64(c), 0_f64) +checked expr : pow(CAST(c AS Float64), CAST(0_u8 AS Float64)) +optimized expr : pow(CAST(c AS Float64), 0_f64) evaluation: +--------+-----------+--------------+ | | c | Output | @@ -1872,7 +1872,7 @@ evaluation (internal): ast : c ^ d raw expr : pow(c::UInt32, d::Float64) -checked expr : pow(to_float64(c), d) +checked expr : pow(CAST(c AS Float64), d) evaluation: +--------+-----------+------------+-----------------------------------------------+ | | c | d | Output | @@ -2159,7 +2159,7 @@ evaluation (internal): ast : @ a raw expr : abs(a::Int8) -checked expr : abs(to_int64(a)) +checked expr : abs(CAST(a AS Int64)) evaluation: +--------+---------+---------+ | | a | Output | @@ -2181,7 +2181,7 @@ evaluation (internal): ast : @ a2 raw expr : abs(a2::UInt8 NULL) -checked expr : abs(CAST(a2 AS UInt64 NULL)) +checked expr : abs(CAST(a2 AS UInt64 NULL)) evaluation: +--------+------------------+------------------+ | | a2 | Output | @@ -2203,7 +2203,7 @@ evaluation (internal): ast : @ b raw expr : abs(b::Int16) -checked expr : abs(to_int64(b)) +checked expr : abs(CAST(b AS Int64)) evaluation: +--------+---------+---------+ | | b | Output | @@ -2225,7 +2225,7 @@ evaluation (internal): ast : @ c raw expr : abs(c::UInt32) -checked expr : abs(to_uint64(c)) +checked expr : abs(CAST(c AS UInt64)) evaluation: +--------+-----------+-----------+ | | c | Output | @@ -2269,7 +2269,7 @@ evaluation (internal): ast : @ d2 raw expr : abs(d2::UInt8 NULL) -checked expr : abs(CAST(d2 AS UInt64 NULL)) +checked expr : abs(CAST(d2 AS UInt64 NULL)) evaluation: +--------+------------------+------------------+ | | d2 | Output | @@ -2375,7 +2375,7 @@ evaluation (internal): ast : a2 # 10 raw expr : bit_xor(a2::UInt8 NULL, 10) -checked expr : bit_xor(a2, CAST(10_u8 AS UInt8 NULL)) +checked expr : bit_xor(a2, CAST(10_u8 AS UInt8 NULL)) optimized expr : bit_xor(a2, 10_u8) evaluation: +--------+------------------+-------------------------------------------------------+ @@ -2398,7 +2398,7 @@ evaluation (internal): ast : a2 # c raw expr : bit_xor(a2::UInt8 NULL, c::UInt32) -checked expr : bit_xor(a2, CAST(c AS UInt32 NULL)) +checked expr : bit_xor(a2, CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+-------------------------------------------------------+ | | a2 | c | Output | @@ -2467,7 +2467,7 @@ evaluation (internal): ast : a2 & 10 raw expr : bit_and(a2::UInt8 NULL, 10) -checked expr : bit_and(a2, CAST(10_u8 AS UInt8 NULL)) +checked expr : bit_and(a2, CAST(10_u8 AS UInt8 NULL)) optimized expr : bit_and(a2, 10_u8) evaluation: +--------+------------------+-------------------------------------------------------+ @@ -2490,7 +2490,7 @@ evaluation (internal): ast : a2 & c raw expr : bit_and(a2::UInt8 NULL, c::UInt32) -checked expr : bit_and(a2, CAST(c AS UInt32 NULL)) +checked expr : bit_and(a2, CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+-------------------------------------------------------+ | | a2 | c | Output | @@ -2559,7 +2559,7 @@ evaluation (internal): ast : a2 | 10 raw expr : bit_or(a2::UInt8 NULL, 10) -checked expr : bit_or(a2, CAST(10_u8 AS UInt8 NULL)) +checked expr : bit_or(a2, CAST(10_u8 AS UInt8 NULL)) optimized expr : bit_or(a2, 10_u8) evaluation: +--------+------------------+-------------------------------------------------------+ @@ -2582,7 +2582,7 @@ evaluation (internal): ast : a2 | c raw expr : bit_or(a2::UInt8 NULL, c::UInt32) -checked expr : bit_or(a2, CAST(c AS UInt32 NULL)) +checked expr : bit_or(a2, CAST(c AS UInt32 NULL)) evaluation: +--------+------------------+-----------+-------------------------------------------------------+ | | a2 | c | Output | @@ -2738,7 +2738,7 @@ evaluation (internal): ast : a2 << 2 raw expr : bit_shift_left(a2::UInt8 NULL, 2) -checked expr : bit_shift_left(a2, CAST(2_u8 AS UInt8 NULL)) +checked expr : bit_shift_left(a2, CAST(2_u8 AS UInt8 NULL)) optimized expr : bit_shift_left(a2, 2_u8) evaluation: +--------+------------------+-------------------------------------------------------+ @@ -2761,7 +2761,7 @@ evaluation (internal): ast : a2 << 4 raw expr : bit_shift_left(a2::UInt8 NULL, 4) -checked expr : bit_shift_left(a2, CAST(4_u8 AS UInt8 NULL)) +checked expr : bit_shift_left(a2, CAST(4_u8 AS UInt8 NULL)) optimized expr : bit_shift_left(a2, 4_u8) evaluation: +--------+------------------+-------------------------------------------------------+ @@ -2828,7 +2828,7 @@ evaluation (internal): ast : a2 >> 1 raw expr : bit_shift_right(a2::UInt8 NULL, 1) -checked expr : bit_shift_right(a2, CAST(1_u8 AS UInt8 NULL)) +checked expr : bit_shift_right(a2, CAST(1_u8 AS UInt8 NULL)) optimized expr : bit_shift_right(a2, 1_u8) evaluation: +--------+------------------+-------------------------------------------------------+ @@ -2851,7 +2851,7 @@ evaluation (internal): ast : a2 >> 2 raw expr : bit_shift_right(a2::UInt8 NULL, 2) -checked expr : bit_shift_right(a2, CAST(2_u8 AS UInt8 NULL)) +checked expr : bit_shift_right(a2, CAST(2_u8 AS UInt8 NULL)) optimized expr : bit_shift_right(a2, 2_u8) evaluation: +--------+------------------+-------------------------------------------------------+ diff --git a/src/query/functions/tests/it/scalars/testdata/array.txt b/src/query/functions/tests/it/scalars/testdata/array.txt index f91da9f2b7653..f8ae45f9a0a52 100644 --- a/src/query/functions/tests/it/scalars/testdata/array.txt +++ b/src/query/functions/tests/it/scalars/testdata/array.txt @@ -11,7 +11,7 @@ error: --> SQL:1:2 | 1 | ['a', 1] - | ^^^ invalid digit found in string while evaluating function `to_uint64('a')` in expr `to_uint64('a')`, during run expr: `array(to_uint64('a'), to_uint64(1))` + | ^^^ invalid digit found in string while evaluating function `to_uint64('a')` in expr `to_uint64()`, during run expr: `array(CAST('a' AS UInt64), CAST(1 AS UInt64))` @@ -28,7 +28,7 @@ candidate functions: ast : [NULL, 8, -10] raw expr : array(NULL, 8, minus(10)) -checked expr : array(CAST(NULL AS Int16 NULL), CAST(8_u8 AS Int16 NULL), CAST(minus(10_u8) AS Int16 NULL)) +checked expr : array(CAST(NULL AS Int16 NULL), CAST(8_u8 AS Int16 NULL), CAST(minus(10_u8) AS Int16 NULL)) optimized expr : [NULL, 8, -10] output type : Array(Int16 NULL) output domain : [{-10..=8} ∪ {NULL}] @@ -37,7 +37,7 @@ output : [NULL, 8, -10] ast : [['a', 'b'], []] raw expr : array(array('a', 'b'), array()) -checked expr : array(array("a", "b"), CAST(array<>() AS Array(String))) +checked expr : array(array("a", "b"), CAST(array<>() AS Array(String))) optimized expr : [['a', 'b'], []] output type : Array(Array(String)) output domain : [[{"a"..="b"}]] @@ -120,7 +120,7 @@ output : 4 ast : range(10, 20) raw expr : range(10, 20) -checked expr : range(to_uint64(10_u8), to_uint64(20_u8)) +checked expr : range(CAST(10_u8 AS UInt64), CAST(20_u8 AS UInt64)) optimized expr : [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] output type : Array(UInt64) output domain : [{10..=19}] @@ -131,7 +131,7 @@ error: --> SQL:1:1 | 1 | range(10, 500000011) - | ^^^^^^^^^^^^^^^^^^^^ the allowed maximum values of range function is 500000000, but got 500000001 while evaluating function `range(10, 500000011)` in expr `range(to_uint64(10), to_uint64(500000011))` + | ^^^^^^^^^^^^^^^^^^^^ the allowed maximum values of range function is 500000000, but got 500000001 while evaluating function `range(10, 500000011)` in expr `range(CAST(10 AS UInt64), CAST(500000011 AS UInt64))` @@ -139,13 +139,13 @@ error: --> SQL:1:8 | 1 | [1, 2]['a'] - | ^^^ invalid digit found in string while evaluating function `to_uint64('a')` in expr `to_uint64('a')`, during run expr: `get(CAST(array(1, 2) AS Array(UInt8 NULL)), to_uint64('a'))` + | ^^^ invalid digit found in string while evaluating function `to_uint64('a')` in expr `to_uint64()`, during run expr: `get(CAST(array(1, 2) AS Array(UInt8 NULL)), CAST('a' AS UInt64))` ast : [][1] raw expr : get(array(), 1) -checked expr : get(CAST(array<>() AS Array(Nothing) NULL), CAST(1_u8 AS UInt64 NULL)) +checked expr : get(CAST(array<>() AS Array(Nothing) NULL), CAST(1_u8 AS UInt64 NULL)) optimized expr : NULL output type : NULL output domain : {NULL} @@ -154,7 +154,7 @@ output : NULL ast : [][NULL] raw expr : get(array(), NULL) -checked expr : get(CAST(array<>() AS Array(Nothing) NULL), CAST(NULL AS UInt64 NULL)) +checked expr : get(CAST(array<>() AS Array(Nothing) NULL), CAST(NULL AS UInt64 NULL)) optimized expr : NULL output type : NULL output domain : {NULL} @@ -163,7 +163,7 @@ output : NULL ast : [NULL][0] raw expr : get(array(NULL), 0) -checked expr : get(CAST(array(NULL) AS Array(NULL) NULL), CAST(0_u8 AS UInt64 NULL)) +checked expr : get(CAST(array(NULL) AS Array(NULL) NULL), CAST(0_u8 AS UInt64 NULL)) optimized expr : NULL output type : NULL output domain : {NULL} @@ -172,7 +172,7 @@ output : NULL ast : [true, false][1] raw expr : get(array(true, false), 1) -checked expr : get(CAST(array(true, false) AS Array(Boolean NULL)), to_uint64(1_u8)) +checked expr : get(CAST(array(true, false) AS Array(Boolean NULL)), CAST(1_u8 AS UInt64)) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -181,7 +181,7 @@ output : true ast : ['a', 'b', 'c'][2] raw expr : get(array('a', 'b', 'c'), 2) -checked expr : get(CAST(array("a", "b", "c") AS Array(String NULL)), to_uint64(2_u8)) +checked expr : get(CAST(array("a", "b", "c") AS Array(String NULL)), CAST(2_u8 AS UInt64)) optimized expr : "b" output type : String NULL output domain : {"b"..="b"} @@ -190,7 +190,7 @@ output : 'b' ast : [1, 2, 3][1] raw expr : get(array(1, 2, 3), 1) -checked expr : get(CAST(array(1_u8, 2_u8, 3_u8) AS Array(UInt8 NULL)), to_uint64(1_u8)) +checked expr : get(CAST(array(1_u8, 2_u8, 3_u8) AS Array(UInt8 NULL)), CAST(1_u8 AS UInt64)) optimized expr : 1_u8 output type : UInt8 NULL output domain : {1..=1} @@ -199,7 +199,7 @@ output : 1 ast : [1, 2, 3][3] raw expr : get(array(1, 2, 3), 3) -checked expr : get(CAST(array(1_u8, 2_u8, 3_u8) AS Array(UInt8 NULL)), to_uint64(3_u8)) +checked expr : get(CAST(array(1_u8, 2_u8, 3_u8) AS Array(UInt8 NULL)), CAST(3_u8 AS UInt64)) optimized expr : 3_u8 output type : UInt8 NULL output domain : {3..=3} @@ -208,7 +208,7 @@ output : 3 ast : [1, null, 3][1] raw expr : get(array(1, NULL, 3), 1) -checked expr : get(array(CAST(1_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL)), to_uint64(1_u8)) +checked expr : get(array(CAST(1_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL)), CAST(1_u8 AS UInt64)) optimized expr : 1_u8 output type : UInt8 NULL output domain : {1..=1} @@ -217,7 +217,7 @@ output : 1 ast : [1, null, 3][2] raw expr : get(array(1, NULL, 3), 2) -checked expr : get(array(CAST(1_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL)), to_uint64(2_u8)) +checked expr : get(array(CAST(1_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL)), CAST(2_u8 AS UInt64)) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -226,7 +226,7 @@ output : NULL ast : [1, 2, 3][4] raw expr : get(array(1, 2, 3), 4) -checked expr : get(CAST(array(1_u8, 2_u8, 3_u8) AS Array(UInt8 NULL)), to_uint64(4_u8)) +checked expr : get(CAST(array(1_u8, 2_u8, 3_u8) AS Array(UInt8 NULL)), CAST(4_u8 AS UInt64)) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -235,7 +235,7 @@ output : NULL ast : [a, b][idx] raw expr : get(array(a::Int16, b::Int16), idx::UInt16) -checked expr : get(CAST(array(a, b) AS Array(Int16 NULL)), to_uint64(idx)) +checked expr : get(CAST(array(a, b) AS Array(Int16 NULL)), CAST(idx AS UInt64)) evaluation: +--------+---------+---------+---------+------------------+ | | a | b | idx | Output | @@ -259,7 +259,7 @@ evaluation (internal): ast : slice([], 1) raw expr : slice(array(), 1) -checked expr : slice(array<>(), to_uint64(1_u8)) +checked expr : slice(array<>(), CAST(1_u8 AS UInt64)) optimized expr : [] :: Array(Nothing) output type : Array(Nothing) output domain : [] @@ -268,7 +268,7 @@ output : [] ast : slice([0, 1, 2, 3], 2) raw expr : slice(array(0, 1, 2, 3), 2) -checked expr : slice(array(0_u8, 1_u8, 2_u8, 3_u8), to_uint64(2_u8)) +checked expr : slice(array(0_u8, 1_u8, 2_u8, 3_u8), CAST(2_u8 AS UInt64)) optimized expr : [1, 2, 3] output type : Array(UInt8) output domain : [{1..=3}] @@ -277,7 +277,7 @@ output : [1, 2, 3] ast : slice(['a', 'b', 'c', 'd'], 3) raw expr : slice(array('a', 'b', 'c', 'd'), 3) -checked expr : slice(array("a", "b", "c", "d"), to_uint64(3_u8)) +checked expr : slice(array("a", "b", "c", "d"), CAST(3_u8 AS UInt64)) optimized expr : ['c', 'd'] output type : Array(String) output domain : [{"c"..="d"}] @@ -286,7 +286,7 @@ output : ['c', 'd'] ast : slice([a, b, c], 2) raw expr : slice(array(a::Int16, b::Int16, c::Int16), 2) -checked expr : slice(array(a, b, c), to_uint64(2_u8)) +checked expr : slice(array(a, b, c), CAST(2_u8 AS UInt64)) optimized expr : slice(array(a, b, c), 2_u64) evaluation: +--------+---------+---------+---------+--------------+ @@ -311,7 +311,7 @@ evaluation (internal): ast : slice([], 1, 2) raw expr : slice(array(), 1, 2) -checked expr : slice(array<>(), to_uint64(1_u8), to_uint64(2_u8)) +checked expr : slice(array<>(), CAST(1_u8 AS UInt64), CAST(2_u8 AS UInt64)) optimized expr : [] :: Array(Nothing) output type : Array(Nothing) output domain : [] @@ -320,7 +320,7 @@ output : [] ast : slice([1], 1, 2) raw expr : slice(array(1), 1, 2) -checked expr : slice(array(1_u8), to_uint64(1_u8), to_uint64(2_u8)) +checked expr : slice(array(1_u8), CAST(1_u8 AS UInt64), CAST(2_u8 AS UInt64)) optimized expr : [1] output type : Array(UInt8) output domain : [{1..=1}] @@ -329,7 +329,7 @@ output : [1] ast : slice([NULL, 1, 2, 3], 0, 2) raw expr : slice(array(NULL, 1, 2, 3), 0, 2) -checked expr : slice(array(CAST(NULL AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL)), to_uint64(0_u8), to_uint64(2_u8)) +checked expr : slice(array(CAST(NULL AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL)), CAST(0_u8 AS UInt64), CAST(2_u8 AS UInt64)) optimized expr : [NULL, 1] output type : Array(UInt8 NULL) output domain : [{1..=1} ∪ {NULL}] @@ -338,7 +338,7 @@ output : [NULL, 1] ast : slice([0, 1, 2, 3], 1, 2) raw expr : slice(array(0, 1, 2, 3), 1, 2) -checked expr : slice(array(0_u8, 1_u8, 2_u8, 3_u8), to_uint64(1_u8), to_uint64(2_u8)) +checked expr : slice(array(0_u8, 1_u8, 2_u8, 3_u8), CAST(1_u8 AS UInt64), CAST(2_u8 AS UInt64)) optimized expr : [0, 1] output type : Array(UInt8) output domain : [{0..=1}] @@ -347,7 +347,7 @@ output : [0, 1] ast : slice([0, 1, 2, 3], 1, 5) raw expr : slice(array(0, 1, 2, 3), 1, 5) -checked expr : slice(array(0_u8, 1_u8, 2_u8, 3_u8), to_uint64(1_u8), to_uint64(5_u8)) +checked expr : slice(array(0_u8, 1_u8, 2_u8, 3_u8), CAST(1_u8 AS UInt64), CAST(5_u8 AS UInt64)) optimized expr : [0, 1, 2, 3] output type : Array(UInt8) output domain : [{0..=3}] @@ -356,7 +356,7 @@ output : [0, 1, 2, 3] ast : slice(['a', 'b', 'c', 'd'], 0, 2) raw expr : slice(array('a', 'b', 'c', 'd'), 0, 2) -checked expr : slice(array("a", "b", "c", "d"), to_uint64(0_u8), to_uint64(2_u8)) +checked expr : slice(array("a", "b", "c", "d"), CAST(0_u8 AS UInt64), CAST(2_u8 AS UInt64)) optimized expr : ['a', 'b'] output type : Array(String) output domain : [{"a"..="b"}] @@ -365,7 +365,7 @@ output : ['a', 'b'] ast : slice(['a', 'b', 'c', 'd'], 1, 4) raw expr : slice(array('a', 'b', 'c', 'd'), 1, 4) -checked expr : slice(array("a", "b", "c", "d"), to_uint64(1_u8), to_uint64(4_u8)) +checked expr : slice(array("a", "b", "c", "d"), CAST(1_u8 AS UInt64), CAST(4_u8 AS UInt64)) optimized expr : ['a', 'b', 'c', 'd'] output type : Array(String) output domain : [{"a"..="d"}] @@ -374,7 +374,7 @@ output : ['a', 'b', 'c', 'd'] ast : slice(['a', 'b', 'c', 'd'], 2, 6) raw expr : slice(array('a', 'b', 'c', 'd'), 2, 6) -checked expr : slice(array("a", "b", "c", "d"), to_uint64(2_u8), to_uint64(6_u8)) +checked expr : slice(array("a", "b", "c", "d"), CAST(2_u8 AS UInt64), CAST(6_u8 AS UInt64)) optimized expr : ['b', 'c', 'd'] output type : Array(String) output domain : [{"b"..="d"}] @@ -383,7 +383,7 @@ output : ['b', 'c', 'd'] ast : slice([a, b, c], 1, 2) raw expr : slice(array(a::Int16, b::Int16, c::Int16), 1, 2) -checked expr : slice(array(a, b, c), to_uint64(1_u8), to_uint64(2_u8)) +checked expr : slice(array(a, b, c), CAST(1_u8 AS UInt64), CAST(2_u8 AS UInt64)) optimized expr : slice(array(a, b, c), 1_u64, 2_u64) evaluation: +--------+---------+---------+---------+--------------+ @@ -435,8 +435,8 @@ output : true ast : int8_col not in (1, 2, 3, 4, 5, null) raw expr : not(contains(array(1, 2, 3, 4, 5), int8_col::Int8)) -checked expr : not(contains(CAST(array(1_u8, 2_u8, 3_u8, 4_u8, 5_u8) AS Array(Int16)), to_int16(int8_col))) -optimized expr : not(contains([1, 2, 3, 4, 5], to_int16(int8_col))) +checked expr : not(contains(CAST(array(1_u8, 2_u8, 3_u8, 4_u8, 5_u8) AS Array(Int16)), CAST(int8_col AS Int16))) +optimized expr : not(contains([1, 2, 3, 4, 5], CAST(int8_col AS Int16))) evaluation: +--------+----------+---------------+ | | int8_col | Output | @@ -531,7 +531,7 @@ evaluation (internal): ast : contains([1,2,null], nullable_col) raw expr : contains(array(1, 2, NULL), nullable_col::Int64 NULL) -checked expr : contains(CAST(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int64 NULL) NULL), nullable_col) +checked expr : contains(CAST(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int64 NULL) NULL), nullable_col) optimized expr : contains([1, 2, NULL], nullable_col) evaluation: +--------+-------------------+---------------+ @@ -555,7 +555,7 @@ evaluation (internal): ast : contains([(1,'2', 3, false), (1,'2', 4, true), null], (1,'2', 3, false)) raw expr : contains(array(tuple(1, '2', 3, false), tuple(1, '2', 4, true), NULL), tuple(1, '2', 3, false)) -checked expr : contains(CAST(array(CAST(tuple(1_u8, "2", 3_u8, false) AS Tuple(UInt8, String, UInt8, Boolean) NULL), CAST(tuple(1_u8, "2", 4_u8, true) AS Tuple(UInt8, String, UInt8, Boolean) NULL), CAST(NULL AS Tuple(UInt8, String, UInt8, Boolean) NULL)) AS Array(Tuple(UInt8, String, UInt8, Boolean) NULL) NULL), CAST(tuple(1_u8, "2", 3_u8, false) AS Tuple(UInt8, String, UInt8, Boolean) NULL)) +checked expr : contains(CAST(array(CAST(tuple(1_u8, "2", 3_u8, false) AS Tuple(UInt8, String, UInt8, Boolean) NULL), CAST(tuple(1_u8, "2", 4_u8, true) AS Tuple(UInt8, String, UInt8, Boolean) NULL), CAST(NULL AS Tuple(UInt8, String, UInt8, Boolean) NULL)) AS Array(Tuple(UInt8, String, UInt8, Boolean) NULL) NULL), CAST(tuple(1_u8, "2", 3_u8, false) AS Tuple(UInt8, String, UInt8, Boolean) NULL)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -564,7 +564,7 @@ output : true ast : nullable_col in (null, 9, 10, 12) raw expr : or(or(eq(nullable_col::Int64 NULL, 9), eq(nullable_col::Int64 NULL, 10)), eq(nullable_col::Int64 NULL, 12)) -checked expr : or(or(eq(nullable_col, CAST(9_i64 AS Int64 NULL)), eq(nullable_col, CAST(10_i64 AS Int64 NULL))), eq(nullable_col, CAST(12_i64 AS Int64 NULL))) +checked expr : or(or(eq(nullable_col, CAST(9_u8 AS Int64 NULL)), eq(nullable_col, CAST(10_u8 AS Int64 NULL))), eq(nullable_col, CAST(12_u8 AS Int64 NULL))) optimized expr : or(or(eq(nullable_col, 9_i64), eq(nullable_col, 10_i64)), eq(nullable_col, 12_i64)) evaluation: +--------+-------------------+------------------------+ @@ -617,7 +617,7 @@ output : [] ast : array_remove_first([0, 1, 2, NULL]) raw expr : array_remove_first(array(0, 1, 2, NULL)) -checked expr : array_remove_first(array(CAST(0_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) +checked expr : array_remove_first(array(CAST(0_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) optimized expr : [1, 2, NULL] output type : Array(UInt8 NULL) output domain : [{1..=2} ∪ {NULL}] @@ -685,7 +685,7 @@ output : [] ast : array_remove_last([0, 1, 2, NULL]) raw expr : array_remove_last(array(0, 1, 2, NULL)) -checked expr : array_remove_last(array(CAST(0_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) +checked expr : array_remove_last(array(CAST(0_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) optimized expr : [0, 1, 2] output type : Array(UInt8 NULL) output domain : [{0..=2}] @@ -744,7 +744,7 @@ output : [] ast : array_concat([], [1,2]) raw expr : array_concat(array(), array(1, 2)) -checked expr : array_concat(CAST(array<>() AS Array(UInt8)), array(1_u8, 2_u8)) +checked expr : array_concat(CAST(array<>() AS Array(UInt8)), array(1_u8, 2_u8)) optimized expr : [1, 2] output type : Array(UInt8) output domain : [{1..=2}] @@ -753,7 +753,7 @@ output : [1, 2] ast : array_concat([false, true], []) raw expr : array_concat(array(false, true), array()) -checked expr : array_concat(array(false, true), CAST(array<>() AS Array(Boolean))) +checked expr : array_concat(array(false, true), CAST(array<>() AS Array(Boolean))) optimized expr : [false, true] output type : Array(Boolean) output domain : [{FALSE, TRUE}] @@ -793,7 +793,7 @@ error: ast : array_concat([1, 2, 3, 4, 5, null], [nullable_col]) raw expr : array_concat(array(1, 2, 3, 4, 5, NULL), array(nullable_col::Int64 NULL)) -checked expr : array_concat(CAST(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int64 NULL)), array(nullable_col)) +checked expr : array_concat(CAST(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int64 NULL)), array(nullable_col)) optimized expr : array_concat([1, 2, 3, 4, 5, NULL], array(nullable_col)) evaluation: +--------+-------------------+-----------------------------+ @@ -817,8 +817,8 @@ evaluation (internal): ast : array_concat([1,2,null], [int8_col]) raw expr : array_concat(array(1, 2, NULL), array(int8_col::Int8)) -checked expr : array_concat(CAST(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int16 NULL)), CAST(array(int8_col) AS Array(Int16 NULL))) -optimized expr : array_concat([1, 2, NULL], CAST(array(int8_col) AS Array(Int16 NULL))) +checked expr : array_concat(CAST(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int16 NULL)), CAST(array(int8_col) AS Array(Int16 NULL))) +optimized expr : array_concat([1, 2, NULL], CAST(array(int8_col) AS Array(Int16 NULL))) evaluation: +--------+----------+--------------------+ | | int8_col | Output | @@ -841,7 +841,7 @@ evaluation (internal): ast : array_prepend(1, []) raw expr : array_prepend(1, array()) -checked expr : array_prepend(1_u8, CAST(array<>() AS Array(UInt8) NULL)) +checked expr : array_prepend(1_u8, CAST(array<>() AS Array(UInt8) NULL)) optimized expr : [1] output type : Array(UInt8) output domain : [{1..=1}] @@ -850,7 +850,7 @@ output : [1] ast : array_prepend(1, [2, 3, NULL, 4]) raw expr : array_prepend(1, array(2, 3, NULL, 4)) -checked expr : array_prepend(CAST(1_u8 AS UInt8 NULL), CAST(array(CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL)) AS Array(UInt8 NULL) NULL)) +checked expr : array_prepend(CAST(1_u8 AS UInt8 NULL), CAST(array(CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL)) AS Array(UInt8 NULL) NULL)) optimized expr : [1, 2, 3, NULL, 4] output type : Array(UInt8 NULL) output domain : [{1..=4} ∪ {NULL}] @@ -859,7 +859,7 @@ output : [1, 2, 3, NULL, 4] ast : array_prepend('a', ['b', NULL, NULL, 'c', 'd']) raw expr : array_prepend('a', array('b', NULL, NULL, 'c', 'd')) -checked expr : array_prepend(CAST("a" AS String NULL), CAST(array(CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL)) AS Array(String NULL) NULL)) +checked expr : array_prepend(CAST("a" AS String NULL), CAST(array(CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL)) AS Array(String NULL) NULL)) optimized expr : ['a', 'b', NULL, NULL, 'c', 'd'] output type : Array(String NULL) output domain : [{"a"..="d"} ∪ {NULL}] @@ -868,7 +868,7 @@ output : ['a', 'b', NULL, NULL, 'c', 'd'] ast : array_prepend(NULL, CAST([2, 3] AS Array(INT8 NULL) NULL)) raw expr : array_prepend(NULL, CAST(array(2, 3) AS Array(Int8 NULL) NULL)) -checked expr : array_prepend(CAST(NULL AS Int8 NULL), CAST(array(2_u8, 3_u8) AS Array(Int8 NULL) NULL)) +checked expr : array_prepend(CAST(NULL AS Int8 NULL), CAST(array(2_u8, 3_u8) AS Array(Int8 NULL) NULL)) optimized expr : [NULL, 2, 3] output type : Array(Int8 NULL) output domain : [{2..=3} ∪ {NULL}] @@ -877,7 +877,7 @@ output : [NULL, 2, 3] ast : array_prepend(1, CAST([2, 3] AS Array(INT8 NULL) NULL)) raw expr : array_prepend(1, CAST(array(2, 3) AS Array(Int8 NULL) NULL)) -checked expr : array_prepend(CAST(1_u8 AS Int16 NULL), CAST(CAST(array(2_u8, 3_u8) AS Array(Int8 NULL) NULL) AS Array(Int16 NULL) NULL)) +checked expr : array_prepend(CAST(1_u8 AS Int16 NULL), CAST(CAST(array(2_u8, 3_u8) AS Array(Int8 NULL) NULL) AS Array(Int16 NULL) NULL)) optimized expr : [1, 2, 3] output type : Array(Int16 NULL) output domain : [{1..=3}] @@ -886,7 +886,7 @@ output : [1, 2, 3] ast : array_prepend(a, [b, c]) raw expr : array_prepend(a::Int16, array(b::Int16, c::Int16)) -checked expr : array_prepend(a, CAST(array(b, c) AS Array(Int16) NULL)) +checked expr : array_prepend(a, CAST(array(b, c) AS Array(Int16) NULL)) evaluation: +--------+---------+---------+---------+--------------+ | | a | b | c | Output | @@ -910,7 +910,7 @@ evaluation (internal): ast : array_append([], 1) raw expr : array_append(array(), 1) -checked expr : array_append(CAST(array<>() AS Array(UInt8) NULL), 1_u8) +checked expr : array_append(CAST(array<>() AS Array(UInt8) NULL), 1_u8) optimized expr : [1] output type : Array(UInt8) output domain : [{1..=1}] @@ -919,7 +919,7 @@ output : [1] ast : array_append([2, 3, NULL, 4], 5) raw expr : array_append(array(2, 3, NULL, 4), 5) -checked expr : array_append(CAST(array(CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL)) AS Array(UInt8 NULL) NULL), CAST(5_u8 AS UInt8 NULL)) +checked expr : array_append(CAST(array(CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL)) AS Array(UInt8 NULL) NULL), CAST(5_u8 AS UInt8 NULL)) optimized expr : [2, 3, NULL, 4, 5] output type : Array(UInt8 NULL) output domain : [{2..=5} ∪ {NULL}] @@ -928,7 +928,7 @@ output : [2, 3, NULL, 4, 5] ast : array_append(['b', NULL, NULL, 'c', 'd'], 'e') raw expr : array_append(array('b', NULL, NULL, 'c', 'd'), 'e') -checked expr : array_append(CAST(array(CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL)) AS Array(String NULL) NULL), CAST("e" AS String NULL)) +checked expr : array_append(CAST(array(CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL)) AS Array(String NULL) NULL), CAST("e" AS String NULL)) optimized expr : ['b', NULL, NULL, 'c', 'd', 'e'] output type : Array(String NULL) output domain : [{"b"..="e"} ∪ {NULL}] @@ -937,7 +937,7 @@ output : ['b', NULL, NULL, 'c', 'd', 'e'] ast : array_append(CAST([1, 2] AS Array(INT8 NULL) NULL), NULL) raw expr : array_append(CAST(array(1, 2) AS Array(Int8 NULL) NULL), NULL) -checked expr : array_append(CAST(array(1_u8, 2_u8) AS Array(Int8 NULL) NULL), CAST(NULL AS Int8 NULL)) +checked expr : array_append(CAST(array(1_u8, 2_u8) AS Array(Int8 NULL) NULL), CAST(NULL AS Int8 NULL)) optimized expr : [1, 2, NULL] output type : Array(Int8 NULL) output domain : [{1..=2} ∪ {NULL}] @@ -946,7 +946,7 @@ output : [1, 2, NULL] ast : array_append(CAST([1, 2] AS Array(INT8 NULL) NULL), 3) raw expr : array_append(CAST(array(1, 2) AS Array(Int8 NULL) NULL), 3) -checked expr : array_append(CAST(CAST(array(1_u8, 2_u8) AS Array(Int8 NULL) NULL) AS Array(Int16 NULL) NULL), CAST(3_u8 AS Int16 NULL)) +checked expr : array_append(CAST(CAST(array(1_u8, 2_u8) AS Array(Int8 NULL) NULL) AS Array(Int16 NULL) NULL), CAST(3_u8 AS Int16 NULL)) optimized expr : [1, 2, 3] output type : Array(Int16 NULL) output domain : [{1..=3}] @@ -955,7 +955,7 @@ output : [1, 2, 3] ast : array_append([b, c], a) raw expr : array_append(array(b::Int16, c::Int16), a::Int16) -checked expr : array_append(CAST(array(b, c) AS Array(Int16) NULL), a) +checked expr : array_append(CAST(array(b, c) AS Array(Int16) NULL), a) evaluation: +--------+---------+---------+---------+--------------+ | | a | b | c | Output | @@ -979,7 +979,7 @@ evaluation (internal): ast : array_indexof([], NULL) raw expr : array_indexof(array(), NULL) -checked expr : array_indexof(CAST(array<>() AS Array(NULL)), NULL) +checked expr : array_indexof(CAST(array<>() AS Array(NULL)), NULL) optimized expr : 0_u64 output type : UInt64 output domain : {0..=0} @@ -1006,7 +1006,7 @@ output : 1 ast : array_indexof([], false) raw expr : array_indexof(array(), false) -checked expr : array_indexof(CAST(array<>() AS Array(Boolean)), false) +checked expr : array_indexof(CAST(array<>() AS Array(Boolean)), false) optimized expr : 0_u64 output type : UInt64 output domain : {0..=0} @@ -1015,7 +1015,7 @@ output : 0 ast : array_indexof([false, true], null) raw expr : array_indexof(array(false, true), NULL) -checked expr : array_indexof(CAST(array(false, true) AS Array(Boolean NULL)), CAST(NULL AS Boolean NULL)) +checked expr : array_indexof(CAST(array(false, true) AS Array(Boolean NULL)), CAST(NULL AS Boolean NULL)) optimized expr : 0_u64 output type : UInt64 output domain : {0..=0} @@ -1039,13 +1039,13 @@ error: --> SQL:1:22 | 1 | array_indexof([1,2,3,'s'], 's') - | ^^^ invalid digit found in string while evaluating function `to_int64('s')` in expr `to_int64('s')`, during run expr: `array_indexof(array(to_int64(1), to_int64(2), to_int64(3), to_int64('s')), to_int64('s'))` + | ^^^ invalid digit found in string while evaluating function `to_int64('s')` in expr `to_int64()`, during run expr: `array_indexof(array(CAST(1 AS Int64), CAST(2 AS Int64), CAST(3 AS Int64), CAST('s' AS Int64)), CAST('s' AS Int64))` ast : array_indexof([1::VARIANT,2::VARIANT,3::VARIANT,4::VARIANT], 2::VARIANT) raw expr : array_indexof(array(CAST(1 AS Variant), CAST(2 AS Variant), CAST(3 AS Variant), CAST(4 AS Variant)), CAST(2 AS Variant)) -checked expr : array_indexof(array(to_variant(1_u8), to_variant(2_u8), to_variant(3_u8), to_variant(4_u8)), to_variant(2_u8)) +checked expr : array_indexof(array(CAST(1_u8 AS Variant), CAST(2_u8 AS Variant), CAST(3_u8 AS Variant), CAST(4_u8 AS Variant)), CAST(2_u8 AS Variant)) optimized expr : 2_u64 output type : UInt64 output domain : {2..=2} @@ -1054,7 +1054,7 @@ output : 2 ast : array_indexof([1, 2, 3, 4, 5, null], nullable_col) raw expr : array_indexof(array(1, 2, 3, 4, 5, NULL), nullable_col::Int64 NULL) -checked expr : array_indexof(CAST(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int64 NULL)), nullable_col) +checked expr : array_indexof(CAST(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int64 NULL)), nullable_col) optimized expr : array_indexof([1, 2, 3, 4, 5, NULL], nullable_col) evaluation: +--------+-------------------+----------------------------+ @@ -1078,8 +1078,8 @@ evaluation (internal): ast : array_indexof([9,10,null], int8_col) raw expr : array_indexof(array(9, 10, NULL), int8_col::Int8) -checked expr : array_indexof(CAST(array(CAST(9_u8 AS UInt8 NULL), CAST(10_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int16 NULL)), CAST(int8_col AS Int16 NULL)) -optimized expr : array_indexof([9, 10, NULL], CAST(int8_col AS Int16 NULL)) +checked expr : array_indexof(CAST(array(CAST(9_u8 AS UInt8 NULL), CAST(10_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) AS Array(Int16 NULL)), CAST(int8_col AS Int16 NULL)) +optimized expr : array_indexof([9, 10, NULL], CAST(int8_col AS Int16 NULL)) evaluation: +--------+----------+----------------------------+ | | int8_col | Output | @@ -1111,7 +1111,7 @@ output : 0 ast : array_unique([1, 1, 2, 2, 3, NULL]) raw expr : array_unique(array(1, 1, 2, 2, 3, NULL)) -checked expr : array_unique(array(CAST(1_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) +checked expr : array_unique(array(CAST(1_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) optimized expr : 3_u64 output type : UInt64 output domain : {3..=3} @@ -1120,7 +1120,7 @@ output : 3 ast : array_unique(['a', NULL, 'a', 'b', NULL, 'c', 'd']) raw expr : array_unique(array('a', NULL, 'a', 'b', NULL, 'c', 'd')) -checked expr : array_unique(array(CAST("a" AS String NULL), CAST(NULL AS String NULL), CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL))) +checked expr : array_unique(array(CAST("a" AS String NULL), CAST(NULL AS String NULL), CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL))) optimized expr : 4_u64 output type : UInt64 output domain : {4..=4} @@ -1164,7 +1164,7 @@ output : [] ast : array_distinct([1, 1, 2, 2, 3, NULL]) raw expr : array_distinct(array(1, 1, 2, 2, 3, NULL)) -checked expr : array_distinct(array(CAST(1_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) +checked expr : array_distinct(array(CAST(1_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) optimized expr : [1, 2, 3] output type : Array(UInt8 NULL) output domain : [{1..=3}] @@ -1173,7 +1173,7 @@ output : [1, 2, 3] ast : array_distinct(['a', NULL, 'a', 'b', NULL, 'c', 'd']) raw expr : array_distinct(array('a', NULL, 'a', 'b', NULL, 'c', 'd')) -checked expr : array_distinct(array(CAST("a" AS String NULL), CAST(NULL AS String NULL), CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL))) +checked expr : array_distinct(array(CAST("a" AS String NULL), CAST(NULL AS String NULL), CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL))) optimized expr : ['a', 'b', 'c', 'd'] output type : Array(String NULL) output domain : [{"a"..="d"}] @@ -1226,7 +1226,7 @@ output : 28 ast : array_sum([1, 2, 3, 4, 5, NULL, 6]) raw expr : array_sum(array(1, 2, 3, 4, 5, NULL, 6)) -checked expr : array_sum(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) +checked expr : array_sum(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) optimized expr : 21_u64 output type : UInt64 NULL output domain : {21..=21} @@ -1244,7 +1244,7 @@ output : 18.0 ast : array_sum([1.2, NULL, 3.4, 5.6, NULL]) raw expr : array_sum(array(1.2, NULL, 3.4, 5.6, NULL)) -checked expr : array_sum(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_sum(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : 10.2_d128(38,1) output type : Decimal(38, 1) NULL output domain : {10.2..=10.2} @@ -1323,7 +1323,7 @@ output : 4 ast : array_avg([1, 2, 3, 4, 5, NULL, 6]) raw expr : array_avg(array(1, 2, 3, 4, 5, NULL, 6)) -checked expr : array_avg(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) +checked expr : array_avg(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) optimized expr : 3.5_f64 output type : Float64 NULL output domain : {3.5..=3.5} @@ -1341,7 +1341,7 @@ output : 4.5000 ast : array_avg([1.2, NULL, 3.4, 5.6, NULL]) raw expr : array_avg(array(1.2, NULL, 3.4, 5.6, NULL)) -checked expr : array_avg(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_avg(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : 3.4000_d128(38,4) output type : Decimal(38, 4) NULL output domain : {3.4000..=3.4000} @@ -1420,7 +1420,7 @@ output : 7 ast : array_count([1, 2, 3, 4, 5, NULL, 6]) raw expr : array_count(array(1, 2, 3, 4, 5, NULL, 6)) -checked expr : array_count(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) +checked expr : array_count(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) optimized expr : 6_u64 output type : UInt64 output domain : {6..=6} @@ -1438,7 +1438,7 @@ output : 4 ast : array_count([1.2, NULL, 3.4, 5.6, NULL]) raw expr : array_count(array(1.2, NULL, 3.4, 5.6, NULL)) -checked expr : array_count(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_count(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : 3_u64 output type : UInt64 output domain : {3..=3} @@ -1456,7 +1456,7 @@ output : 5 ast : array_count(['a', 'b', NULL, 'c', 'd', NULL]) raw expr : array_count(array('a', 'b', NULL, 'c', 'd', NULL)) -checked expr : array_count(array(CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL), CAST(NULL AS String NULL))) +checked expr : array_count(array(CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL), CAST(NULL AS String NULL))) optimized expr : 4_u64 output type : UInt64 output domain : {4..=4} @@ -1535,7 +1535,7 @@ output : 7 ast : array_max([1, 2, 3, 4, 5, NULL, 6]) raw expr : array_max(array(1, 2, 3, 4, 5, NULL, 6)) -checked expr : array_max(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) +checked expr : array_max(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) optimized expr : 6_u8 output type : UInt8 NULL output domain : {6..=6} @@ -1553,7 +1553,7 @@ output : 7.8 ast : array_max([1.2, NULL, 3.4, 5.6, NULL]) raw expr : array_max(array(1.2, NULL, 3.4, 5.6, NULL)) -checked expr : array_max(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_max(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : 5.6_d128(2,1) output type : Decimal(2, 1) NULL output domain : {5.6..=5.6} @@ -1571,7 +1571,7 @@ output : 'e' ast : array_max(['a', 'b', NULL, 'c', 'd', NULL]) raw expr : array_max(array('a', 'b', NULL, 'c', 'd', NULL)) -checked expr : array_max(array(CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL), CAST(NULL AS String NULL))) +checked expr : array_max(array(CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL), CAST(NULL AS String NULL))) optimized expr : "d" output type : String NULL output domain : {"d"..="d"} @@ -1650,7 +1650,7 @@ output : 1 ast : array_min([1, 2, 3, 4, 5, NULL, 6]) raw expr : array_min(array(1, 2, 3, 4, 5, NULL, 6)) -checked expr : array_min(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) +checked expr : array_min(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(4_u8 AS UInt8 NULL), CAST(5_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL), CAST(6_u8 AS UInt8 NULL))) optimized expr : 1_u8 output type : UInt8 NULL output domain : {1..=1} @@ -1668,7 +1668,7 @@ output : 1.2 ast : array_min([1.2, NULL, 3.4, 5.6, NULL]) raw expr : array_min(array(1.2, NULL, 3.4, 5.6, NULL)) -checked expr : array_min(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_min(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : 1.2_d128(2,1) output type : Decimal(2, 1) NULL output domain : {1.2..=1.2} @@ -1686,7 +1686,7 @@ output : 'a' ast : array_min(['a', 'b', NULL, 'c', 'd', NULL]) raw expr : array_min(array('a', 'b', NULL, 'c', 'd', NULL)) -checked expr : array_min(array(CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL), CAST(NULL AS String NULL))) +checked expr : array_min(array(CAST("a" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL), CAST("c" AS String NULL), CAST("d" AS String NULL), CAST(NULL AS String NULL))) optimized expr : "a" output type : String NULL output domain : {"a"..="a"} @@ -1765,7 +1765,7 @@ output : 1 ast : array_any([NULL, 3, 2, 1]) raw expr : array_any(array(NULL, 3, 2, 1)) -checked expr : array_any(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) +checked expr : array_any(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) optimized expr : 3_u8 output type : UInt8 NULL output domain : {3..=3} @@ -1783,7 +1783,7 @@ output : 'a' ast : array_any([NULL, 'x', 'y', 'z']) raw expr : array_any(array(NULL, 'x', 'y', 'z')) -checked expr : array_any(array(CAST(NULL AS String NULL), CAST("x" AS String NULL), CAST("y" AS String NULL), CAST("z" AS String NULL))) +checked expr : array_any(array(CAST(NULL AS String NULL), CAST("x" AS String NULL), CAST("y" AS String NULL), CAST("z" AS String NULL))) optimized expr : "x" output type : String NULL output domain : {"x"..="x"} @@ -1862,7 +1862,7 @@ output : 1 ast : array_stddev_samp([NULL, 3, 2, 1]) raw expr : array_stddev_samp(array(NULL, 3, 2, 1)) -checked expr : array_stddev_samp(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) +checked expr : array_stddev_samp(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) optimized expr : 1_f64 output type : Float64 NULL output domain : {1..=1} @@ -1915,7 +1915,7 @@ output : 0.8164965809 ast : array_stddev_pop([NULL, 3, 2, 1]) raw expr : array_stddev_pop(array(NULL, 3, 2, 1)) -checked expr : array_stddev_pop(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) +checked expr : array_stddev_pop(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) optimized expr : 0.8164965809_f64 output type : Float64 NULL output domain : {0.8164965809..=0.8164965809} @@ -1968,7 +1968,7 @@ output : 2 ast : array_median([NULL, 3, 2, 1]) raw expr : array_median(array(NULL, 3, 2, 1)) -checked expr : array_median(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) +checked expr : array_median(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) optimized expr : 2_f64 output type : Float64 NULL output domain : {2..=2} @@ -2021,7 +2021,7 @@ output : 3 ast : array_approx_count_distinct([NULL, 3, 2, 1]) raw expr : array_approx_count_distinct(array(NULL, 3, 2, 1)) -checked expr : array_approx_count_distinct(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) +checked expr : array_approx_count_distinct(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) optimized expr : 3_u64 output type : UInt64 output domain : {3..=3} @@ -2039,7 +2039,7 @@ output : 3 ast : array_approx_count_distinct([NULL, 'x', 'y', 'z']) raw expr : array_approx_count_distinct(array(NULL, 'x', 'y', 'z')) -checked expr : array_approx_count_distinct(array(CAST(NULL AS String NULL), CAST("x" AS String NULL), CAST("y" AS String NULL), CAST("z" AS String NULL))) +checked expr : array_approx_count_distinct(array(CAST(NULL AS String NULL), CAST("x" AS String NULL), CAST("y" AS String NULL), CAST("z" AS String NULL))) optimized expr : 3_u64 output type : UInt64 output domain : {3..=3} @@ -2118,7 +2118,7 @@ output : 0 ast : array_kurtosis([NULL, 3, 2, 1]) raw expr : array_kurtosis(array(NULL, 3, 2, 1)) -checked expr : array_kurtosis(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) +checked expr : array_kurtosis(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) optimized expr : 0_f64 output type : Float64 NULL output domain : {0..=0} @@ -2197,7 +2197,7 @@ output : 0 ast : array_skewness([NULL, 3, 2, 1]) raw expr : array_skewness(array(NULL, 3, 2, 1)) -checked expr : array_skewness(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) +checked expr : array_skewness(array(CAST(NULL AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(1_u8 AS UInt8 NULL))) optimized expr : 0_f64 output type : Float64 NULL output domain : {0..=0} @@ -2276,7 +2276,7 @@ output : [] ast : array_sort_asc_null_first(NULL) raw expr : array_sort_asc_null_first(NULL) -checked expr : array_sort_asc_null_first(CAST(NULL AS Array(Nothing) NULL)) +checked expr : array_sort_asc_null_first(CAST(NULL AS Array(Nothing) NULL)) optimized expr : NULL output type : Array(Nothing) NULL output domain : {NULL} @@ -2348,7 +2348,7 @@ output : [20, 8, 7, 6, 5, 4, 3, 2, 1] ast : array_sort_asc_null_first([1.2, NULL, 3.4, 5.6, '2.2', NULL]) raw expr : array_sort_asc_null_first(array(1.2, NULL, 3.4, 5.6, '2.2', NULL)) -checked expr : array_sort_asc_null_first(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST("2.2" AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_sort_asc_null_first(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST("2.2" AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : [NULL, NULL, 1.2, 2.2, 3.4, 5.6] output type : Array(Decimal(2, 1) NULL) output domain : [{1.2..=5.6} ∪ {NULL}] @@ -2357,7 +2357,7 @@ output : [NULL, NULL, 1.2, 2.2, 3.4, 5.6] ast : array_sort_asc_null_last([1.2, NULL, 3.4, 5.6, '2.2', NULL]) raw expr : array_sort_asc_null_last(array(1.2, NULL, 3.4, 5.6, '2.2', NULL)) -checked expr : array_sort_asc_null_last(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST("2.2" AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_sort_asc_null_last(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST("2.2" AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : [1.2, 2.2, 3.4, 5.6, NULL, NULL] output type : Array(Decimal(2, 1) NULL) output domain : [{1.2..=5.6} ∪ {NULL}] @@ -2366,7 +2366,7 @@ output : [1.2, 2.2, 3.4, 5.6, NULL, NULL] ast : array_sort_desc_null_first([1.2, NULL, 3.4, 5.6, '2.2', NULL]) raw expr : array_sort_desc_null_first(array(1.2, NULL, 3.4, 5.6, '2.2', NULL)) -checked expr : array_sort_desc_null_first(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST("2.2" AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_sort_desc_null_first(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST("2.2" AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : [NULL, NULL, 5.6, 3.4, 2.2, 1.2] output type : Array(Decimal(2, 1) NULL) output domain : [{1.2..=5.6} ∪ {NULL}] @@ -2375,7 +2375,7 @@ output : [NULL, NULL, 5.6, 3.4, 2.2, 1.2] ast : array_sort_desc_null_last([1.2, NULL, 3.4, 5.6, '2.2', NULL]) raw expr : array_sort_desc_null_last(array(1.2, NULL, 3.4, 5.6, '2.2', NULL)) -checked expr : array_sort_desc_null_last(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST("2.2" AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) +checked expr : array_sort_desc_null_last(array(CAST(1.2_d128(2,1) AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL), CAST(3.4_d128(2,1) AS Decimal(2, 1) NULL), CAST(5.6_d128(2,1) AS Decimal(2, 1) NULL), CAST("2.2" AS Decimal(2, 1) NULL), CAST(NULL AS Decimal(2, 1) NULL))) optimized expr : [5.6, 3.4, 2.2, 1.2, NULL, NULL] output type : Array(Decimal(2, 1) NULL) output domain : [{1.2..=5.6} ∪ {NULL}] diff --git a/src/query/functions/tests/it/scalars/testdata/binary.txt b/src/query/functions/tests/it/scalars/testdata/binary.txt index f526b79c4a76c..a105868f1b44c 100644 --- a/src/query/functions/tests/it/scalars/testdata/binary.txt +++ b/src/query/functions/tests/it/scalars/testdata/binary.txt @@ -9,7 +9,7 @@ output : 5 ast : length(to_binary(NULL)) raw expr : length(to_binary(NULL)) -checked expr : length(to_binary(CAST(NULL AS Variant NULL))) +checked expr : length(to_binary(CAST(NULL AS Variant NULL))) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -40,7 +40,7 @@ evaluation (internal): ast : to_base64('Abc') raw expr : to_base64('Abc') -checked expr : to_base64(to_binary("Abc")) +checked expr : to_base64(CAST("Abc" AS Binary)) optimized expr : "QWJj" output type : String output domain : {"QWJj"..="QWJj"} @@ -49,7 +49,7 @@ output : 'QWJj' ast : to_base64('123') raw expr : to_base64('123') -checked expr : to_base64(to_binary("123")) +checked expr : to_base64(CAST("123" AS Binary)) optimized expr : "MTIz" output type : String output domain : {"MTIz"..="MTIz"} @@ -58,7 +58,7 @@ output : 'MTIz' ast : to_base64(Null) raw expr : to_base64(NULL) -checked expr : to_base64(CAST(NULL AS Binary NULL)) +checked expr : to_base64(CAST(NULL AS Binary NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -67,7 +67,7 @@ output : NULL ast : to_base64(a) raw expr : to_base64(a::String) -checked expr : to_base64(to_binary(a)) +checked expr : to_base64(CAST(a AS Binary)) evaluation: +--------+-----------------+--------+ | | a | Output | @@ -119,7 +119,7 @@ evaluation (internal): ast : from_base64('QWJj')::String raw expr : CAST(from_base64('QWJj') AS String) -checked expr : to_string(from_base64("QWJj")) +checked expr : CAST(from_base64("QWJj") AS String) optimized expr : "Abc" output type : String output domain : {"Abc"..="Abc"} @@ -128,7 +128,7 @@ output : 'Abc' ast : from_base64('MTIz')::String raw expr : CAST(from_base64('MTIz') AS String) -checked expr : to_string(from_base64("MTIz")) +checked expr : CAST(from_base64("MTIz") AS String) optimized expr : "123" output type : String output domain : {"123"..="123"} @@ -137,7 +137,7 @@ output : '123' ast : from_base64(a)::String raw expr : CAST(from_base64(a::String) AS String) -checked expr : to_string(from_base64(a)) +checked expr : CAST(from_base64(a) AS String) evaluation: +--------+-------------------+---------+ | | a | Output | @@ -166,7 +166,7 @@ error: ast : from_hex('6461746162656e64')::String raw expr : CAST(from_hex('6461746162656e64') AS String) -checked expr : to_string(from_hex("6461746162656e64")) +checked expr : CAST(from_hex("6461746162656e64") AS String) optimized expr : "databend" output type : String output domain : {"databend"..="databend"} @@ -183,7 +183,7 @@ error: ast : from_hex(s)::String raw expr : CAST(from_hex(s::String) AS String) -checked expr : to_string(from_hex(s)) +checked expr : CAST(from_hex(s) AS String) evaluation: +--------+-----------------------+------------+ | | s | Output | @@ -286,7 +286,7 @@ output : 0101000020E61000006666666666965EC06666666666C64240 ast : TRY_from_base64('QWJj')::String raw expr : CAST(TRY_from_base64('QWJj') AS String) -checked expr : CAST(try_from_base64("QWJj") AS String) +checked expr : CAST(try_from_base64("QWJj") AS String) optimized expr : "Abc" output type : String output domain : {"Abc"..="Abc"} @@ -295,7 +295,7 @@ output : 'Abc' ast : TRY_from_base64('MTIz')::String raw expr : CAST(TRY_from_base64('MTIz') AS String) -checked expr : CAST(try_from_base64("MTIz") AS String) +checked expr : CAST(try_from_base64("MTIz") AS String) optimized expr : "123" output type : String output domain : {"123"..="123"} @@ -304,7 +304,7 @@ output : '123' ast : TRY_from_base64(a)::String raw expr : CAST(TRY_from_base64(a::String) AS String) -checked expr : CAST(try_from_base64(a) AS String) +checked expr : CAST(try_from_base64(a) AS String) evaluation: +--------+-------------------+---------+ | | a | Output | @@ -334,7 +334,7 @@ output : NULL ast : TRY_from_hex('6461746162656e64')::String raw expr : CAST(TRY_from_hex('6461746162656e64') AS String) -checked expr : CAST(try_from_hex("6461746162656e64") AS String) +checked expr : CAST(try_from_hex("6461746162656e64") AS String) optimized expr : "databend" output type : String output domain : {"databend"..="databend"} @@ -352,7 +352,7 @@ output : NULL ast : TRY_from_hex(s)::String raw expr : CAST(TRY_from_hex(s::String) AS String) -checked expr : CAST(try_from_hex(s) AS String) +checked expr : CAST(try_from_hex(s) AS String) evaluation: +--------+-----------------------+------------+ | | s | Output | diff --git a/src/query/functions/tests/it/scalars/testdata/bitmap.txt b/src/query/functions/tests/it/scalars/testdata/bitmap.txt index 807fcc2ce40be..a73d5a79a56f3 100644 --- a/src/query/functions/tests/it/scalars/testdata/bitmap.txt +++ b/src/query/functions/tests/it/scalars/testdata/bitmap.txt @@ -1,6 +1,6 @@ ast : build_bitmap([NULL, 8]) raw expr : build_bitmap(array(NULL, 8)) -checked expr : build_bitmap(array(CAST(NULL AS UInt8 NULL), CAST(8_u8 AS UInt8 NULL))) +checked expr : build_bitmap(array(CAST(NULL AS UInt8 NULL), CAST(8_u8 AS UInt8 NULL))) optimized expr : RoaringTreemap<[8]> output type : Bitmap output domain : Undefined @@ -9,7 +9,7 @@ output : '8' ast : build_bitmap([7, 8]) raw expr : build_bitmap(array(7, 8)) -checked expr : build_bitmap(CAST(array(7_u8, 8_u8) AS Array(UInt8 NULL))) +checked expr : build_bitmap(CAST(array(7_u8, 8_u8) AS Array(UInt8 NULL))) optimized expr : RoaringTreemap<[7, 8]> output type : Bitmap output domain : Undefined @@ -20,13 +20,13 @@ error: --> SQL:1:1 | 1 | build_bitmap([7, -8]) - | ^^^^^^^^^^^^^^^^^^^^^ build_bitmap just support positive integer while evaluating function `build_bitmap([7, -8])` in expr `build_bitmap(CAST(array(to_int16(7), - 8) AS Array(Int16 NULL)))` + | ^^^^^^^^^^^^^^^^^^^^^ build_bitmap just support positive integer while evaluating function `build_bitmap([7, -8])` in expr `build_bitmap(CAST(array(CAST(7 AS Int16), - 8) AS Array(Int16 NULL)))` ast : build_bitmap([a, b]) raw expr : build_bitmap(array(a::UInt16, b::UInt16)) -checked expr : build_bitmap(CAST(array(a, b) AS Array(UInt16 NULL))) +checked expr : build_bitmap(CAST(array(a, b) AS Array(UInt16 NULL))) evaluation: +--------+---------+---------+-----------+ | | a | b | Output | @@ -58,7 +58,7 @@ output : '0,1,2' ast : to_bitmap(1024) raw expr : to_bitmap(1024) -checked expr : to_bitmap(to_uint64(1024_u16)) +checked expr : to_bitmap(CAST(1024_u16 AS UInt64)) optimized expr : RoaringTreemap<[1024]> output type : Bitmap output domain : Undefined @@ -67,7 +67,7 @@ output : '1024' ast : bitmap_contains(build_bitmap([1,4,5]), 1) raw expr : bitmap_contains(build_bitmap(array(1, 4, 5)), 1) -checked expr : bitmap_contains(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), to_uint64(1_u8)) +checked expr : bitmap_contains(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), CAST(1_u8 AS UInt64)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -76,7 +76,7 @@ output : true ast : bitmap_count(build_bitmap([1,2,5])) raw expr : bitmap_count(build_bitmap(array(1, 2, 5))) -checked expr : bitmap_count(build_bitmap(CAST(array(1_u8, 2_u8, 5_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_count(build_bitmap(CAST(array(1_u8, 2_u8, 5_u8) AS Array(UInt8 NULL)))) optimized expr : 3_u64 output type : UInt64 output domain : {3..=3} @@ -85,7 +85,7 @@ output : 3 ast : bitmap_has_all(build_bitmap([1,4,5]), build_bitmap([1])) raw expr : bitmap_has_all(build_bitmap(array(1, 4, 5)), build_bitmap(array(1))) -checked expr : bitmap_has_all(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_has_all(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8) AS Array(UInt8 NULL)))) optimized expr : true output type : Boolean output domain : {TRUE} @@ -94,7 +94,7 @@ output : true ast : bitmap_has_all(build_bitmap([1,4,5]), build_bitmap([1,2])) raw expr : bitmap_has_all(build_bitmap(array(1, 4, 5)), build_bitmap(array(1, 2))) -checked expr : bitmap_has_all(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 2_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_has_all(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 2_u8) AS Array(UInt8 NULL)))) optimized expr : false output type : Boolean output domain : {FALSE} @@ -103,7 +103,7 @@ output : false ast : bitmap_has_any(build_bitmap([1,4,5]), build_bitmap([1,2])) raw expr : bitmap_has_any(build_bitmap(array(1, 4, 5)), build_bitmap(array(1, 2))) -checked expr : bitmap_has_any(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 2_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_has_any(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 2_u8) AS Array(UInt8 NULL)))) optimized expr : true output type : Boolean output domain : {TRUE} @@ -112,7 +112,7 @@ output : true ast : bitmap_has_any(build_bitmap([1,4,5]), build_bitmap([2,3])) raw expr : bitmap_has_any(build_bitmap(array(1, 4, 5)), build_bitmap(array(2, 3))) -checked expr : bitmap_has_any(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(2_u8, 3_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_has_any(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(2_u8, 3_u8) AS Array(UInt8 NULL)))) optimized expr : false output type : Boolean output domain : {FALSE} @@ -121,7 +121,7 @@ output : false ast : bitmap_max(build_bitmap([1,4,5])) raw expr : bitmap_max(build_bitmap(array(1, 4, 5))) -checked expr : bitmap_max(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_max(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL)))) optimized expr : 5_u64 output type : UInt64 output domain : {5..=5} @@ -130,7 +130,7 @@ output : 5 ast : bitmap_min(build_bitmap([1,4,5])) raw expr : bitmap_min(build_bitmap(array(1, 4, 5))) -checked expr : bitmap_min(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_min(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL)))) optimized expr : 1_u64 output type : UInt64 output domain : {1..=1} @@ -139,7 +139,7 @@ output : 1 ast : sub_bitmap(build_bitmap([1, 2, 3, 4, 5]), 1, 3) raw expr : sub_bitmap(build_bitmap(array(1, 2, 3, 4, 5)), 1, 3) -checked expr : sub_bitmap(build_bitmap(CAST(array(1_u8, 2_u8, 3_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), to_uint64(1_u8), to_uint64(3_u8)) +checked expr : sub_bitmap(build_bitmap(CAST(array(1_u8, 2_u8, 3_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), CAST(1_u8 AS UInt64), CAST(3_u8 AS UInt64)) optimized expr : RoaringTreemap<[2, 3, 4]> output type : Bitmap output domain : Undefined @@ -148,7 +148,7 @@ output : '2,3,4' ast : bitmap_subset_limit(build_bitmap([3,5,7]), 4, 2) raw expr : bitmap_subset_limit(build_bitmap(array(3, 5, 7)), 4, 2) -checked expr : bitmap_subset_limit(build_bitmap(CAST(array(3_u8, 5_u8, 7_u8) AS Array(UInt8 NULL))), to_uint64(4_u8), to_uint64(2_u8)) +checked expr : bitmap_subset_limit(build_bitmap(CAST(array(3_u8, 5_u8, 7_u8) AS Array(UInt8 NULL))), CAST(4_u8 AS UInt64), CAST(2_u8 AS UInt64)) optimized expr : RoaringTreemap<[5, 7]> output type : Bitmap output domain : Undefined @@ -157,7 +157,7 @@ output : '5,7' ast : bitmap_subset_in_range(build_bitmap([5,7,9]), 6, 9) raw expr : bitmap_subset_in_range(build_bitmap(array(5, 7, 9)), 6, 9) -checked expr : bitmap_subset_in_range(build_bitmap(CAST(array(5_u8, 7_u8, 9_u8) AS Array(UInt8 NULL))), to_uint64(6_u8), to_uint64(9_u8)) +checked expr : bitmap_subset_in_range(build_bitmap(CAST(array(5_u8, 7_u8, 9_u8) AS Array(UInt8 NULL))), CAST(6_u8 AS UInt64), CAST(9_u8 AS UInt64)) optimized expr : RoaringTreemap<[7]> output type : Bitmap output domain : Undefined @@ -166,7 +166,7 @@ output : '7' ast : bitmap_or(build_bitmap([1,4,5]), build_bitmap([1,5])) raw expr : bitmap_or(build_bitmap(array(1, 4, 5)), build_bitmap(array(1, 5))) -checked expr : bitmap_or(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 5_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_or(build_bitmap(CAST(array(1_u8, 4_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 5_u8) AS Array(UInt8 NULL)))) optimized expr : RoaringTreemap<[1, 4, 5]> output type : Bitmap output domain : Undefined @@ -175,7 +175,7 @@ output : '1,4,5' ast : bitmap_and(build_bitmap([1,3,5]), build_bitmap([2,4,6])) raw expr : bitmap_and(build_bitmap(array(1, 3, 5)), build_bitmap(array(2, 4, 6))) -checked expr : bitmap_and(build_bitmap(CAST(array(1_u8, 3_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(2_u8, 4_u8, 6_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_and(build_bitmap(CAST(array(1_u8, 3_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(2_u8, 4_u8, 6_u8) AS Array(UInt8 NULL)))) optimized expr : RoaringTreemap<[]> output type : Bitmap output domain : Undefined @@ -184,7 +184,7 @@ output : '' ast : bitmap_xor(build_bitmap([1,3,5]), build_bitmap([2,4,6])) raw expr : bitmap_xor(build_bitmap(array(1, 3, 5)), build_bitmap(array(2, 4, 6))) -checked expr : bitmap_xor(build_bitmap(CAST(array(1_u8, 3_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(2_u8, 4_u8, 6_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_xor(build_bitmap(CAST(array(1_u8, 3_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(2_u8, 4_u8, 6_u8) AS Array(UInt8 NULL)))) optimized expr : RoaringTreemap<[1, 2, 3, 4, 5, 6]> output type : Bitmap output domain : Undefined @@ -193,7 +193,7 @@ output : '1,2,3,4,5,6' ast : bitmap_not(build_bitmap([1,3,5]), build_bitmap([1,5])) raw expr : bitmap_not(build_bitmap(array(1, 3, 5)), build_bitmap(array(1, 5))) -checked expr : bitmap_not(build_bitmap(CAST(array(1_u8, 3_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 5_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_not(build_bitmap(CAST(array(1_u8, 3_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 5_u8) AS Array(UInt8 NULL)))) optimized expr : RoaringTreemap<[3]> output type : Bitmap output domain : Undefined @@ -202,7 +202,7 @@ output : '3' ast : bitmap_and_not(build_bitmap([1,3,5]), build_bitmap([1,5])) raw expr : bitmap_and_not(build_bitmap(array(1, 3, 5)), build_bitmap(array(1, 5))) -checked expr : bitmap_not(build_bitmap(CAST(array(1_u8, 3_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 5_u8) AS Array(UInt8 NULL)))) +checked expr : bitmap_not(build_bitmap(CAST(array(1_u8, 3_u8, 5_u8) AS Array(UInt8 NULL))), build_bitmap(CAST(array(1_u8, 5_u8) AS Array(UInt8 NULL)))) optimized expr : RoaringTreemap<[3]> output type : Bitmap output domain : Undefined diff --git a/src/query/functions/tests/it/scalars/testdata/boolean.txt b/src/query/functions/tests/it/scalars/testdata/boolean.txt index bc501d6a9d145..85a0483862cfe 100644 --- a/src/query/functions/tests/it/scalars/testdata/boolean.txt +++ b/src/query/functions/tests/it/scalars/testdata/boolean.txt @@ -9,7 +9,7 @@ output : false ast : true AND null raw expr : and(true, NULL) -checked expr : and(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) +checked expr : and(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -36,7 +36,7 @@ output : false ast : false AND null raw expr : and(false, NULL) -checked expr : and(CAST(false AS Boolean NULL), CAST(NULL AS Boolean NULL)) +checked expr : and(CAST(false AS Boolean NULL), CAST(NULL AS Boolean NULL)) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -54,7 +54,7 @@ output : false ast : true AND 1 raw expr : and(true, 1) -checked expr : and(true, to_boolean(1_u8)) +checked expr : and(true, CAST(1_u8 AS Boolean)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -65,7 +65,7 @@ error: --> SQL:1:1 | 1 | 'a' and 1 - | ^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('a')` in expr `to_boolean('a')`, during run expr: `(to_boolean('a') AND to_boolean(1))` + | ^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('a')` in expr `to_boolean()`, during run expr: `(CAST('a' AS Boolean) AND CAST(1 AS Boolean))` @@ -73,13 +73,13 @@ error: --> SQL:1:9 | 1 | NOT NOT 'a' - | ^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('a')` in expr `to_boolean('a')`, during run expr: `NOT NOT to_boolean('a')` + | ^^^ cannot parse to type `BOOLEAN` while evaluating function `to_boolean('a')` in expr `to_boolean()`, during run expr: `NOT NOT CAST('a' AS Boolean)` ast : (a < 1) AND (a < 1) raw expr : and(lt(a::UInt8 NULL, 1), lt(a::UInt8 NULL, 1)) -checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : and(lt(a, 1_u8), lt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -100,7 +100,7 @@ evaluation (internal): ast : (a > 1) AND (a < 1) raw expr : and(gt(a::UInt8 NULL, 1), lt(a::UInt8 NULL, 1)) -checked expr : and(gt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : and(gt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : and(gt(a, 1_u8), lt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -121,7 +121,7 @@ evaluation (internal): ast : (a < 1) AND (a > 1) raw expr : and(lt(a::UInt8 NULL, 1), gt(a::UInt8 NULL, 1)) -checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), gt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), gt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : and(lt(a, 1_u8), gt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -142,7 +142,7 @@ evaluation (internal): ast : (a < 1) AND (a < 1) raw expr : and(lt(a::UInt8 NULL, 1), lt(a::UInt8 NULL, 1)) -checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : and(lt(a, 1_u8), lt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -163,7 +163,7 @@ evaluation (internal): ast : (a > 1) AND (0 > 1) raw expr : and(gt(a::UInt8 NULL, 1), gt(0, 1)) -checked expr : and(gt(a, CAST(1_u8 AS UInt8 NULL)), CAST(gt(0_u8, 1_u8) AS Boolean NULL)) +checked expr : and(gt(a, CAST(1_u8 AS UInt8 NULL)), CAST(gt(0_u8, 1_u8) AS Boolean NULL)) optimized expr : false evaluation: +--------+--------------------+--------------+ @@ -184,7 +184,7 @@ evaluation (internal): ast : (a > 1) AND (0 < 1) raw expr : and(gt(a::UInt8 NULL, 1), lt(0, 1)) -checked expr : and(gt(a, CAST(1_u8 AS UInt8 NULL)), CAST(lt(0_u8, 1_u8) AS Boolean NULL)) +checked expr : and(gt(a, CAST(1_u8 AS UInt8 NULL)), CAST(lt(0_u8, 1_u8) AS Boolean NULL)) optimized expr : and(gt(a, 1_u8), true) evaluation: +--------+--------------------+------------------------+ @@ -205,7 +205,7 @@ evaluation (internal): ast : (a < 1) AND (0 > 1) raw expr : and(lt(a::UInt8 NULL, 1), gt(0, 1)) -checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), CAST(gt(0_u8, 1_u8) AS Boolean NULL)) +checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), CAST(gt(0_u8, 1_u8) AS Boolean NULL)) optimized expr : false evaluation: +--------+--------------------+--------------+ @@ -226,7 +226,7 @@ evaluation (internal): ast : (a < 1) AND (0 < 1) raw expr : and(lt(a::UInt8 NULL, 1), lt(0, 1)) -checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), CAST(lt(0_u8, 1_u8) AS Boolean NULL)) +checked expr : and(lt(a, CAST(1_u8 AS UInt8 NULL)), CAST(lt(0_u8, 1_u8) AS Boolean NULL)) optimized expr : and(lt(a, 1_u8), true) evaluation: +--------+--------------------+------------------------+ @@ -247,7 +247,7 @@ evaluation (internal): ast : (0 > 1) AND (a > 1) raw expr : and(gt(0, 1), gt(a::UInt8 NULL, 1)) -checked expr : and(CAST(gt(0_u8, 1_u8) AS Boolean NULL), gt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : and(CAST(gt(0_u8, 1_u8) AS Boolean NULL), gt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : false evaluation: +--------+--------------------+--------------+ @@ -268,7 +268,7 @@ evaluation (internal): ast : (0 > 1) AND (a < 1) raw expr : and(gt(0, 1), lt(a::UInt8 NULL, 1)) -checked expr : and(CAST(gt(0_u8, 1_u8) AS Boolean NULL), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : and(CAST(gt(0_u8, 1_u8) AS Boolean NULL), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : false evaluation: +--------+--------------------+--------------+ @@ -289,7 +289,7 @@ evaluation (internal): ast : (0 < 1) AND (a > 1) raw expr : and(lt(0, 1), gt(a::UInt8 NULL, 1)) -checked expr : and(CAST(lt(0_u8, 1_u8) AS Boolean NULL), gt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : and(CAST(lt(0_u8, 1_u8) AS Boolean NULL), gt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : and(true, gt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -310,7 +310,7 @@ evaluation (internal): ast : (0 < 1) AND (a < 1) raw expr : and(lt(0, 1), lt(a::UInt8 NULL, 1)) -checked expr : and(CAST(lt(0_u8, 1_u8) AS Boolean NULL), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : and(CAST(lt(0_u8, 1_u8) AS Boolean NULL), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : and(true, lt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -331,7 +331,7 @@ evaluation (internal): ast : NOT a raw expr : not(a::NULL) -checked expr : not(CAST(a AS Boolean NULL)) +checked expr : not(CAST(a AS Boolean NULL)) optimized expr : NULL evaluation: +--------+--------+--------------+ @@ -431,7 +431,7 @@ output : true ast : null OR false raw expr : or(NULL, false) -checked expr : or(CAST(NULL AS Boolean NULL), CAST(false AS Boolean NULL)) +checked expr : or(CAST(NULL AS Boolean NULL), CAST(false AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -440,7 +440,7 @@ output : NULL ast : (a < 1) OR (a < 1) raw expr : or(lt(a::UInt8 NULL, 1), lt(a::UInt8 NULL, 1)) -checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : or(lt(a, 1_u8), lt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -461,7 +461,7 @@ evaluation (internal): ast : (a > 1) OR (a < 1) raw expr : or(gt(a::UInt8 NULL, 1), lt(a::UInt8 NULL, 1)) -checked expr : or(gt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : or(gt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : or(gt(a, 1_u8), lt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -482,7 +482,7 @@ evaluation (internal): ast : (a < 1) OR (a > 1) raw expr : or(lt(a::UInt8 NULL, 1), gt(a::UInt8 NULL, 1)) -checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), gt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), gt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : or(lt(a, 1_u8), gt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -503,7 +503,7 @@ evaluation (internal): ast : (a < 1) OR (a < 1) raw expr : or(lt(a::UInt8 NULL, 1), lt(a::UInt8 NULL, 1)) -checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : or(lt(a, 1_u8), lt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -524,7 +524,7 @@ evaluation (internal): ast : (a > 1) OR (0 > 1) raw expr : or(gt(a::UInt8 NULL, 1), gt(0, 1)) -checked expr : or(gt(a, CAST(1_u8 AS UInt8 NULL)), CAST(gt(0_u8, 1_u8) AS Boolean NULL)) +checked expr : or(gt(a, CAST(1_u8 AS UInt8 NULL)), CAST(gt(0_u8, 1_u8) AS Boolean NULL)) optimized expr : or(gt(a, 1_u8), false) evaluation: +--------+--------------------+------------------------+ @@ -545,7 +545,7 @@ evaluation (internal): ast : (a > 1) OR (0 < 1) raw expr : or(gt(a::UInt8 NULL, 1), lt(0, 1)) -checked expr : or(gt(a, CAST(1_u8 AS UInt8 NULL)), CAST(lt(0_u8, 1_u8) AS Boolean NULL)) +checked expr : or(gt(a, CAST(1_u8 AS UInt8 NULL)), CAST(lt(0_u8, 1_u8) AS Boolean NULL)) optimized expr : true evaluation: +--------+--------------------+--------------+ @@ -566,7 +566,7 @@ evaluation (internal): ast : (a < 1) OR (0 > 1) raw expr : or(lt(a::UInt8 NULL, 1), gt(0, 1)) -checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), CAST(gt(0_u8, 1_u8) AS Boolean NULL)) +checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), CAST(gt(0_u8, 1_u8) AS Boolean NULL)) optimized expr : or(lt(a, 1_u8), false) evaluation: +--------+--------------------+------------------------+ @@ -587,7 +587,7 @@ evaluation (internal): ast : (a < 1) OR (0 < 1) raw expr : or(lt(a::UInt8 NULL, 1), lt(0, 1)) -checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), CAST(lt(0_u8, 1_u8) AS Boolean NULL)) +checked expr : or(lt(a, CAST(1_u8 AS UInt8 NULL)), CAST(lt(0_u8, 1_u8) AS Boolean NULL)) optimized expr : true evaluation: +--------+--------------------+--------------+ @@ -608,7 +608,7 @@ evaluation (internal): ast : (0 > 1) OR (a > 1) raw expr : or(gt(0, 1), gt(a::UInt8 NULL, 1)) -checked expr : or(CAST(gt(0_u8, 1_u8) AS Boolean NULL), gt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : or(CAST(gt(0_u8, 1_u8) AS Boolean NULL), gt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : or(false, gt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -629,7 +629,7 @@ evaluation (internal): ast : (0 > 1) OR (a < 1) raw expr : or(gt(0, 1), lt(a::UInt8 NULL, 1)) -checked expr : or(CAST(gt(0_u8, 1_u8) AS Boolean NULL), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : or(CAST(gt(0_u8, 1_u8) AS Boolean NULL), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : or(false, lt(a, 1_u8)) evaluation: +--------+--------------------+------------------------+ @@ -650,7 +650,7 @@ evaluation (internal): ast : (0 < 1) OR (a > 1) raw expr : or(lt(0, 1), gt(a::UInt8 NULL, 1)) -checked expr : or(CAST(lt(0_u8, 1_u8) AS Boolean NULL), gt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : or(CAST(lt(0_u8, 1_u8) AS Boolean NULL), gt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : true evaluation: +--------+--------------------+--------------+ @@ -671,7 +671,7 @@ evaluation (internal): ast : (0 < 1) OR (a < 1) raw expr : or(lt(0, 1), lt(a::UInt8 NULL, 1)) -checked expr : or(CAST(lt(0_u8, 1_u8) AS Boolean NULL), lt(a, CAST(1_u8 AS UInt8 NULL))) +checked expr : or(CAST(lt(0_u8, 1_u8) AS Boolean NULL), lt(a, CAST(1_u8 AS UInt8 NULL))) optimized expr : true evaluation: +--------+--------------------+--------------+ @@ -701,7 +701,7 @@ output : true ast : null XOR false raw expr : xor(NULL, false) -checked expr : xor(CAST(NULL AS Boolean NULL), CAST(false AS Boolean NULL)) +checked expr : xor(CAST(NULL AS Boolean NULL), CAST(false AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -710,7 +710,7 @@ output : NULL ast : is_true(null) raw expr : is_true(NULL) -checked expr : is_true(CAST(NULL AS Boolean NULL)) +checked expr : is_true(CAST(NULL AS Boolean NULL)) optimized expr : false output type : Boolean output domain : {FALSE} diff --git a/src/query/functions/tests/it/scalars/testdata/cast.txt b/src/query/functions/tests/it/scalars/testdata/cast.txt index 347e1fc66e80d..02f338a332fd1 100644 --- a/src/query/functions/tests/it/scalars/testdata/cast.txt +++ b/src/query/functions/tests/it/scalars/testdata/cast.txt @@ -8,7 +8,7 @@ output : 0 ast : CAST(0 AS UINT8 NULL) raw expr : CAST(0 AS UInt8 NULL) -checked expr : CAST(0_u8 AS UInt8 NULL) +checked expr : CAST(0_u8 AS UInt8 NULL) optimized expr : 0_u8 output type : UInt8 NULL output domain : {0..=0} @@ -25,7 +25,7 @@ output : 'str' ast : CAST('str' AS STRING NULL) raw expr : CAST('str' AS String NULL) -checked expr : CAST("str" AS String NULL) +checked expr : CAST("str" AS String NULL) optimized expr : "str" output type : String NULL output domain : {"str"..="str"} @@ -42,7 +42,7 @@ error: ast : CAST(NULL AS UINT8 NULL) raw expr : CAST(NULL AS UInt8 NULL) -checked expr : CAST(NULL AS UInt8 NULL) +checked expr : CAST(NULL AS UInt8 NULL) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -59,7 +59,7 @@ error: ast : CAST(NULL AS STRING NULL) raw expr : CAST(NULL AS String NULL) -checked expr : CAST(NULL AS String NULL) +checked expr : CAST(NULL AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -92,7 +92,7 @@ error: ast : CAST(a AS INT64) raw expr : CAST(a::Int16 AS Int64) -checked expr : CAST(a AS Int64) +checked expr : CAST(a AS Int64) evaluation: +--------+----------+----------+ | | a | Output | @@ -140,7 +140,7 @@ error: ast : CAST(a AS INT16) raw expr : CAST(a::Float64 AS Int16) -checked expr : CAST(a AS Int16) +checked expr : CAST(a AS Int16) evaluation: +--------+--------------+----------+ | | a | Output | @@ -164,7 +164,7 @@ evaluation (internal): ast : CAST(b AS INT16) raw expr : CAST(b::Int8 AS Int16) -checked expr : CAST(b AS Int16) +checked expr : CAST(b AS Int16) evaluation: +--------+----------+----------+ | | b | Output | @@ -212,7 +212,7 @@ error: ast : CAST(0 AS VARIANT) raw expr : CAST(0 AS Variant) -checked expr : CAST(0_u8 AS Variant) +checked expr : CAST(0_u8 AS Variant) optimized expr : 0x200000002000000100 output type : Variant output domain : Undefined @@ -221,7 +221,7 @@ output : '0' ast : CAST(-1 AS VARIANT) raw expr : CAST(minus(1) AS Variant) -checked expr : CAST(minus(1_u8) AS Variant) +checked expr : CAST(minus(1_u8) AS Variant) optimized expr : 0x200000002000000240ff output type : Variant output domain : Undefined @@ -230,7 +230,7 @@ output : '-1' ast : CAST(1.1 AS VARIANT) raw expr : CAST(1.1 AS Variant) -checked expr : CAST(1.1_d128(2,1) AS Variant) +checked expr : CAST(1.1_d128(2,1) AS Variant) optimized expr : 0x2000000020000009603ff199999999999a output type : Variant output domain : Undefined @@ -247,7 +247,7 @@ error: ast : CAST([0, 1, 2] AS VARIANT) raw expr : CAST(array(0, 1, 2) AS Variant) -checked expr : CAST(array(0_u8, 1_u8, 2_u8) AS Variant) +checked expr : CAST(array(0_u8, 1_u8, 2_u8) AS Variant) optimized expr : 0x800000032000000120000002200000020050015002 output type : Variant output domain : Undefined @@ -256,7 +256,7 @@ output : '[0,1,2]' ast : CAST([0::VARIANT, '"a"'::VARIANT] AS VARIANT) raw expr : CAST(array(CAST(0 AS Variant), CAST('"a"' AS Variant)) AS Variant) -checked expr : CAST(array(CAST(0_u8 AS Variant), CAST("\"a\"" AS Variant)) AS Variant) +checked expr : CAST(array(CAST(0_u8 AS Variant), CAST("\"a\"" AS Variant)) AS Variant) optimized expr : 0x8000000220000001100000010061 output type : Variant output domain : Undefined @@ -265,7 +265,7 @@ output : '[0,"a"]' ast : CAST(to_timestamp(1000000) AS VARIANT) raw expr : CAST(to_timestamp(1000000) AS Variant) -checked expr : CAST(to_timestamp(CAST(1000000_u32 AS Int64)) AS Variant) +checked expr : CAST(to_timestamp(CAST(1000000_u32 AS Int64)) AS Variant) optimized expr : 0x200000001000001a313937302d30312d31322031333a34363a34302e303030303030 output type : Variant output domain : Undefined @@ -274,7 +274,7 @@ output : '"1970-01-12 13:46:40.000000"' ast : CAST(false AS VARIANT) raw expr : CAST(false AS Variant) -checked expr : CAST(false AS Variant) +checked expr : CAST(false AS Variant) optimized expr : 0x2000000030000000 output type : Variant output domain : Undefined @@ -283,7 +283,7 @@ output : 'false' ast : CAST(true AS VARIANT) raw expr : CAST(true AS Variant) -checked expr : CAST(true AS Variant) +checked expr : CAST(true AS Variant) optimized expr : 0x2000000040000000 output type : Variant output domain : Undefined @@ -292,7 +292,7 @@ output : 'true' ast : CAST(CAST('"🍦 が美味しい"' AS VARIANT) AS VARIANT) raw expr : CAST(CAST('"🍦 が美味しい"' AS Variant) AS Variant) -checked expr : CAST("\"🍦 が美味しい\"" AS Variant) +checked expr : CAST("\"🍦 が美味しい\"" AS Variant) optimized expr : 0x2000000010000014f09f8da620e3818ce7be8ee591b3e38197e38184 output type : Variant output domain : Undefined @@ -301,7 +301,7 @@ output : '"🍦 が美味しい"' ast : CAST((1,) AS VARIANT) raw expr : CAST(tuple(1) AS Variant) -checked expr : CAST(tuple(1_u8) AS Variant) +checked expr : CAST(tuple(1_u8) AS Variant) optimized expr : 0x400000011000000120000002315001 output type : Variant output domain : Undefined @@ -310,7 +310,7 @@ output : '{"1":1}' ast : CAST((1, 2) AS VARIANT) raw expr : CAST(tuple(1, 2) AS Variant) -checked expr : CAST(tuple(1_u8, 2_u8) AS Variant) +checked expr : CAST(tuple(1_u8, 2_u8) AS Variant) optimized expr : 0x4000000210000001100000012000000220000002313250015002 output type : Variant output domain : Undefined @@ -319,7 +319,7 @@ output : '{"1":1,"2":2}' ast : CAST((false, true) AS VARIANT) raw expr : CAST(tuple(false, true) AS Variant) -checked expr : CAST(tuple(false, true) AS Variant) +checked expr : CAST(tuple(false, true) AS Variant) optimized expr : 0x40000002100000011000000130000000400000003132 output type : Variant output domain : Undefined @@ -328,7 +328,7 @@ output : '{"1":false,"2":true}' ast : CAST(('a',) AS VARIANT) raw expr : CAST(tuple('a') AS Variant) -checked expr : CAST(tuple("a") AS Variant) +checked expr : CAST(tuple("a") AS Variant) optimized expr : 0x4000000110000001100000013161 output type : Variant output domain : Undefined @@ -337,7 +337,7 @@ output : '{"1":"a"}' ast : CAST((1, 2, (false, true, ('a',))) AS VARIANT) raw expr : CAST(tuple(1, 2, tuple(false, true, tuple('a'))) AS Variant) -checked expr : CAST(tuple(1_u8, 2_u8, tuple(false, true, tuple("a"))) AS Variant) +checked expr : CAST(tuple(1_u8, 2_u8, tuple(false, true, tuple("a"))) AS Variant) optimized expr : 0x4000000310000001100000011000000120000002200000025000002d313233500150024000000310000001100000011000000130000000400000005000000e3132334000000110000001100000013161 output type : Variant output domain : Undefined @@ -354,7 +354,7 @@ error: ast : CAST(a AS VARIANT) raw expr : CAST(a::Bitmap AS Variant) -checked expr : CAST(a AS Variant) +checked expr : CAST(a AS Variant) evaluation: +--------+-------------+---------------+ | | a | Output | @@ -377,7 +377,7 @@ evaluation (internal): ast : CAST(-30610224000000001 AS TIMESTAMP) raw expr : CAST(minus(30610224000000001) AS Timestamp) -checked expr : CAST(minus(30610224000000001_u64) AS Timestamp) +checked expr : CAST(minus(30610224000000001_u64) AS Timestamp) optimized expr : -30610224000000001 output type : Timestamp output domain : {-30610224000000001..=-30610224000000001} @@ -386,7 +386,7 @@ output : '0999-12-31 23:59:59.999999' ast : CAST(-315360000000000 AS TIMESTAMP) raw expr : CAST(minus(315360000000000) AS Timestamp) -checked expr : CAST(minus(315360000000000_u64) AS Timestamp) +checked expr : CAST(minus(315360000000000_u64) AS Timestamp) optimized expr : -315360000000000 output type : Timestamp output domain : {-315360000000000..=-315360000000000} @@ -395,7 +395,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(-315360000000 AS TIMESTAMP) raw expr : CAST(minus(315360000000) AS Timestamp) -checked expr : CAST(minus(315360000000_u64) AS Timestamp) +checked expr : CAST(minus(315360000000_u64) AS Timestamp) optimized expr : -315360000000000 output type : Timestamp output domain : {-315360000000000..=-315360000000000} @@ -404,7 +404,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(-100 AS TIMESTAMP) raw expr : CAST(minus(100) AS Timestamp) -checked expr : CAST(minus(100_u8) AS Timestamp) +checked expr : CAST(minus(100_u8) AS Timestamp) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -413,7 +413,7 @@ output : '1969-12-31 23:58:20.000000' ast : CAST(-0 AS TIMESTAMP) raw expr : CAST(minus(0) AS Timestamp) -checked expr : CAST(minus(0_u8) AS Timestamp) +checked expr : CAST(minus(0_u8) AS Timestamp) optimized expr : 0 output type : Timestamp output domain : {0..=0} @@ -422,7 +422,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(0 AS TIMESTAMP) raw expr : CAST(0 AS Timestamp) -checked expr : CAST(0_u8 AS Timestamp) +checked expr : CAST(0_u8 AS Timestamp) optimized expr : 0 output type : Timestamp output domain : {0..=0} @@ -431,7 +431,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(100 AS TIMESTAMP) raw expr : CAST(100 AS Timestamp) -checked expr : CAST(100_u8 AS Timestamp) +checked expr : CAST(100_u8 AS Timestamp) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -440,7 +440,7 @@ output : '1970-01-01 00:01:40.000000' ast : CAST(315360000000 AS TIMESTAMP) raw expr : CAST(315360000000 AS Timestamp) -checked expr : CAST(315360000000_u64 AS Timestamp) +checked expr : CAST(315360000000_u64 AS Timestamp) optimized expr : 315360000000000 output type : Timestamp output domain : {315360000000000..=315360000000000} @@ -449,7 +449,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(315360000000000 AS TIMESTAMP) raw expr : CAST(315360000000000 AS Timestamp) -checked expr : CAST(315360000000000_u64 AS Timestamp) +checked expr : CAST(315360000000000_u64 AS Timestamp) optimized expr : 315360000000000 output type : Timestamp output domain : {315360000000000..=315360000000000} @@ -458,7 +458,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(253402300800000000 AS TIMESTAMP) raw expr : CAST(253402300800000000 AS Timestamp) -checked expr : CAST(253402300800000000_u64 AS Timestamp) +checked expr : CAST(253402300800000000_u64 AS Timestamp) optimized expr : -62135596800000000 output type : Timestamp output domain : {-62135596800000000..=-62135596800000000} @@ -467,7 +467,7 @@ output : '0001-01-01 00:00:00.000000' ast : CAST(a AS TIMESTAMP) raw expr : CAST(a::Int64 AS Timestamp) -checked expr : CAST(a AS Timestamp) +checked expr : CAST(a AS Timestamp) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -493,7 +493,7 @@ evaluation (internal): ast : CAST(TO_TIMESTAMP(-315360000000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(315360000000000)) AS Int64) -checked expr : CAST(to_timestamp(minus(315360000000000_u64)) AS Int64) +checked expr : CAST(to_timestamp(minus(315360000000000_u64)) AS Int64) optimized expr : -315360000000000_i64 output type : Int64 output domain : {-315360000000000..=-315360000000000} @@ -502,7 +502,7 @@ output : -315360000000000 ast : CAST(TO_TIMESTAMP(-315360000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(315360000000)) AS Int64) -checked expr : CAST(to_timestamp(minus(315360000000_u64)) AS Int64) +checked expr : CAST(to_timestamp(minus(315360000000_u64)) AS Int64) optimized expr : -315360000000000_i64 output type : Int64 output domain : {-315360000000000..=-315360000000000} @@ -511,7 +511,7 @@ output : -315360000000000 ast : CAST(TO_TIMESTAMP(-100) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(100)) AS Int64) -checked expr : CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS Int64) +checked expr : CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS Int64) optimized expr : -100000000_i64 output type : Int64 output domain : {-100000000..=-100000000} @@ -520,7 +520,7 @@ output : -100000000 ast : CAST(TO_TIMESTAMP(-0) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(0)) AS Int64) -checked expr : CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS Int64) +checked expr : CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -529,7 +529,7 @@ output : 0 ast : CAST(TO_TIMESTAMP(0) AS INT64) raw expr : CAST(TO_TIMESTAMP(0) AS Int64) -checked expr : CAST(to_timestamp(CAST(0_u8 AS Int64)) AS Int64) +checked expr : CAST(to_timestamp(CAST(0_u8 AS Int64)) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -538,7 +538,7 @@ output : 0 ast : CAST(TO_TIMESTAMP(100) AS INT64) raw expr : CAST(TO_TIMESTAMP(100) AS Int64) -checked expr : CAST(to_timestamp(CAST(100_u8 AS Int64)) AS Int64) +checked expr : CAST(to_timestamp(CAST(100_u8 AS Int64)) AS Int64) optimized expr : 100000000_i64 output type : Int64 output domain : {100000000..=100000000} @@ -547,7 +547,7 @@ output : 100000000 ast : CAST(TO_TIMESTAMP(315360000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(315360000000) AS Int64) -checked expr : CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS Int64) +checked expr : CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS Int64) optimized expr : 315360000000000_i64 output type : Int64 output domain : {315360000000000..=315360000000000} @@ -556,7 +556,7 @@ output : 315360000000000 ast : CAST(TO_TIMESTAMP(315360000000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(315360000000000) AS Int64) -checked expr : CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS Int64) +checked expr : CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS Int64) optimized expr : 315360000000000_i64 output type : Int64 output domain : {315360000000000..=315360000000000} @@ -565,7 +565,7 @@ output : 315360000000000 ast : CAST(a AS INT64) raw expr : CAST(a::Timestamp AS Int64) -checked expr : CAST(a AS Int64) +checked expr : CAST(a AS Int64) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -591,7 +591,7 @@ evaluation (internal): ast : CAST(-354286 AS DATE) raw expr : CAST(minus(354286) AS Date) -checked expr : CAST(minus(354286_u32) AS Date) +checked expr : CAST(minus(354286_u32) AS Date) optimized expr : -354286 output type : Date output domain : {-354286..=-354286} @@ -600,7 +600,7 @@ output : '0999-12-31' ast : CAST(-354285 AS DATE) raw expr : CAST(minus(354285) AS Date) -checked expr : CAST(minus(354285_u32) AS Date) +checked expr : CAST(minus(354285_u32) AS Date) optimized expr : -354285 output type : Date output domain : {-354285..=-354285} @@ -609,7 +609,7 @@ output : '1000-01-01' ast : CAST(-100 AS DATE) raw expr : CAST(minus(100) AS Date) -checked expr : CAST(minus(100_u8) AS Date) +checked expr : CAST(minus(100_u8) AS Date) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -618,7 +618,7 @@ output : '1969-09-23' ast : CAST(-0 AS DATE) raw expr : CAST(minus(0) AS Date) -checked expr : CAST(minus(0_u8) AS Date) +checked expr : CAST(minus(0_u8) AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -627,7 +627,7 @@ output : '1970-01-01' ast : CAST(0 AS DATE) raw expr : CAST(0 AS Date) -checked expr : CAST(0_u8 AS Date) +checked expr : CAST(0_u8 AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -636,7 +636,7 @@ output : '1970-01-01' ast : CAST(100 AS DATE) raw expr : CAST(100 AS Date) -checked expr : CAST(100_u8 AS Date) +checked expr : CAST(100_u8 AS Date) optimized expr : 100 output type : Date output domain : {100..=100} @@ -645,7 +645,7 @@ output : '1970-04-11' ast : CAST(2932896 AS DATE) raw expr : CAST(2932896 AS Date) -checked expr : CAST(2932896_u32 AS Date) +checked expr : CAST(2932896_u32 AS Date) optimized expr : 2932896 output type : Date output domain : {2932896..=2932896} @@ -654,7 +654,7 @@ output : '9999-12-31' ast : CAST(2932897 AS DATE) raw expr : CAST(2932897 AS Date) -checked expr : CAST(2932897_u32 AS Date) +checked expr : CAST(2932897_u32 AS Date) optimized expr : -719162 output type : Date output domain : {-719162..=-719162} @@ -663,7 +663,7 @@ output : '0001-01-01' ast : CAST(a AS DATE) raw expr : CAST(a::Int32 AS Date) -checked expr : CAST(a AS Date) +checked expr : CAST(a AS Date) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -687,7 +687,7 @@ evaluation (internal): ast : CAST(TO_DATE(-354285) AS INT64) raw expr : CAST(TO_DATE(minus(354285)) AS Int64) -checked expr : CAST(to_date(minus(354285_u32)) AS Int64) +checked expr : CAST(to_date(minus(354285_u32)) AS Int64) optimized expr : -354285_i64 output type : Int64 output domain : {-354285..=-354285} @@ -696,7 +696,7 @@ output : -354285 ast : CAST(TO_DATE(-100) AS INT64) raw expr : CAST(TO_DATE(minus(100)) AS Int64) -checked expr : CAST(to_date(CAST(minus(100_u8) AS Int64)) AS Int64) +checked expr : CAST(to_date(CAST(minus(100_u8) AS Int64)) AS Int64) optimized expr : -100_i64 output type : Int64 output domain : {-100..=-100} @@ -705,7 +705,7 @@ output : -100 ast : CAST(TO_DATE(-0) AS INT64) raw expr : CAST(TO_DATE(minus(0)) AS Int64) -checked expr : CAST(to_date(CAST(minus(0_u8) AS Int64)) AS Int64) +checked expr : CAST(to_date(CAST(minus(0_u8) AS Int64)) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -714,7 +714,7 @@ output : 0 ast : CAST(TO_DATE(0) AS INT64) raw expr : CAST(TO_DATE(0) AS Int64) -checked expr : CAST(to_date(CAST(0_u8 AS Int64)) AS Int64) +checked expr : CAST(to_date(CAST(0_u8 AS Int64)) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -723,7 +723,7 @@ output : 0 ast : CAST(TO_DATE(100) AS INT64) raw expr : CAST(TO_DATE(100) AS Int64) -checked expr : CAST(to_date(CAST(100_u8 AS Int64)) AS Int64) +checked expr : CAST(to_date(CAST(100_u8 AS Int64)) AS Int64) optimized expr : 100_i64 output type : Int64 output domain : {100..=100} @@ -732,7 +732,7 @@ output : 100 ast : CAST(TO_DATE(2932896) AS INT64) raw expr : CAST(TO_DATE(2932896) AS Int64) -checked expr : CAST(to_date(CAST(2932896_u32 AS Int64)) AS Int64) +checked expr : CAST(to_date(CAST(2932896_u32 AS Int64)) AS Int64) optimized expr : 2932896_i64 output type : Int64 output domain : {2932896..=2932896} @@ -741,7 +741,7 @@ output : 2932896 ast : CAST(a AS INT64) raw expr : CAST(a::Date AS Int64) -checked expr : CAST(a AS Int64) +checked expr : CAST(a AS Int64) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -797,7 +797,7 @@ error: ast : CAST('1' AS UINT64) raw expr : CAST('1' AS UInt64) -checked expr : CAST("1" AS UInt64) +checked expr : CAST("1" AS UInt64) optimized expr : 1_u64 output type : UInt64 output domain : {1..=1} @@ -806,7 +806,7 @@ output : 1 ast : CAST(str AS INT64) raw expr : CAST(str::String AS Int64) -checked expr : CAST(str AS Int64) +checked expr : CAST(str AS Int64) evaluation: +--------+--------------------------------+----------------------+ | | str | Output | @@ -838,7 +838,7 @@ error: ast : CAST(num AS STRING) raw expr : CAST(num::Int64 AS String) -checked expr : CAST(num AS String) +checked expr : CAST(num AS String) evaluation: +--------+----------------------------------------------+------------------------+ | | num | Output | @@ -862,7 +862,7 @@ evaluation (internal): ast : CAST(num AS STRING) raw expr : CAST(num::UInt64 AS String) -checked expr : CAST(num AS String) +checked expr : CAST(num AS String) evaluation: +--------+----------------------------+------------------------+ | | num | Output | @@ -916,7 +916,7 @@ error: ast : CAST('true' AS BOOLEAN) raw expr : CAST('true' AS Boolean) -checked expr : CAST("true" AS Boolean) +checked expr : CAST("true" AS Boolean) optimized expr : true output type : Boolean output domain : {TRUE} @@ -925,7 +925,7 @@ output : true ast : CAST('false' AS BOOLEAN) raw expr : CAST('false' AS Boolean) -checked expr : CAST("false" AS Boolean) +checked expr : CAST("false" AS Boolean) optimized expr : false output type : Boolean output domain : {FALSE} @@ -934,7 +934,7 @@ output : false ast : CAST('TRUE' AS BOOLEAN) raw expr : CAST('TRUE' AS Boolean) -checked expr : CAST("TRUE" AS Boolean) +checked expr : CAST("TRUE" AS Boolean) optimized expr : true output type : Boolean output domain : {TRUE} @@ -943,7 +943,7 @@ output : true ast : CAST('FaLse' AS BOOLEAN) raw expr : CAST('FaLse' AS Boolean) -checked expr : CAST("FaLse" AS Boolean) +checked expr : CAST("FaLse" AS Boolean) optimized expr : false output type : Boolean output domain : {FALSE} @@ -952,7 +952,7 @@ output : false ast : CAST(bool AS STRING) raw expr : CAST(bool::Boolean AS String) -checked expr : CAST(bool AS String) +checked expr : CAST(bool AS String) evaluation: +--------+---------------+---------+ | | bool | Output | @@ -973,7 +973,7 @@ evaluation (internal): ast : CAST('010.010' AS DECIMAL(5,3)) raw expr : CAST('010.010' AS Decimal(5, 3)) -checked expr : CAST("010.010" AS Decimal(5, 3)) +checked expr : CAST("010.010" AS Decimal(5, 3)) optimized expr : 10.010_d128(5,3) output type : Decimal(5, 3) output domain : {10.010..=10.010} @@ -990,7 +990,7 @@ error: ast : CAST('010.010' AS DECIMAL(5,2)) raw expr : CAST('010.010' AS Decimal(5, 2)) -checked expr : CAST("010.010" AS Decimal(5, 2)) +checked expr : CAST("010.010" AS Decimal(5, 2)) optimized expr : 10.01_d128(5,2) output type : Decimal(5, 2) output domain : {10.01..=10.01} @@ -1007,7 +1007,7 @@ error: ast : CAST('010.010' AS DECIMAL(4,2)) raw expr : CAST('010.010' AS Decimal(4, 2)) -checked expr : CAST("010.010" AS Decimal(4, 2)) +checked expr : CAST("010.010" AS Decimal(4, 2)) optimized expr : 10.01_d128(4,2) output type : Decimal(4, 2) output domain : {10.01..=10.01} @@ -1016,7 +1016,7 @@ output : 10.01 ast : CAST('-1010.010' AS DECIMAL(7,3)) raw expr : CAST('-1010.010' AS Decimal(7, 3)) -checked expr : CAST("-1010.010" AS Decimal(7, 3)) +checked expr : CAST("-1010.010" AS Decimal(7, 3)) optimized expr : -1010.010_d128(7,3) output type : Decimal(7, 3) output domain : {-1010.010..=-1010.010} @@ -1025,7 +1025,7 @@ output : -1010.010 ast : CAST('00' AS DECIMAL(2,1)) raw expr : CAST('00' AS Decimal(2, 1)) -checked expr : CAST("00" AS Decimal(2, 1)) +checked expr : CAST("00" AS Decimal(2, 1)) optimized expr : 0.0_d128(2,1) output type : Decimal(2, 1) output domain : {0.0..=0.0} @@ -1034,7 +1034,7 @@ output : 0.0 ast : CAST('0.0' AS DECIMAL(2,0)) raw expr : CAST('0.0' AS Decimal(2, 0)) -checked expr : CAST("0.0" AS Decimal(2, 0)) +checked expr : CAST("0.0" AS Decimal(2, 0)) optimized expr : 0_d128(2,0) output type : Decimal(2, 0) output domain : {0..=0} @@ -1043,7 +1043,7 @@ output : 0 ast : CAST('.0' AS DECIMAL(1,0)) raw expr : CAST('.0' AS Decimal(1, 0)) -checked expr : CAST(".0" AS Decimal(1, 0)) +checked expr : CAST(".0" AS Decimal(1, 0)) optimized expr : 0_d128(1,0) output type : Decimal(1, 0) output domain : {0..=0} @@ -1052,7 +1052,7 @@ output : 0 ast : CAST('+1.0e-10' AS DECIMAL(11, 10)) raw expr : CAST('+1.0e-10' AS Decimal(11, 10)) -checked expr : CAST("+1.0e-10" AS Decimal(11, 10)) +checked expr : CAST("+1.0e-10" AS Decimal(11, 10)) optimized expr : 0.0000000001_d128(11,10) output type : Decimal(11, 10) output domain : {0.0000000001..=0.0000000001} @@ -1061,7 +1061,7 @@ output : 0.0000000001 ast : CAST('-1.0e+10' AS DECIMAL(11, 0)) raw expr : CAST('-1.0e+10' AS Decimal(11, 0)) -checked expr : CAST("-1.0e+10" AS Decimal(11, 0)) +checked expr : CAST("-1.0e+10" AS Decimal(11, 0)) optimized expr : -10000000000_d128(11,0) output type : Decimal(11, 0) output domain : {-10000000000..=-10000000000} @@ -1070,7 +1070,7 @@ output : -10000000000 ast : CAST('-0.000000' AS DECIMAL(11, 0)) raw expr : CAST('-0.000000' AS Decimal(11, 0)) -checked expr : CAST("-0.000000" AS Decimal(11, 0)) +checked expr : CAST("-0.000000" AS Decimal(11, 0)) optimized expr : 0_d128(11,0) output type : Decimal(11, 0) output domain : {0..=0} @@ -1079,7 +1079,7 @@ output : 0 ast : CAST(0 AS BOOLEAN) raw expr : CAST(0 AS Boolean) -checked expr : CAST(0_u8 AS Boolean) +checked expr : CAST(0_u8 AS Boolean) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1088,7 +1088,7 @@ output : false ast : CAST(1 AS BOOLEAN) raw expr : CAST(1 AS Boolean) -checked expr : CAST(1_u8 AS Boolean) +checked expr : CAST(1_u8 AS Boolean) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1097,7 +1097,7 @@ output : true ast : CAST(false AS UINT64) raw expr : CAST(false AS UInt64) -checked expr : CAST(false AS UInt64) +checked expr : CAST(false AS UInt64) optimized expr : 0_u64 output type : UInt64 output domain : {0..=0} @@ -1106,7 +1106,7 @@ output : 0 ast : CAST(true AS INT64) raw expr : CAST(true AS Int64) -checked expr : CAST(true AS Int64) +checked expr : CAST(true AS Int64) optimized expr : 1_i64 output type : Int64 output domain : {1..=1} @@ -1115,7 +1115,7 @@ output : 1 ast : CAST(0.0 AS BOOLEAN) raw expr : CAST(0.0 AS Boolean) -checked expr : CAST(0.0_d128(1,1) AS Boolean) +checked expr : CAST(0.0_d128(1,1) AS Boolean) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1124,7 +1124,7 @@ output : false ast : CAST(1.0 AS BOOLEAN) raw expr : CAST(1.0 AS Boolean) -checked expr : CAST(1.0_d128(2,1) AS Boolean) +checked expr : CAST(1.0_d128(2,1) AS Boolean) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1133,7 +1133,7 @@ output : true ast : CAST(false AS FLOAT32) raw expr : CAST(false AS Float32) -checked expr : CAST(false AS Float32) +checked expr : CAST(false AS Float32) optimized expr : 0_f32 output type : Float32 output domain : {0..=0} @@ -1142,7 +1142,7 @@ output : 0 ast : CAST(true AS FLOAT64) raw expr : CAST(true AS Float64) -checked expr : CAST(true AS Float64) +checked expr : CAST(true AS Float64) optimized expr : 1_f64 output type : Float64 output domain : {1..=1} @@ -1151,7 +1151,7 @@ output : 1 ast : CAST(false AS DECIMAL(4,3)) raw expr : CAST(false AS Decimal(4, 3)) -checked expr : CAST(false AS Decimal(4, 3)) +checked expr : CAST(false AS Decimal(4, 3)) optimized expr : 0.000_d128(4,3) output type : Decimal(4, 3) output domain : {0.000..=0.000} @@ -1160,7 +1160,7 @@ output : 0.000 ast : CAST(true AS DECIMAL(4,2)) raw expr : CAST(true AS Decimal(4, 2)) -checked expr : CAST(true AS Decimal(4, 2)) +checked expr : CAST(true AS Decimal(4, 2)) optimized expr : 1.00_d128(4,2) output type : Decimal(4, 2) output domain : {1.00..=1.00} @@ -1169,7 +1169,7 @@ output : 1.00 ast : CAST(num AS BOOLEAN) raw expr : CAST(num::Int64 AS Boolean) -checked expr : CAST(num AS Boolean) +checked expr : CAST(num AS Boolean) evaluation: +--------+----------+---------------+ | | num | Output | @@ -1192,7 +1192,7 @@ evaluation (internal): ast : CAST(num AS BOOLEAN) raw expr : CAST(num::UInt64 AS Boolean) -checked expr : CAST(num AS Boolean) +checked expr : CAST(num AS Boolean) evaluation: +--------+---------+---------------+ | | num | Output | @@ -1214,7 +1214,7 @@ evaluation (internal): ast : CAST(bool AS UINT64) raw expr : CAST(bool::Boolean AS UInt64) -checked expr : CAST(bool AS UInt64) +checked expr : CAST(bool AS UInt64) evaluation: +--------+---------------+---------+ | | bool | Output | @@ -1235,7 +1235,7 @@ evaluation (internal): ast : CAST(bool AS INT64) raw expr : CAST(bool::Boolean AS Int64) -checked expr : CAST(bool AS Int64) +checked expr : CAST(bool AS Int64) evaluation: +--------+---------------+---------+ | | bool | Output | @@ -1256,7 +1256,7 @@ evaluation (internal): ast : CAST(TO_DATE(1) AS TIMESTAMP) raw expr : CAST(TO_DATE(1) AS Timestamp) -checked expr : CAST(to_date(CAST(1_u8 AS Int64)) AS Timestamp) +checked expr : CAST(to_date(CAST(1_u8 AS Int64)) AS Timestamp) optimized expr : 86400000000 output type : Timestamp output domain : {86400000000..=86400000000} @@ -1265,7 +1265,7 @@ output : '1970-01-02 00:00:00.000000' ast : CAST(TO_TIMESTAMP(1) AS DATE) raw expr : CAST(TO_TIMESTAMP(1) AS Date) -checked expr : CAST(to_timestamp(CAST(1_u8 AS Int64)) AS Date) +checked expr : CAST(to_timestamp(CAST(1_u8 AS Int64)) AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -1274,7 +1274,7 @@ output : '1970-01-01' ast : CAST(a AS DATE) raw expr : CAST(a::Timestamp AS Date) -checked expr : CAST(a AS Date) +checked expr : CAST(a AS Date) evaluation: +--------+--------------------------------------+----------------+ | | a | Output | @@ -1300,7 +1300,7 @@ evaluation (internal): ast : CAST(a AS TIMESTAMP) raw expr : CAST(a::Date AS Timestamp) -checked expr : CAST(a AS Timestamp) +checked expr : CAST(a AS Timestamp) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -1324,7 +1324,7 @@ evaluation (internal): ast : CAST(TO_DATE(a) AS TIMESTAMP) raw expr : CAST(TO_DATE(a::Int32) AS Timestamp) -checked expr : CAST(to_date(CAST(a AS Int64)) AS Timestamp) +checked expr : CAST(to_date(CAST(a AS Int64)) AS Timestamp) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -1348,7 +1348,7 @@ evaluation (internal): ast : CAST(a AS TIMESTAMP) raw expr : CAST(a::Int64 AS Timestamp) -checked expr : CAST(a AS Timestamp) +checked expr : CAST(a AS Timestamp) optimized expr : -62135596800000000 evaluation: +--------+---------------------------------------------+-------------------------------------------+ @@ -1369,7 +1369,7 @@ evaluation (internal): ast : CAST(a AS DATE) raw expr : CAST(a::Int64 AS Date) -checked expr : CAST(a AS Date) +checked expr : CAST(a AS Date) optimized expr : -719162 evaluation: +--------+---------------------------------------------+---------------------+ @@ -1492,7 +1492,7 @@ evaluation (internal): ast : CAST(TO_TIMESTAMP(-315360000000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(315360000000000)) AS String) -checked expr : CAST(to_timestamp(minus(315360000000000_u64)) AS String) +checked expr : CAST(to_timestamp(minus(315360000000000_u64)) AS String) optimized expr : "1960-01-04 00:00:00.000000" output type : String output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -1501,7 +1501,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(TO_TIMESTAMP(-315360000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(315360000000)) AS String) -checked expr : CAST(to_timestamp(minus(315360000000_u64)) AS String) +checked expr : CAST(to_timestamp(minus(315360000000_u64)) AS String) optimized expr : "1960-01-04 00:00:00.000000" output type : String output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -1510,7 +1510,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(TO_TIMESTAMP(-100) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(100)) AS String) -checked expr : CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS String) +checked expr : CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS String) optimized expr : "1969-12-31 23:58:20.000000" output type : String output domain : {"1969-12-31 23:58:20.000000"..="1969-12-31 23:58:20.000000"} @@ -1519,7 +1519,7 @@ output : '1969-12-31 23:58:20.000000' ast : CAST(TO_TIMESTAMP(-0) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(0)) AS String) -checked expr : CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS String) +checked expr : CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS String) optimized expr : "1970-01-01 00:00:00.000000" output type : String output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -1528,7 +1528,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(TO_TIMESTAMP(0) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(0) AS String) -checked expr : CAST(to_timestamp(CAST(0_u8 AS Int64)) AS String) +checked expr : CAST(to_timestamp(CAST(0_u8 AS Int64)) AS String) optimized expr : "1970-01-01 00:00:00.000000" output type : String output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -1537,7 +1537,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(TO_TIMESTAMP(100) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(100) AS String) -checked expr : CAST(to_timestamp(CAST(100_u8 AS Int64)) AS String) +checked expr : CAST(to_timestamp(CAST(100_u8 AS Int64)) AS String) optimized expr : "1970-01-01 00:01:40.000000" output type : String output domain : {"1970-01-01 00:01:40.000000"..="1970-01-01 00:01:40.000000"} @@ -1546,7 +1546,7 @@ output : '1970-01-01 00:01:40.000000' ast : CAST(TO_TIMESTAMP(315360000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(315360000000) AS String) -checked expr : CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS String) +checked expr : CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS String) optimized expr : "1979-12-30 00:00:00.000000" output type : String output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -1555,7 +1555,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(TO_TIMESTAMP(315360000000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(315360000000000) AS String) -checked expr : CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS String) +checked expr : CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS String) optimized expr : "1979-12-30 00:00:00.000000" output type : String output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -1564,7 +1564,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(a AS VARCHAR) raw expr : CAST(a::Timestamp AS String) -checked expr : CAST(a AS String) +checked expr : CAST(a AS String) evaluation: +--------+--------------------------------------+------------------------------+ | | a | Output | @@ -1693,7 +1693,7 @@ evaluation (internal): ast : CAST(TO_DATE(-354285) AS VARCHAR) raw expr : CAST(TO_DATE(minus(354285)) AS String) -checked expr : CAST(to_date(minus(354285_u32)) AS String) +checked expr : CAST(to_date(minus(354285_u32)) AS String) optimized expr : "1000-01-01" output type : String output domain : {"1000-01-01"..="1000-01-01"} @@ -1702,7 +1702,7 @@ output : '1000-01-01' ast : CAST(TO_DATE(-100) AS VARCHAR) raw expr : CAST(TO_DATE(minus(100)) AS String) -checked expr : CAST(to_date(CAST(minus(100_u8) AS Int64)) AS String) +checked expr : CAST(to_date(CAST(minus(100_u8) AS Int64)) AS String) optimized expr : "1969-09-23" output type : String output domain : {"1969-09-23"..="1969-09-23"} @@ -1711,7 +1711,7 @@ output : '1969-09-23' ast : CAST(TO_DATE(-0) AS VARCHAR) raw expr : CAST(TO_DATE(minus(0)) AS String) -checked expr : CAST(to_date(CAST(minus(0_u8) AS Int64)) AS String) +checked expr : CAST(to_date(CAST(minus(0_u8) AS Int64)) AS String) optimized expr : "1970-01-01" output type : String output domain : {"1970-01-01"..="1970-01-01"} @@ -1720,7 +1720,7 @@ output : '1970-01-01' ast : CAST(TO_DATE(0) AS VARCHAR) raw expr : CAST(TO_DATE(0) AS String) -checked expr : CAST(to_date(CAST(0_u8 AS Int64)) AS String) +checked expr : CAST(to_date(CAST(0_u8 AS Int64)) AS String) optimized expr : "1970-01-01" output type : String output domain : {"1970-01-01"..="1970-01-01"} @@ -1729,7 +1729,7 @@ output : '1970-01-01' ast : CAST(TO_DATE(100) AS VARCHAR) raw expr : CAST(TO_DATE(100) AS String) -checked expr : CAST(to_date(CAST(100_u8 AS Int64)) AS String) +checked expr : CAST(to_date(CAST(100_u8 AS Int64)) AS String) optimized expr : "1970-04-11" output type : String output domain : {"1970-04-11"..="1970-04-11"} @@ -1738,7 +1738,7 @@ output : '1970-04-11' ast : CAST(TO_DATE(2932896) AS VARCHAR) raw expr : CAST(TO_DATE(2932896) AS String) -checked expr : CAST(to_date(CAST(2932896_u32 AS Int64)) AS String) +checked expr : CAST(to_date(CAST(2932896_u32 AS Int64)) AS String) optimized expr : "9999-12-31" output type : String output domain : {"9999-12-31"..="9999-12-31"} @@ -1747,7 +1747,7 @@ output : '9999-12-31' ast : CAST(a AS VARCHAR) raw expr : CAST(a::Date AS String) -checked expr : CAST(a AS String) +checked expr : CAST(a AS String) evaluation: +--------+---------------------+-------------------------------+ | | a | Output | @@ -1787,7 +1787,7 @@ error: ast : CAST(((1, TRUE), 1) AS Tuple(Tuple(INT, INT), INT)) raw expr : CAST(tuple(tuple(1, true), 1) AS Tuple(Tuple(Int32, Int32), Int32)) -checked expr : CAST(tuple(tuple(1_u8, true), 1_u8) AS Tuple(Tuple(Int32, Int32), Int32)) +checked expr : CAST(tuple(tuple(1_u8, true), 1_u8) AS Tuple(Tuple(Int32, Int32), Int32)) optimized expr : ((1_i32, 1_i32), 1_i32) output type : Tuple(Tuple(Int32, Int32), Int32) output domain : (({1..=1}, {1..=1}), {1..=1}) @@ -1796,7 +1796,7 @@ output : ((1, 1), 1) ast : CAST(TRY_CAST(1 AS INT32) AS INT32) raw expr : CAST(TRY_CAST(1 AS Int32) AS Int32) -checked expr : CAST(TRY_CAST(1_u8 AS Int32 NULL) AS Int32) +checked expr : CAST(TRY_CAST(1_u8 AS Int32 NULL) AS Int32) optimized expr : 1_i32 output type : Int32 output domain : {1..=1} @@ -1821,7 +1821,7 @@ error: ast : CAST([(1,TRUE),(2,FALSE)] AS Array(Tuple(INT, INT))) raw expr : CAST(array(tuple(1, true), tuple(2, false)) AS Array(Tuple(Int32, Int32))) -checked expr : CAST(array(tuple(1_u8, true), tuple(2_u8, false)) AS Array(Tuple(Int32, Int32))) +checked expr : CAST(array(tuple(1_u8, true), tuple(2_u8, false)) AS Array(Tuple(Int32, Int32))) optimized expr : [(1, 1), (2, 0)] output type : Array(Tuple(Int32, Int32)) output domain : [({1..=2}, {0..=1})] @@ -1846,7 +1846,7 @@ error: ast : CAST([[TRUE], [FALSE, TRUE]] AS Array(Array(INT))) raw expr : CAST(array(array(true), array(false, true)) AS Array(Array(Int32))) -checked expr : CAST(array(array(true), array(false, true)) AS Array(Array(Int32))) +checked expr : CAST(array(array(true), array(false, true)) AS Array(Array(Int32))) optimized expr : [[1], [0, 1]] output type : Array(Array(Int32)) output domain : [[{0..=1}]] @@ -1863,7 +1863,7 @@ error: ast : CAST('Abc' AS BINARY) raw expr : CAST('Abc' AS Binary) -checked expr : CAST("Abc" AS Binary) +checked expr : CAST("Abc" AS Binary) optimized expr : 416263 output type : Binary output domain : Undefined @@ -1872,7 +1872,7 @@ output : 416263 ast : CAST('Dobrý den' AS BINARY) raw expr : CAST('Dobrý den' AS Binary) -checked expr : CAST("Dobrý den" AS Binary) +checked expr : CAST("Dobrý den" AS Binary) optimized expr : 446F6272C3BD2064656E output type : Binary output domain : Undefined @@ -1881,7 +1881,7 @@ output : 446F6272C3BD2064656E ast : CAST('ß😀山' AS BINARY) raw expr : CAST('ß😀山' AS Binary) -checked expr : CAST("ß😀山" AS Binary) +checked expr : CAST("ß😀山" AS Binary) optimized expr : C39FF09F9880E5B1B1 output type : Binary output domain : Undefined @@ -1898,7 +1898,7 @@ error: ast : CAST(NULL AS BINARY NULL) raw expr : CAST(NULL AS Binary NULL) -checked expr : CAST(NULL AS Binary NULL) +checked expr : CAST(NULL AS Binary NULL) optimized expr : NULL output type : Binary NULL output domain : {NULL} @@ -1907,7 +1907,7 @@ output : NULL ast : CAST(a AS BINARY) raw expr : CAST(a::String AS Binary) -checked expr : CAST(a AS Binary) +checked expr : CAST(a AS Binary) evaluation: +--------+-------------------+----------------------+ | | a | Output | @@ -1937,7 +1937,7 @@ error: ast : CAST(a AS BINARY NULL) raw expr : CAST(a::String NULL AS Binary NULL) -checked expr : CAST(a AS Binary NULL) +checked expr : CAST(a AS Binary NULL) evaluation: +--------+--------------------------------+----------------------+ | | a | Output | @@ -1959,7 +1959,7 @@ evaluation (internal): ast : CAST(CAST('Abc' AS BINARY) AS STRING) raw expr : CAST(CAST('Abc' AS Binary) AS String) -checked expr : CAST(CAST("Abc" AS Binary) AS String) +checked expr : CAST(CAST("Abc" AS Binary) AS String) optimized expr : "Abc" output type : String output domain : {"Abc"..="Abc"} @@ -1968,7 +1968,7 @@ output : 'Abc' ast : CAST(CAST('Dobrý den' AS BINARY) AS STRING) raw expr : CAST(CAST('Dobrý den' AS Binary) AS String) -checked expr : CAST(CAST("Dobrý den" AS Binary) AS String) +checked expr : CAST(CAST("Dobrý den" AS Binary) AS String) optimized expr : "Dobrý den" output type : String output domain : {"Dobrý den"..="Dobrý den"} @@ -1977,7 +1977,7 @@ output : 'Dobrý den' ast : CAST(CAST('ß😀山' AS BINARY) AS STRING) raw expr : CAST(CAST('ß😀山' AS Binary) AS String) -checked expr : CAST(CAST("ß😀山" AS Binary) AS String) +checked expr : CAST(CAST("ß😀山" AS Binary) AS String) optimized expr : "ß😀山" output type : String output domain : {"ß😀山"..="ß😀山"} @@ -1994,7 +1994,7 @@ error: ast : CAST(CAST(NULL AS BINARY NULL) AS STRING NULL) raw expr : CAST(CAST(NULL AS Binary NULL) AS String NULL) -checked expr : CAST(CAST(NULL AS Binary NULL) AS String NULL) +checked expr : CAST(CAST(NULL AS Binary NULL) AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -2003,7 +2003,7 @@ output : NULL ast : CAST(CAST(a AS BINARY) AS STRING) raw expr : CAST(CAST(a::String AS Binary) AS String) -checked expr : CAST(CAST(a AS Binary) AS String) +checked expr : CAST(CAST(a AS Binary) AS String) evaluation: +--------+-------------------+-------------+ | | a | Output | @@ -2033,7 +2033,7 @@ error: ast : CAST(CAST(a AS BINARY NULL) AS STRING NULL) raw expr : CAST(CAST(a::String NULL AS Binary NULL) AS String NULL) -checked expr : CAST(CAST(a AS Binary NULL) AS String NULL) +checked expr : CAST(CAST(a AS Binary NULL) AS String NULL) evaluation: +--------+--------------------------------+-------------+ | | a | Output | @@ -2055,7 +2055,7 @@ evaluation (internal): ast : TRY_CAST(0 AS UINT8) raw expr : TRY_CAST(0 AS UInt8) -checked expr : TRY_CAST(0_u8 AS UInt8 NULL) +checked expr : TRY_CAST(0_u8 AS UInt8 NULL) optimized expr : 0_u8 output type : UInt8 NULL output domain : {0..=0} @@ -2064,7 +2064,7 @@ output : 0 ast : TRY_CAST(0 AS UINT8 NULL) raw expr : TRY_CAST(0 AS UInt8 NULL) -checked expr : TRY_CAST(0_u8 AS UInt8 NULL) +checked expr : TRY_CAST(0_u8 AS UInt8 NULL) optimized expr : 0_u8 output type : UInt8 NULL output domain : {0..=0} @@ -2073,7 +2073,7 @@ output : 0 ast : TRY_CAST('str' AS STRING) raw expr : TRY_CAST('str' AS String) -checked expr : TRY_CAST("str" AS String NULL) +checked expr : TRY_CAST("str" AS String NULL) optimized expr : "str" output type : String NULL output domain : {"str"..="str"} @@ -2082,7 +2082,7 @@ output : 'str' ast : TRY_CAST('str' AS STRING NULL) raw expr : TRY_CAST('str' AS String NULL) -checked expr : TRY_CAST("str" AS String NULL) +checked expr : TRY_CAST("str" AS String NULL) optimized expr : "str" output type : String NULL output domain : {"str"..="str"} @@ -2091,7 +2091,7 @@ output : 'str' ast : TRY_CAST(NULL AS UINT8) raw expr : TRY_CAST(NULL AS UInt8) -checked expr : TRY_CAST(NULL AS UInt8 NULL) +checked expr : TRY_CAST(NULL AS UInt8 NULL) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -2100,7 +2100,7 @@ output : NULL ast : TRY_CAST(NULL AS UINT8 NULL) raw expr : TRY_CAST(NULL AS UInt8 NULL) -checked expr : TRY_CAST(NULL AS UInt8 NULL) +checked expr : TRY_CAST(NULL AS UInt8 NULL) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -2109,7 +2109,7 @@ output : NULL ast : TRY_CAST(NULL AS STRING) raw expr : TRY_CAST(NULL AS String) -checked expr : TRY_CAST(NULL AS String NULL) +checked expr : TRY_CAST(NULL AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -2118,7 +2118,7 @@ output : NULL ast : TRY_CAST(NULL AS STRING NULL) raw expr : TRY_CAST(NULL AS String NULL) -checked expr : TRY_CAST(NULL AS String NULL) +checked expr : TRY_CAST(NULL AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -2127,7 +2127,7 @@ output : NULL ast : TRY_CAST(1024 AS UINT8) raw expr : TRY_CAST(1024 AS UInt8) -checked expr : TRY_CAST(1024_u16 AS UInt8 NULL) +checked expr : TRY_CAST(1024_u16 AS UInt8 NULL) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -2136,7 +2136,7 @@ output : NULL ast : TRY_CAST(a AS UINT8) raw expr : TRY_CAST(a::UInt16 AS UInt8) -checked expr : TRY_CAST(a AS UInt8 NULL) +checked expr : TRY_CAST(a AS UInt8 NULL) evaluation: +--------+------------+--------------------+ | | a | Output | @@ -2160,7 +2160,7 @@ evaluation (internal): ast : TRY_CAST(a AS UINT16) raw expr : TRY_CAST(a::Int16 AS UInt16) -checked expr : TRY_CAST(a AS UInt16 NULL) +checked expr : TRY_CAST(a AS UInt16 NULL) evaluation: +--------+----------+------------------+ | | a | Output | @@ -2184,7 +2184,7 @@ evaluation (internal): ast : TRY_CAST(a AS INT64) raw expr : TRY_CAST(a::Int16 AS Int64) -checked expr : TRY_CAST(a AS Int64 NULL) +checked expr : TRY_CAST(a AS Int64 NULL) evaluation: +--------+----------+------------+ | | a | Output | @@ -2208,7 +2208,7 @@ evaluation (internal): ast : (TRY_CAST(a AS FLOAT32), TRY_CAST(a AS INT32), TRY_CAST(b AS FLOAT32), TRY_CAST(b AS INT32)) raw expr : tuple(TRY_CAST(a::UInt64 AS Float32), TRY_CAST(a::UInt64 AS Int32), TRY_CAST(b::Float64 AS Float32), TRY_CAST(b::Float64 AS Int32)) -checked expr : tuple(TRY_CAST(a AS Float32 NULL), TRY_CAST(a AS Int32 NULL), TRY_CAST(b AS Float32 NULL), TRY_CAST(b AS Int32 NULL)) +checked expr : tuple(TRY_CAST(a AS Float32 NULL), TRY_CAST(a AS Int32 NULL), TRY_CAST(b AS Float32 NULL), TRY_CAST(b AS Int32 NULL)) evaluation: +--------+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ | | a | b | Output | @@ -2234,8 +2234,8 @@ evaluation (internal): ast : TRY_CAST([[a, b], NULL, NULL] AS Array(Array(Int8))) raw expr : TRY_CAST(array(array(a::Int16, b::Int16), NULL, NULL) AS Array(Array(Int8))) -checked expr : TRY_CAST(array(CAST(array(a, b) AS Array(Int16) NULL), CAST(NULL AS Array(Int16) NULL), CAST(NULL AS Array(Int16) NULL)) AS Array(Array(Int8 NULL) NULL) NULL) -optimized expr : TRY_CAST(array(CAST(array(a, b) AS Array(Int16) NULL), NULL, NULL) AS Array(Array(Int8 NULL) NULL) NULL) +checked expr : TRY_CAST(array(CAST(array(a, b) AS Array(Int16) NULL), CAST(NULL AS Array(Int16) NULL), CAST(NULL AS Array(Int16) NULL)) AS Array(Array(Int8 NULL) NULL) NULL) +optimized expr : TRY_CAST(array(CAST(array(a, b) AS Array(Int16) NULL), NULL, NULL) AS Array(Array(Int8 NULL) NULL) NULL) evaluation: +--------+-----------+------------+------------------------------------+ | | a | b | Output | @@ -2260,7 +2260,7 @@ evaluation (internal): ast : TRY_CAST((a, b, NULL) AS TUPLE(Int8, UInt8, Boolean NULL)) raw expr : TRY_CAST(tuple(a::Int16, b::Int16, NULL) AS Tuple(Int8, UInt8, Boolean NULL)) -checked expr : TRY_CAST(tuple(a, b, NULL) AS Tuple(Int8 NULL, UInt8 NULL, Boolean NULL) NULL) +checked expr : TRY_CAST(tuple(a, b, NULL) AS Tuple(Int8 NULL, UInt8 NULL, Boolean NULL) NULL) evaluation: +--------+-----------+------------+-------------------------------------------------+ | | a | b | Output | @@ -2285,7 +2285,7 @@ evaluation (internal): ast : TRY_CAST(a AS INT16) raw expr : TRY_CAST(a::Float64 AS Int16) -checked expr : TRY_CAST(a AS Int16 NULL) +checked expr : TRY_CAST(a AS Int16 NULL) evaluation: +--------+--------------+------------+ | | a | Output | @@ -2309,7 +2309,7 @@ evaluation (internal): ast : TRY_CAST(b AS INT16) raw expr : TRY_CAST(b::Int8 AS Int16) -checked expr : TRY_CAST(b AS Int16 NULL) +checked expr : TRY_CAST(b AS Int16 NULL) evaluation: +--------+----------+------------+ | | b | Output | @@ -2333,7 +2333,7 @@ evaluation (internal): ast : TRY_CAST(a AS UINT16) raw expr : TRY_CAST(a::Int16 AS UInt16) -checked expr : TRY_CAST(a AS UInt16 NULL) +checked expr : TRY_CAST(a AS UInt16 NULL) evaluation: +--------+----------+------------------+ | | a | Output | @@ -2357,7 +2357,7 @@ evaluation (internal): ast : TRY_CAST(c AS INT16) raw expr : TRY_CAST(c::Int64 AS Int16) -checked expr : TRY_CAST(c AS Int16 NULL) +checked expr : TRY_CAST(c AS Int16 NULL) evaluation: +--------+--------------------+-----------------------+ | | c | Output | @@ -2381,7 +2381,7 @@ evaluation (internal): ast : TRY_CAST(NULL AS VARIANT) raw expr : TRY_CAST(NULL AS Variant) -checked expr : TRY_CAST(NULL AS Variant NULL) +checked expr : TRY_CAST(NULL AS Variant NULL) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -2390,7 +2390,7 @@ output : NULL ast : TRY_CAST(0 AS VARIANT) raw expr : TRY_CAST(0 AS Variant) -checked expr : TRY_CAST(0_u8 AS Variant NULL) +checked expr : TRY_CAST(0_u8 AS Variant NULL) optimized expr : 0x200000002000000100 output type : Variant NULL output domain : Undefined @@ -2399,7 +2399,7 @@ output : '0' ast : TRY_CAST(-1 AS VARIANT) raw expr : TRY_CAST(minus(1) AS Variant) -checked expr : TRY_CAST(minus(1_u8) AS Variant NULL) +checked expr : TRY_CAST(minus(1_u8) AS Variant NULL) optimized expr : 0x200000002000000240ff output type : Variant NULL output domain : Undefined @@ -2408,7 +2408,7 @@ output : '-1' ast : TRY_CAST(1.1 AS VARIANT) raw expr : TRY_CAST(1.1 AS Variant) -checked expr : TRY_CAST(1.1_d128(2,1) AS Variant NULL) +checked expr : TRY_CAST(1.1_d128(2,1) AS Variant NULL) optimized expr : 0x2000000020000009603ff199999999999a output type : Variant NULL output domain : Undefined @@ -2417,7 +2417,7 @@ output : '1.1' ast : TRY_CAST('🍦 が美味しい' AS VARIANT) raw expr : TRY_CAST('🍦 が美味しい' AS Variant) -checked expr : TRY_CAST("🍦 が美味しい" AS Variant NULL) +checked expr : TRY_CAST("🍦 が美味しい" AS Variant NULL) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -2426,7 +2426,7 @@ output : NULL ast : TRY_CAST([0, 1, 2] AS VARIANT) raw expr : TRY_CAST(array(0, 1, 2) AS Variant) -checked expr : TRY_CAST(array(0_u8, 1_u8, 2_u8) AS Variant NULL) +checked expr : TRY_CAST(array(0_u8, 1_u8, 2_u8) AS Variant NULL) optimized expr : 0x800000032000000120000002200000020050015002 output type : Variant NULL output domain : Undefined @@ -2435,7 +2435,7 @@ output : '[0,1,2]' ast : TRY_CAST([0::VARIANT, '"a"'::VARIANT] AS VARIANT) raw expr : TRY_CAST(array(CAST(0 AS Variant), CAST('"a"' AS Variant)) AS Variant) -checked expr : TRY_CAST(array(CAST(0_u8 AS Variant), CAST("\"a\"" AS Variant)) AS Variant NULL) +checked expr : TRY_CAST(array(CAST(0_u8 AS Variant), CAST("\"a\"" AS Variant)) AS Variant NULL) optimized expr : 0x8000000220000001100000010061 output type : Variant NULL output domain : Undefined @@ -2444,7 +2444,7 @@ output : '[0,"a"]' ast : TRY_CAST(to_timestamp(1000000) AS VARIANT) raw expr : TRY_CAST(to_timestamp(1000000) AS Variant) -checked expr : TRY_CAST(to_timestamp(CAST(1000000_u32 AS Int64)) AS Variant NULL) +checked expr : TRY_CAST(to_timestamp(CAST(1000000_u32 AS Int64)) AS Variant NULL) optimized expr : 0x200000001000001a313937302d30312d31322031333a34363a34302e303030303030 output type : Variant NULL output domain : Undefined @@ -2453,7 +2453,7 @@ output : '"1970-01-12 13:46:40.000000"' ast : TRY_CAST(false AS VARIANT) raw expr : TRY_CAST(false AS Variant) -checked expr : TRY_CAST(false AS Variant NULL) +checked expr : TRY_CAST(false AS Variant NULL) optimized expr : 0x2000000030000000 output type : Variant NULL output domain : Undefined @@ -2462,7 +2462,7 @@ output : 'false' ast : TRY_CAST(true AS VARIANT) raw expr : TRY_CAST(true AS Variant) -checked expr : TRY_CAST(true AS Variant NULL) +checked expr : TRY_CAST(true AS Variant NULL) optimized expr : 0x2000000040000000 output type : Variant NULL output domain : Undefined @@ -2471,7 +2471,7 @@ output : 'true' ast : TRY_CAST(TRY_CAST('"🍦 が美味しい"' AS VARIANT) AS VARIANT) raw expr : TRY_CAST(TRY_CAST('"🍦 が美味しい"' AS Variant) AS Variant) -checked expr : TRY_CAST("\"🍦 が美味しい\"" AS Variant NULL) +checked expr : TRY_CAST("\"🍦 が美味しい\"" AS Variant NULL) optimized expr : 0x2000000010000014f09f8da620e3818ce7be8ee591b3e38197e38184 output type : Variant NULL output domain : Undefined @@ -2480,7 +2480,7 @@ output : '"🍦 が美味しい"' ast : TRY_CAST((1,) AS VARIANT) raw expr : TRY_CAST(tuple(1) AS Variant) -checked expr : TRY_CAST(tuple(1_u8) AS Variant NULL) +checked expr : TRY_CAST(tuple(1_u8) AS Variant NULL) optimized expr : 0x400000011000000120000002315001 output type : Variant NULL output domain : Undefined @@ -2489,7 +2489,7 @@ output : '{"1":1}' ast : TRY_CAST((1, 2) AS VARIANT) raw expr : TRY_CAST(tuple(1, 2) AS Variant) -checked expr : TRY_CAST(tuple(1_u8, 2_u8) AS Variant NULL) +checked expr : TRY_CAST(tuple(1_u8, 2_u8) AS Variant NULL) optimized expr : 0x4000000210000001100000012000000220000002313250015002 output type : Variant NULL output domain : Undefined @@ -2498,7 +2498,7 @@ output : '{"1":1,"2":2}' ast : TRY_CAST((false, true) AS VARIANT) raw expr : TRY_CAST(tuple(false, true) AS Variant) -checked expr : TRY_CAST(tuple(false, true) AS Variant NULL) +checked expr : TRY_CAST(tuple(false, true) AS Variant NULL) optimized expr : 0x40000002100000011000000130000000400000003132 output type : Variant NULL output domain : Undefined @@ -2507,7 +2507,7 @@ output : '{"1":false,"2":true}' ast : TRY_CAST(('a',) AS VARIANT) raw expr : TRY_CAST(tuple('a') AS Variant) -checked expr : TRY_CAST(tuple("a") AS Variant NULL) +checked expr : TRY_CAST(tuple("a") AS Variant NULL) optimized expr : 0x4000000110000001100000013161 output type : Variant NULL output domain : Undefined @@ -2516,7 +2516,7 @@ output : '{"1":"a"}' ast : TRY_CAST((1, 2, (false, true, ('a',))) AS VARIANT) raw expr : TRY_CAST(tuple(1, 2, tuple(false, true, tuple('a'))) AS Variant) -checked expr : TRY_CAST(tuple(1_u8, 2_u8, tuple(false, true, tuple("a"))) AS Variant NULL) +checked expr : TRY_CAST(tuple(1_u8, 2_u8, tuple(false, true, tuple("a"))) AS Variant NULL) optimized expr : 0x4000000310000001100000011000000120000002200000025000002d313233500150024000000310000001100000011000000130000000400000005000000e3132334000000110000001100000013161 output type : Variant NULL output domain : Undefined @@ -2525,7 +2525,7 @@ output : '{"1":1,"2":2,"3":{"1":false,"2":true,"3":{"1":"a"}}}' ast : TRY_CAST(a AS VARIANT) raw expr : TRY_CAST(a::String NULL AS Variant) -checked expr : TRY_CAST(a AS Variant NULL) +checked expr : TRY_CAST(a AS Variant NULL) evaluation: +--------+-------------------------------+--------------------+ | | a | Output | @@ -2547,7 +2547,7 @@ evaluation (internal): ast : TRY_CAST(a AS VARIANT) raw expr : TRY_CAST(a::Bitmap AS Variant) -checked expr : TRY_CAST(a AS Variant NULL) +checked expr : TRY_CAST(a AS Variant NULL) evaluation: +--------+-------------+---------------+ | | a | Output | @@ -2570,7 +2570,7 @@ evaluation (internal): ast : TRY_CAST(-30610224000000001 AS TIMESTAMP) raw expr : TRY_CAST(minus(30610224000000001) AS Timestamp) -checked expr : TRY_CAST(minus(30610224000000001_u64) AS Timestamp NULL) +checked expr : TRY_CAST(minus(30610224000000001_u64) AS Timestamp NULL) optimized expr : -30610224000000001 output type : Timestamp NULL output domain : {-30610224000000001..=-30610224000000001} @@ -2579,7 +2579,7 @@ output : '0999-12-31 23:59:59.999999' ast : TRY_CAST(-315360000000000 AS TIMESTAMP) raw expr : TRY_CAST(minus(315360000000000) AS Timestamp) -checked expr : TRY_CAST(minus(315360000000000_u64) AS Timestamp NULL) +checked expr : TRY_CAST(minus(315360000000000_u64) AS Timestamp NULL) optimized expr : -315360000000000 output type : Timestamp NULL output domain : {-315360000000000..=-315360000000000} @@ -2588,7 +2588,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(-315360000000 AS TIMESTAMP) raw expr : TRY_CAST(minus(315360000000) AS Timestamp) -checked expr : TRY_CAST(minus(315360000000_u64) AS Timestamp NULL) +checked expr : TRY_CAST(minus(315360000000_u64) AS Timestamp NULL) optimized expr : -315360000000000 output type : Timestamp NULL output domain : {-315360000000000..=-315360000000000} @@ -2597,7 +2597,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(-100 AS TIMESTAMP) raw expr : TRY_CAST(minus(100) AS Timestamp) -checked expr : TRY_CAST(minus(100_u8) AS Timestamp NULL) +checked expr : TRY_CAST(minus(100_u8) AS Timestamp NULL) optimized expr : -100000000 output type : Timestamp NULL output domain : {-100000000..=-100000000} @@ -2606,7 +2606,7 @@ output : '1969-12-31 23:58:20.000000' ast : TRY_CAST(-0 AS TIMESTAMP) raw expr : TRY_CAST(minus(0) AS Timestamp) -checked expr : TRY_CAST(minus(0_u8) AS Timestamp NULL) +checked expr : TRY_CAST(minus(0_u8) AS Timestamp NULL) optimized expr : 0 output type : Timestamp NULL output domain : {0..=0} @@ -2615,7 +2615,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(0 AS TIMESTAMP) raw expr : TRY_CAST(0 AS Timestamp) -checked expr : TRY_CAST(0_u8 AS Timestamp NULL) +checked expr : TRY_CAST(0_u8 AS Timestamp NULL) optimized expr : 0 output type : Timestamp NULL output domain : {0..=0} @@ -2624,7 +2624,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(100 AS TIMESTAMP) raw expr : TRY_CAST(100 AS Timestamp) -checked expr : TRY_CAST(100_u8 AS Timestamp NULL) +checked expr : TRY_CAST(100_u8 AS Timestamp NULL) optimized expr : 100000000 output type : Timestamp NULL output domain : {100000000..=100000000} @@ -2633,7 +2633,7 @@ output : '1970-01-01 00:01:40.000000' ast : TRY_CAST(315360000000 AS TIMESTAMP) raw expr : TRY_CAST(315360000000 AS Timestamp) -checked expr : TRY_CAST(315360000000_u64 AS Timestamp NULL) +checked expr : TRY_CAST(315360000000_u64 AS Timestamp NULL) optimized expr : 315360000000000 output type : Timestamp NULL output domain : {315360000000000..=315360000000000} @@ -2642,7 +2642,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(315360000000000 AS TIMESTAMP) raw expr : TRY_CAST(315360000000000 AS Timestamp) -checked expr : TRY_CAST(315360000000000_u64 AS Timestamp NULL) +checked expr : TRY_CAST(315360000000000_u64 AS Timestamp NULL) optimized expr : 315360000000000 output type : Timestamp NULL output domain : {315360000000000..=315360000000000} @@ -2651,7 +2651,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(253402300800000000 AS TIMESTAMP) raw expr : TRY_CAST(253402300800000000 AS Timestamp) -checked expr : TRY_CAST(253402300800000000_u64 AS Timestamp NULL) +checked expr : TRY_CAST(253402300800000000_u64 AS Timestamp NULL) optimized expr : -62135596800000000 output type : Timestamp NULL output domain : {-62135596800000000..=-62135596800000000} @@ -2660,7 +2660,7 @@ output : '0001-01-01 00:00:00.000000' ast : TRY_CAST(a AS TIMESTAMP) raw expr : TRY_CAST(a::Int64 AS Timestamp) -checked expr : TRY_CAST(a AS Timestamp NULL) +checked expr : TRY_CAST(a AS Timestamp NULL) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -2686,7 +2686,7 @@ evaluation (internal): ast : TRY_CAST(TO_TIMESTAMP(-315360000000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000000)) AS Int64) -checked expr : TRY_CAST(to_timestamp(minus(315360000000000_u64)) AS Int64 NULL) +checked expr : TRY_CAST(to_timestamp(minus(315360000000000_u64)) AS Int64 NULL) optimized expr : -315360000000000_i64 output type : Int64 NULL output domain : {-315360000000000..=-315360000000000} @@ -2695,7 +2695,7 @@ output : -315360000000000 ast : TRY_CAST(TO_TIMESTAMP(-315360000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000)) AS Int64) -checked expr : TRY_CAST(to_timestamp(minus(315360000000_u64)) AS Int64 NULL) +checked expr : TRY_CAST(to_timestamp(minus(315360000000_u64)) AS Int64 NULL) optimized expr : -315360000000000_i64 output type : Int64 NULL output domain : {-315360000000000..=-315360000000000} @@ -2704,7 +2704,7 @@ output : -315360000000000 ast : TRY_CAST(TO_TIMESTAMP(-100) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(100)) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS Int64 NULL) optimized expr : -100000000_i64 output type : Int64 NULL output domain : {-100000000..=-100000000} @@ -2713,7 +2713,7 @@ output : -100000000 ast : TRY_CAST(TO_TIMESTAMP(-0) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(0)) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2722,7 +2722,7 @@ output : 0 ast : TRY_CAST(TO_TIMESTAMP(0) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(0) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(0_u8 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_timestamp(CAST(0_u8 AS Int64)) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2731,7 +2731,7 @@ output : 0 ast : TRY_CAST(TO_TIMESTAMP(100) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(100) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(100_u8 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_timestamp(CAST(100_u8 AS Int64)) AS Int64 NULL) optimized expr : 100000000_i64 output type : Int64 NULL output domain : {100000000..=100000000} @@ -2740,7 +2740,7 @@ output : 100000000 ast : TRY_CAST(TO_TIMESTAMP(315360000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS Int64 NULL) optimized expr : 315360000000000_i64 output type : Int64 NULL output domain : {315360000000000..=315360000000000} @@ -2749,7 +2749,7 @@ output : 315360000000000 ast : TRY_CAST(TO_TIMESTAMP(315360000000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000000) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS Int64 NULL) optimized expr : 315360000000000_i64 output type : Int64 NULL output domain : {315360000000000..=315360000000000} @@ -2758,7 +2758,7 @@ output : 315360000000000 ast : TRY_CAST(a AS INT64) raw expr : TRY_CAST(a::Timestamp AS Int64) -checked expr : TRY_CAST(a AS Int64 NULL) +checked expr : TRY_CAST(a AS Int64 NULL) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -2784,7 +2784,7 @@ evaluation (internal): ast : TRY_CAST(-354286 AS DATE) raw expr : TRY_CAST(minus(354286) AS Date) -checked expr : TRY_CAST(minus(354286_u32) AS Date NULL) +checked expr : TRY_CAST(minus(354286_u32) AS Date NULL) optimized expr : -354286 output type : Date NULL output domain : {-354286..=-354286} @@ -2793,7 +2793,7 @@ output : '0999-12-31' ast : TRY_CAST(-354285 AS DATE) raw expr : TRY_CAST(minus(354285) AS Date) -checked expr : TRY_CAST(minus(354285_u32) AS Date NULL) +checked expr : TRY_CAST(minus(354285_u32) AS Date NULL) optimized expr : -354285 output type : Date NULL output domain : {-354285..=-354285} @@ -2802,7 +2802,7 @@ output : '1000-01-01' ast : TRY_CAST(-100 AS DATE) raw expr : TRY_CAST(minus(100) AS Date) -checked expr : TRY_CAST(minus(100_u8) AS Date NULL) +checked expr : TRY_CAST(minus(100_u8) AS Date NULL) optimized expr : -100 output type : Date NULL output domain : {-100..=-100} @@ -2811,7 +2811,7 @@ output : '1969-09-23' ast : TRY_CAST(-0 AS DATE) raw expr : TRY_CAST(minus(0) AS Date) -checked expr : TRY_CAST(minus(0_u8) AS Date NULL) +checked expr : TRY_CAST(minus(0_u8) AS Date NULL) optimized expr : 0 output type : Date NULL output domain : {0..=0} @@ -2820,7 +2820,7 @@ output : '1970-01-01' ast : TRY_CAST(0 AS DATE) raw expr : TRY_CAST(0 AS Date) -checked expr : TRY_CAST(0_u8 AS Date NULL) +checked expr : TRY_CAST(0_u8 AS Date NULL) optimized expr : 0 output type : Date NULL output domain : {0..=0} @@ -2829,7 +2829,7 @@ output : '1970-01-01' ast : TRY_CAST(100 AS DATE) raw expr : TRY_CAST(100 AS Date) -checked expr : TRY_CAST(100_u8 AS Date NULL) +checked expr : TRY_CAST(100_u8 AS Date NULL) optimized expr : 100 output type : Date NULL output domain : {100..=100} @@ -2838,7 +2838,7 @@ output : '1970-04-11' ast : TRY_CAST(2932896 AS DATE) raw expr : TRY_CAST(2932896 AS Date) -checked expr : TRY_CAST(2932896_u32 AS Date NULL) +checked expr : TRY_CAST(2932896_u32 AS Date NULL) optimized expr : 2932896 output type : Date NULL output domain : {2932896..=2932896} @@ -2847,7 +2847,7 @@ output : '9999-12-31' ast : TRY_CAST(2932897 AS DATE) raw expr : TRY_CAST(2932897 AS Date) -checked expr : TRY_CAST(2932897_u32 AS Date NULL) +checked expr : TRY_CAST(2932897_u32 AS Date NULL) optimized expr : -719162 output type : Date NULL output domain : {-719162..=-719162} @@ -2856,7 +2856,7 @@ output : '0001-01-01' ast : TRY_CAST(a AS DATE) raw expr : TRY_CAST(a::Int32 AS Date) -checked expr : TRY_CAST(a AS Date NULL) +checked expr : TRY_CAST(a AS Date NULL) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -2880,7 +2880,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(-354285) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(354285)) AS Int64) -checked expr : TRY_CAST(to_date(minus(354285_u32)) AS Int64 NULL) +checked expr : TRY_CAST(to_date(minus(354285_u32)) AS Int64 NULL) optimized expr : -354285_i64 output type : Int64 NULL output domain : {-354285..=-354285} @@ -2889,7 +2889,7 @@ output : -354285 ast : TRY_CAST(TO_DATE(-100) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(100)) AS Int64) -checked expr : TRY_CAST(to_date(CAST(minus(100_u8) AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_date(CAST(minus(100_u8) AS Int64)) AS Int64 NULL) optimized expr : -100_i64 output type : Int64 NULL output domain : {-100..=-100} @@ -2898,7 +2898,7 @@ output : -100 ast : TRY_CAST(TO_DATE(-0) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(0)) AS Int64) -checked expr : TRY_CAST(to_date(CAST(minus(0_u8) AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_date(CAST(minus(0_u8) AS Int64)) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2907,7 +2907,7 @@ output : 0 ast : TRY_CAST(TO_DATE(0) AS INT64) raw expr : TRY_CAST(TO_DATE(0) AS Int64) -checked expr : TRY_CAST(to_date(CAST(0_u8 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_date(CAST(0_u8 AS Int64)) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2916,7 +2916,7 @@ output : 0 ast : TRY_CAST(TO_DATE(100) AS INT64) raw expr : TRY_CAST(TO_DATE(100) AS Int64) -checked expr : TRY_CAST(to_date(CAST(100_u8 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_date(CAST(100_u8 AS Int64)) AS Int64 NULL) optimized expr : 100_i64 output type : Int64 NULL output domain : {100..=100} @@ -2925,7 +2925,7 @@ output : 100 ast : TRY_CAST(TO_DATE(2932896) AS INT64) raw expr : TRY_CAST(TO_DATE(2932896) AS Int64) -checked expr : TRY_CAST(to_date(CAST(2932896_u32 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(to_date(CAST(2932896_u32 AS Int64)) AS Int64 NULL) optimized expr : 2932896_i64 output type : Int64 NULL output domain : {2932896..=2932896} @@ -2934,7 +2934,7 @@ output : 2932896 ast : TRY_CAST(a AS INT64) raw expr : TRY_CAST(a::Date AS Int64) -checked expr : TRY_CAST(a AS Int64 NULL) +checked expr : TRY_CAST(a AS Int64 NULL) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -2958,7 +2958,7 @@ evaluation (internal): ast : TRY_CAST('foo' AS UINT64) raw expr : TRY_CAST('foo' AS UInt64) -checked expr : TRY_CAST("foo" AS UInt64 NULL) +checked expr : TRY_CAST("foo" AS UInt64 NULL) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -2967,7 +2967,7 @@ output : NULL ast : TRY_CAST('1foo' AS INT32) raw expr : TRY_CAST('1foo' AS Int32) -checked expr : TRY_CAST("1foo" AS Int32 NULL) +checked expr : TRY_CAST("1foo" AS Int32 NULL) optimized expr : NULL output type : Int32 NULL output domain : {NULL} @@ -2976,7 +2976,7 @@ output : NULL ast : TRY_CAST('-1' AS UINT64) raw expr : TRY_CAST('-1' AS UInt64) -checked expr : TRY_CAST("-1" AS UInt64 NULL) +checked expr : TRY_CAST("-1" AS UInt64 NULL) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -2985,7 +2985,7 @@ output : NULL ast : TRY_CAST('256' AS UINT8) raw expr : TRY_CAST('256' AS UInt8) -checked expr : TRY_CAST("256" AS UInt8 NULL) +checked expr : TRY_CAST("256" AS UInt8 NULL) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -2994,7 +2994,7 @@ output : NULL ast : TRY_CAST('1' AS UINT64) raw expr : TRY_CAST('1' AS UInt64) -checked expr : TRY_CAST("1" AS UInt64 NULL) +checked expr : TRY_CAST("1" AS UInt64 NULL) optimized expr : 1_u64 output type : UInt64 NULL output domain : {1..=1} @@ -3003,7 +3003,7 @@ output : 1 ast : TRY_CAST(str AS INT64) raw expr : TRY_CAST(str::String AS Int64) -checked expr : TRY_CAST(str AS Int64 NULL) +checked expr : TRY_CAST(str AS Int64 NULL) evaluation: +--------+--------------------------------+-------------------------------------------------------+ | | str | Output | @@ -3027,7 +3027,7 @@ evaluation (internal): ast : TRY_CAST(str AS INT64) raw expr : TRY_CAST(str::String NULL AS Int64) -checked expr : TRY_CAST(str AS Int64 NULL) +checked expr : TRY_CAST(str AS Int64 NULL) evaluation: +--------+------------------------+-------------------------------------------------------+ | | str | Output | @@ -3050,7 +3050,7 @@ evaluation (internal): ast : TRY_CAST(num AS STRING) raw expr : TRY_CAST(num::Int64 AS String) -checked expr : TRY_CAST(num AS String NULL) +checked expr : TRY_CAST(num AS String NULL) evaluation: +--------+----------------------------------------------+------------------------+ | | num | Output | @@ -3074,7 +3074,7 @@ evaluation (internal): ast : TRY_CAST(num AS STRING) raw expr : TRY_CAST(num::UInt64 AS String) -checked expr : TRY_CAST(num AS String NULL) +checked expr : TRY_CAST(num AS String NULL) evaluation: +--------+----------------------------+------------------------+ | | num | Output | @@ -3096,7 +3096,7 @@ evaluation (internal): ast : TRY_CAST('t' AS BOOLEAN) raw expr : TRY_CAST('t' AS Boolean) -checked expr : TRY_CAST("t" AS Boolean NULL) +checked expr : TRY_CAST("t" AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3105,7 +3105,7 @@ output : NULL ast : TRY_CAST('f' AS BOOLEAN) raw expr : TRY_CAST('f' AS Boolean) -checked expr : TRY_CAST("f" AS Boolean NULL) +checked expr : TRY_CAST("f" AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3114,7 +3114,7 @@ output : NULL ast : TRY_CAST('0' AS BOOLEAN) raw expr : TRY_CAST('0' AS Boolean) -checked expr : TRY_CAST("0" AS Boolean NULL) +checked expr : TRY_CAST("0" AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3123,7 +3123,7 @@ output : NULL ast : TRY_CAST('1' AS BOOLEAN) raw expr : TRY_CAST('1' AS Boolean) -checked expr : TRY_CAST("1" AS Boolean NULL) +checked expr : TRY_CAST("1" AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3132,7 +3132,7 @@ output : NULL ast : TRY_CAST('true' AS BOOLEAN) raw expr : TRY_CAST('true' AS Boolean) -checked expr : TRY_CAST("true" AS Boolean NULL) +checked expr : TRY_CAST("true" AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3141,7 +3141,7 @@ output : true ast : TRY_CAST('false' AS BOOLEAN) raw expr : TRY_CAST('false' AS Boolean) -checked expr : TRY_CAST("false" AS Boolean NULL) +checked expr : TRY_CAST("false" AS Boolean NULL) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3150,7 +3150,7 @@ output : false ast : TRY_CAST('TRUE' AS BOOLEAN) raw expr : TRY_CAST('TRUE' AS Boolean) -checked expr : TRY_CAST("TRUE" AS Boolean NULL) +checked expr : TRY_CAST("TRUE" AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3159,7 +3159,7 @@ output : true ast : TRY_CAST('FaLse' AS BOOLEAN) raw expr : TRY_CAST('FaLse' AS Boolean) -checked expr : TRY_CAST("FaLse" AS Boolean NULL) +checked expr : TRY_CAST("FaLse" AS Boolean NULL) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3168,7 +3168,7 @@ output : false ast : TRY_CAST(bool AS STRING) raw expr : TRY_CAST(bool::Boolean AS String) -checked expr : TRY_CAST(bool AS String NULL) +checked expr : TRY_CAST(bool AS String NULL) evaluation: +--------+---------------+-----------------+ | | bool | Output | @@ -3189,7 +3189,7 @@ evaluation (internal): ast : TRY_CAST('010.010' AS DECIMAL(5,3)) raw expr : TRY_CAST('010.010' AS Decimal(5, 3)) -checked expr : TRY_CAST("010.010" AS Decimal(5, 3) NULL) +checked expr : TRY_CAST("010.010" AS Decimal(5, 3) NULL) optimized expr : 10.010_d128(5,3) output type : Decimal(5, 3) NULL output domain : {10.010..=10.010} @@ -3198,7 +3198,7 @@ output : 10.010 ast : TRY_CAST('010.010' AS DECIMAL(5,4)) raw expr : TRY_CAST('010.010' AS Decimal(5, 4)) -checked expr : TRY_CAST("010.010" AS Decimal(5, 4) NULL) +checked expr : TRY_CAST("010.010" AS Decimal(5, 4) NULL) optimized expr : NULL output type : Decimal(5, 4) NULL output domain : {NULL} @@ -3207,7 +3207,7 @@ output : NULL ast : TRY_CAST('010.010' AS DECIMAL(5,2)) raw expr : TRY_CAST('010.010' AS Decimal(5, 2)) -checked expr : TRY_CAST("010.010" AS Decimal(5, 2) NULL) +checked expr : TRY_CAST("010.010" AS Decimal(5, 2) NULL) optimized expr : 10.01_d128(5,2) output type : Decimal(5, 2) NULL output domain : {10.01..=10.01} @@ -3216,7 +3216,7 @@ output : 10.01 ast : TRY_CAST('010.010' AS DECIMAL(4,3)) raw expr : TRY_CAST('010.010' AS Decimal(4, 3)) -checked expr : TRY_CAST("010.010" AS Decimal(4, 3) NULL) +checked expr : TRY_CAST("010.010" AS Decimal(4, 3) NULL) optimized expr : NULL output type : Decimal(4, 3) NULL output domain : {NULL} @@ -3225,7 +3225,7 @@ output : NULL ast : TRY_CAST('010.010' AS DECIMAL(4,2)) raw expr : TRY_CAST('010.010' AS Decimal(4, 2)) -checked expr : TRY_CAST("010.010" AS Decimal(4, 2) NULL) +checked expr : TRY_CAST("010.010" AS Decimal(4, 2) NULL) optimized expr : 10.01_d128(4,2) output type : Decimal(4, 2) NULL output domain : {10.01..=10.01} @@ -3234,7 +3234,7 @@ output : 10.01 ast : TRY_CAST('-1010.010' AS DECIMAL(7,3)) raw expr : TRY_CAST('-1010.010' AS Decimal(7, 3)) -checked expr : TRY_CAST("-1010.010" AS Decimal(7, 3) NULL) +checked expr : TRY_CAST("-1010.010" AS Decimal(7, 3) NULL) optimized expr : -1010.010_d128(7,3) output type : Decimal(7, 3) NULL output domain : {-1010.010..=-1010.010} @@ -3243,7 +3243,7 @@ output : -1010.010 ast : TRY_CAST('00' AS DECIMAL(2,1)) raw expr : TRY_CAST('00' AS Decimal(2, 1)) -checked expr : TRY_CAST("00" AS Decimal(2, 1) NULL) +checked expr : TRY_CAST("00" AS Decimal(2, 1) NULL) optimized expr : 0.0_d128(2,1) output type : Decimal(2, 1) NULL output domain : {0.0..=0.0} @@ -3252,7 +3252,7 @@ output : 0.0 ast : TRY_CAST('0.0' AS DECIMAL(2,0)) raw expr : TRY_CAST('0.0' AS Decimal(2, 0)) -checked expr : TRY_CAST("0.0" AS Decimal(2, 0) NULL) +checked expr : TRY_CAST("0.0" AS Decimal(2, 0) NULL) optimized expr : 0_d128(2,0) output type : Decimal(2, 0) NULL output domain : {0..=0} @@ -3261,7 +3261,7 @@ output : 0 ast : TRY_CAST('.0' AS DECIMAL(1,0)) raw expr : TRY_CAST('.0' AS Decimal(1, 0)) -checked expr : TRY_CAST(".0" AS Decimal(1, 0) NULL) +checked expr : TRY_CAST(".0" AS Decimal(1, 0) NULL) optimized expr : 0_d128(1,0) output type : Decimal(1, 0) NULL output domain : {0..=0} @@ -3270,7 +3270,7 @@ output : 0 ast : TRY_CAST('+1.0e-10' AS DECIMAL(11, 10)) raw expr : TRY_CAST('+1.0e-10' AS Decimal(11, 10)) -checked expr : TRY_CAST("+1.0e-10" AS Decimal(11, 10) NULL) +checked expr : TRY_CAST("+1.0e-10" AS Decimal(11, 10) NULL) optimized expr : 0.0000000001_d128(11,10) output type : Decimal(11, 10) NULL output domain : {0.0000000001..=0.0000000001} @@ -3279,7 +3279,7 @@ output : 0.0000000001 ast : TRY_CAST('-1.0e+10' AS DECIMAL(11, 0)) raw expr : TRY_CAST('-1.0e+10' AS Decimal(11, 0)) -checked expr : TRY_CAST("-1.0e+10" AS Decimal(11, 0) NULL) +checked expr : TRY_CAST("-1.0e+10" AS Decimal(11, 0) NULL) optimized expr : -10000000000_d128(11,0) output type : Decimal(11, 0) NULL output domain : {-10000000000..=-10000000000} @@ -3288,7 +3288,7 @@ output : -10000000000 ast : TRY_CAST('-0.000000' AS DECIMAL(11, 0)) raw expr : TRY_CAST('-0.000000' AS Decimal(11, 0)) -checked expr : TRY_CAST("-0.000000" AS Decimal(11, 0) NULL) +checked expr : TRY_CAST("-0.000000" AS Decimal(11, 0) NULL) optimized expr : 0_d128(11,0) output type : Decimal(11, 0) NULL output domain : {0..=0} @@ -3297,7 +3297,7 @@ output : 0 ast : TRY_CAST(0 AS BOOLEAN) raw expr : TRY_CAST(0 AS Boolean) -checked expr : TRY_CAST(0_u8 AS Boolean NULL) +checked expr : TRY_CAST(0_u8 AS Boolean NULL) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3306,7 +3306,7 @@ output : false ast : TRY_CAST(1 AS BOOLEAN) raw expr : TRY_CAST(1 AS Boolean) -checked expr : TRY_CAST(1_u8 AS Boolean NULL) +checked expr : TRY_CAST(1_u8 AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3315,7 +3315,7 @@ output : true ast : TRY_CAST(false AS UINT64) raw expr : TRY_CAST(false AS UInt64) -checked expr : TRY_CAST(false AS UInt64 NULL) +checked expr : TRY_CAST(false AS UInt64 NULL) optimized expr : 0_u64 output type : UInt64 NULL output domain : {0..=0} @@ -3324,7 +3324,7 @@ output : 0 ast : TRY_CAST(true AS INT64) raw expr : TRY_CAST(true AS Int64) -checked expr : TRY_CAST(true AS Int64 NULL) +checked expr : TRY_CAST(true AS Int64 NULL) optimized expr : 1_i64 output type : Int64 NULL output domain : {1..=1} @@ -3333,7 +3333,7 @@ output : 1 ast : TRY_CAST(0.0 AS BOOLEAN) raw expr : TRY_CAST(0.0 AS Boolean) -checked expr : TRY_CAST(0.0_d128(1,1) AS Boolean NULL) +checked expr : TRY_CAST(0.0_d128(1,1) AS Boolean NULL) optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3342,7 +3342,7 @@ output : false ast : TRY_CAST(1.0 AS BOOLEAN) raw expr : TRY_CAST(1.0 AS Boolean) -checked expr : TRY_CAST(1.0_d128(2,1) AS Boolean NULL) +checked expr : TRY_CAST(1.0_d128(2,1) AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3351,7 +3351,7 @@ output : true ast : TRY_CAST(false AS FLOAT32) raw expr : TRY_CAST(false AS Float32) -checked expr : TRY_CAST(false AS Float32 NULL) +checked expr : TRY_CAST(false AS Float32 NULL) optimized expr : 0_f32 output type : Float32 NULL output domain : {0..=0} @@ -3360,7 +3360,7 @@ output : 0 ast : TRY_CAST(true AS FLOAT64) raw expr : TRY_CAST(true AS Float64) -checked expr : TRY_CAST(true AS Float64 NULL) +checked expr : TRY_CAST(true AS Float64 NULL) optimized expr : 1_f64 output type : Float64 NULL output domain : {1..=1} @@ -3369,7 +3369,7 @@ output : 1 ast : TRY_CAST(false AS DECIMAL(4,3)) raw expr : TRY_CAST(false AS Decimal(4, 3)) -checked expr : TRY_CAST(false AS Decimal(4, 3) NULL) +checked expr : TRY_CAST(false AS Decimal(4, 3) NULL) optimized expr : 0.000_d128(4,3) output type : Decimal(4, 3) NULL output domain : {0.000..=0.000} @@ -3378,7 +3378,7 @@ output : 0.000 ast : TRY_CAST(true AS DECIMAL(4,2)) raw expr : TRY_CAST(true AS Decimal(4, 2)) -checked expr : TRY_CAST(true AS Decimal(4, 2) NULL) +checked expr : TRY_CAST(true AS Decimal(4, 2) NULL) optimized expr : 1.00_d128(4,2) output type : Decimal(4, 2) NULL output domain : {1.00..=1.00} @@ -3387,7 +3387,7 @@ output : 1.00 ast : TRY_CAST(num AS BOOLEAN) raw expr : TRY_CAST(num::Int64 AS Boolean) -checked expr : TRY_CAST(num AS Boolean NULL) +checked expr : TRY_CAST(num AS Boolean NULL) evaluation: +--------+----------+---------------+ | | num | Output | @@ -3410,7 +3410,7 @@ evaluation (internal): ast : TRY_CAST(num AS BOOLEAN) raw expr : TRY_CAST(num::UInt64 AS Boolean) -checked expr : TRY_CAST(num AS Boolean NULL) +checked expr : TRY_CAST(num AS Boolean NULL) evaluation: +--------+---------+---------------+ | | num | Output | @@ -3432,7 +3432,7 @@ evaluation (internal): ast : TRY_CAST(bool AS UINT64) raw expr : TRY_CAST(bool::Boolean AS UInt64) -checked expr : TRY_CAST(bool AS UInt64 NULL) +checked expr : TRY_CAST(bool AS UInt64 NULL) evaluation: +--------+---------------+-------------+ | | bool | Output | @@ -3453,7 +3453,7 @@ evaluation (internal): ast : TRY_CAST(bool AS INT64) raw expr : TRY_CAST(bool::Boolean AS Int64) -checked expr : TRY_CAST(bool AS Int64 NULL) +checked expr : TRY_CAST(bool AS Int64 NULL) evaluation: +--------+---------------+------------+ | | bool | Output | @@ -3474,7 +3474,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(1) AS TIMESTAMP) raw expr : TRY_CAST(TO_DATE(1) AS Timestamp) -checked expr : TRY_CAST(to_date(CAST(1_u8 AS Int64)) AS Timestamp NULL) +checked expr : TRY_CAST(to_date(CAST(1_u8 AS Int64)) AS Timestamp NULL) optimized expr : 86400000000 output type : Timestamp NULL output domain : {86400000000..=86400000000} @@ -3483,7 +3483,7 @@ output : '1970-01-02 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(1) AS DATE) raw expr : TRY_CAST(TO_TIMESTAMP(1) AS Date) -checked expr : TRY_CAST(to_timestamp(CAST(1_u8 AS Int64)) AS Date NULL) +checked expr : TRY_CAST(to_timestamp(CAST(1_u8 AS Int64)) AS Date NULL) optimized expr : 0 output type : Date NULL output domain : {0..=0} @@ -3492,7 +3492,7 @@ output : '1970-01-01' ast : TRY_CAST(a AS DATE) raw expr : TRY_CAST(a::Timestamp AS Date) -checked expr : TRY_CAST(a AS Date NULL) +checked expr : TRY_CAST(a AS Date NULL) evaluation: +--------+--------------------------------------+----------------+ | | a | Output | @@ -3518,7 +3518,7 @@ evaluation (internal): ast : TRY_CAST(a AS TIMESTAMP) raw expr : TRY_CAST(a::Date AS Timestamp) -checked expr : TRY_CAST(a AS Timestamp NULL) +checked expr : TRY_CAST(a AS Timestamp NULL) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -3542,7 +3542,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(a) AS TIMESTAMP) raw expr : TRY_CAST(TO_DATE(a::Int32) AS Timestamp) -checked expr : TRY_CAST(to_date(CAST(a AS Int64)) AS Timestamp NULL) +checked expr : TRY_CAST(to_date(CAST(a AS Int64)) AS Timestamp NULL) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -3566,7 +3566,7 @@ evaluation (internal): ast : TRY_CAST(a AS TIMESTAMP) raw expr : TRY_CAST(a::Int64 AS Timestamp) -checked expr : TRY_CAST(a AS Timestamp NULL) +checked expr : TRY_CAST(a AS Timestamp NULL) optimized expr : -62135596800000000 evaluation: +--------+---------------------------------------------+-------------------------------------------+ @@ -3587,7 +3587,7 @@ evaluation (internal): ast : TRY_CAST(a AS DATE) raw expr : TRY_CAST(a::Int64 AS Date) -checked expr : TRY_CAST(a AS Date NULL) +checked expr : TRY_CAST(a AS Date NULL) optimized expr : -719162 evaluation: +--------+---------------------------------------------+---------------------+ @@ -3713,7 +3713,7 @@ evaluation (internal): ast : TRY_CAST(TO_TIMESTAMP(-315360000000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000000)) AS String) -checked expr : TRY_CAST(to_timestamp(minus(315360000000000_u64)) AS String NULL) +checked expr : TRY_CAST(to_timestamp(minus(315360000000000_u64)) AS String NULL) optimized expr : "1960-01-04 00:00:00.000000" output type : String NULL output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -3722,7 +3722,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(-315360000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000)) AS String) -checked expr : TRY_CAST(to_timestamp(minus(315360000000_u64)) AS String NULL) +checked expr : TRY_CAST(to_timestamp(minus(315360000000_u64)) AS String NULL) optimized expr : "1960-01-04 00:00:00.000000" output type : String NULL output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -3731,7 +3731,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(-100) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(100)) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS String NULL) optimized expr : "1969-12-31 23:58:20.000000" output type : String NULL output domain : {"1969-12-31 23:58:20.000000"..="1969-12-31 23:58:20.000000"} @@ -3740,7 +3740,7 @@ output : '1969-12-31 23:58:20.000000' ast : TRY_CAST(TO_TIMESTAMP(-0) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(0)) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS String NULL) optimized expr : "1970-01-01 00:00:00.000000" output type : String NULL output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -3749,7 +3749,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(0) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(0) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(0_u8 AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_timestamp(CAST(0_u8 AS Int64)) AS String NULL) optimized expr : "1970-01-01 00:00:00.000000" output type : String NULL output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -3758,7 +3758,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(100) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(100) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(100_u8 AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_timestamp(CAST(100_u8 AS Int64)) AS String NULL) optimized expr : "1970-01-01 00:01:40.000000" output type : String NULL output domain : {"1970-01-01 00:01:40.000000"..="1970-01-01 00:01:40.000000"} @@ -3767,7 +3767,7 @@ output : '1970-01-01 00:01:40.000000' ast : TRY_CAST(TO_TIMESTAMP(315360000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS String NULL) optimized expr : "1979-12-30 00:00:00.000000" output type : String NULL output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -3776,7 +3776,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(315360000000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000000) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS String NULL) optimized expr : "1979-12-30 00:00:00.000000" output type : String NULL output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -3785,7 +3785,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(a AS VARCHAR) raw expr : TRY_CAST(a::Timestamp AS String) -checked expr : TRY_CAST(a AS String NULL) +checked expr : TRY_CAST(a AS String NULL) evaluation: +--------+--------------------------------------+------------------------------+ | | a | Output | @@ -3916,7 +3916,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(-354285) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(354285)) AS String) -checked expr : TRY_CAST(to_date(minus(354285_u32)) AS String NULL) +checked expr : TRY_CAST(to_date(minus(354285_u32)) AS String NULL) optimized expr : "1000-01-01" output type : String NULL output domain : {"1000-01-01"..="1000-01-01"} @@ -3925,7 +3925,7 @@ output : '1000-01-01' ast : TRY_CAST(TO_DATE(-100) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(100)) AS String) -checked expr : TRY_CAST(to_date(CAST(minus(100_u8) AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_date(CAST(minus(100_u8) AS Int64)) AS String NULL) optimized expr : "1969-09-23" output type : String NULL output domain : {"1969-09-23"..="1969-09-23"} @@ -3934,7 +3934,7 @@ output : '1969-09-23' ast : TRY_CAST(TO_DATE(-0) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(0)) AS String) -checked expr : TRY_CAST(to_date(CAST(minus(0_u8) AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_date(CAST(minus(0_u8) AS Int64)) AS String NULL) optimized expr : "1970-01-01" output type : String NULL output domain : {"1970-01-01"..="1970-01-01"} @@ -3943,7 +3943,7 @@ output : '1970-01-01' ast : TRY_CAST(TO_DATE(0) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(0) AS String) -checked expr : TRY_CAST(to_date(CAST(0_u8 AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_date(CAST(0_u8 AS Int64)) AS String NULL) optimized expr : "1970-01-01" output type : String NULL output domain : {"1970-01-01"..="1970-01-01"} @@ -3952,7 +3952,7 @@ output : '1970-01-01' ast : TRY_CAST(TO_DATE(100) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(100) AS String) -checked expr : TRY_CAST(to_date(CAST(100_u8 AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_date(CAST(100_u8 AS Int64)) AS String NULL) optimized expr : "1970-04-11" output type : String NULL output domain : {"1970-04-11"..="1970-04-11"} @@ -3961,7 +3961,7 @@ output : '1970-04-11' ast : TRY_CAST(TO_DATE(2932896) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(2932896) AS String) -checked expr : TRY_CAST(to_date(CAST(2932896_u32 AS Int64)) AS String NULL) +checked expr : TRY_CAST(to_date(CAST(2932896_u32 AS Int64)) AS String NULL) optimized expr : "9999-12-31" output type : String NULL output domain : {"9999-12-31"..="9999-12-31"} @@ -3970,7 +3970,7 @@ output : '9999-12-31' ast : TRY_CAST(a AS VARCHAR) raw expr : TRY_CAST(a::Date AS String) -checked expr : TRY_CAST(a AS String NULL) +checked expr : TRY_CAST(a AS String NULL) evaluation: +--------+---------------------+--------------+ | | a | Output | @@ -4002,7 +4002,7 @@ error: ast : TRY_CAST(('a',) AS Tuple(INT)) raw expr : TRY_CAST(tuple('a') AS Tuple(Int32,)) -checked expr : TRY_CAST(tuple("a") AS Tuple(Int32 NULL,) NULL) +checked expr : TRY_CAST(tuple("a") AS Tuple(Int32 NULL,) NULL) optimized expr : (NULL,) output type : Tuple(Int32 NULL,) NULL output domain : ({NULL}) @@ -4011,7 +4011,7 @@ output : (NULL,) ast : TRY_CAST(((1, TRUE), 1) AS Tuple(Tuple(INT, INT), INT)) raw expr : TRY_CAST(tuple(tuple(1, true), 1) AS Tuple(Tuple(Int32, Int32), Int32)) -checked expr : TRY_CAST(tuple(tuple(1_u8, true), 1_u8) AS Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL) +checked expr : TRY_CAST(tuple(tuple(1_u8, true), 1_u8) AS Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL) optimized expr : ((1_i32, 1_i32), 1_i32) output type : Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL output domain : (({1..=1}, {1..=1}), {1..=1}) @@ -4020,7 +4020,7 @@ output : ((1, 1), 1) ast : TRY_CAST(TRY_CAST(1 AS INT32) AS INT32) raw expr : TRY_CAST(TRY_CAST(1 AS Int32) AS Int32) -checked expr : TRY_CAST(1_u8 AS Int32 NULL) +checked expr : TRY_CAST(1_u8 AS Int32 NULL) optimized expr : 1_i32 output type : Int32 NULL output domain : {1..=1} @@ -4029,7 +4029,7 @@ output : 1 ast : TRY_CAST(((1, 'a'), 1) AS Tuple(Tuple(INT, INT NULL), INT)) raw expr : TRY_CAST(tuple(tuple(1, 'a'), 1) AS Tuple(Tuple(Int32, Int32 NULL), Int32)) -checked expr : TRY_CAST(tuple(tuple(1_u8, "a"), 1_u8) AS Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL) +checked expr : TRY_CAST(tuple(tuple(1_u8, "a"), 1_u8) AS Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL) optimized expr : ((1_i32, NULL), 1_i32) output type : Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL output domain : (({1..=1}, {NULL}), {1..=1}) @@ -4038,7 +4038,7 @@ output : ((1, NULL), 1) ast : TRY_CAST(((1, 'a'), 1) AS Tuple(Tuple(INT, INT), INT) NULL) raw expr : TRY_CAST(tuple(tuple(1, 'a'), 1) AS Tuple(Tuple(Int32, Int32), Int32) NULL) -checked expr : TRY_CAST(tuple(tuple(1_u8, "a"), 1_u8) AS Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL) +checked expr : TRY_CAST(tuple(tuple(1_u8, "a"), 1_u8) AS Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL) optimized expr : ((1_i32, NULL), 1_i32) output type : Tuple(Tuple(Int32 NULL, Int32 NULL) NULL, Int32 NULL) NULL output domain : (({1..=1}, {NULL}), {1..=1}) @@ -4047,7 +4047,7 @@ output : ((1, NULL), 1) ast : TRY_CAST([(1,TRUE),(2,FALSE)] AS Array(Tuple(INT, INT))) raw expr : TRY_CAST(array(tuple(1, true), tuple(2, false)) AS Array(Tuple(Int32, Int32))) -checked expr : TRY_CAST(array(tuple(1_u8, true), tuple(2_u8, false)) AS Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL) +checked expr : TRY_CAST(array(tuple(1_u8, true), tuple(2_u8, false)) AS Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL) optimized expr : [(1, 1), (2, 0)] output type : Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL output domain : [({1..=2}, {0..=1})] @@ -4056,7 +4056,7 @@ output : [(1, 1), (2, 0)] ast : TRY_CAST([(1,'a'),(2,'a')] AS Array(Tuple(INT, INT)) NULL) raw expr : TRY_CAST(array(tuple(1, 'a'), tuple(2, 'a')) AS Array(Tuple(Int32, Int32)) NULL) -checked expr : TRY_CAST(array(tuple(1_u8, "a"), tuple(2_u8, "a")) AS Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL) +checked expr : TRY_CAST(array(tuple(1_u8, "a"), tuple(2_u8, "a")) AS Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL) optimized expr : [(1, NULL), (2, NULL)] output type : Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL output domain : [({1..=2}, {-2147483648..=2147483647} ∪ {NULL})] @@ -4065,7 +4065,7 @@ output : [(1, NULL), (2, NULL)] ast : TRY_CAST([(1,'a'),(2,'a')] AS Array(Tuple(INT, INT NULL))) raw expr : TRY_CAST(array(tuple(1, 'a'), tuple(2, 'a')) AS Array(Tuple(Int32, Int32 NULL))) -checked expr : TRY_CAST(array(tuple(1_u8, "a"), tuple(2_u8, "a")) AS Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL) +checked expr : TRY_CAST(array(tuple(1_u8, "a"), tuple(2_u8, "a")) AS Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL) optimized expr : [(1, NULL), (2, NULL)] output type : Array(Tuple(Int32 NULL, Int32 NULL) NULL) NULL output domain : [({1..=2}, {-2147483648..=2147483647} ∪ {NULL})] @@ -4074,7 +4074,7 @@ output : [(1, NULL), (2, NULL)] ast : TRY_CAST([[TRUE], [FALSE, TRUE]] AS Array(Array(INT))) raw expr : TRY_CAST(array(array(true), array(false, true)) AS Array(Array(Int32))) -checked expr : TRY_CAST(array(array(true), array(false, true)) AS Array(Array(Int32 NULL) NULL) NULL) +checked expr : TRY_CAST(array(array(true), array(false, true)) AS Array(Array(Int32 NULL) NULL) NULL) optimized expr : [[1], [0, 1]] output type : Array(Array(Int32 NULL) NULL) NULL output domain : [[{0..=1}]] @@ -4083,7 +4083,7 @@ output : [[1], [0, 1]] ast : TRY_CAST([['a'], ['b', 'c']] AS Array(Array(INT) NULL)) raw expr : TRY_CAST(array(array('a'), array('b', 'c')) AS Array(Array(Int32) NULL)) -checked expr : TRY_CAST(array(array("a"), array("b", "c")) AS Array(Array(Int32 NULL) NULL) NULL) +checked expr : TRY_CAST(array(array("a"), array("b", "c")) AS Array(Array(Int32 NULL) NULL) NULL) optimized expr : [[NULL], [NULL, NULL]] output type : Array(Array(Int32 NULL) NULL) NULL output domain : [[{-2147483648..=2147483647} ∪ {NULL}]] @@ -4092,7 +4092,7 @@ output : [[NULL], [NULL, NULL]] ast : TRY_CAST('Abc' AS BINARY) raw expr : TRY_CAST('Abc' AS Binary) -checked expr : TRY_CAST("Abc" AS Binary NULL) +checked expr : TRY_CAST("Abc" AS Binary NULL) optimized expr : 416263 output type : Binary NULL output domain : Undefined @@ -4101,7 +4101,7 @@ output : 416263 ast : TRY_CAST('Dobrý den' AS BINARY) raw expr : TRY_CAST('Dobrý den' AS Binary) -checked expr : TRY_CAST("Dobrý den" AS Binary NULL) +checked expr : TRY_CAST("Dobrý den" AS Binary NULL) optimized expr : 446F6272C3BD2064656E output type : Binary NULL output domain : Undefined @@ -4110,7 +4110,7 @@ output : 446F6272C3BD2064656E ast : TRY_CAST('ß😀山' AS BINARY) raw expr : TRY_CAST('ß😀山' AS Binary) -checked expr : TRY_CAST("ß😀山" AS Binary NULL) +checked expr : TRY_CAST("ß😀山" AS Binary NULL) optimized expr : C39FF09F9880E5B1B1 output type : Binary NULL output domain : Undefined @@ -4119,7 +4119,7 @@ output : C39FF09F9880E5B1B1 ast : TRY_CAST(NULL AS BINARY) raw expr : TRY_CAST(NULL AS Binary) -checked expr : TRY_CAST(NULL AS Binary NULL) +checked expr : TRY_CAST(NULL AS Binary NULL) optimized expr : NULL output type : Binary NULL output domain : {NULL} @@ -4128,7 +4128,7 @@ output : NULL ast : TRY_CAST(NULL AS BINARY NULL) raw expr : TRY_CAST(NULL AS Binary NULL) -checked expr : TRY_CAST(NULL AS Binary NULL) +checked expr : TRY_CAST(NULL AS Binary NULL) optimized expr : NULL output type : Binary NULL output domain : {NULL} @@ -4137,7 +4137,7 @@ output : NULL ast : TRY_CAST(a AS BINARY) raw expr : TRY_CAST(a::String AS Binary) -checked expr : TRY_CAST(a AS Binary NULL) +checked expr : TRY_CAST(a AS Binary NULL) evaluation: +--------+-------------------+----------------------+ | | a | Output | @@ -4159,7 +4159,7 @@ evaluation (internal): ast : TRY_CAST(a AS BINARY) raw expr : TRY_CAST(a::String NULL AS Binary) -checked expr : TRY_CAST(a AS Binary NULL) +checked expr : TRY_CAST(a AS Binary NULL) evaluation: +--------+--------------------------------+----------------------+ | | a | Output | @@ -4181,7 +4181,7 @@ evaluation (internal): ast : TRY_CAST(a AS BINARY NULL) raw expr : TRY_CAST(a::String NULL AS Binary NULL) -checked expr : TRY_CAST(a AS Binary NULL) +checked expr : TRY_CAST(a AS Binary NULL) evaluation: +--------+--------------------------------+----------------------+ | | a | Output | @@ -4203,7 +4203,7 @@ evaluation (internal): ast : TRY_CAST(TRY_CAST('Abc' AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST('Abc' AS Binary) AS String) -checked expr : TRY_CAST(TRY_CAST("Abc" AS Binary NULL) AS String NULL) +checked expr : TRY_CAST(TRY_CAST("Abc" AS Binary NULL) AS String NULL) optimized expr : "Abc" output type : String NULL output domain : {"Abc"..="Abc"} @@ -4212,7 +4212,7 @@ output : 'Abc' ast : TRY_CAST(TRY_CAST('Dobrý den' AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST('Dobrý den' AS Binary) AS String) -checked expr : TRY_CAST(TRY_CAST("Dobrý den" AS Binary NULL) AS String NULL) +checked expr : TRY_CAST(TRY_CAST("Dobrý den" AS Binary NULL) AS String NULL) optimized expr : "Dobrý den" output type : String NULL output domain : {"Dobrý den"..="Dobrý den"} @@ -4221,7 +4221,7 @@ output : 'Dobrý den' ast : TRY_CAST(TRY_CAST('ß😀山' AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST('ß😀山' AS Binary) AS String) -checked expr : TRY_CAST(TRY_CAST("ß😀山" AS Binary NULL) AS String NULL) +checked expr : TRY_CAST(TRY_CAST("ß😀山" AS Binary NULL) AS String NULL) optimized expr : "ß😀山" output type : String NULL output domain : {"ß😀山"..="ß😀山"} @@ -4230,7 +4230,7 @@ output : 'ß😀山' ast : TRY_CAST(TRY_CAST(NULL AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST(NULL AS Binary) AS String) -checked expr : TRY_CAST(TRY_CAST(NULL AS Binary NULL) AS String NULL) +checked expr : TRY_CAST(TRY_CAST(NULL AS Binary NULL) AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -4239,7 +4239,7 @@ output : NULL ast : TRY_CAST(TRY_CAST(NULL AS BINARY NULL) AS STRING NULL) raw expr : TRY_CAST(TRY_CAST(NULL AS Binary NULL) AS String NULL) -checked expr : TRY_CAST(TRY_CAST(NULL AS Binary NULL) AS String NULL) +checked expr : TRY_CAST(TRY_CAST(NULL AS Binary NULL) AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -4248,7 +4248,7 @@ output : NULL ast : TRY_CAST(TRY_CAST(a AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST(a::String AS Binary) AS String) -checked expr : TRY_CAST(TRY_CAST(a AS Binary NULL) AS String NULL) +checked expr : TRY_CAST(TRY_CAST(a AS Binary NULL) AS String NULL) evaluation: +--------+-------------------+-----------------+ | | a | Output | @@ -4270,7 +4270,7 @@ evaluation (internal): ast : TRY_CAST(TRY_CAST(a AS BINARY) AS STRING) raw expr : TRY_CAST(TRY_CAST(a::String NULL AS Binary) AS String) -checked expr : TRY_CAST(TRY_CAST(a AS Binary NULL) AS String NULL) +checked expr : TRY_CAST(TRY_CAST(a AS Binary NULL) AS String NULL) evaluation: +--------+--------------------------------+-----------------+ | | a | Output | @@ -4292,7 +4292,7 @@ evaluation (internal): ast : TRY_CAST(TRY_CAST(a AS BINARY NULL) AS STRING NULL) raw expr : TRY_CAST(TRY_CAST(a::String NULL AS Binary NULL) AS String NULL) -checked expr : TRY_CAST(TRY_CAST(a AS Binary NULL) AS String NULL) +checked expr : TRY_CAST(TRY_CAST(a AS Binary NULL) AS String NULL) evaluation: +--------+--------------------------------+-----------------+ | | a | Output | diff --git a/src/query/functions/tests/it/scalars/testdata/comparison.txt b/src/query/functions/tests/it/scalars/testdata/comparison.txt index b0f66e1ad65e8..45e6e3f7b4e78 100644 --- a/src/query/functions/tests/it/scalars/testdata/comparison.txt +++ b/src/query/functions/tests/it/scalars/testdata/comparison.txt @@ -9,7 +9,7 @@ output : false ast : null=null raw expr : eq(NULL, NULL) -checked expr : eq(CAST(NULL AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : eq(CAST(NULL AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -27,7 +27,7 @@ output : false ast : 1.0=1 raw expr : eq(1.0, 1) -checked expr : eq(1.0_d128(2,1), to_decimal(3, 0)(1_u8)) +checked expr : eq(1.0_d128(2,1), CAST(1_u8 AS Decimal(3, 0))) optimized expr : true output type : Boolean output domain : {TRUE} @@ -45,7 +45,7 @@ output : true ast : true=null raw expr : eq(true, NULL) -checked expr : eq(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) +checked expr : eq(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -99,7 +99,7 @@ output : true ast : [true]=[] raw expr : eq(array(true), array()) -checked expr : eq(array(true), CAST(array<>() AS Array(Boolean))) +checked expr : eq(array(true), CAST(array<>() AS Array(Boolean))) optimized expr : false output type : Boolean output domain : {FALSE} @@ -140,7 +140,7 @@ output : false ast : today()='2020-01-01' raw expr : eq(today(), '2020-01-01') -checked expr : eq(today<>(), to_date("2020-01-01")) +checked expr : eq(today<>(), CAST("2020-01-01" AS Date)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -158,7 +158,7 @@ output : true ast : to_timestamp(-315360000000000)=to_timestamp(-100) raw expr : eq(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : eq(to_timestamp(minus(315360000000000_u64)), to_timestamp(to_int64(minus(100_u8)))) +checked expr : eq(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) optimized expr : false output type : Boolean output domain : {FALSE} @@ -167,7 +167,7 @@ output : false ast : lhs = rhs raw expr : eq(lhs::UInt8, rhs::Int64) -checked expr : eq(to_int64(lhs), rhs) +checked expr : eq(CAST(lhs AS Int64), rhs) evaluation: +--------+----------+-----------+---------------+ | | lhs | rhs | Output | @@ -306,7 +306,7 @@ output : false ast : true != null raw expr : noteq(true, NULL) -checked expr : noteq(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) +checked expr : noteq(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -392,7 +392,7 @@ output : false ast : to_timestamp(-315360000000000)!=to_timestamp(-100) raw expr : noteq(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : noteq(to_timestamp(minus(315360000000000_u64)), to_timestamp(to_int64(minus(100_u8)))) +checked expr : noteq(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) optimized expr : true output type : Boolean output domain : {TRUE} @@ -494,7 +494,7 @@ output : false ast : true < null raw expr : lt(true, NULL) -checked expr : lt(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) +checked expr : lt(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -566,7 +566,7 @@ output : true ast : to_timestamp(-315360000000000)(to_timestamp(minus(315360000000000_u64)), to_timestamp(to_int64(minus(100_u8)))) +checked expr : lt(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) optimized expr : true output type : Boolean output domain : {TRUE} @@ -674,7 +674,7 @@ output : true ast : true <= null raw expr : lte(true, NULL) -checked expr : lte(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) +checked expr : lte(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -755,7 +755,7 @@ output : true ast : to_timestamp(-315360000000000)<=to_timestamp(-100) raw expr : lte(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : lte(to_timestamp(minus(315360000000000_u64)), to_timestamp(to_int64(minus(100_u8)))) +checked expr : lte(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) optimized expr : true output type : Boolean output domain : {TRUE} @@ -855,7 +855,7 @@ output : false ast : true > null raw expr : gt(true, NULL) -checked expr : gt(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) +checked expr : gt(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -927,7 +927,7 @@ output : false ast : to_timestamp(-315360000000000)>to_timestamp(-100) raw expr : gt(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : gt(to_timestamp(minus(315360000000000_u64)), to_timestamp(to_int64(minus(100_u8)))) +checked expr : gt(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1062,7 +1062,7 @@ output : true ast : true >= null raw expr : gte(true, NULL) -checked expr : gte(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) +checked expr : gte(CAST(true AS Boolean NULL), CAST(NULL AS Boolean NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1134,7 +1134,7 @@ output : false ast : to_timestamp(-315360000000000)>=to_timestamp(-100) raw expr : gte(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : gte(to_timestamp(minus(315360000000000_u64)), to_timestamp(to_int64(minus(100_u8)))) +checked expr : gte(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) optimized expr : false output type : Boolean output domain : {FALSE} diff --git a/src/query/functions/tests/it/scalars/testdata/control.txt b/src/query/functions/tests/it/scalars/testdata/control.txt index fbd2b4ee8e434..85feeff4277b1 100644 --- a/src/query/functions/tests/it/scalars/testdata/control.txt +++ b/src/query/functions/tests/it/scalars/testdata/control.txt @@ -1,6 +1,6 @@ ast : if(false, 1, false, 2, NULL) raw expr : if(false, 1, false, 2, NULL) -checked expr : if(CAST(false AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(false AS Boolean NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) +checked expr : if(CAST(false AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(false AS Boolean NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -9,7 +9,7 @@ output : NULL ast : if(true, 1, NULL, 2, NULL) raw expr : if(true, 1, NULL, 2, NULL) -checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(NULL AS Boolean NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) +checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(NULL AS Boolean NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) optimized expr : 1_u8 output type : UInt8 NULL output domain : {1..=1} @@ -18,7 +18,7 @@ output : 1 ast : if(false, 1, true, 2, NULL) raw expr : if(false, 1, true, 2, NULL) -checked expr : if(CAST(false AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(true AS Boolean NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) +checked expr : if(CAST(false AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(true AS Boolean NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) optimized expr : 2_u8 output type : UInt8 NULL output domain : {2..=2} @@ -27,7 +27,7 @@ output : 2 ast : if(true, 1, true, 2, NULL) raw expr : if(true, 1, true, 2, NULL) -checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(true AS Boolean NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) +checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(true AS Boolean NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) optimized expr : 1_u8 output type : UInt8 NULL output domain : {1..=1} @@ -36,7 +36,7 @@ output : 1 ast : if(true, 1, true, NULL, 2) raw expr : if(true, 1, true, NULL, 2) -checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(true AS Boolean NULL), CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL)) +checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(true AS Boolean NULL), CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL)) optimized expr : 1_u8 output type : UInt8 NULL output domain : {1..=1} @@ -45,7 +45,7 @@ output : 1 ast : if(true, 1, NULL) raw expr : if(true, 1, NULL) -checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) +checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) optimized expr : 1_u8 output type : UInt8 NULL output domain : {1..=1} @@ -54,7 +54,7 @@ output : 1 ast : if(false, 1, NULL) raw expr : if(false, 1, NULL) -checked expr : if(CAST(false AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) +checked expr : if(CAST(false AS Boolean NULL), CAST(1_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -63,7 +63,7 @@ output : NULL ast : if(true, 1, 1 / 0) raw expr : if(true, 1, divide(1, 0)) -checked expr : if(CAST(true AS Boolean NULL), to_float64(1_u8), divide(1_u8, 0_u8)) +checked expr : if(CAST(true AS Boolean NULL), CAST(1_u8 AS Float64), divide(1_u8, 0_u8)) optimized expr : if(true, 1_f64, divide(1_u8, 0_u8)) output type : Float64 output domain : Unknown @@ -72,7 +72,7 @@ output : 1 ast : if(false, 1 / 0, 1) raw expr : if(false, divide(1, 0), 1) -checked expr : if(CAST(false AS Boolean NULL), divide(1_u8, 0_u8), to_float64(1_u8)) +checked expr : if(CAST(false AS Boolean NULL), divide(1_u8, 0_u8), CAST(1_u8 AS Float64)) optimized expr : if(false, divide(1_u8, 0_u8), 1_f64) output type : Float64 output domain : Unknown @@ -83,13 +83,13 @@ error: --> SQL:1:16 | 1 | if(false, 1, 1 / 0) - | ^ divided by zero while evaluating function `divide(1, 0)` in expr `1 / 0`, during run expr: `if(CAST(false AS Boolean NULL), to_float64(1), 1 / 0)` + | ^ divided by zero while evaluating function `divide(1, 0)` in expr `1 / 0`, during run expr: `if(CAST(false AS Boolean NULL), CAST(1 AS Float64), 1 / 0)` ast : if(cond_a, expr_true, expr_else) raw expr : if(cond_a::Boolean, expr_true::Int64, expr_else::Int64 NULL) -checked expr : if(CAST(cond_a AS Boolean NULL), CAST(expr_true AS Int64 NULL), expr_else) +checked expr : if(CAST(cond_a AS Boolean NULL), CAST(expr_true AS Int64 NULL), expr_else) evaluation: +--------+---------------+-----------+------------------+------------------+ | | cond_a | expr_true | expr_else | Output | @@ -114,7 +114,7 @@ evaluation (internal): ast : if(cond_a, expr_true, expr_else) raw expr : if(cond_a::Boolean, expr_true::Int64, expr_else::Int64 NULL) -checked expr : if(CAST(cond_a AS Boolean NULL), CAST(expr_true AS Int64 NULL), expr_else) +checked expr : if(CAST(cond_a AS Boolean NULL), CAST(expr_true AS Int64 NULL), expr_else) evaluation: +--------+---------------+-----------+------------------+------------------+ | | cond_a | expr_true | expr_else | Output | @@ -139,7 +139,7 @@ evaluation (internal): ast : if(cond_a, expr_a, cond_b, expr_b, expr_else) raw expr : if(cond_a::Boolean, expr_a::Int64, cond_b::Boolean NULL, expr_b::Int64, expr_else::Int64 NULL) -checked expr : if(CAST(cond_a AS Boolean NULL), CAST(expr_a AS Int64 NULL), cond_b, CAST(expr_b AS Int64 NULL), expr_else) +checked expr : if(CAST(cond_a AS Boolean NULL), CAST(expr_a AS Int64 NULL), cond_b, CAST(expr_b AS Int64 NULL), expr_else) evaluation: +--------+---------------+---------+-----------------+---------+-------------------+-------------------+ | | cond_a | expr_a | cond_b | expr_b | expr_else | Output | @@ -166,7 +166,7 @@ evaluation (internal): ast : if(cond_a, expr_a, cond_b, expr_b, expr_else) raw expr : if(cond_a::Boolean, expr_a::Int64, cond_b::Boolean, expr_b::Int64, expr_else::Int64) -checked expr : if(CAST(cond_a AS Boolean NULL), expr_a, CAST(cond_b AS Boolean NULL), expr_b, expr_else) +checked expr : if(CAST(cond_a AS Boolean NULL), expr_a, CAST(cond_b AS Boolean NULL), expr_b, expr_else) evaluation: +--------+---------------+---------+---------------+---------+-----------+----------+ | | cond_a | expr_a | cond_b | expr_b | expr_else | Output | @@ -193,8 +193,8 @@ evaluation (internal): ast : if(cond_a, 1 / expr_a, expr_else) raw expr : if(cond_a::Boolean, divide(1, expr_a::Int64 NULL), expr_else::Int64) -checked expr : if(CAST(cond_a AS Boolean NULL), divide(CAST(1_u8 AS UInt8 NULL), expr_a), CAST(expr_else AS Float64 NULL)) -optimized expr : if(CAST(cond_a AS Boolean NULL), divide(1_u8, expr_a), CAST(expr_else AS Float64 NULL)) +checked expr : if(CAST(cond_a AS Boolean NULL), divide(CAST(1_u8 AS UInt8 NULL), expr_a), CAST(expr_else AS Float64 NULL)) +optimized expr : if(CAST(cond_a AS Boolean NULL), divide(1_u8, expr_a), CAST(expr_else AS Float64 NULL)) evaluation: +--------+---------------+------------------+-----------+--------------+ | | cond_a | expr_a | expr_else | Output | @@ -221,13 +221,13 @@ error: --> SQL:1:14 | 1 | if(cond_a, 1 / expr_a, expr_else) - | ^ divided by zero while evaluating function `divide(1, 0)` in expr `1 / expr_a`, during run expr: `if(CAST(cond_a AS Boolean NULL), 1 / expr_a, to_float64(expr_else))` + | ^ divided by zero while evaluating function `divide(1, 0)` in expr `1 / expr_a`, during run expr: `if(CAST(cond_a AS Boolean NULL), 1 / expr_a, CAST(expr_else AS Float64))` ast : is_not_null(1) raw expr : is_not_null(1) -checked expr : is_not_null(CAST(1_u8 AS UInt8 NULL)) +checked expr : is_not_null(CAST(1_u8 AS UInt8 NULL)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -236,7 +236,7 @@ output : true ast : is_not_null(4096) raw expr : is_not_null(4096) -checked expr : is_not_null(CAST(4096_u16 AS UInt16 NULL)) +checked expr : is_not_null(CAST(4096_u16 AS UInt16 NULL)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -245,7 +245,7 @@ output : true ast : is_not_null(true) raw expr : is_not_null(true) -checked expr : is_not_null(CAST(true AS Boolean NULL)) +checked expr : is_not_null(CAST(true AS Boolean NULL)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -254,7 +254,7 @@ output : true ast : is_not_null(false) raw expr : is_not_null(false) -checked expr : is_not_null(CAST(false AS Boolean NULL)) +checked expr : is_not_null(CAST(false AS Boolean NULL)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -263,7 +263,7 @@ output : true ast : is_not_null('string') raw expr : is_not_null('string') -checked expr : is_not_null(CAST("string" AS String NULL)) +checked expr : is_not_null(CAST("string" AS String NULL)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -290,7 +290,7 @@ output : false ast : is_not_null(int64_col) raw expr : is_not_null(int64_col::Int64) -checked expr : is_not_null(CAST(int64_col AS Int64 NULL)) +checked expr : is_not_null(CAST(int64_col AS Int64 NULL)) optimized expr : true evaluation: +--------+-----------+---------+ diff --git a/src/query/functions/tests/it/scalars/testdata/datetime.txt b/src/query/functions/tests/it/scalars/testdata/datetime.txt index 08c73a40f2059..dc28129092852 100644 --- a/src/query/functions/tests/it/scalars/testdata/datetime.txt +++ b/src/query/functions/tests/it/scalars/testdata/datetime.txt @@ -27,7 +27,7 @@ output : '1960-01-04 00:00:00.000000' ast : to_timestamp(-100) raw expr : to_timestamp(minus(100)) -checked expr : to_timestamp(to_int64(minus(100_u8))) +checked expr : to_timestamp(CAST(minus(100_u8) AS Int64)) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -36,7 +36,7 @@ output : '1969-12-31 23:58:20.000000' ast : to_timestamp(-0) raw expr : to_timestamp(minus(0)) -checked expr : to_timestamp(to_int64(minus(0_u8))) +checked expr : to_timestamp(CAST(minus(0_u8) AS Int64)) optimized expr : 0 output type : Timestamp output domain : {0..=0} @@ -45,7 +45,7 @@ output : '1970-01-01 00:00:00.000000' ast : to_timestamp(0) raw expr : to_timestamp(0) -checked expr : to_timestamp(to_int64(0_u8)) +checked expr : to_timestamp(CAST(0_u8 AS Int64)) optimized expr : 0 output type : Timestamp output domain : {0..=0} @@ -54,7 +54,7 @@ output : '1970-01-01 00:00:00.000000' ast : to_timestamp(100) raw expr : to_timestamp(100) -checked expr : to_timestamp(to_int64(100_u8)) +checked expr : to_timestamp(CAST(100_u8 AS Int64)) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -63,7 +63,7 @@ output : '1970-01-01 00:01:40.000000' ast : to_timestamp(315360000000) raw expr : to_timestamp(315360000000) -checked expr : to_timestamp(to_int64(315360000000_u64)) +checked expr : to_timestamp(CAST(315360000000_u64 AS Int64)) optimized expr : 315360000000000 output type : Timestamp output domain : {315360000000000..=315360000000000} @@ -81,7 +81,7 @@ output : '2023-01-11 00:00:00.000000' ast : to_timestamp('2023-01-11')::int64::timestamp raw expr : CAST(CAST(to_timestamp('2023-01-11') AS Int64) AS Timestamp) -checked expr : to_timestamp(to_int64(to_timestamp("2023-01-11"))) +checked expr : CAST(CAST(to_timestamp("2023-01-11") AS Int64) AS Timestamp) optimized expr : 1673395200000000 output type : Timestamp output domain : {1673395200000000..=1673395200000000} @@ -90,7 +90,7 @@ output : '2023-01-11 00:00:00.000000' ast : to_timestamp(315360000000000) raw expr : to_timestamp(315360000000000) -checked expr : to_timestamp(to_int64(315360000000000_u64)) +checked expr : to_timestamp(CAST(315360000000000_u64 AS Int64)) optimized expr : 315360000000000 output type : Timestamp output domain : {315360000000000..=315360000000000} @@ -99,7 +99,7 @@ output : '1979-12-30 00:00:00.000000' ast : to_timestamp(253402300800000000) raw expr : to_timestamp(253402300800000000) -checked expr : to_timestamp(to_int64(253402300800000000_u64)) +checked expr : to_timestamp(CAST(253402300800000000_u64 AS Int64)) optimized expr : -62135596800000000 output type : Timestamp output domain : {-62135596800000000..=-62135596800000000} @@ -175,7 +175,7 @@ output : '1000-01-01' ast : to_date(-100) raw expr : to_date(minus(100)) -checked expr : to_date(to_int64(minus(100_u8))) +checked expr : to_date(CAST(minus(100_u8) AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -184,7 +184,7 @@ output : '1969-09-23' ast : to_date(-0) raw expr : to_date(minus(0)) -checked expr : to_date(to_int64(minus(0_u8))) +checked expr : to_date(CAST(minus(0_u8) AS Int64)) optimized expr : 0 output type : Date output domain : {0..=0} @@ -193,7 +193,7 @@ output : '1970-01-01' ast : to_date(0) raw expr : to_date(0) -checked expr : to_date(to_int64(0_u8)) +checked expr : to_date(CAST(0_u8 AS Int64)) optimized expr : 0 output type : Date output domain : {0..=0} @@ -211,7 +211,7 @@ output : '2023-01-11' ast : to_int32(to_date('2023-01-11'))::date raw expr : CAST(to_int32(to_date('2023-01-11')) AS Date) -checked expr : to_date(to_int64(to_int32(to_int64(to_date("2023-01-11"))))) +checked expr : CAST(to_int32(CAST(to_date("2023-01-11") AS Int64)) AS Date) optimized expr : 19368 output type : Date output domain : {19368..=19368} @@ -220,7 +220,7 @@ output : '2023-01-11' ast : to_date(100) raw expr : to_date(100) -checked expr : to_date(to_int64(100_u8)) +checked expr : to_date(CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -229,7 +229,7 @@ output : '1970-04-11' ast : to_date(2932896) raw expr : to_date(2932896) -checked expr : to_date(to_int64(2932896_u32)) +checked expr : to_date(CAST(2932896_u32 AS Int64)) optimized expr : 2932896 output type : Date output domain : {2932896..=2932896} @@ -238,7 +238,7 @@ output : '9999-12-31' ast : to_date(2932897) raw expr : to_date(2932897) -checked expr : to_date(to_int64(2932897_u32)) +checked expr : to_date(CAST(2932897_u32 AS Int64)) optimized expr : -719162 output type : Date output domain : {-719162..=-719162} @@ -247,7 +247,7 @@ output : '0001-01-01' ast : to_date(a) raw expr : to_date(a::Int32) -checked expr : to_date(to_int64(a)) +checked expr : to_date(CAST(a AS Int64)) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -296,13 +296,13 @@ error: --> SQL:1:1 | 1 | add_years(to_date(0), 10000) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(to_int64(0)), to_int64(10000))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(CAST(0 AS Int64)), CAST(10000 AS Int64))` ast : add_years(to_date(0), 100) raw expr : add_years(to_date(0), 100) -checked expr : add_years(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 36525 output type : Date output domain : {36525..=36525} @@ -311,7 +311,7 @@ output : '2070-01-01' ast : add_months(to_date(0), 100) raw expr : add_months(to_date(0), 100) -checked expr : add_months(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 3042 output type : Date output domain : {3042..=3042} @@ -320,7 +320,7 @@ output : '1978-05-01' ast : add_days(to_date(0), 100) raw expr : add_days(to_date(0), 100) -checked expr : add_days(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -329,7 +329,7 @@ output : '1970-04-11' ast : add(to_date(0), 100) raw expr : add(to_date(0), 100) -checked expr : plus(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : plus(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -338,7 +338,7 @@ output : '1970-04-11' ast : add(to_date(0), 10000000) raw expr : add(to_date(0), 10000000) -checked expr : plus(to_date(to_int64(0_u8)), to_int64(10000000_u32)) +checked expr : plus(to_date(CAST(0_u8 AS Int64)), CAST(10000000_u32 AS Int64)) optimized expr : -719162 output type : Date output domain : {-719162..=-719162} @@ -347,7 +347,7 @@ output : '0001-01-01' ast : subtract_years(to_date(0), 100) raw expr : subtract_years(to_date(0), 100) -checked expr : subtract_years(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -36524 output type : Date output domain : {-36524..=-36524} @@ -356,7 +356,7 @@ output : '1870-01-01' ast : subtract_quarters(to_date(0), 100) raw expr : subtract_quarters(to_date(0), 100) -checked expr : subtract_quarters(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -9131 output type : Date output domain : {-9131..=-9131} @@ -365,7 +365,7 @@ output : '1945-01-01' ast : subtract_months(to_date(0), 100) raw expr : subtract_months(to_date(0), 100) -checked expr : subtract_months(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -3044 output type : Date output domain : {-3044..=-3044} @@ -374,7 +374,7 @@ output : '1961-09-01' ast : subtract_days(to_date(0), 100) raw expr : subtract_days(to_date(0), 100) -checked expr : subtract_days(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -383,7 +383,7 @@ output : '1969-09-23' ast : subtract(to_date(0), 100) raw expr : subtract(to_date(0), 100) -checked expr : minus(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : minus(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -392,7 +392,7 @@ output : '1969-09-23' ast : subtract(to_date(0), 10000000) raw expr : subtract(to_date(0), 10000000) -checked expr : minus(to_date(to_int64(0_u8)), to_int64(10000000_u32)) +checked expr : minus(to_date(CAST(0_u8 AS Int64)), CAST(10000000_u32 AS Int64)) optimized expr : -719162 output type : Date output domain : {-719162..=-719162} @@ -401,7 +401,7 @@ output : '0001-01-01' ast : add_years(a, b) raw expr : add_years(a::Date, b::Int32) -checked expr : add_years(a, to_int64(b)) +checked expr : add_years(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -424,7 +424,7 @@ evaluation (internal): ast : add_quarters(a, b) raw expr : add_quarters(a::Date, b::Int32) -checked expr : add_quarters(a, to_int64(b)) +checked expr : add_quarters(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -447,7 +447,7 @@ evaluation (internal): ast : add_months(a, b) raw expr : add_months(a::Date, b::Int32) -checked expr : add_months(a, to_int64(b)) +checked expr : add_months(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -470,7 +470,7 @@ evaluation (internal): ast : add_days(a, b) raw expr : add_days(a::Date, b::Int32) -checked expr : add_days(a, to_int64(b)) +checked expr : add_days(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -493,7 +493,7 @@ evaluation (internal): ast : subtract_years(a, b) raw expr : subtract_years(a::Date, b::Int32) -checked expr : subtract_years(a, to_int64(b)) +checked expr : subtract_years(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -516,7 +516,7 @@ evaluation (internal): ast : subtract_quarters(a, b) raw expr : subtract_quarters(a::Date, b::Int32) -checked expr : subtract_quarters(a, to_int64(b)) +checked expr : subtract_quarters(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -539,7 +539,7 @@ evaluation (internal): ast : subtract_months(a, b) raw expr : subtract_months(a::Date, b::Int32) -checked expr : subtract_months(a, to_int64(b)) +checked expr : subtract_months(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -562,7 +562,7 @@ evaluation (internal): ast : subtract_days(a, b) raw expr : subtract_days(a::Date, b::Int32) -checked expr : subtract_days(a, to_int64(b)) +checked expr : subtract_days(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -587,13 +587,13 @@ error: --> SQL:1:1 | 1 | add_years(to_timestamp(0), 10000) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(to_int64(0)), to_int64(10000))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(CAST(0 AS Int64)), CAST(10000 AS Int64))` ast : add_years(to_timestamp(0), 100) raw expr : add_years(to_timestamp(0), 100) -checked expr : add_years(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 3155760000000000 output type : Timestamp output domain : {3155760000000000..=3155760000000000} @@ -602,7 +602,7 @@ output : '2070-01-01 00:00:00.000000' ast : add_quarters(to_timestamp(0), 100) raw expr : add_quarters(to_timestamp(0), 100) -checked expr : add_quarters(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 788918400000000 output type : Timestamp output domain : {788918400000000..=788918400000000} @@ -611,7 +611,7 @@ output : '1995-01-01 00:00:00.000000' ast : add_months(to_timestamp(0), 100) raw expr : add_months(to_timestamp(0), 100) -checked expr : add_months(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 262828800000000 output type : Timestamp output domain : {262828800000000..=262828800000000} @@ -620,7 +620,7 @@ output : '1978-05-01 00:00:00.000000' ast : add_days(to_timestamp(0), 100) raw expr : add_days(to_timestamp(0), 100) -checked expr : add_days(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 8640000000000 output type : Timestamp output domain : {8640000000000..=8640000000000} @@ -629,7 +629,7 @@ output : '1970-04-11 00:00:00.000000' ast : add_hours(to_timestamp(0), 100) raw expr : add_hours(to_timestamp(0), 100) -checked expr : add_hours(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 360000000000 output type : Timestamp output domain : {360000000000..=360000000000} @@ -638,7 +638,7 @@ output : '1970-01-05 04:00:00.000000' ast : add_minutes(to_timestamp(0), 100) raw expr : add_minutes(to_timestamp(0), 100) -checked expr : add_minutes(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 6000000000 output type : Timestamp output domain : {6000000000..=6000000000} @@ -647,7 +647,7 @@ output : '1970-01-01 01:40:00.000000' ast : add_seconds(to_timestamp(0), 100) raw expr : add_seconds(to_timestamp(0), 100) -checked expr : add_seconds(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -656,7 +656,7 @@ output : '1970-01-01 00:01:40.000000' ast : add(to_timestamp(0), 100000000000000) raw expr : add(to_timestamp(0), 100000000000000) -checked expr : plus(to_timestamp(to_int64(0_u8)), to_int64(100000000000000_u64)) +checked expr : plus(to_timestamp(CAST(0_u8 AS Int64)), CAST(100000000000000_u64 AS Int64)) optimized expr : 100000000000000 output type : Timestamp output domain : {100000000000000..=100000000000000} @@ -665,7 +665,7 @@ output : '1973-03-03 09:46:40.000000' ast : add(to_timestamp(0), 1000000000000000000) raw expr : add(to_timestamp(0), 1000000000000000000) -checked expr : plus(to_timestamp(to_int64(0_u8)), to_int64(1000000000000000000_u64)) +checked expr : plus(to_timestamp(CAST(0_u8 AS Int64)), CAST(1000000000000000000_u64 AS Int64)) optimized expr : -62135596800000000 output type : Timestamp output domain : {-62135596800000000..=-62135596800000000} @@ -674,7 +674,7 @@ output : '0001-01-01 00:00:00.000000' ast : subtract_years(to_timestamp(0), 100) raw expr : subtract_years(to_timestamp(0), 100) -checked expr : subtract_years(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -3155673600000000 output type : Timestamp output domain : {-3155673600000000..=-3155673600000000} @@ -683,7 +683,7 @@ output : '1870-01-01 00:00:00.000000' ast : subtract_quarters(to_timestamp(0), 100) raw expr : subtract_quarters(to_timestamp(0), 100) -checked expr : subtract_quarters(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -788918400000000 output type : Timestamp output domain : {-788918400000000..=-788918400000000} @@ -692,7 +692,7 @@ output : '1945-01-01 00:00:00.000000' ast : subtract_months(to_timestamp(0), 100) raw expr : subtract_months(to_timestamp(0), 100) -checked expr : subtract_months(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -263001600000000 output type : Timestamp output domain : {-263001600000000..=-263001600000000} @@ -701,7 +701,7 @@ output : '1961-09-01 00:00:00.000000' ast : subtract_days(to_timestamp(0), 100) raw expr : subtract_days(to_timestamp(0), 100) -checked expr : subtract_days(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -8640000000000 output type : Timestamp output domain : {-8640000000000..=-8640000000000} @@ -710,7 +710,7 @@ output : '1969-09-23 00:00:00.000000' ast : subtract_hours(to_timestamp(0), 100) raw expr : subtract_hours(to_timestamp(0), 100) -checked expr : subtract_hours(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -360000000000 output type : Timestamp output domain : {-360000000000..=-360000000000} @@ -719,7 +719,7 @@ output : '1969-12-27 20:00:00.000000' ast : subtract_minutes(to_timestamp(0), 100) raw expr : subtract_minutes(to_timestamp(0), 100) -checked expr : subtract_minutes(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -6000000000 output type : Timestamp output domain : {-6000000000..=-6000000000} @@ -728,7 +728,7 @@ output : '1969-12-31 22:20:00.000000' ast : subtract_seconds(to_timestamp(0), 100) raw expr : subtract_seconds(to_timestamp(0), 100) -checked expr : subtract_seconds(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -737,7 +737,7 @@ output : '1969-12-31 23:58:20.000000' ast : subtract(to_timestamp(0), 100000000000000) raw expr : subtract(to_timestamp(0), 100000000000000) -checked expr : minus(to_timestamp(to_int64(0_u8)), to_int64(100000000000000_u64)) +checked expr : minus(to_timestamp(CAST(0_u8 AS Int64)), CAST(100000000000000_u64 AS Int64)) optimized expr : -100000000000000 output type : Timestamp output domain : {-100000000000000..=-100000000000000} @@ -746,7 +746,7 @@ output : '1966-10-31 14:13:20.000000' ast : subtract(to_timestamp(0), 1000000000000000000) raw expr : subtract(to_timestamp(0), 1000000000000000000) -checked expr : minus(to_timestamp(to_int64(0_u8)), to_int64(1000000000000000000_u64)) +checked expr : minus(to_timestamp(CAST(0_u8 AS Int64)), CAST(1000000000000000000_u64 AS Int64)) optimized expr : -62135596800000000 output type : Timestamp output domain : {-62135596800000000..=-62135596800000000} @@ -755,7 +755,7 @@ output : '0001-01-01 00:00:00.000000' ast : add_years(a, b) raw expr : add_years(a::Timestamp, b::Int32) -checked expr : add_years(a, to_int64(b)) +checked expr : add_years(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -778,7 +778,7 @@ evaluation (internal): ast : add_quarters(a, b) raw expr : add_quarters(a::Timestamp, b::Int32) -checked expr : add_quarters(a, to_int64(b)) +checked expr : add_quarters(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -801,7 +801,7 @@ evaluation (internal): ast : add_months(a, b) raw expr : add_months(a::Timestamp, b::Int32) -checked expr : add_months(a, to_int64(b)) +checked expr : add_months(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -824,7 +824,7 @@ evaluation (internal): ast : add_days(a, b) raw expr : add_days(a::Timestamp, b::Int32) -checked expr : add_days(a, to_int64(b)) +checked expr : add_days(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -847,7 +847,7 @@ evaluation (internal): ast : add_hours(a, b) raw expr : add_hours(a::Timestamp, b::Int32) -checked expr : add_hours(a, to_int64(b)) +checked expr : add_hours(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -870,7 +870,7 @@ evaluation (internal): ast : add_minutes(a, b) raw expr : add_minutes(a::Timestamp, b::Int32) -checked expr : add_minutes(a, to_int64(b)) +checked expr : add_minutes(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -893,7 +893,7 @@ evaluation (internal): ast : add_seconds(a, b) raw expr : add_seconds(a::Timestamp, b::Int32) -checked expr : add_seconds(a, to_int64(b)) +checked expr : add_seconds(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -916,7 +916,7 @@ evaluation (internal): ast : subtract_years(a, b) raw expr : subtract_years(a::Timestamp, b::Int32) -checked expr : subtract_years(a, to_int64(b)) +checked expr : subtract_years(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -939,7 +939,7 @@ evaluation (internal): ast : subtract_quarters(a, b) raw expr : subtract_quarters(a::Timestamp, b::Int32) -checked expr : subtract_quarters(a, to_int64(b)) +checked expr : subtract_quarters(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -962,7 +962,7 @@ evaluation (internal): ast : subtract_months(a, b) raw expr : subtract_months(a::Timestamp, b::Int32) -checked expr : subtract_months(a, to_int64(b)) +checked expr : subtract_months(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -985,7 +985,7 @@ evaluation (internal): ast : subtract_days(a, b) raw expr : subtract_days(a::Timestamp, b::Int32) -checked expr : subtract_days(a, to_int64(b)) +checked expr : subtract_days(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1008,7 +1008,7 @@ evaluation (internal): ast : subtract_hours(a, b) raw expr : subtract_hours(a::Timestamp, b::Int32) -checked expr : subtract_hours(a, to_int64(b)) +checked expr : subtract_hours(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1031,7 +1031,7 @@ evaluation (internal): ast : subtract_minutes(a, b) raw expr : subtract_minutes(a::Timestamp, b::Int32) -checked expr : subtract_minutes(a, to_int64(b)) +checked expr : subtract_minutes(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1054,7 +1054,7 @@ evaluation (internal): ast : subtract_seconds(a, b) raw expr : subtract_seconds(a::Timestamp, b::Int32) -checked expr : subtract_seconds(a, to_int64(b)) +checked expr : subtract_seconds(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1079,13 +1079,13 @@ error: --> SQL:1:1 | 1 | date_add(year, 10000, to_date(0)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(to_int64(0)), to_int64(10000))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(CAST(0 AS Int64)), CAST(10000 AS Int64))` ast : date_add(year, 100, to_date(0)) raw expr : add_years(to_date(0), 100) -checked expr : add_years(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 36525 output type : Date output domain : {36525..=36525} @@ -1094,7 +1094,7 @@ output : '2070-01-01' ast : date_add(quarter, 100, to_date(0)) raw expr : add_quarters(to_date(0), 100) -checked expr : add_quarters(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 9131 output type : Date output domain : {9131..=9131} @@ -1103,7 +1103,7 @@ output : '1995-01-01' ast : date_add(month, 100, to_date(0)) raw expr : add_months(to_date(0), 100) -checked expr : add_months(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 3042 output type : Date output domain : {3042..=3042} @@ -1112,7 +1112,7 @@ output : '1978-05-01' ast : date_add(day, 100, to_date(0)) raw expr : add_days(to_date(0), 100) -checked expr : add_days(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -1121,7 +1121,7 @@ output : '1970-04-11' ast : date_sub(year, 100, to_date(0)) raw expr : subtract_years(to_date(0), 100) -checked expr : subtract_years(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -36524 output type : Date output domain : {-36524..=-36524} @@ -1130,7 +1130,7 @@ output : '1870-01-01' ast : date_sub(quarter, 100, to_date(0)) raw expr : subtract_quarters(to_date(0), 100) -checked expr : subtract_quarters(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -9131 output type : Date output domain : {-9131..=-9131} @@ -1139,7 +1139,7 @@ output : '1945-01-01' ast : date_sub(month, 100, to_date(0)) raw expr : subtract_months(to_date(0), 100) -checked expr : subtract_months(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -3044 output type : Date output domain : {-3044..=-3044} @@ -1148,7 +1148,7 @@ output : '1961-09-01' ast : date_sub(day, 100, to_date(0)) raw expr : subtract_days(to_date(0), 100) -checked expr : subtract_days(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -1157,7 +1157,7 @@ output : '1969-09-23' ast : date_add(year, b, a) raw expr : add_years(a::Date, b::Int32) -checked expr : add_years(a, to_int64(b)) +checked expr : add_years(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1180,7 +1180,7 @@ evaluation (internal): ast : date_add(quarter, b, a) raw expr : add_quarters(a::Date, b::Int32) -checked expr : add_quarters(a, to_int64(b)) +checked expr : add_quarters(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1203,7 +1203,7 @@ evaluation (internal): ast : date_add(month, b, a) raw expr : add_months(a::Date, b::Int32) -checked expr : add_months(a, to_int64(b)) +checked expr : add_months(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1226,7 +1226,7 @@ evaluation (internal): ast : date_add(day, b, a) raw expr : add_days(a::Date, b::Int32) -checked expr : add_days(a, to_int64(b)) +checked expr : add_days(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1249,7 +1249,7 @@ evaluation (internal): ast : date_sub(year, b, a) raw expr : subtract_years(a::Date, b::Int32) -checked expr : subtract_years(a, to_int64(b)) +checked expr : subtract_years(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1272,7 +1272,7 @@ evaluation (internal): ast : date_sub(quarter, b, a) raw expr : subtract_quarters(a::Date, b::Int32) -checked expr : subtract_quarters(a, to_int64(b)) +checked expr : subtract_quarters(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1295,7 +1295,7 @@ evaluation (internal): ast : date_sub(month, b, a) raw expr : subtract_months(a::Date, b::Int32) -checked expr : subtract_months(a, to_int64(b)) +checked expr : subtract_months(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1318,7 +1318,7 @@ evaluation (internal): ast : date_sub(day, b, a) raw expr : subtract_days(a::Date, b::Int32) -checked expr : subtract_days(a, to_int64(b)) +checked expr : subtract_days(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1343,13 +1343,13 @@ error: --> SQL:1:1 | 1 | date_add(year, 10000, to_timestamp(0)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(to_int64(0)), to_int64(10000))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(CAST(0 AS Int64)), CAST(10000 AS Int64))` ast : date_add(year, 100, to_timestamp(0)) raw expr : add_years(to_timestamp(0), 100) -checked expr : add_years(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 3155760000000000 output type : Timestamp output domain : {3155760000000000..=3155760000000000} @@ -1358,7 +1358,7 @@ output : '2070-01-01 00:00:00.000000' ast : date_add(quarter, 100, to_timestamp(0)) raw expr : add_quarters(to_timestamp(0), 100) -checked expr : add_quarters(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 788918400000000 output type : Timestamp output domain : {788918400000000..=788918400000000} @@ -1367,7 +1367,7 @@ output : '1995-01-01 00:00:00.000000' ast : date_add(month, 100, to_timestamp(0)) raw expr : add_months(to_timestamp(0), 100) -checked expr : add_months(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 262828800000000 output type : Timestamp output domain : {262828800000000..=262828800000000} @@ -1376,7 +1376,7 @@ output : '1978-05-01 00:00:00.000000' ast : date_add(day, 100, to_timestamp(0)) raw expr : add_days(to_timestamp(0), 100) -checked expr : add_days(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 8640000000000 output type : Timestamp output domain : {8640000000000..=8640000000000} @@ -1385,7 +1385,7 @@ output : '1970-04-11 00:00:00.000000' ast : date_add(hour, 100, to_timestamp(0)) raw expr : add_hours(to_timestamp(0), 100) -checked expr : add_hours(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 360000000000 output type : Timestamp output domain : {360000000000..=360000000000} @@ -1394,7 +1394,7 @@ output : '1970-01-05 04:00:00.000000' ast : date_add(minute, 100, to_timestamp(0)) raw expr : add_minutes(to_timestamp(0), 100) -checked expr : add_minutes(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 6000000000 output type : Timestamp output domain : {6000000000..=6000000000} @@ -1403,7 +1403,7 @@ output : '1970-01-01 01:40:00.000000' ast : date_add(second, 100, to_timestamp(0)) raw expr : add_seconds(to_timestamp(0), 100) -checked expr : add_seconds(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -1412,7 +1412,7 @@ output : '1970-01-01 00:01:40.000000' ast : date_sub(year, 100, to_timestamp(0)) raw expr : subtract_years(to_timestamp(0), 100) -checked expr : subtract_years(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -3155673600000000 output type : Timestamp output domain : {-3155673600000000..=-3155673600000000} @@ -1421,7 +1421,7 @@ output : '1870-01-01 00:00:00.000000' ast : date_sub(quarter, 100, to_timestamp(0)) raw expr : subtract_quarters(to_timestamp(0), 100) -checked expr : subtract_quarters(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -788918400000000 output type : Timestamp output domain : {-788918400000000..=-788918400000000} @@ -1430,7 +1430,7 @@ output : '1945-01-01 00:00:00.000000' ast : date_sub(month, 100, to_timestamp(0)) raw expr : subtract_months(to_timestamp(0), 100) -checked expr : subtract_months(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -263001600000000 output type : Timestamp output domain : {-263001600000000..=-263001600000000} @@ -1439,7 +1439,7 @@ output : '1961-09-01 00:00:00.000000' ast : date_sub(day, 100, to_timestamp(0)) raw expr : subtract_days(to_timestamp(0), 100) -checked expr : subtract_days(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -8640000000000 output type : Timestamp output domain : {-8640000000000..=-8640000000000} @@ -1448,7 +1448,7 @@ output : '1969-09-23 00:00:00.000000' ast : date_sub(hour, 100, to_timestamp(0)) raw expr : subtract_hours(to_timestamp(0), 100) -checked expr : subtract_hours(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -360000000000 output type : Timestamp output domain : {-360000000000..=-360000000000} @@ -1457,7 +1457,7 @@ output : '1969-12-27 20:00:00.000000' ast : date_sub(minute, 100, to_timestamp(0)) raw expr : subtract_minutes(to_timestamp(0), 100) -checked expr : subtract_minutes(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -6000000000 output type : Timestamp output domain : {-6000000000..=-6000000000} @@ -1466,7 +1466,7 @@ output : '1969-12-31 22:20:00.000000' ast : date_sub(second, 100, to_timestamp(0)) raw expr : subtract_seconds(to_timestamp(0), 100) -checked expr : subtract_seconds(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -1475,7 +1475,7 @@ output : '1969-12-31 23:58:20.000000' ast : date_add(year, b, a) raw expr : add_years(a::Timestamp, b::Int32) -checked expr : add_years(a, to_int64(b)) +checked expr : add_years(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1498,7 +1498,7 @@ evaluation (internal): ast : date_add(quarter, b, a) raw expr : add_quarters(a::Timestamp, b::Int32) -checked expr : add_quarters(a, to_int64(b)) +checked expr : add_quarters(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1521,7 +1521,7 @@ evaluation (internal): ast : date_add(month, b, a) raw expr : add_months(a::Timestamp, b::Int32) -checked expr : add_months(a, to_int64(b)) +checked expr : add_months(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1544,7 +1544,7 @@ evaluation (internal): ast : date_add(day, b, a) raw expr : add_days(a::Timestamp, b::Int32) -checked expr : add_days(a, to_int64(b)) +checked expr : add_days(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1567,7 +1567,7 @@ evaluation (internal): ast : date_add(hour, b, a) raw expr : add_hours(a::Timestamp, b::Int32) -checked expr : add_hours(a, to_int64(b)) +checked expr : add_hours(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1590,7 +1590,7 @@ evaluation (internal): ast : date_add(minute, b, a) raw expr : add_minutes(a::Timestamp, b::Int32) -checked expr : add_minutes(a, to_int64(b)) +checked expr : add_minutes(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1613,7 +1613,7 @@ evaluation (internal): ast : date_add(second, b, a) raw expr : add_seconds(a::Timestamp, b::Int32) -checked expr : add_seconds(a, to_int64(b)) +checked expr : add_seconds(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1636,7 +1636,7 @@ evaluation (internal): ast : date_sub(year, b, a) raw expr : subtract_years(a::Timestamp, b::Int32) -checked expr : subtract_years(a, to_int64(b)) +checked expr : subtract_years(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1659,7 +1659,7 @@ evaluation (internal): ast : date_sub(quarter, b, a) raw expr : subtract_quarters(a::Timestamp, b::Int32) -checked expr : subtract_quarters(a, to_int64(b)) +checked expr : subtract_quarters(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1682,7 +1682,7 @@ evaluation (internal): ast : date_sub(month, b, a) raw expr : subtract_months(a::Timestamp, b::Int32) -checked expr : subtract_months(a, to_int64(b)) +checked expr : subtract_months(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1705,7 +1705,7 @@ evaluation (internal): ast : date_sub(day, b, a) raw expr : subtract_days(a::Timestamp, b::Int32) -checked expr : subtract_days(a, to_int64(b)) +checked expr : subtract_days(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1728,7 +1728,7 @@ evaluation (internal): ast : date_sub(hour, b, a) raw expr : subtract_hours(a::Timestamp, b::Int32) -checked expr : subtract_hours(a, to_int64(b)) +checked expr : subtract_hours(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1751,7 +1751,7 @@ evaluation (internal): ast : date_sub(minute, b, a) raw expr : subtract_minutes(a::Timestamp, b::Int32) -checked expr : subtract_minutes(a, to_int64(b)) +checked expr : subtract_minutes(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1774,7 +1774,7 @@ evaluation (internal): ast : date_sub(second, b, a) raw expr : subtract_seconds(a::Timestamp, b::Int32) -checked expr : subtract_seconds(a, to_int64(b)) +checked expr : subtract_seconds(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -1799,13 +1799,13 @@ error: --> SQL:1:12 | 1 | to_date(0) + interval 10000 year - | ^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(to_int64(0)), to_int64(10000))` + | ^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(CAST(0 AS Int64)), CAST(10000 AS Int64))` ast : to_date(0) + interval 100 year raw expr : add_years(to_date(0), 100) -checked expr : add_years(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 36525 output type : Date output domain : {36525..=36525} @@ -1814,7 +1814,7 @@ output : '2070-01-01' ast : to_date(0) + interval 100 quarter raw expr : add_quarters(to_date(0), 100) -checked expr : add_quarters(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 9131 output type : Date output domain : {9131..=9131} @@ -1823,7 +1823,7 @@ output : '1995-01-01' ast : to_date(0) + interval 100 month raw expr : add_months(to_date(0), 100) -checked expr : add_months(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 3042 output type : Date output domain : {3042..=3042} @@ -1832,7 +1832,7 @@ output : '1978-05-01' ast : to_date(0) + interval 100 day raw expr : add_days(to_date(0), 100) -checked expr : add_days(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -1841,7 +1841,7 @@ output : '1970-04-11' ast : to_date(0) - interval 100 year raw expr : subtract_years(to_date(0), 100) -checked expr : subtract_years(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -36524 output type : Date output domain : {-36524..=-36524} @@ -1850,7 +1850,7 @@ output : '1870-01-01' ast : to_date(0) - interval 100 quarter raw expr : subtract_quarters(to_date(0), 100) -checked expr : subtract_quarters(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -9131 output type : Date output domain : {-9131..=-9131} @@ -1859,7 +1859,7 @@ output : '1945-01-01' ast : to_date(0) - interval 100 month raw expr : subtract_months(to_date(0), 100) -checked expr : subtract_months(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -3044 output type : Date output domain : {-3044..=-3044} @@ -1868,7 +1868,7 @@ output : '1961-09-01' ast : to_date(0) - interval 100 day raw expr : subtract_days(to_date(0), 100) -checked expr : subtract_days(to_date(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -1877,7 +1877,7 @@ output : '1969-09-23' ast : a + interval b year raw expr : add_years(a::Date, b::Int32) -checked expr : add_years(a, to_int64(b)) +checked expr : add_years(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1900,7 +1900,7 @@ evaluation (internal): ast : a + interval b quarter raw expr : add_quarters(a::Date, b::Int32) -checked expr : add_quarters(a, to_int64(b)) +checked expr : add_quarters(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1923,7 +1923,7 @@ evaluation (internal): ast : a + interval b month raw expr : add_months(a::Date, b::Int32) -checked expr : add_months(a, to_int64(b)) +checked expr : add_months(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1946,7 +1946,7 @@ evaluation (internal): ast : a + interval b day raw expr : add_days(a::Date, b::Int32) -checked expr : add_days(a, to_int64(b)) +checked expr : add_days(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1969,7 +1969,7 @@ evaluation (internal): ast : a - interval b year raw expr : subtract_years(a::Date, b::Int32) -checked expr : subtract_years(a, to_int64(b)) +checked expr : subtract_years(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -1992,7 +1992,7 @@ evaluation (internal): ast : a - interval b quarter raw expr : subtract_quarters(a::Date, b::Int32) -checked expr : subtract_quarters(a, to_int64(b)) +checked expr : subtract_quarters(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -2015,7 +2015,7 @@ evaluation (internal): ast : a - interval b month raw expr : subtract_months(a::Date, b::Int32) -checked expr : subtract_months(a, to_int64(b)) +checked expr : subtract_months(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -2038,7 +2038,7 @@ evaluation (internal): ast : a - interval b day raw expr : subtract_days(a::Date, b::Int32) -checked expr : subtract_days(a, to_int64(b)) +checked expr : subtract_days(a, CAST(b AS Int64)) evaluation: +--------+--------------+---------+--------------+ | | a | b | Output | @@ -2063,13 +2063,13 @@ error: --> SQL:1:17 | 1 | to_timestamp(0) + interval 10000 year - | ^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(to_int64(0)), to_int64(10000))` + | ^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(CAST(0 AS Int64)), CAST(10000 AS Int64))` ast : to_timestamp(0) + interval 100 year raw expr : add_years(to_timestamp(0), 100) -checked expr : add_years(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 3155760000000000 output type : Timestamp output domain : {3155760000000000..=3155760000000000} @@ -2078,7 +2078,7 @@ output : '2070-01-01 00:00:00.000000' ast : to_timestamp(0) + interval 100 quarter raw expr : add_quarters(to_timestamp(0), 100) -checked expr : add_quarters(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 788918400000000 output type : Timestamp output domain : {788918400000000..=788918400000000} @@ -2087,7 +2087,7 @@ output : '1995-01-01 00:00:00.000000' ast : to_timestamp(0) + interval 100 month raw expr : add_months(to_timestamp(0), 100) -checked expr : add_months(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 262828800000000 output type : Timestamp output domain : {262828800000000..=262828800000000} @@ -2096,7 +2096,7 @@ output : '1978-05-01 00:00:00.000000' ast : to_timestamp(0) + interval 100 day raw expr : add_days(to_timestamp(0), 100) -checked expr : add_days(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 8640000000000 output type : Timestamp output domain : {8640000000000..=8640000000000} @@ -2105,7 +2105,7 @@ output : '1970-04-11 00:00:00.000000' ast : to_timestamp(0) + interval 100 hour raw expr : add_hours(to_timestamp(0), 100) -checked expr : add_hours(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 360000000000 output type : Timestamp output domain : {360000000000..=360000000000} @@ -2114,7 +2114,7 @@ output : '1970-01-05 04:00:00.000000' ast : to_timestamp(0) + interval 100 minute raw expr : add_minutes(to_timestamp(0), 100) -checked expr : add_minutes(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 6000000000 output type : Timestamp output domain : {6000000000..=6000000000} @@ -2123,7 +2123,7 @@ output : '1970-01-01 01:40:00.000000' ast : to_timestamp(0) + interval 100 second raw expr : add_seconds(to_timestamp(0), 100) -checked expr : add_seconds(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : add_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -2132,7 +2132,7 @@ output : '1970-01-01 00:01:40.000000' ast : to_timestamp(0) - interval 100 year raw expr : subtract_years(to_timestamp(0), 100) -checked expr : subtract_years(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -3155673600000000 output type : Timestamp output domain : {-3155673600000000..=-3155673600000000} @@ -2141,7 +2141,7 @@ output : '1870-01-01 00:00:00.000000' ast : to_timestamp(0) - interval 100 quarter raw expr : subtract_quarters(to_timestamp(0), 100) -checked expr : subtract_quarters(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -788918400000000 output type : Timestamp output domain : {-788918400000000..=-788918400000000} @@ -2150,7 +2150,7 @@ output : '1945-01-01 00:00:00.000000' ast : to_timestamp(0) - interval 100 month raw expr : subtract_months(to_timestamp(0), 100) -checked expr : subtract_months(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -263001600000000 output type : Timestamp output domain : {-263001600000000..=-263001600000000} @@ -2159,7 +2159,7 @@ output : '1961-09-01 00:00:00.000000' ast : to_timestamp(0) - interval 100 day raw expr : subtract_days(to_timestamp(0), 100) -checked expr : subtract_days(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -8640000000000 output type : Timestamp output domain : {-8640000000000..=-8640000000000} @@ -2168,7 +2168,7 @@ output : '1969-09-23 00:00:00.000000' ast : to_timestamp(0) - interval 100 hour raw expr : subtract_hours(to_timestamp(0), 100) -checked expr : subtract_hours(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -360000000000 output type : Timestamp output domain : {-360000000000..=-360000000000} @@ -2177,7 +2177,7 @@ output : '1969-12-27 20:00:00.000000' ast : to_timestamp(0) - interval 100 minute raw expr : subtract_minutes(to_timestamp(0), 100) -checked expr : subtract_minutes(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -6000000000 output type : Timestamp output domain : {-6000000000..=-6000000000} @@ -2186,7 +2186,7 @@ output : '1969-12-31 22:20:00.000000' ast : to_timestamp(0) - interval 100 second raw expr : subtract_seconds(to_timestamp(0), 100) -checked expr : subtract_seconds(to_timestamp(to_int64(0_u8)), to_int64(100_u8)) +checked expr : subtract_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -2195,7 +2195,7 @@ output : '1969-12-31 23:58:20.000000' ast : a + interval b year raw expr : add_years(a::Timestamp, b::Int32) -checked expr : add_years(a, to_int64(b)) +checked expr : add_years(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2218,7 +2218,7 @@ evaluation (internal): ast : a + interval b quarter raw expr : add_quarters(a::Timestamp, b::Int32) -checked expr : add_quarters(a, to_int64(b)) +checked expr : add_quarters(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2241,7 +2241,7 @@ evaluation (internal): ast : a + interval b month raw expr : add_months(a::Timestamp, b::Int32) -checked expr : add_months(a, to_int64(b)) +checked expr : add_months(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2264,7 +2264,7 @@ evaluation (internal): ast : a + interval b day raw expr : add_days(a::Timestamp, b::Int32) -checked expr : add_days(a, to_int64(b)) +checked expr : add_days(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2287,7 +2287,7 @@ evaluation (internal): ast : a + interval b hour raw expr : add_hours(a::Timestamp, b::Int32) -checked expr : add_hours(a, to_int64(b)) +checked expr : add_hours(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2310,7 +2310,7 @@ evaluation (internal): ast : a + interval b minute raw expr : add_minutes(a::Timestamp, b::Int32) -checked expr : add_minutes(a, to_int64(b)) +checked expr : add_minutes(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2333,7 +2333,7 @@ evaluation (internal): ast : a + interval b second raw expr : add_seconds(a::Timestamp, b::Int32) -checked expr : add_seconds(a, to_int64(b)) +checked expr : add_seconds(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2356,7 +2356,7 @@ evaluation (internal): ast : a - interval b year raw expr : subtract_years(a::Timestamp, b::Int32) -checked expr : subtract_years(a, to_int64(b)) +checked expr : subtract_years(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2379,7 +2379,7 @@ evaluation (internal): ast : a - interval b quarter raw expr : subtract_quarters(a::Timestamp, b::Int32) -checked expr : subtract_quarters(a, to_int64(b)) +checked expr : subtract_quarters(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2402,7 +2402,7 @@ evaluation (internal): ast : a - interval b month raw expr : subtract_months(a::Timestamp, b::Int32) -checked expr : subtract_months(a, to_int64(b)) +checked expr : subtract_months(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2425,7 +2425,7 @@ evaluation (internal): ast : a - interval b day raw expr : subtract_days(a::Timestamp, b::Int32) -checked expr : subtract_days(a, to_int64(b)) +checked expr : subtract_days(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2448,7 +2448,7 @@ evaluation (internal): ast : a - interval b hour raw expr : subtract_hours(a::Timestamp, b::Int32) -checked expr : subtract_hours(a, to_int64(b)) +checked expr : subtract_hours(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2471,7 +2471,7 @@ evaluation (internal): ast : a - interval b minute raw expr : subtract_minutes(a::Timestamp, b::Int32) -checked expr : subtract_minutes(a, to_int64(b)) +checked expr : subtract_minutes(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2494,7 +2494,7 @@ evaluation (internal): ast : a - interval b second raw expr : subtract_seconds(a::Timestamp, b::Int32) -checked expr : subtract_seconds(a, to_int64(b)) +checked expr : subtract_seconds(a, CAST(b AS Int64)) evaluation: +--------+------------------------------+---------+------------------------------+ | | a | b | Output | @@ -2517,7 +2517,7 @@ evaluation (internal): ast : to_yyyymm(to_date(18875)) raw expr : to_yyyymm(to_date(18875)) -checked expr : to_yyyymm(to_date(to_int64(18875_u16))) +checked expr : to_yyyymm(to_date(CAST(18875_u16 AS Int64))) optimized expr : 202109_u32 output type : UInt32 output domain : {202109..=202109} @@ -2526,7 +2526,7 @@ output : 202109 ast : to_yyyymmdd(to_date(18875)) raw expr : to_yyyymmdd(to_date(18875)) -checked expr : to_yyyymmdd(to_date(to_int64(18875_u16))) +checked expr : to_yyyymmdd(to_date(CAST(18875_u16 AS Int64))) optimized expr : 20210905_u32 output type : UInt32 output domain : {20210905..=20210905} @@ -2535,7 +2535,7 @@ output : 20210905 ast : to_yyyymmddhhmmss(to_date(18875)) raw expr : to_yyyymmddhhmmss(to_date(18875)) -checked expr : to_yyyymmddhhmmss(to_timestamp(to_date(to_int64(18875_u16)))) +checked expr : to_yyyymmddhhmmss(CAST(to_date(CAST(18875_u16 AS Int64)) AS Timestamp)) optimized expr : 20210905000000_u64 output type : UInt64 output domain : {20210905000000..=20210905000000} @@ -2544,7 +2544,7 @@ output : 20210905000000 ast : to_year(to_date(18875)) raw expr : to_year(to_date(18875)) -checked expr : to_year(to_date(to_int64(18875_u16))) +checked expr : to_year(to_date(CAST(18875_u16 AS Int64))) optimized expr : 2021_u16 output type : UInt16 output domain : {2021..=2021} @@ -2553,7 +2553,7 @@ output : 2021 ast : to_quarter(to_date(18875)) raw expr : to_quarter(to_date(18875)) -checked expr : to_quarter(to_date(to_int64(18875_u16))) +checked expr : to_quarter(to_date(CAST(18875_u16 AS Int64))) optimized expr : 3_u8 output type : UInt8 output domain : {3..=3} @@ -2562,7 +2562,7 @@ output : 3 ast : to_month(to_date(18875)) raw expr : to_month(to_date(18875)) -checked expr : to_month(to_date(to_int64(18875_u16))) +checked expr : to_month(to_date(CAST(18875_u16 AS Int64))) optimized expr : 9_u8 output type : UInt8 output domain : {9..=9} @@ -2571,7 +2571,7 @@ output : 9 ast : to_day_of_year(to_date(18875)) raw expr : to_day_of_year(to_date(18875)) -checked expr : to_day_of_year(to_date(to_int64(18875_u16))) +checked expr : to_day_of_year(to_date(CAST(18875_u16 AS Int64))) optimized expr : 248_u16 output type : UInt16 output domain : {248..=248} @@ -2580,7 +2580,7 @@ output : 248 ast : to_day_of_month(to_date(18875)) raw expr : to_day_of_month(to_date(18875)) -checked expr : to_day_of_month(to_date(to_int64(18875_u16))) +checked expr : to_day_of_month(to_date(CAST(18875_u16 AS Int64))) optimized expr : 5_u8 output type : UInt8 output domain : {5..=5} @@ -2589,7 +2589,7 @@ output : 5 ast : to_day_of_week(to_date(18875)) raw expr : to_day_of_week(to_date(18875)) -checked expr : to_day_of_week(to_date(to_int64(18875_u16))) +checked expr : to_day_of_week(to_date(CAST(18875_u16 AS Int64))) optimized expr : 7_u8 output type : UInt8 output domain : {7..=7} @@ -2598,7 +2598,7 @@ output : 7 ast : to_week_of_year(to_date(18875)) raw expr : to_week_of_year(to_date(18875)) -checked expr : to_week_of_year(to_date(to_int64(18875_u16))) +checked expr : to_week_of_year(to_date(CAST(18875_u16 AS Int64))) optimized expr : 35_u32 output type : UInt32 output domain : {35..=35} @@ -2651,7 +2651,7 @@ evaluation (internal): ast : to_yyyymmddhhmmss(a) raw expr : to_yyyymmddhhmmss(a::Date) -checked expr : to_yyyymmddhhmmss(to_timestamp(a)) +checked expr : to_yyyymmddhhmmss(CAST(a AS Timestamp)) evaluation: +--------+--------------+----------------------------+ | | a | Output | @@ -2827,7 +2827,7 @@ evaluation (internal): ast : to_yyyymm(to_timestamp(1630812366)) raw expr : to_yyyymm(to_timestamp(1630812366)) -checked expr : to_yyyymm(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_yyyymm(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 202109_u32 output type : UInt32 output domain : {202109..=202109} @@ -2836,7 +2836,7 @@ output : 202109 ast : to_yyyymmdd(to_timestamp(1630812366)) raw expr : to_yyyymmdd(to_timestamp(1630812366)) -checked expr : to_yyyymmdd(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_yyyymmdd(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 20210905_u32 output type : UInt32 output domain : {20210905..=20210905} @@ -2845,7 +2845,7 @@ output : 20210905 ast : to_yyyymmddhhmmss(to_timestamp(1630812366)) raw expr : to_yyyymmddhhmmss(to_timestamp(1630812366)) -checked expr : to_yyyymmddhhmmss(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_yyyymmddhhmmss(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 20210905032606_u64 output type : UInt64 output domain : {20210905032606..=20210905032606} @@ -2854,7 +2854,7 @@ output : 20210905032606 ast : to_year(to_timestamp(1630812366)) raw expr : to_year(to_timestamp(1630812366)) -checked expr : to_year(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_year(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 2021_u16 output type : UInt16 output domain : {2021..=2021} @@ -2863,7 +2863,7 @@ output : 2021 ast : to_quarter(to_timestamp(1630812366)) raw expr : to_quarter(to_timestamp(1630812366)) -checked expr : to_quarter(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_quarter(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 3_u8 output type : UInt8 output domain : {3..=3} @@ -2872,7 +2872,7 @@ output : 3 ast : to_month(to_timestamp(1630812366)) raw expr : to_month(to_timestamp(1630812366)) -checked expr : to_month(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_month(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 9_u8 output type : UInt8 output domain : {9..=9} @@ -2881,7 +2881,7 @@ output : 9 ast : to_day_of_year(to_timestamp(1630812366)) raw expr : to_day_of_year(to_timestamp(1630812366)) -checked expr : to_day_of_year(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_day_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 248_u16 output type : UInt16 output domain : {248..=248} @@ -2890,7 +2890,7 @@ output : 248 ast : to_day_of_month(to_timestamp(1630812366)) raw expr : to_day_of_month(to_timestamp(1630812366)) -checked expr : to_day_of_month(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_day_of_month(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 5_u8 output type : UInt8 output domain : {5..=5} @@ -2899,7 +2899,7 @@ output : 5 ast : to_day_of_week(to_timestamp(1630812366)) raw expr : to_day_of_week(to_timestamp(1630812366)) -checked expr : to_day_of_week(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_day_of_week(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 7_u8 output type : UInt8 output domain : {7..=7} @@ -2908,7 +2908,7 @@ output : 7 ast : to_week_of_year(to_timestamp(1630812366)) raw expr : to_week_of_year(to_timestamp(1630812366)) -checked expr : to_week_of_year(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_week_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 35_u32 output type : UInt32 output domain : {35..=35} @@ -2917,7 +2917,7 @@ output : 35 ast : to_hour(to_timestamp(1630812366)) raw expr : to_hour(to_timestamp(1630812366)) -checked expr : to_hour(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_hour(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 3_u8 output type : UInt8 output domain : {3..=3} @@ -2926,7 +2926,7 @@ output : 3 ast : to_minute(to_timestamp(1630812366)) raw expr : to_minute(to_timestamp(1630812366)) -checked expr : to_minute(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_minute(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 26_u8 output type : UInt8 output domain : {26..=26} @@ -2935,7 +2935,7 @@ output : 26 ast : to_second(to_timestamp(1630812366)) raw expr : to_second(to_timestamp(1630812366)) -checked expr : to_second(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_second(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 6_u8 output type : UInt8 output domain : {6..=6} @@ -3230,7 +3230,7 @@ evaluation (internal): ast : to_start_of_second(to_timestamp(1630812366)) raw expr : to_start_of_second(to_timestamp(1630812366)) -checked expr : to_start_of_second(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_second(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630812366000000 output type : Timestamp output domain : {1630812366000000..=1630812366000000} @@ -3239,7 +3239,7 @@ output : '2021-09-05 03:26:06.000000' ast : to_start_of_minute(to_timestamp(1630812366)) raw expr : to_start_of_minute(to_timestamp(1630812366)) -checked expr : to_start_of_minute(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_minute(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630812360000000 output type : Timestamp output domain : {1630812360000000..=1630812360000000} @@ -3248,7 +3248,7 @@ output : '2021-09-05 03:26:00.000000' ast : to_start_of_five_minutes(to_timestamp(1630812366)) raw expr : to_start_of_five_minutes(to_timestamp(1630812366)) -checked expr : to_start_of_five_minutes(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_five_minutes(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630812300000000 output type : Timestamp output domain : {1630812300000000..=1630812300000000} @@ -3257,7 +3257,7 @@ output : '2021-09-05 03:25:00.000000' ast : to_start_of_ten_minutes(to_timestamp(1630812366)) raw expr : to_start_of_ten_minutes(to_timestamp(1630812366)) -checked expr : to_start_of_ten_minutes(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_ten_minutes(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630812000000000 output type : Timestamp output domain : {1630812000000000..=1630812000000000} @@ -3266,7 +3266,7 @@ output : '2021-09-05 03:20:00.000000' ast : to_start_of_fifteen_minutes(to_timestamp(1630812366)) raw expr : to_start_of_fifteen_minutes(to_timestamp(1630812366)) -checked expr : to_start_of_fifteen_minutes(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_fifteen_minutes(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630811700000000 output type : Timestamp output domain : {1630811700000000..=1630811700000000} @@ -3275,7 +3275,7 @@ output : '2021-09-05 03:15:00.000000' ast : to_start_of_hour(to_timestamp(1630812366)) raw expr : to_start_of_hour(to_timestamp(1630812366)) -checked expr : to_start_of_hour(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_hour(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630810800000000 output type : Timestamp output domain : {1630810800000000..=1630810800000000} @@ -3284,7 +3284,7 @@ output : '2021-09-05 03:00:00.000000' ast : to_start_of_day(to_timestamp(1630812366)) raw expr : to_start_of_day(to_timestamp(1630812366)) -checked expr : to_start_of_day(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_day(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630800000000000 output type : Timestamp output domain : {1630800000000000..=1630800000000000} @@ -3293,7 +3293,7 @@ output : '2021-09-05 00:00:00.000000' ast : time_slot(to_timestamp(1630812366)) raw expr : time_slot(to_timestamp(1630812366)) -checked expr : time_slot(to_timestamp(to_int64(1630812366_u32))) +checked expr : time_slot(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630810800000000 output type : Timestamp output domain : {1630810800000000..=1630810800000000} @@ -3302,7 +3302,7 @@ output : '2021-09-05 03:00:00.000000' ast : to_monday(to_timestamp(1630812366)) raw expr : to_monday(to_timestamp(1630812366)) -checked expr : to_monday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_monday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18869 output type : Date output domain : {18869..=18869} @@ -3311,7 +3311,7 @@ output : '2021-08-30' ast : to_start_of_week(to_timestamp(1630812366)) raw expr : to_start_of_week(to_timestamp(1630812366)) -checked expr : to_start_of_week(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_week(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18875 output type : Date output domain : {18875..=18875} @@ -3320,7 +3320,7 @@ output : '2021-09-05' ast : to_start_of_week(to_timestamp(1630812366)) raw expr : to_start_of_week(to_timestamp(1630812366)) -checked expr : to_start_of_week(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_week(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18875 output type : Date output domain : {18875..=18875} @@ -3329,7 +3329,7 @@ output : '2021-09-05' ast : to_start_of_week(to_timestamp(1630812366), 1) raw expr : to_start_of_week(to_timestamp(1630812366), 1) -checked expr : to_start_of_week(to_timestamp(to_int64(1630812366_u32)), to_int64(1_u8)) +checked expr : to_start_of_week(to_timestamp(CAST(1630812366_u32 AS Int64)), CAST(1_u8 AS Int64)) optimized expr : 18869 output type : Date output domain : {18869..=18869} @@ -3338,7 +3338,7 @@ output : '2021-08-30' ast : to_start_of_month(to_timestamp(1630812366)) raw expr : to_start_of_month(to_timestamp(1630812366)) -checked expr : to_start_of_month(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_month(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18871 output type : Date output domain : {18871..=18871} @@ -3347,7 +3347,7 @@ output : '2021-09-01' ast : to_start_of_quarter(to_timestamp(1630812366)) raw expr : to_start_of_quarter(to_timestamp(1630812366)) -checked expr : to_start_of_quarter(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_quarter(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18809 output type : Date output domain : {18809..=18809} @@ -3356,7 +3356,7 @@ output : '2021-07-01' ast : to_start_of_year(to_timestamp(1630812366)) raw expr : to_start_of_year(to_timestamp(1630812366)) -checked expr : to_start_of_year(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18628 output type : Date output domain : {18628..=18628} @@ -3365,7 +3365,7 @@ output : '2021-01-01' ast : to_start_of_iso_year(to_timestamp(1630812366)) raw expr : to_start_of_iso_year(to_timestamp(1630812366)) -checked expr : to_start_of_iso_year(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_iso_year(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18631 output type : Date output domain : {18631..=18631} @@ -3374,7 +3374,7 @@ output : '2021-01-04' ast : date_trunc(year, to_timestamp(1630812366)) raw expr : to_start_of_year(to_timestamp(1630812366)) -checked expr : to_start_of_year(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18628 output type : Date output domain : {18628..=18628} @@ -3383,7 +3383,7 @@ output : '2021-01-01' ast : date_trunc(quarter, to_timestamp(1630812366)) raw expr : to_start_of_quarter(to_timestamp(1630812366)) -checked expr : to_start_of_quarter(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_quarter(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18809 output type : Date output domain : {18809..=18809} @@ -3392,7 +3392,7 @@ output : '2021-07-01' ast : date_trunc(month, to_timestamp(1630812366)) raw expr : to_start_of_month(to_timestamp(1630812366)) -checked expr : to_start_of_month(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_month(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18871 output type : Date output domain : {18871..=18871} @@ -3401,7 +3401,7 @@ output : '2021-09-01' ast : date_trunc(day, to_timestamp(1630812366)) raw expr : to_start_of_day(to_timestamp(1630812366)) -checked expr : to_start_of_day(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_day(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630800000000000 output type : Timestamp output domain : {1630800000000000..=1630800000000000} @@ -3410,7 +3410,7 @@ output : '2021-09-05 00:00:00.000000' ast : date_trunc(hour, to_timestamp(1630812366)) raw expr : to_start_of_hour(to_timestamp(1630812366)) -checked expr : to_start_of_hour(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_hour(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630810800000000 output type : Timestamp output domain : {1630810800000000..=1630810800000000} @@ -3419,7 +3419,7 @@ output : '2021-09-05 03:00:00.000000' ast : date_trunc(minute, to_timestamp(1630812366)) raw expr : to_start_of_minute(to_timestamp(1630812366)) -checked expr : to_start_of_minute(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_minute(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630812360000000 output type : Timestamp output domain : {1630812360000000..=1630812360000000} @@ -3428,7 +3428,7 @@ output : '2021-09-05 03:26:00.000000' ast : date_trunc(second, to_timestamp(1630812366)) raw expr : to_start_of_second(to_timestamp(1630812366)) -checked expr : to_start_of_second(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_start_of_second(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 1630812366000000 output type : Timestamp output domain : {1630812366000000..=1630812366000000} @@ -3437,7 +3437,7 @@ output : '2021-09-05 03:26:06.000000' ast : last_day(to_timestamp(1630812366), year) raw expr : to_last_of_year(to_timestamp(1630812366)) -checked expr : to_last_of_year(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_last_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18992 output type : Date output domain : {18992..=18992} @@ -3446,7 +3446,7 @@ output : '2021-12-31' ast : last_day(to_timestamp(1630812366), quarter) raw expr : to_last_of_quarter(to_timestamp(1630812366)) -checked expr : to_last_of_quarter(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_last_of_quarter(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18900 output type : Date output domain : {18900..=18900} @@ -3455,7 +3455,7 @@ output : '2021-09-30' ast : last_day(to_timestamp(1630812366), month) raw expr : to_last_of_month(to_timestamp(1630812366)) -checked expr : to_last_of_month(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_last_of_month(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18900 output type : Date output domain : {18900..=18900} @@ -3464,7 +3464,7 @@ output : '2021-09-30' ast : last_day(to_timestamp(1630812366), week) raw expr : to_last_of_week(to_timestamp(1630812366)) -checked expr : to_last_of_week(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_last_of_week(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18875 output type : Date output domain : {18875..=18875} @@ -3473,7 +3473,7 @@ output : '2021-09-05' ast : previous_day(to_timestamp(1630812366), monday) raw expr : to_previous_monday(to_timestamp(1630812366)) -checked expr : to_previous_monday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_previous_monday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18869 output type : Date output domain : {18869..=18869} @@ -3482,7 +3482,7 @@ output : '2021-08-30' ast : previous_day(to_timestamp(1630812366), tuesday) raw expr : to_previous_tuesday(to_timestamp(1630812366)) -checked expr : to_previous_tuesday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_previous_tuesday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18870 output type : Date output domain : {18870..=18870} @@ -3491,7 +3491,7 @@ output : '2021-08-31' ast : previous_day(to_timestamp(1630812366), wednesday) raw expr : to_previous_wednesday(to_timestamp(1630812366)) -checked expr : to_previous_wednesday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_previous_wednesday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18871 output type : Date output domain : {18871..=18871} @@ -3500,7 +3500,7 @@ output : '2021-09-01' ast : previous_day(to_timestamp(1630812366), thursday) raw expr : to_previous_thursday(to_timestamp(1630812366)) -checked expr : to_previous_thursday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_previous_thursday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18872 output type : Date output domain : {18872..=18872} @@ -3509,7 +3509,7 @@ output : '2021-09-02' ast : previous_day(to_timestamp(1630812366), friday) raw expr : to_previous_friday(to_timestamp(1630812366)) -checked expr : to_previous_friday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_previous_friday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18873 output type : Date output domain : {18873..=18873} @@ -3518,7 +3518,7 @@ output : '2021-09-03' ast : previous_day(to_timestamp(1630812366), saturday) raw expr : to_previous_saturday(to_timestamp(1630812366)) -checked expr : to_previous_saturday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_previous_saturday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18874 output type : Date output domain : {18874..=18874} @@ -3527,7 +3527,7 @@ output : '2021-09-04' ast : previous_day(to_timestamp(1630812366), sunday) raw expr : to_previous_sunday(to_timestamp(1630812366)) -checked expr : to_previous_sunday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_previous_sunday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18868 output type : Date output domain : {18868..=18868} @@ -3536,7 +3536,7 @@ output : '2021-08-29' ast : next_day(to_timestamp(1630812366), monday) raw expr : to_next_monday(to_timestamp(1630812366)) -checked expr : to_next_monday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_next_monday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18876 output type : Date output domain : {18876..=18876} @@ -3545,7 +3545,7 @@ output : '2021-09-06' ast : next_day(to_timestamp(1630812366), tuesday) raw expr : to_next_tuesday(to_timestamp(1630812366)) -checked expr : to_next_tuesday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_next_tuesday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18877 output type : Date output domain : {18877..=18877} @@ -3554,7 +3554,7 @@ output : '2021-09-07' ast : next_day(to_timestamp(1630812366), wednesday) raw expr : to_next_wednesday(to_timestamp(1630812366)) -checked expr : to_next_wednesday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_next_wednesday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18878 output type : Date output domain : {18878..=18878} @@ -3563,7 +3563,7 @@ output : '2021-09-08' ast : next_day(to_timestamp(1630812366), thursday) raw expr : to_next_thursday(to_timestamp(1630812366)) -checked expr : to_next_thursday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_next_thursday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18879 output type : Date output domain : {18879..=18879} @@ -3572,7 +3572,7 @@ output : '2021-09-09' ast : next_day(to_timestamp(1630812366), friday) raw expr : to_next_friday(to_timestamp(1630812366)) -checked expr : to_next_friday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_next_friday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18880 output type : Date output domain : {18880..=18880} @@ -3581,7 +3581,7 @@ output : '2021-09-10' ast : next_day(to_timestamp(1630812366), saturday) raw expr : to_next_saturday(to_timestamp(1630812366)) -checked expr : to_next_saturday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_next_saturday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18881 output type : Date output domain : {18881..=18881} @@ -3590,7 +3590,7 @@ output : '2021-09-11' ast : next_day(to_timestamp(1630812366), sunday) raw expr : to_next_sunday(to_timestamp(1630812366)) -checked expr : to_next_sunday(to_timestamp(to_int64(1630812366_u32))) +checked expr : to_next_sunday(to_timestamp(CAST(1630812366_u32 AS Int64))) optimized expr : 18882 output type : Date output domain : {18882..=18882} @@ -3599,7 +3599,7 @@ output : '2021-09-12' ast : date_diff(year, to_date(0), to_date(10000)) raw expr : diff_years(to_date(10000), to_date(0)) -checked expr : diff_years(to_date(to_int64(10000_u16)), to_date(to_int64(0_u8))) +checked expr : diff_years(to_date(CAST(10000_u16 AS Int64)), to_date(CAST(0_u8 AS Int64))) optimized expr : 27_i64 output type : Int64 output domain : {27..=27} @@ -3608,7 +3608,7 @@ output : 27 ast : date_diff(year, to_date(10000), to_date(0)) raw expr : diff_years(to_date(0), to_date(10000)) -checked expr : diff_years(to_date(to_int64(0_u8)), to_date(to_int64(10000_u16))) +checked expr : diff_years(to_date(CAST(0_u8 AS Int64)), to_date(CAST(10000_u16 AS Int64))) optimized expr : -27_i64 output type : Int64 output domain : {-27..=-27} @@ -3662,7 +3662,7 @@ output : -1 ast : date_diff(month, to_date(0), to_date(10000)) raw expr : diff_months(to_date(10000), to_date(0)) -checked expr : diff_months(to_date(to_int64(10000_u16)), to_date(to_int64(0_u8))) +checked expr : diff_months(to_date(CAST(10000_u16 AS Int64)), to_date(CAST(0_u8 AS Int64))) optimized expr : 328_i64 output type : Int64 output domain : {328..=328} @@ -3671,7 +3671,7 @@ output : 328 ast : date_diff(month, to_date(10000), to_date(0)) raw expr : diff_months(to_date(0), to_date(10000)) -checked expr : diff_months(to_date(to_int64(0_u8)), to_date(to_int64(10000_u16))) +checked expr : diff_months(to_date(CAST(0_u8 AS Int64)), to_date(CAST(10000_u16 AS Int64))) optimized expr : -328_i64 output type : Int64 output domain : {-328..=-328} @@ -3707,7 +3707,7 @@ output : -12 ast : date_diff(day, to_date(0), to_date(10000)) raw expr : diff_days(to_date(10000), to_date(0)) -checked expr : diff_days(to_date(to_int64(10000_u16)), to_date(to_int64(0_u8))) +checked expr : diff_days(to_date(CAST(10000_u16 AS Int64)), to_date(CAST(0_u8 AS Int64))) optimized expr : 10000_i64 output type : Int64 output domain : {10000..=10000} @@ -3716,7 +3716,7 @@ output : 10000 ast : date_diff(day, to_date(10000), to_date(0)) raw expr : diff_days(to_date(0), to_date(10000)) -checked expr : diff_days(to_date(to_int64(0_u8)), to_date(to_int64(10000_u16))) +checked expr : diff_days(to_date(CAST(0_u8 AS Int64)), to_date(CAST(10000_u16 AS Int64))) optimized expr : -10000_i64 output type : Int64 output domain : {-10000..=-10000} diff --git a/src/query/functions/tests/it/scalars/testdata/geo.txt b/src/query/functions/tests/it/scalars/testdata/geo.txt index c6c18988679eb..b29cf01f8bb18 100644 --- a/src/query/functions/tests/it/scalars/testdata/geo.txt +++ b/src/query/functions/tests/it/scalars/testdata/geo.txt @@ -2,13 +2,13 @@ error: --> SQL:1:1 | 1 | geo_to_h3(37.79506683, 55.71290588, 16) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid resolution (got Some(16)): out of range while evaluating function `geo_to_h3(37.79506683, 55.71290588, 16)` in expr `geo_to_h3(to_float64(37.79506683), to_float64(55.71290588), 16)` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid resolution (got Some(16)): out of range while evaluating function `geo_to_h3(37.79506683, 55.71290588, 16)` in expr `geo_to_h3(CAST(37.79506683 AS Float64), CAST(55.71290588 AS Float64), 16)` ast : geo_to_h3(37.79506683, 55.71290588, 15) raw expr : geo_to_h3(37.79506683, 55.71290588, 15) -checked expr : geo_to_h3(to_float64(37.79506683_d128(10,8)), to_float64(55.71290588_d128(10,8)), 15_u8) +checked expr : geo_to_h3(CAST(37.79506683_d128(10,8) AS Float64), CAST(55.71290588_d128(10,8) AS Float64), 15_u8) optimized expr : 644325524701193974_u64 output type : UInt64 output domain : {644325524701193974..=644325524701193974} @@ -40,7 +40,7 @@ evaluation (internal): ast : great_circle_distance(55.755831, 37.617673, -55.755831, -37.617673) raw expr : great_circle_distance(55.755831, 37.617673, minus(55.755831), minus(37.617673)) -checked expr : great_circle_distance(to_float64(55.755831_d128(8,6)), to_float64(37.617673_d128(8,6)), to_float64(minus(55.755831_d128(8,6))), to_float64(minus(37.617673_d128(8,6)))) +checked expr : great_circle_distance(CAST(55.755831_d128(8,6) AS Float64), CAST(37.617673_d128(8,6) AS Float64), CAST(minus(55.755831_d128(8,6)) AS Float64), CAST(minus(37.617673_d128(8,6)) AS Float64)) optimized expr : 14128353_f32 output type : Float32 output domain : {14128353..=14128353} @@ -74,7 +74,7 @@ evaluation (internal): ast : geo_distance(55.755831, 37.617673, -55.755831, -37.617673) raw expr : geo_distance(55.755831, 37.617673, minus(55.755831), minus(37.617673)) -checked expr : geo_distance(to_float64(55.755831_d128(8,6)), to_float64(37.617673_d128(8,6)), to_float64(minus(55.755831_d128(8,6))), to_float64(minus(37.617673_d128(8,6)))) +checked expr : geo_distance(CAST(55.755831_d128(8,6) AS Float64), CAST(37.617673_d128(8,6) AS Float64), CAST(minus(55.755831_d128(8,6)) AS Float64), CAST(minus(37.617673_d128(8,6)) AS Float64)) optimized expr : 14128353_f32 output type : Float32 output domain : {14128353..=14128353} @@ -108,7 +108,7 @@ evaluation (internal): ast : great_circle_angle(0, 0, 45, 0) raw expr : great_circle_angle(0, 0, 45, 0) -checked expr : great_circle_angle(to_float64(0_u8), to_float64(0_u8), to_float64(45_u8), to_float64(0_u8)) +checked expr : great_circle_angle(CAST(0_u8 AS Float64), CAST(0_u8 AS Float64), CAST(45_u8 AS Float64), CAST(0_u8 AS Float64)) optimized expr : 44.99998_f32 output type : Float32 output domain : {44.99998..=44.99998} @@ -117,7 +117,7 @@ output : 44.99998 ast : great_circle_angle(0, 0, a, 0) raw expr : great_circle_angle(0, 0, a::Float64, 0) -checked expr : great_circle_angle(to_float64(0_u8), to_float64(0_u8), a, to_float64(0_u8)) +checked expr : great_circle_angle(CAST(0_u8 AS Float64), CAST(0_u8 AS Float64), a, CAST(0_u8 AS Float64)) optimized expr : great_circle_angle(0_f64, 0_f64, a, 0_f64) evaluation: +--------+-----------+--------------+ @@ -140,7 +140,7 @@ evaluation (internal): ast : point_in_ellipses(10., 10., 10., 9.1, 1., 0.9999) raw expr : point_in_ellipses(10, 10, 10, 9.1, 1, 0.9999) -checked expr : point_in_ellipses(to_float64(10_u8), to_float64(10_u8), to_float64(10_u8), to_float64(9.1_d128(2,1)), to_float64(1_u8), to_float64(0.9999_d128(4,4))) +checked expr : point_in_ellipses(CAST(10_u8 AS Float64), CAST(10_u8 AS Float64), CAST(10_u8 AS Float64), CAST(9.1_d128(2,1) AS Float64), CAST(1_u8 AS Float64), CAST(0.9999_d128(4,4) AS Float64)) optimized expr : 1_u8 output type : UInt8 output domain : {1..=1} @@ -149,7 +149,7 @@ output : 1 ast : point_in_ellipses(10., 10., 10., 9.1, a, b) raw expr : point_in_ellipses(10, 10, 10, 9.1, a::Float64, b::Float64) -checked expr : point_in_ellipses(to_float64(10_u8), to_float64(10_u8), to_float64(10_u8), to_float64(9.1_d128(2,1)), a, b) +checked expr : point_in_ellipses(CAST(10_u8 AS Float64), CAST(10_u8 AS Float64), CAST(10_u8 AS Float64), CAST(9.1_d128(2,1) AS Float64), a, b) optimized expr : point_in_ellipses(10_f64, 10_f64, 10_f64, 9.1_f64, a, b) evaluation: +--------+-----------+-------------------+-----------+ @@ -173,7 +173,7 @@ evaluation (internal): ast : point_in_polygon((3., 3.), [(6, 0), (8, 4), (5, 8), (0, 2)]) raw expr : point_in_polygon(tuple(3, 3), array(tuple(6, 0), tuple(8, 4), tuple(5, 8), tuple(0, 2))) -checked expr : point_in_polygon(CAST(tuple(3_u8, 3_u8) AS Tuple(Float64, Float64)), CAST(array(tuple(6_u8, 0_u8), tuple(8_u8, 4_u8), tuple(5_u8, 8_u8), tuple(0_u8, 2_u8)) AS Array(Tuple(Float64, Float64)))) +checked expr : point_in_polygon(CAST(tuple(3_u8, 3_u8) AS Tuple(Float64, Float64)), CAST(array(tuple(6_u8, 0_u8), tuple(8_u8, 4_u8), tuple(5_u8, 8_u8), tuple(0_u8, 2_u8)) AS Array(Tuple(Float64, Float64)))) optimized expr : 1_u8 output type : UInt8 output domain : {1..=1} @@ -182,7 +182,7 @@ output : 1 ast : point_in_polygon((a, b), [(6, 0), (8, 4), (5, 8), (0, 2)]) raw expr : point_in_polygon(tuple(a::Float64, b::Float64), array(tuple(6, 0), tuple(8, 4), tuple(5, 8), tuple(0, 2))) -checked expr : point_in_polygon(tuple(a, b), CAST(array(tuple(6_u8, 0_u8), tuple(8_u8, 4_u8), tuple(5_u8, 8_u8), tuple(0_u8, 2_u8)) AS Array(Tuple(Float64, Float64)))) +checked expr : point_in_polygon(tuple(a, b), CAST(array(tuple(6_u8, 0_u8), tuple(8_u8, 4_u8), tuple(5_u8, 8_u8), tuple(0_u8, 2_u8)) AS Array(Tuple(Float64, Float64)))) optimized expr : point_in_polygon(tuple(a, b), [(6, 0), (8, 4), (5, 8), (0, 2)]) evaluation: +--------+-----------+-----------+-----------+ @@ -206,7 +206,7 @@ evaluation (internal): ast : point_in_polygon((1., 1.), [[(4., 0.), (8., 4.), (4., 8.), (0., 4.)], [(3., 3.), (3., 5.), (5., 5.), (5., 3.)]]) raw expr : point_in_polygon(tuple(1, 1), array(array(tuple(4, 0), tuple(8, 4), tuple(4, 8), tuple(0, 4)), array(tuple(3, 3), tuple(3, 5), tuple(5, 5), tuple(5, 3)))) -checked expr : point_in_polygon(CAST(tuple(1_u8, 1_u8) AS Tuple(Float64, Float64)), CAST(array(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)), array(tuple(3_u8, 3_u8), tuple(3_u8, 5_u8), tuple(5_u8, 5_u8), tuple(5_u8, 3_u8))) AS Array(Array(Tuple(Float64, Float64))))) +checked expr : point_in_polygon(CAST(tuple(1_u8, 1_u8) AS Tuple(Float64, Float64)), CAST(array(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)), array(tuple(3_u8, 3_u8), tuple(3_u8, 5_u8), tuple(5_u8, 5_u8), tuple(5_u8, 3_u8))) AS Array(Array(Tuple(Float64, Float64))))) optimized expr : 0_u8 output type : UInt8 output domain : {0..=0} @@ -215,7 +215,7 @@ output : 0 ast : point_in_polygon((2.5, 2.5), [[(4., 0.), (8., 4.), (4., 8.), (0., 4.)], [(3., 3.), (3., 5.), (5., 5.), (5., 3.)]]) raw expr : point_in_polygon(tuple(2.5, 2.5), array(array(tuple(4, 0), tuple(8, 4), tuple(4, 8), tuple(0, 4)), array(tuple(3, 3), tuple(3, 5), tuple(5, 5), tuple(5, 3)))) -checked expr : point_in_polygon(CAST(tuple(2.5_d128(2,1), 2.5_d128(2,1)) AS Tuple(Float64, Float64)), CAST(array(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)), array(tuple(3_u8, 3_u8), tuple(3_u8, 5_u8), tuple(5_u8, 5_u8), tuple(5_u8, 3_u8))) AS Array(Array(Tuple(Float64, Float64))))) +checked expr : point_in_polygon(CAST(tuple(2.5_d128(2,1), 2.5_d128(2,1)) AS Tuple(Float64, Float64)), CAST(array(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)), array(tuple(3_u8, 3_u8), tuple(3_u8, 5_u8), tuple(5_u8, 5_u8), tuple(5_u8, 3_u8))) AS Array(Array(Tuple(Float64, Float64))))) optimized expr : 1_u8 output type : UInt8 output domain : {1..=1} @@ -224,7 +224,7 @@ output : 1 ast : point_in_polygon((2.5, 2.5), [[(4., 0.), (8., 4.), (4., 8.), (0., 4.)], [(3., 3.), (a, b), (5., 5.), (5., 3.)]]) raw expr : point_in_polygon(tuple(2.5, 2.5), array(array(tuple(4, 0), tuple(8, 4), tuple(4, 8), tuple(0, 4)), array(tuple(3, 3), tuple(a::Float64, b::Float64), tuple(5, 5), tuple(5, 3)))) -checked expr : point_in_polygon(CAST(tuple(2.5_d128(2,1), 2.5_d128(2,1)) AS Tuple(Float64, Float64)), array(CAST(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)) AS Array(Tuple(Float64, Float64))), array(CAST(tuple(3_u8, 3_u8) AS Tuple(Float64, Float64)), tuple(a, b), CAST(tuple(5_u8, 5_u8) AS Tuple(Float64, Float64)), CAST(tuple(5_u8, 3_u8) AS Tuple(Float64, Float64))))) +checked expr : point_in_polygon(CAST(tuple(2.5_d128(2,1), 2.5_d128(2,1)) AS Tuple(Float64, Float64)), array(CAST(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)) AS Array(Tuple(Float64, Float64))), array(CAST(tuple(3_u8, 3_u8) AS Tuple(Float64, Float64)), tuple(a, b), CAST(tuple(5_u8, 5_u8) AS Tuple(Float64, Float64)), CAST(tuple(5_u8, 3_u8) AS Tuple(Float64, Float64))))) optimized expr : point_in_polygon((2.5_f64, 2.5_f64), array([(4, 0), (8, 4), (4, 8), (0, 4)], array((3_f64, 3_f64), tuple(a, 5_f64), (5_f64, 5_f64), (5_f64, 3_f64)))) evaluation: +--------+-----------+---------+-----------+ @@ -247,7 +247,7 @@ evaluation (internal): ast : point_in_polygon((2.5, 2.5), [(4., 0.), (8., 4.), (4., 8.), (0., 4.)], [(3., 3.), (3., 5.), (5., 5.), (5., 3.)]) raw expr : point_in_polygon(tuple(2.5, 2.5), array(tuple(4, 0), tuple(8, 4), tuple(4, 8), tuple(0, 4)), array(tuple(3, 3), tuple(3, 5), tuple(5, 5), tuple(5, 3))) -checked expr : point_in_polygon(CAST(tuple(2.5_d128(2,1), 2.5_d128(2,1)) AS Tuple(Float64, Float64)), CAST(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)) AS Array(Tuple(Float64, Float64))), CAST(array(tuple(3_u8, 3_u8), tuple(3_u8, 5_u8), tuple(5_u8, 5_u8), tuple(5_u8, 3_u8)) AS Array(Tuple(Float64, Float64)))) +checked expr : point_in_polygon(CAST(tuple(2.5_d128(2,1), 2.5_d128(2,1)) AS Tuple(Float64, Float64)), CAST(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)) AS Array(Tuple(Float64, Float64))), CAST(array(tuple(3_u8, 3_u8), tuple(3_u8, 5_u8), tuple(5_u8, 5_u8), tuple(5_u8, 3_u8)) AS Array(Tuple(Float64, Float64)))) optimized expr : 1_u8 output type : UInt8 output domain : {1..=1} @@ -256,7 +256,7 @@ output : 1 ast : point_in_polygon((2.5, 2.5), [(4., 0.), (8., 4.), (4., 8.), (0., 4.)], [(3., 3.), (a, b), (5., 5.), (5., 3.)]) raw expr : point_in_polygon(tuple(2.5, 2.5), array(tuple(4, 0), tuple(8, 4), tuple(4, 8), tuple(0, 4)), array(tuple(3, 3), tuple(a::Float64, b::Float64), tuple(5, 5), tuple(5, 3))) -checked expr : point_in_polygon(CAST(tuple(2.5_d128(2,1), 2.5_d128(2,1)) AS Tuple(Float64, Float64)), CAST(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)) AS Array(Tuple(Float64, Float64))), array(CAST(tuple(3_u8, 3_u8) AS Tuple(Float64, Float64)), tuple(a, b), CAST(tuple(5_u8, 5_u8) AS Tuple(Float64, Float64)), CAST(tuple(5_u8, 3_u8) AS Tuple(Float64, Float64)))) +checked expr : point_in_polygon(CAST(tuple(2.5_d128(2,1), 2.5_d128(2,1)) AS Tuple(Float64, Float64)), CAST(array(tuple(4_u8, 0_u8), tuple(8_u8, 4_u8), tuple(4_u8, 8_u8), tuple(0_u8, 4_u8)) AS Array(Tuple(Float64, Float64))), array(CAST(tuple(3_u8, 3_u8) AS Tuple(Float64, Float64)), tuple(a, b), CAST(tuple(5_u8, 5_u8) AS Tuple(Float64, Float64)), CAST(tuple(5_u8, 3_u8) AS Tuple(Float64, Float64)))) optimized expr : 1_u8 evaluation: +--------+---------+---------+---------+ @@ -279,7 +279,7 @@ evaluation (internal): ast : geohash_encode(-5.60302734375, 42.593994140625) raw expr : geohash_encode(minus(5.60302734375), 42.593994140625) -checked expr : geohash_encode(to_float64(minus(5.60302734375_d128(12,11))), to_float64(42.593994140625_d128(14,12))) +checked expr : geohash_encode(CAST(minus(5.60302734375_d128(12,11)) AS Float64), CAST(42.593994140625_d128(14,12) AS Float64)) optimized expr : "ezs42d000000" output type : String output domain : {"ezs42d000000"..="ezs42d000000"} @@ -288,7 +288,7 @@ output : 'ezs42d000000' ast : geohash_encode(-5.60302734375, 42.593994140625, 11) raw expr : geohash_encode(minus(5.60302734375), 42.593994140625, 11) -checked expr : geohash_encode(to_float64(minus(5.60302734375_d128(12,11))), to_float64(42.593994140625_d128(14,12)), 11_u8) +checked expr : geohash_encode(CAST(minus(5.60302734375_d128(12,11)) AS Float64), CAST(42.593994140625_d128(14,12) AS Float64), 11_u8) optimized expr : "ezs42d00000" output type : String output domain : {"ezs42d00000"..="ezs42d00000"} @@ -297,7 +297,7 @@ output : 'ezs42d00000' ast : geohash_encode(-5.60302734375, 42.593994140625, 0) raw expr : geohash_encode(minus(5.60302734375), 42.593994140625, 0) -checked expr : geohash_encode(to_float64(minus(5.60302734375_d128(12,11))), to_float64(42.593994140625_d128(14,12)), 0_u8) +checked expr : geohash_encode(CAST(minus(5.60302734375_d128(12,11)) AS Float64), CAST(42.593994140625_d128(14,12) AS Float64), 0_u8) optimized expr : "ezs42d000000" output type : String output domain : {"ezs42d000000"..="ezs42d000000"} diff --git a/src/query/functions/tests/it/scalars/testdata/geo_h3.txt b/src/query/functions/tests/it/scalars/testdata/geo_h3.txt index 45fd05fa864a1..7d82fe2ffaadd 100644 --- a/src/query/functions/tests/it/scalars/testdata/geo_h3.txt +++ b/src/query/functions/tests/it/scalars/testdata/geo_h3.txt @@ -14,7 +14,7 @@ error: --> SQL:1:1 | 1 | h3_to_geo(0) - | ^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_geo(0)` in expr `h3_to_geo(to_uint64(0))` + | ^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_geo(0)` in expr `h3_to_geo(CAST(0 AS UInt64))` @@ -22,7 +22,7 @@ error: --> SQL:1:1 | 1 | h3_to_geo(1) - | ^^^^^^^^^^^^ invalid cell index (got Some(1)): invalid index mode while evaluating function `h3_to_geo(1)` in expr `h3_to_geo(to_uint64(1))` + | ^^^^^^^^^^^^ invalid cell index (got Some(1)): invalid index mode while evaluating function `h3_to_geo(1)` in expr `h3_to_geo(CAST(1 AS UInt64))` @@ -73,7 +73,7 @@ error: --> SQL:1:1 | 1 | h3_to_geo_boundary(0) - | ^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_geo_boundary(0)` in expr `h3_to_geo_boundary(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_geo_boundary(0)` in expr `h3_to_geo_boundary(CAST(0 AS UInt64))` @@ -81,7 +81,7 @@ error: --> SQL:1:1 | 1 | h3_to_geo_boundary(1) - | ^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(1)): invalid index mode while evaluating function `h3_to_geo_boundary(1)` in expr `h3_to_geo_boundary(to_uint64(1))` + | ^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(1)): invalid index mode while evaluating function `h3_to_geo_boundary(1)` in expr `h3_to_geo_boundary(CAST(1 AS UInt64))` @@ -133,7 +133,7 @@ error: --> SQL:1:1 | 1 | h3_k_ring(0, 0) - | ^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_k_ring(0, 0)` in expr `h3_k_ring(to_uint64(0), to_uint32(0))` + | ^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_k_ring(0, 0)` in expr `h3_k_ring(CAST(0 AS UInt64), CAST(0 AS UInt32))` @@ -163,7 +163,7 @@ candidate functions: ast : h3_k_ring(644325524701193974, 0) raw expr : h3_k_ring(644325524701193974, 0) -checked expr : h3_k_ring(644325524701193974_u64, to_uint32(0_u8)) +checked expr : h3_k_ring(644325524701193974_u64, CAST(0_u8 AS UInt32)) optimized expr : [644325524701193974] output type : Array(UInt64) output domain : [{644325524701193974..=644325524701193974}] @@ -172,7 +172,7 @@ output : [644325524701193974] ast : h3_k_ring(644325524701193974, 1) raw expr : h3_k_ring(644325524701193974, 1) -checked expr : h3_k_ring(644325524701193974_u64, to_uint32(1_u8)) +checked expr : h3_k_ring(644325524701193974_u64, CAST(1_u8 AS UInt32)) optimized expr : [644325524701193974, 644325524701193899, 644325524701193869, 644325524701193970, 644325524701193968, 644325524701193972, 644325524701193897] output type : Array(UInt64) output domain : [{644325524701193869..=644325524701193974}] @@ -181,7 +181,7 @@ output : [644325524701193974, 644325524701193899, 644325524701193869, 64 ast : h3_k_ring(644325524701193974, 2) raw expr : h3_k_ring(644325524701193974, 2) -checked expr : h3_k_ring(644325524701193974_u64, to_uint32(2_u8)) +checked expr : h3_k_ring(644325524701193974_u64, CAST(2_u8 AS UInt32)) optimized expr : [644325524701193974, 644325524701193899, 644325524701193869, 644325524701193970, 644325524701193968, 644325524701193972, 644325524701193897, 644325524701193896, 644325524701193898, 644325524701193868, 644325524701193864, 644325524701193865, 644325524701193940, 644325524701193971, 644325524701193969, 644325524701193973, 644325524701193755, 644325524701193754, 644325524701193901] output type : Array(UInt64) output domain : [{644325524701193754..=644325524701193974}] @@ -190,7 +190,7 @@ output : [644325524701193974, 644325524701193899, 644325524701193869, 64 ast : h3_k_ring(644325524701193974, 3) raw expr : h3_k_ring(644325524701193974, 3) -checked expr : h3_k_ring(644325524701193974_u64, to_uint32(3_u8)) +checked expr : h3_k_ring(644325524701193974_u64, CAST(3_u8 AS UInt32)) optimized expr : [644325524701193974, 644325524701193899, 644325524701193869, 644325524701193970, 644325524701193968, 644325524701193972, 644325524701193897, 644325524701193896, 644325524701193898, 644325524701193868, 644325524701193864, 644325524701193865, 644325524701193940, 644325524701193971, 644325524701193969, 644325524701193973, 644325524701193755, 644325524701193754, 644325524701193901, 644325524701193900, 644325524701193902, 644325524701193861, 644325524701193857, 644325524701193870, 644325524701193866, 644325524701193867, 644325524701193942, 644325524701193936, 644325524701193941, 644325524701193926, 644325524701193924, 644325524701193954, 644325524701193958, 644325524701193753, 644325524701193752, 644325524701193758, 644325524701193747] output type : Array(UInt64) output domain : [{644325524701193747..=644325524701193974}] @@ -223,7 +223,7 @@ evaluation (internal): ast : h3_is_valid(0) raw expr : h3_is_valid(0) -checked expr : h3_is_valid(to_uint64(0_u8)) +checked expr : h3_is_valid(CAST(0_u8 AS UInt64)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -267,7 +267,7 @@ error: --> SQL:1:1 | 1 | h3_get_resolution(0) - | ^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_resolution(0)` in expr `h3_get_resolution(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_resolution(0)` in expr `h3_get_resolution(CAST(0 AS UInt64))` @@ -423,7 +423,7 @@ error: --> SQL:1:1 | 1 | h3_get_base_cell(0) - | ^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_base_cell(0)` in expr `h3_get_base_cell(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_base_cell(0)` in expr `h3_get_base_cell(CAST(0 AS UInt64))` @@ -579,7 +579,7 @@ error: --> SQL:1:1 | 1 | h3_indexes_are_neighbors(0, 0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_indexes_are_neighbors(0, 0)` in expr `h3_indexes_are_neighbors(to_uint64(0), to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_indexes_are_neighbors(0, 0)` in expr `h3_indexes_are_neighbors(CAST(0 AS UInt64), CAST(0 AS UInt64))` @@ -629,7 +629,7 @@ error: --> SQL:1:1 | 1 | h3_to_children(0, 1) - | ^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_children(0, 1)` in expr `h3_to_children(to_uint64(0), 1)` + | ^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_children(0, 1)` in expr `h3_to_children(CAST(0 AS UInt64), 1)` @@ -678,7 +678,7 @@ error: --> SQL:1:1 | 1 | h3_to_parent(0, 1) - | ^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_parent(0, 1)` in expr `h3_to_parent(to_uint64(0), 1)` + | ^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_parent(0, 1)` in expr `h3_to_parent(CAST(0 AS UInt64), 1)` @@ -736,7 +736,7 @@ error: --> SQL:1:1 | 1 | h3_to_string(0) - | ^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_string(0)` in expr `h3_to_string(to_uint64(0))` + | ^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_string(0)` in expr `h3_to_string(CAST(0 AS UInt64))` @@ -791,7 +791,7 @@ error: --> SQL:1:14 | 1 | h3_to_string('8d11aa6a38826ff') - | ^^^^^^^^^^^^^^^^^ invalid digit found in string while evaluating function `to_uint64('8d11aa6a38826ff')` in expr `to_uint64('8d11aa6a38826ff')`, during run expr: `h3_to_string(to_uint64('8d11aa6a38826ff'))` + | ^^^^^^^^^^^^^^^^^ invalid digit found in string while evaluating function `to_uint64('8d11aa6a38826ff')` in expr `to_uint64()`, during run expr: `h3_to_string(CAST('8d11aa6a38826ff' AS UInt64))` @@ -821,7 +821,7 @@ error: --> SQL:1:1 | 1 | h3_is_res_class_iii(0) - | ^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_is_res_class_iii(0)` in expr `h3_is_res_class_iii(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_is_res_class_iii(0)` in expr `h3_is_res_class_iii(CAST(0 AS UInt64))` @@ -860,7 +860,7 @@ error: --> SQL:1:1 | 1 | h3_is_pentagon(0) - | ^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_is_pentagon(0)` in expr `h3_is_pentagon(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_is_pentagon(0)` in expr `h3_is_pentagon(CAST(0 AS UInt64))` @@ -899,7 +899,7 @@ error: --> SQL:1:1 | 1 | h3_get_faces(0) - | ^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_faces(0)` in expr `h3_get_faces(to_uint64(0))` + | ^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_faces(0)` in expr `h3_get_faces(CAST(0 AS UInt64))` @@ -938,7 +938,7 @@ error: --> SQL:1:1 | 1 | h3_cell_area_m2(0) - | ^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_cell_area_m2(0)` in expr `h3_cell_area_m2(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_cell_area_m2(0)` in expr `h3_cell_area_m2(CAST(0 AS UInt64))` @@ -977,7 +977,7 @@ error: --> SQL:1:1 | 1 | h3_cell_area_rads2(0) - | ^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_cell_area_rads2(0)` in expr `h3_cell_area_rads2(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_cell_area_rads2(0)` in expr `h3_cell_area_rads2(CAST(0 AS UInt64))` @@ -1016,7 +1016,7 @@ error: --> SQL:1:1 | 1 | h3_to_center_child(0, 1) - | ^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_center_child(0, 1)` in expr `h3_to_center_child(to_uint64(0), 1)` + | ^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_to_center_child(0, 1)` in expr `h3_to_center_child(CAST(0 AS UInt64), 1)` @@ -1063,7 +1063,7 @@ error: --> SQL:1:1 | 1 | h3_exact_edge_length_m(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_exact_edge_length_m(0)` in expr `h3_exact_edge_length_m(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_exact_edge_length_m(0)` in expr `h3_exact_edge_length_m(CAST(0 AS UInt64))` @@ -1109,7 +1109,7 @@ error: --> SQL:1:1 | 1 | h3_exact_edge_length_km(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_exact_edge_length_km(0)` in expr `h3_exact_edge_length_km(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_exact_edge_length_km(0)` in expr `h3_exact_edge_length_km(CAST(0 AS UInt64))` @@ -1155,7 +1155,7 @@ error: --> SQL:1:1 | 1 | h3_exact_edge_length_rads(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_exact_edge_length_rads(0)` in expr `h3_exact_edge_length_rads(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_exact_edge_length_rads(0)` in expr `h3_exact_edge_length_rads(CAST(0 AS UInt64))` @@ -1248,7 +1248,7 @@ error: --> SQL:1:1 | 1 | h3_line(0, 0) - | ^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_line(0, 0)` in expr `h3_line(to_uint64(0), to_uint64(0))` + | ^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_line(0, 0)` in expr `h3_line(CAST(0 AS UInt64), CAST(0 AS UInt64))` @@ -1256,7 +1256,7 @@ error: --> SQL:1:1 | 1 | h3_line(599119489002373119, 0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_line(599119489002373119, 0)` in expr `h3_line(599119489002373119, to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_line(599119489002373119, 0)` in expr `h3_line(599119489002373119, CAST(0 AS UInt64))` @@ -1296,7 +1296,7 @@ error: --> SQL:1:1 | 1 | h3_distance(0, 0) - | ^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_distance(0, 0)` in expr `h3_distance(to_uint64(0), to_uint64(0))` + | ^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_distance(0, 0)` in expr `h3_distance(CAST(0 AS UInt64), CAST(0 AS UInt64))` @@ -1304,7 +1304,7 @@ error: --> SQL:1:1 | 1 | h3_distance(599119489002373119, 0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_distance(599119489002373119, 0)` in expr `h3_distance(599119489002373119, to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_distance(599119489002373119, 0)` in expr `h3_distance(599119489002373119, CAST(0 AS UInt64))` @@ -1344,13 +1344,13 @@ error: --> SQL:1:1 | 1 | h3_hex_ring(0, 0) - | ^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_hex_ring(0, 0)` in expr `h3_hex_ring(to_uint64(0), to_uint32(0))` + | ^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_hex_ring(0, 0)` in expr `h3_hex_ring(CAST(0 AS UInt64), CAST(0 AS UInt32))` ast : h3_hex_ring(599686042433355775, 0) raw expr : h3_hex_ring(599686042433355775, 0) -checked expr : h3_hex_ring(599686042433355775_u64, to_uint32(0_u8)) +checked expr : h3_hex_ring(599686042433355775_u64, CAST(0_u8 AS UInt32)) optimized expr : [599686042433355775] output type : Array(UInt64) output domain : [{599686042433355775..=599686042433355775}] @@ -1361,13 +1361,13 @@ error: --> SQL:1:1 | 1 | h3_hex_ring(599119489002373119, 2) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a pentagon (or a pentagon distortion) is encountered while evaluating function `h3_hex_ring(599119489002373119, 2)` in expr `h3_hex_ring(599119489002373119, to_uint32(2))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a pentagon (or a pentagon distortion) is encountered while evaluating function `h3_hex_ring(599119489002373119, 2)` in expr `h3_hex_ring(599119489002373119, CAST(2 AS UInt32))` ast : h3_hex_ring(599686042433355775, 2) raw expr : h3_hex_ring(599686042433355775, 2) -checked expr : h3_hex_ring(599686042433355775_u64, to_uint32(2_u8)) +checked expr : h3_hex_ring(599686042433355775_u64, CAST(2_u8 AS UInt32)) optimized expr : [599686018811035647, 599686034917163007, 599686029548453887, 599686032769679359, 599686198125920255, 599686040285872127, 599686041359613951, 599686039212130303, 599686023106002943, 599686027400970239, 599686013442326527, 599686012368584703] output type : Array(UInt64) output domain : [{599686012368584703..=599686198125920255}] @@ -1378,7 +1378,7 @@ error: --> SQL:1:1 | 1 | h3_distance(h3, k) - | ^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(2)): invalid index mode while evaluating function `h3_distance(599686042433355775, 2)` in expr `h3_distance(h3, to_uint64(k))` + | ^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(2)): invalid index mode while evaluating function `h3_distance(599686042433355775, 2)` in expr `h3_distance(h3, CAST(k AS UInt64))` @@ -1386,7 +1386,7 @@ error: --> SQL:1:1 | 1 | h3_get_unidirectional_edge(0, 0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_unidirectional_edge(0, 0)` in expr `h3_get_unidirectional_edge(to_uint64(0), to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_unidirectional_edge(0, 0)` in expr `h3_get_unidirectional_edge(CAST(0 AS UInt64), CAST(0 AS UInt64))` @@ -1394,7 +1394,7 @@ error: --> SQL:1:1 | 1 | h3_get_unidirectional_edge(644325524701193897, 0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_unidirectional_edge(644325524701193897, 0)` in expr `h3_get_unidirectional_edge(644325524701193897, to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_unidirectional_edge(644325524701193897, 0)` in expr `h3_get_unidirectional_edge(644325524701193897, CAST(0 AS UInt64))` @@ -1432,7 +1432,7 @@ evaluation (internal): ast : h3_unidirectional_edge_is_valid(0) raw expr : h3_unidirectional_edge_is_valid(0) -checked expr : h3_unidirectional_edge_is_valid(to_uint64(0_u8)) +checked expr : h3_unidirectional_edge_is_valid(CAST(0_u8 AS UInt64)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1473,7 +1473,7 @@ error: --> SQL:1:1 | 1 | h3_get_origin_index_from_unidirectional_edge(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_get_origin_index_from_unidirectional_edge(0)` in expr `h3_get_origin_index_from_unidirectional_edge(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_get_origin_index_from_unidirectional_edge(0)` in expr `h3_get_origin_index_from_unidirectional_edge(CAST(0 AS UInt64))` @@ -1511,7 +1511,7 @@ error: --> SQL:1:1 | 1 | h3_get_destination_index_from_unidirectional_edge(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_get_destination_index_from_unidirectional_edge(0)` in expr `h3_get_destination_index_from_unidirectional_edge(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_get_destination_index_from_unidirectional_edge(0)` in expr `h3_get_destination_index_from_unidirectional_edge(CAST(0 AS UInt64))` @@ -1549,7 +1549,7 @@ error: --> SQL:1:1 | 1 | h3_get_indexes_from_unidirectional_edge(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_get_indexes_from_unidirectional_edge(0)` in expr `h3_get_indexes_from_unidirectional_edge(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_get_indexes_from_unidirectional_edge(0)` in expr `h3_get_indexes_from_unidirectional_edge(CAST(0 AS UInt64))` @@ -1587,7 +1587,7 @@ error: --> SQL:1:1 | 1 | h3_get_unidirectional_edges_from_hexagon(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_unidirectional_edges_from_hexagon(0)` in expr `h3_get_unidirectional_edges_from_hexagon(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid cell index (got Some(0)): invalid index mode while evaluating function `h3_get_unidirectional_edges_from_hexagon(0)` in expr `h3_get_unidirectional_edges_from_hexagon(CAST(0 AS UInt64))` @@ -1625,7 +1625,7 @@ error: --> SQL:1:1 | 1 | h3_get_unidirectional_edge_boundary(0) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_get_unidirectional_edge_boundary(0)` in expr `h3_get_unidirectional_edge_boundary(to_uint64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid directed edge index (got Some(0)): invalid index mode while evaluating function `h3_get_unidirectional_edge_boundary(0)` in expr `h3_get_unidirectional_edge_boundary(CAST(0 AS UInt64))` diff --git a/src/query/functions/tests/it/scalars/testdata/geography.txt b/src/query/functions/tests/it/scalars/testdata/geography.txt index 203b54d5f20be..33de5c80c6cce 100644 --- a/src/query/functions/tests/it/scalars/testdata/geography.txt +++ b/src/query/functions/tests/it/scalars/testdata/geography.txt @@ -1,6 +1,6 @@ ast : st_makepoint(40.7127, -74.0059) raw expr : st_makepoint(40.7127, minus(74.0059)) -checked expr : st_makepoint(to_float64(40.7127_d128(6,4)), to_float64(minus(74.0059_d128(6,4)))) +checked expr : st_makepoint(CAST(40.7127_d128(6,4) AS Float64), CAST(minus(74.0059_d128(6,4)) AS Float64)) optimized expr : "POINT(40.7127 -74.0059)" output type : Geography output domain : Undefined diff --git a/src/query/functions/tests/it/scalars/testdata/geometry.txt b/src/query/functions/tests/it/scalars/testdata/geometry.txt index 582132490ea5a..bec7d813ab3d6 100644 --- a/src/query/functions/tests/it/scalars/testdata/geometry.txt +++ b/src/query/functions/tests/it/scalars/testdata/geometry.txt @@ -1,6 +1,6 @@ ast : haversine(40.7127, -74.0059, 34.0500, -118.2500) raw expr : haversine(40.7127, minus(74.0059), 34.0500, minus(118.2500)) -checked expr : haversine(to_float64(40.7127_d128(6,4)), to_float64(minus(74.0059_d128(6,4))), to_float64(34.0500_d128(6,4)), to_float64(minus(118.2500_d128(7,4)))) +checked expr : haversine(CAST(40.7127_d128(6,4) AS Float64), CAST(minus(74.0059_d128(6,4)) AS Float64), CAST(34.0500_d128(6,4) AS Float64), CAST(minus(118.2500_d128(7,4)) AS Float64)) optimized expr : 3936.390533556_f64 output type : Float64 output domain : {3936.390533556..=3936.390533556} @@ -207,7 +207,7 @@ output : 1.414213562 ast : st_geohash(to_geometry('POINT(-122.306100 37.554162)', 4326)) raw expr : st_geohash(to_geometry('POINT(-122.306100 37.554162)', 4326)) -checked expr : st_geohash(to_geometry("POINT(-122.306100 37.554162)", to_int32(4326_u16))) +checked expr : st_geohash(to_geometry("POINT(-122.306100 37.554162)", CAST(4326_u16 AS Int32))) optimized expr : "9q9j8ue2v71y" output type : String output domain : {"9q9j8ue2v71y"..="9q9j8ue2v71y"} @@ -333,7 +333,7 @@ output : 'LINESTRING(1 2,10.1 5.5,3.5 4.5,6.1 7.9)' ast : st_makegeompoint(7.0, 8.0) raw expr : st_makegeompoint(7.0, 8.0) -checked expr : st_makegeompoint(to_float64(7.0_d128(2,1)), to_float64(8.0_d128(2,1))) +checked expr : st_makegeompoint(CAST(7.0_d128(2,1) AS Float64), CAST(8.0_d128(2,1) AS Float64)) optimized expr : "POINT(7 8)" output type : Geometry output domain : Undefined @@ -342,7 +342,7 @@ output : 'POINT(7 8)' ast : st_makegeompoint(7.0, -8.0) raw expr : st_makegeompoint(7.0, minus(8.0)) -checked expr : st_makegeompoint(to_float64(7.0_d128(2,1)), to_float64(minus(8.0_d128(2,1)))) +checked expr : st_makegeompoint(CAST(7.0_d128(2,1) AS Float64), CAST(minus(8.0_d128(2,1)) AS Float64)) optimized expr : "POINT(7 -8)" output type : Geometry output domain : Undefined @@ -476,7 +476,7 @@ output : 8 ast : ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 1) raw expr : ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 1) -checked expr : st_pointn(to_geometry("LINESTRING(1 1, 2 2, 3 3, 4 4)"), to_int32(1_u8)) +checked expr : st_pointn(to_geometry("LINESTRING(1 1, 2 2, 3 3, 4 4)"), CAST(1_u8 AS Int32)) optimized expr : "POINT(1 1)" output type : Geometry NULL output domain : Undefined @@ -485,7 +485,7 @@ output : 'POINT(1 1)' ast : ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), -2) raw expr : ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), minus(2)) -checked expr : st_pointn(to_geometry("LINESTRING(1 1, 2 2, 3 3, 4 4)"), to_int32(minus(2_u8))) +checked expr : st_pointn(to_geometry("LINESTRING(1 1, 2 2, 3 3, 4 4)"), CAST(minus(2_u8) AS Int32)) optimized expr : "POINT(3 3)" output type : Geometry NULL output domain : Undefined @@ -494,7 +494,7 @@ output : 'POINT(3 3)' ast : st_setsrid(to_geometry('POINT(13 51)'), 4326) raw expr : st_setsrid(to_geometry('POINT(13 51)'), 4326) -checked expr : st_setsrid(to_geometry("POINT(13 51)"), to_int32(4326_u16)) +checked expr : st_setsrid(to_geometry("POINT(13 51)"), CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(13 51)" output type : Geometry output domain : Undefined @@ -503,7 +503,7 @@ output : 'SRID=4326;POINT(13 51)' ast : st_srid(to_geometry('POINT(-122.306100 37.554162)', 1234)) raw expr : st_srid(to_geometry('POINT(-122.306100 37.554162)', 1234)) -checked expr : st_srid(to_geometry("POINT(-122.306100 37.554162)", to_int32(1234_u16))) +checked expr : st_srid(to_geometry("POINT(-122.306100 37.554162)", CAST(1234_u16 AS Int32))) optimized expr : 1234_i32 output type : Int32 output domain : {1234..=1234} @@ -512,7 +512,7 @@ output : 1234 ast : st_srid(st_makegeompoint(37.5, 45.5)) raw expr : st_srid(st_makegeompoint(37.5, 45.5)) -checked expr : st_srid(st_makegeompoint(to_float64(37.5_d128(3,1)), to_float64(45.5_d128(3,1)))) +checked expr : st_srid(st_makegeompoint(CAST(37.5_d128(3,1) AS Float64), CAST(45.5_d128(3,1) AS Float64))) optimized expr : 4326_i32 output type : Int32 output domain : {4326..=4326} @@ -521,7 +521,7 @@ output : 4326 ast : st_srid(st_makegeompoint(NULL, NULL)) raw expr : st_srid(st_makegeompoint(NULL, NULL)) -checked expr : st_srid(st_makegeompoint(CAST(NULL AS Float64 NULL), CAST(NULL AS Float64 NULL))) +checked expr : st_srid(st_makegeompoint(CAST(NULL AS Float64 NULL), CAST(NULL AS Float64 NULL))) optimized expr : NULL output type : Int32 NULL output domain : {NULL} @@ -530,7 +530,7 @@ output : NULL ast : st_srid(NULL) raw expr : st_srid(NULL) -checked expr : st_srid(CAST(NULL AS Geometry NULL)) +checked expr : st_srid(CAST(NULL AS Geometry NULL)) optimized expr : NULL output type : Int32 NULL output domain : {NULL} @@ -548,7 +548,7 @@ output : 'POINT(1 1)' ast : st_x(st_makegeompoint(37.5, 45.5)) raw expr : st_x(st_makegeompoint(37.5, 45.5)) -checked expr : st_x(st_makegeompoint(to_float64(37.5_d128(3,1)), to_float64(45.5_d128(3,1)))) +checked expr : st_x(st_makegeompoint(CAST(37.5_d128(3,1) AS Float64), CAST(45.5_d128(3,1) AS Float64))) optimized expr : 37.5_f64 output type : Float64 output domain : {37.5..=37.5} @@ -557,7 +557,7 @@ output : 37.5 ast : st_x(st_makegeompoint(NULL, NULL)) raw expr : st_x(st_makegeompoint(NULL, NULL)) -checked expr : st_x(st_makegeompoint(CAST(NULL AS Float64 NULL), CAST(NULL AS Float64 NULL))) +checked expr : st_x(st_makegeompoint(CAST(NULL AS Float64 NULL), CAST(NULL AS Float64 NULL))) optimized expr : NULL output type : Float64 NULL output domain : {NULL} @@ -566,7 +566,7 @@ output : NULL ast : st_x(NULL) raw expr : st_x(NULL) -checked expr : st_x(CAST(NULL AS Geometry NULL)) +checked expr : st_x(CAST(NULL AS Geometry NULL)) optimized expr : NULL output type : Float64 NULL output domain : {NULL} @@ -575,7 +575,7 @@ output : NULL ast : st_y(st_makegeompoint(37.5, 45.5)) raw expr : st_y(st_makegeompoint(37.5, 45.5)) -checked expr : st_y(st_makegeompoint(to_float64(37.5_d128(3,1)), to_float64(45.5_d128(3,1)))) +checked expr : st_y(st_makegeompoint(CAST(37.5_d128(3,1) AS Float64), CAST(45.5_d128(3,1) AS Float64))) optimized expr : 45.5_f64 output type : Float64 output domain : {45.5..=45.5} @@ -584,7 +584,7 @@ output : 45.5 ast : st_y(st_makegeompoint(NULL, NULL)) raw expr : st_y(st_makegeompoint(NULL, NULL)) -checked expr : st_y(st_makegeompoint(CAST(NULL AS Float64 NULL), CAST(NULL AS Float64 NULL))) +checked expr : st_y(st_makegeompoint(CAST(NULL AS Float64 NULL), CAST(NULL AS Float64 NULL))) optimized expr : NULL output type : Float64 NULL output domain : {NULL} @@ -593,7 +593,7 @@ output : NULL ast : st_y(NULL) raw expr : st_y(NULL) -checked expr : st_y(CAST(NULL AS Geometry NULL)) +checked expr : st_y(CAST(NULL AS Geometry NULL)) optimized expr : NULL output type : Float64 NULL output domain : {NULL} @@ -620,7 +620,7 @@ output : 'SRID=4326;POINT(1820.12 890.56)' ast : to_geometry('POINT(1820.12 890.56)', 4326) raw expr : to_geometry('POINT(1820.12 890.56)', 4326) -checked expr : to_geometry("POINT(1820.12 890.56)", to_int32(4326_u16)) +checked expr : to_geometry("POINT(1820.12 890.56)", CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(1820.12 890.56)" output type : Geometry output domain : Undefined @@ -638,7 +638,7 @@ output : 'SRID=32633;POINT(389866.35 5819003.03)' ast : to_geometry('0101000020797f000066666666a9cb17411f85ebc19e325641', 4326) raw expr : to_geometry('0101000020797f000066666666a9cb17411f85ebc19e325641', 4326) -checked expr : to_geometry("0101000020797f000066666666a9cb17411f85ebc19e325641", to_int32(4326_u16)) +checked expr : to_geometry("0101000020797f000066666666a9cb17411f85ebc19e325641", CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(389866.35 5819003.03)" output type : Geometry output domain : Undefined @@ -656,7 +656,7 @@ output : 'SRID=32633;POINT(389866.35 5819003.03)' ast : to_geometry(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'), 4326) raw expr : to_geometry(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'), 4326) -checked expr : to_geometry(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641"), to_int32(4326_u16)) +checked expr : to_geometry(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641"), CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(389866.35 5819003.03)" output type : Geometry output domain : Undefined @@ -674,7 +674,7 @@ output : 'LINESTRING(389866 5819003,390000 5830000)' ast : to_geometry('{"coordinates":[[389866,5819003],[390000,5830000]],"type":"LineString"}', 4326) raw expr : to_geometry('{"coordinates":[[389866,5819003],[390000,5830000]],"type":"LineString"}', 4326) -checked expr : to_geometry("{\"coordinates\":[[389866,5819003],[390000,5830000]],\"type\":\"LineString\"}", to_int32(4326_u16)) +checked expr : to_geometry("{\"coordinates\":[[389866,5819003],[390000,5830000]],\"type\":\"LineString\"}", CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;LINESTRING(389866 5819003,390000 5830000)" output type : Geometry output domain : Undefined @@ -683,7 +683,7 @@ output : 'SRID=4326;LINESTRING(389866 5819003,390000 5830000)' ast : to_string(st_makegeompoint(7.0, -8.0)) raw expr : to_string(st_makegeompoint(7.0, minus(8.0))) -checked expr : to_string(st_makegeompoint(to_float64(7.0_d128(2,1)), to_float64(minus(8.0_d128(2,1))))) +checked expr : to_string(st_makegeompoint(CAST(7.0_d128(2,1) AS Float64), CAST(minus(8.0_d128(2,1)) AS Float64))) optimized expr : "POINT(7 -8)" output type : String output domain : {"POINT(7 -8)"..="POINT(7 -8)"} @@ -715,7 +715,7 @@ evaluation (internal): ast : try_to_geometry(NULL) raw expr : try_to_geometry(NULL) -checked expr : try_to_geometry(CAST(NULL AS Variant NULL)) +checked expr : try_to_geometry(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Geometry NULL output domain : {NULL} @@ -751,7 +751,7 @@ output : 'SRID=4326;POINT(1820.12 890.56)' ast : try_to_geometry('POINT(1820.12 890.56)', 4326) raw expr : try_to_geometry('POINT(1820.12 890.56)', 4326) -checked expr : try_to_geometry("POINT(1820.12 890.56)", to_int32(4326_u16)) +checked expr : try_to_geometry("POINT(1820.12 890.56)", CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(1820.12 890.56)" output type : Geometry NULL output domain : Undefined @@ -769,7 +769,7 @@ output : 'SRID=32633;POINT(389866.35 5819003.03)' ast : try_to_geometry('0101000020797f000066666666a9cb17411f85ebc19e325641', 4326) raw expr : try_to_geometry('0101000020797f000066666666a9cb17411f85ebc19e325641', 4326) -checked expr : try_to_geometry("0101000020797f000066666666a9cb17411f85ebc19e325641", to_int32(4326_u16)) +checked expr : try_to_geometry("0101000020797f000066666666a9cb17411f85ebc19e325641", CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(389866.35 5819003.03)" output type : Geometry NULL output domain : Undefined @@ -787,7 +787,7 @@ output : 'SRID=32633;POINT(389866.35 5819003.03)' ast : try_to_geometry(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'), 4326) raw expr : try_to_geometry(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'), 4326) -checked expr : try_to_geometry(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641"), to_int32(4326_u16)) +checked expr : try_to_geometry(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641"), CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(389866.35 5819003.03)" output type : Geometry NULL output domain : Undefined @@ -805,7 +805,7 @@ output : 'LINESTRING(389866 5819003,390000 5830000)' ast : try_to_geometry('{"coordinates":[[389866,5819003],[390000,5830000]],"type":"LineString"}', 4326) raw expr : try_to_geometry('{"coordinates":[[389866,5819003],[390000,5830000]],"type":"LineString"}', 4326) -checked expr : try_to_geometry("{\"coordinates\":[[389866,5819003],[390000,5830000]],\"type\":\"LineString\"}", to_int32(4326_u16)) +checked expr : try_to_geometry("{\"coordinates\":[[389866,5819003],[390000,5830000]],\"type\":\"LineString\"}", CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;LINESTRING(389866 5819003,390000 5830000)" output type : Geometry NULL output domain : Undefined @@ -832,7 +832,7 @@ output : 'SRID=4326;POINT(1820.12 890.56)' ast : try_to_geometry('POINT(1820.12 890.56)', 4326) raw expr : try_to_geometry('POINT(1820.12 890.56)', 4326) -checked expr : try_to_geometry("POINT(1820.12 890.56)", to_int32(4326_u16)) +checked expr : try_to_geometry("POINT(1820.12 890.56)", CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(1820.12 890.56)" output type : Geometry NULL output domain : Undefined @@ -841,7 +841,7 @@ output : 'SRID=4326;POINT(1820.12 890.56)' ast : try_to_geometry('1234', 4326) raw expr : try_to_geometry('1234', 4326) -checked expr : try_to_geometry("1234", to_int32(4326_u16)) +checked expr : try_to_geometry("1234", CAST(4326_u16 AS Int32)) optimized expr : NULL output type : Geometry NULL output domain : {NULL} @@ -859,7 +859,7 @@ output : NULL ast : try_to_geometry(unhex('3210'), 4326) raw expr : try_to_geometry(unhex('3210'), 4326) -checked expr : try_to_geometry(from_hex("3210"), to_int32(4326_u16)) +checked expr : try_to_geometry(from_hex("3210"), CAST(4326_u16 AS Int32)) optimized expr : NULL output type : Geometry NULL output domain : {NULL} @@ -877,7 +877,7 @@ output : 'LINESTRING EMPTY' ast : try_to_geometry('{}', 4326) raw expr : try_to_geometry('{}', 4326) -checked expr : try_to_geometry("{}", to_int32(4326_u16)) +checked expr : try_to_geometry("{}", CAST(4326_u16 AS Int32)) optimized expr : NULL output type : Geometry NULL output domain : {NULL} @@ -904,7 +904,7 @@ output : 'SRID=32633;POINT(389866.35 5819003.03)' ast : st_geometryfromwkb('0101000020797f000066666666a9cb17411f85ebc19e325641', 4326) raw expr : st_geometryfromwkb('0101000020797f000066666666a9cb17411f85ebc19e325641', 4326) -checked expr : st_geometryfromwkb("0101000020797f000066666666a9cb17411f85ebc19e325641", to_int32(4326_u16)) +checked expr : st_geometryfromwkb("0101000020797f000066666666a9cb17411f85ebc19e325641", CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(389866.35 5819003.03)" output type : Geometry output domain : Undefined @@ -913,7 +913,7 @@ output : 'SRID=4326;POINT(389866.35 5819003.03)' ast : st_geometryfromwkb(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'), 4326) raw expr : st_geometryfromwkb(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'), 4326) -checked expr : st_geometryfromwkb(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641"), to_int32(4326_u16)) +checked expr : st_geometryfromwkb(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641"), CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(389866.35 5819003.03)" output type : Geometry output domain : Undefined @@ -978,7 +978,7 @@ evaluation (internal): ast : st_geometryfromwkt('POINT(389866.35 5819003.03)', 32633) raw expr : st_geometryfromwkt('POINT(389866.35 5819003.03)', 32633) -checked expr : st_geometryfromwkt("POINT(389866.35 5819003.03)", to_int32(32633_u16)) +checked expr : st_geometryfromwkt("POINT(389866.35 5819003.03)", CAST(32633_u16 AS Int32)) optimized expr : "SRID=32633;POINT(389866.35 5819003.03)" output type : Geometry output domain : Undefined @@ -1191,7 +1191,7 @@ output : 10 ast : st_transform(st_geomfromwkt('POINT(389866.35 5819003.03)', 32633), 3857) raw expr : st_transform(st_geomfromwkt('POINT(389866.35 5819003.03)', 32633), 3857) -checked expr : st_transform(st_geometryfromwkt("POINT(389866.35 5819003.03)", to_int32(32633_u16)), to_int32(3857_u16)) +checked expr : st_transform(st_geometryfromwkt("POINT(389866.35 5819003.03)", CAST(32633_u16 AS Int32)), CAST(3857_u16 AS Int32)) optimized expr : "SRID=3857;POINT(1489140.093766 6892872.19868)" output type : Geometry output domain : Undefined @@ -1223,7 +1223,7 @@ evaluation (internal): ast : st_transform(st_geomfromwkt('POINT(4.500212 52.161170)'), 4326, 28992) raw expr : st_transform(st_geomfromwkt('POINT(4.500212 52.161170)'), 4326, 28992) -checked expr : st_transform(st_geometryfromwkt("POINT(4.500212 52.161170)"), to_int32(4326_u16), to_int32(28992_u16)) +checked expr : st_transform(st_geometryfromwkt("POINT(4.500212 52.161170)"), CAST(4326_u16 AS Int32), CAST(28992_u16 AS Int32)) optimized expr : "SRID=28992;POINT(94308.670475 464038.168827)" output type : Geometry output domain : Undefined diff --git a/src/query/functions/tests/it/scalars/testdata/hash.txt b/src/query/functions/tests/it/scalars/testdata/hash.txt index 3b6671701ef54..baba332aa8eb5 100644 --- a/src/query/functions/tests/it/scalars/testdata/hash.txt +++ b/src/query/functions/tests/it/scalars/testdata/hash.txt @@ -9,7 +9,7 @@ output : '35593b7ce5020eae3ca68fd5b6f3e031' ast : md5(NULL) raw expr : md5(NULL) -checked expr : md5(CAST(NULL AS String NULL)) +checked expr : md5(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -49,7 +49,7 @@ output : '915858afa2278f25527f192038108346164b47f2' ast : sha(NULL) raw expr : sha(NULL) -checked expr : sha(CAST(NULL AS String NULL)) +checked expr : sha(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -89,7 +89,7 @@ output : '1f7aa3978949c4275797ac6056c0108e852a5d07c49838a00799194957b821 ast : blake3(NULL) raw expr : blake3(NULL) -checked expr : blake3(CAST(NULL AS String NULL)) +checked expr : blake3(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -120,7 +120,7 @@ evaluation (internal): ast : sha2('Abc',0) raw expr : sha2('Abc', 0) -checked expr : sha2("Abc", to_uint64(0_u8)) +checked expr : sha2("Abc", CAST(0_u8 AS UInt64)) optimized expr : "06d90109c8cce34ec0c776950465421e176f08b831a938b3c6e76cb7bee8790b" output type : String output domain : {"06d90109c8cce34ec0c776950465421e176f08b831a938b3c6e76cb7bee8790b"..="06d90109c8cce34ec0c776950465421e176f08b831a938b3c6e76cb7bee8790b"} @@ -129,7 +129,7 @@ output : '06d90109c8cce34ec0c776950465421e176f08b831a938b3c6e76cb7bee879 ast : sha2('Abc',256) raw expr : sha2('Abc', 256) -checked expr : sha2("Abc", to_uint64(256_u16)) +checked expr : sha2("Abc", CAST(256_u16 AS UInt64)) optimized expr : "06d90109c8cce34ec0c776950465421e176f08b831a938b3c6e76cb7bee8790b" output type : String output domain : {"06d90109c8cce34ec0c776950465421e176f08b831a938b3c6e76cb7bee8790b"..="06d90109c8cce34ec0c776950465421e176f08b831a938b3c6e76cb7bee8790b"} @@ -138,7 +138,7 @@ output : '06d90109c8cce34ec0c776950465421e176f08b831a938b3c6e76cb7bee879 ast : sha2(NULL,0) raw expr : sha2(NULL, 0) -checked expr : sha2(CAST(NULL AS String NULL), CAST(0_u8 AS UInt64 NULL)) +checked expr : sha2(CAST(NULL AS String NULL), CAST(0_u8 AS UInt64 NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -147,7 +147,7 @@ output : NULL ast : sha2(a,b) raw expr : sha2(a::String, b::UInt16) -checked expr : sha2(a, to_uint64(b)) +checked expr : sha2(a, CAST(b AS UInt64)) evaluation: +--------+-------------------+-------------+------------------------------------------------------------------------------------------------------------------------------------+ | | a | b | Output | @@ -188,7 +188,7 @@ output : 10246934130793054423 ast : city64withseed('Abc',256.3) raw expr : city64withseed('Abc', 256.3) -checked expr : city64withseed("Abc", to_float64(256.3_d128(4,1))) +checked expr : city64withseed("Abc", CAST(256.3_d128(4,1) AS Float64)) optimized expr : 10246934130793054423_u64 output type : UInt64 output domain : {10246934130793054423..=10246934130793054423} @@ -197,7 +197,7 @@ output : 10246934130793054423 ast : city64withseed(to_datetime(100000), 1234) raw expr : city64withseed(to_datetime(100000), 1234) -checked expr : city64withseed(to_timestamp(to_int64(100000_u32)), 1234_u16) +checked expr : city64withseed(to_timestamp(CAST(100000_u32 AS Int64)), 1234_u16) optimized expr : 4538088127563444061_u64 output type : UInt64 output domain : {4538088127563444061..=4538088127563444061} @@ -215,7 +215,7 @@ output : 2939704650099116301 ast : city64withseed(1.1, 12) raw expr : city64withseed(1.1, 12) -checked expr : city64withseed(to_float64(1.1_d128(2,1)), 12_u8) +checked expr : city64withseed(CAST(1.1_d128(2,1) AS Float64), 12_u8) optimized expr : 10046394896202388363_u64 output type : UInt64 output domain : {10046394896202388363..=10046394896202388363} @@ -224,7 +224,7 @@ output : 10046394896202388363 ast : city64withseed('1234567890', 12.12) raw expr : city64withseed('1234567890', 12.12) -checked expr : city64withseed("1234567890", to_float64(12.12_d128(4,2))) +checked expr : city64withseed("1234567890", CAST(12.12_d128(4,2) AS Float64)) optimized expr : 10660895976650300430_u64 output type : UInt64 output domain : {10660895976650300430..=10660895976650300430} @@ -233,7 +233,7 @@ output : 10660895976650300430 ast : city64withseed(1234567890, 12.12) raw expr : city64withseed(1234567890, 12.12) -checked expr : city64withseed(1234567890_u32, to_float64(12.12_d128(4,2))) +checked expr : city64withseed(1234567890_u32, CAST(12.12_d128(4,2) AS Float64)) optimized expr : 2939704650099116301_u64 output type : UInt64 output domain : {2939704650099116301..=2939704650099116301} @@ -242,7 +242,7 @@ output : 2939704650099116301 ast : city64withseed(to_date(100000), 1234) raw expr : city64withseed(to_date(100000), 1234) -checked expr : city64withseed(to_date(to_int64(100000_u32)), 1234_u16) +checked expr : city64withseed(to_date(CAST(100000_u32 AS Int64)), 1234_u16) optimized expr : 8535774936754559738_u64 output type : UInt64 output domain : {8535774936754559738..=8535774936754559738} @@ -251,7 +251,7 @@ output : 8535774936754559738 ast : city64withseed(NULL,0) raw expr : city64withseed(NULL, 0) -checked expr : city64withseed(CAST(NULL AS Variant NULL), CAST(0_u8 AS UInt8 NULL)) +checked expr : city64withseed(CAST(NULL AS Variant NULL), CAST(0_u8 AS UInt8 NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -292,7 +292,7 @@ output : 17684958587550623602 ast : siphash64(to_datetime(100000)) raw expr : siphash64(to_datetime(100000)) -checked expr : siphash64(to_timestamp(to_int64(100000_u32))) +checked expr : siphash64(to_timestamp(CAST(100000_u32 AS Int64))) optimized expr : 6710305768027137259_u64 output type : UInt64 output domain : {6710305768027137259..=6710305768027137259} @@ -310,7 +310,7 @@ output : 12447382539015599056 ast : siphash64([1, 2, 3, null]) raw expr : siphash64(array(1, 2, 3, NULL)) -checked expr : siphash64(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) +checked expr : siphash64(array(CAST(1_u8 AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(3_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))) optimized expr : 15130871412783076140_u64 output type : UInt64 output domain : {15130871412783076140..=15130871412783076140} @@ -319,7 +319,7 @@ output : 15130871412783076140 ast : siphash64(['ab', 'cd', null, 'ef']) raw expr : siphash64(array('ab', 'cd', NULL, 'ef')) -checked expr : siphash64(array(CAST("ab" AS String NULL), CAST("cd" AS String NULL), CAST(NULL AS String NULL), CAST("ef" AS String NULL))) +checked expr : siphash64(array(CAST("ab" AS String NULL), CAST("cd" AS String NULL), CAST(NULL AS String NULL), CAST("ef" AS String NULL))) optimized expr : 15130871412783076140_u64 output type : UInt64 output domain : {15130871412783076140..=15130871412783076140} @@ -328,7 +328,7 @@ output : 15130871412783076140 ast : siphash64(1.1) raw expr : siphash64(1.1) -checked expr : siphash64(to_float64(1.1_d128(2,1))) +checked expr : siphash64(CAST(1.1_d128(2,1) AS Float64)) optimized expr : 14856193058643670405_u64 output type : UInt64 output domain : {14856193058643670405..=14856193058643670405} @@ -337,7 +337,7 @@ output : 14856193058643670405 ast : siphash64(to_date(100000)) raw expr : siphash64(to_date(100000)) -checked expr : siphash64(to_date(to_int64(100000_u32))) +checked expr : siphash64(to_date(CAST(100000_u32 AS Int64))) optimized expr : 17230848539826186862_u64 output type : UInt64 output domain : {17230848539826186862..=17230848539826186862} @@ -346,7 +346,7 @@ output : 17230848539826186862 ast : siphash64(NULL) raw expr : siphash64(NULL) -checked expr : siphash64(CAST(NULL AS Variant NULL)) +checked expr : siphash64(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -403,7 +403,7 @@ output : 11989503812394966078 ast : xxhash64(to_datetime(100000)) raw expr : xxhash64(to_datetime(100000)) -checked expr : xxhash64(to_timestamp(to_int64(100000_u32))) +checked expr : xxhash64(to_timestamp(CAST(100000_u32 AS Int64))) optimized expr : 14455582462593060490_u64 output type : UInt64 output domain : {14455582462593060490..=14455582462593060490} @@ -421,7 +421,7 @@ output : 14922725725041217620 ast : xxhash64(1.1) raw expr : xxhash64(1.1) -checked expr : xxhash64(to_float64(1.1_d128(2,1))) +checked expr : xxhash64(CAST(1.1_d128(2,1) AS Float64)) optimized expr : 18307966283998289030_u64 output type : UInt64 output domain : {18307966283998289030..=18307966283998289030} @@ -430,7 +430,7 @@ output : 18307966283998289030 ast : xxhash64(to_date(100000)) raw expr : xxhash64(to_date(100000)) -checked expr : xxhash64(to_date(to_int64(100000_u32))) +checked expr : xxhash64(to_date(CAST(100000_u32 AS Int64))) optimized expr : 8691527656253933431_u64 output type : UInt64 output domain : {8691527656253933431..=8691527656253933431} @@ -439,7 +439,7 @@ output : 8691527656253933431 ast : xxhash64(NULL) raw expr : xxhash64(NULL) -checked expr : xxhash64(CAST(NULL AS Variant NULL)) +checked expr : xxhash64(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -496,7 +496,7 @@ output : 3980406955 ast : xxhash32(to_datetime(100000)) raw expr : xxhash32(to_datetime(100000)) -checked expr : xxhash32(to_timestamp(to_int64(100000_u32))) +checked expr : xxhash32(to_timestamp(CAST(100000_u32 AS Int64))) optimized expr : 680734338_u32 output type : UInt32 output domain : {680734338..=680734338} @@ -514,7 +514,7 @@ output : 2833116583 ast : xxhash32(1.1) raw expr : xxhash32(1.1) -checked expr : xxhash32(to_float64(1.1_d128(2,1))) +checked expr : xxhash32(CAST(1.1_d128(2,1) AS Float64)) optimized expr : 3252916525_u32 output type : UInt32 output domain : {3252916525..=3252916525} @@ -523,7 +523,7 @@ output : 3252916525 ast : xxhash32(to_date(100000)) raw expr : xxhash32(to_date(100000)) -checked expr : xxhash32(to_date(to_int64(100000_u32))) +checked expr : xxhash32(to_date(CAST(100000_u32 AS Int64))) optimized expr : 2518126785_u32 output type : UInt32 output domain : {2518126785..=2518126785} @@ -532,7 +532,7 @@ output : 2518126785 ast : xxhash32(NULL) raw expr : xxhash32(NULL) -checked expr : xxhash32(CAST(NULL AS Variant NULL)) +checked expr : xxhash32(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : UInt32 NULL output domain : {NULL} diff --git a/src/query/functions/tests/it/scalars/testdata/map.txt b/src/query/functions/tests/it/scalars/testdata/map.txt index 9373f36bdd419..ffde6d967d3bf 100644 --- a/src/query/functions/tests/it/scalars/testdata/map.txt +++ b/src/query/functions/tests/it/scalars/testdata/map.txt @@ -108,7 +108,7 @@ evaluation (internal): ast : map([],[])[1] raw expr : get(map(array(), array()), 1) -checked expr : get(CAST(map(array<>(), array<>()) AS Map(Nothing) NULL), CAST(1_u8 AS UInt8 NULL)) +checked expr : get(CAST(map(array<>(), array<>()) AS Map(Nothing) NULL), CAST(1_u8 AS UInt8 NULL)) optimized expr : NULL output type : NULL output domain : {NULL} @@ -117,7 +117,7 @@ output : NULL ast : map([1,2],['a','b'])[1] raw expr : get(map(array(1, 2), array('a', 'b')), 1) -checked expr : get(CAST(map(array(1_u8, 2_u8), array("a", "b")) AS Map(UInt8, String NULL)), 1_u8) +checked expr : get(CAST(map(array(1_u8, 2_u8), array("a", "b")) AS Map(UInt8, String NULL)), 1_u8) optimized expr : "a" output type : String NULL output domain : {"a"..="a"} @@ -126,7 +126,7 @@ output : 'a' ast : map([1,2],['a','b'])[10] raw expr : get(map(array(1, 2), array('a', 'b')), 10) -checked expr : get(CAST(map(array(1_u8, 2_u8), array("a", "b")) AS Map(UInt8, String NULL)), 10_u8) +checked expr : get(CAST(map(array(1_u8, 2_u8), array("a", "b")) AS Map(UInt8, String NULL)), 10_u8) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -135,7 +135,7 @@ output : NULL ast : map(['a','b'],[1,2])['a'] raw expr : get(map(array('a', 'b'), array(1, 2)), 'a') -checked expr : get(CAST(map(array("a", "b"), array(1_u8, 2_u8)) AS Map(String, UInt8 NULL)), "a") +checked expr : get(CAST(map(array("a", "b"), array(1_u8, 2_u8)) AS Map(String, UInt8 NULL)), "a") optimized expr : 1_u8 output type : UInt8 NULL output domain : {1..=1} @@ -144,7 +144,7 @@ output : 1 ast : map(['a','b'],[1,2])['x'] raw expr : get(map(array('a', 'b'), array(1, 2)), 'x') -checked expr : get(CAST(map(array("a", "b"), array(1_u8, 2_u8)) AS Map(String, UInt8 NULL)), "x") +checked expr : get(CAST(map(array("a", "b"), array(1_u8, 2_u8)) AS Map(String, UInt8 NULL)), "x") optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -153,7 +153,7 @@ output : NULL ast : {}['k'] raw expr : get(map(array(), array()), 'k') -checked expr : get(CAST(map(array<>(), array<>()) AS Map(Nothing) NULL), CAST("k" AS String NULL)) +checked expr : get(CAST(map(array<>(), array<>()) AS Map(Nothing) NULL), CAST("k" AS String NULL)) optimized expr : NULL output type : NULL output domain : {NULL} @@ -162,7 +162,7 @@ output : NULL ast : {1:NULL}[1] raw expr : get(map(array(1), array(NULL)), 1) -checked expr : get(CAST(map(array(1_u8), array(NULL)) AS Map(UInt8, NULL) NULL), CAST(1_u8 AS UInt8 NULL)) +checked expr : get(CAST(map(array(1_u8), array(NULL)) AS Map(UInt8, NULL) NULL), CAST(1_u8 AS UInt8 NULL)) optimized expr : NULL output type : NULL output domain : {NULL} @@ -171,7 +171,7 @@ output : NULL ast : {'k1':'v1','k2':'v2'}['k1'] raw expr : get(map(array('k1', 'k2'), array('v1', 'v2')), 'k1') -checked expr : get(CAST(map(array("k1", "k2"), array("v1", "v2")) AS Map(String, String NULL)), "k1") +checked expr : get(CAST(map(array("k1", "k2"), array("v1", "v2")) AS Map(String, String NULL)), "k1") optimized expr : "v1" output type : String NULL output domain : {"v1"..="v1"} @@ -180,7 +180,7 @@ output : 'v1' ast : {'k1':'v1','k2':'v2'}['k3'] raw expr : get(map(array('k1', 'k2'), array('v1', 'v2')), 'k3') -checked expr : get(CAST(map(array("k1", "k2"), array("v1", "v2")) AS Map(String, String NULL)), "k3") +checked expr : get(CAST(map(array("k1", "k2"), array("v1", "v2")) AS Map(String, String NULL)), "k3") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -189,8 +189,8 @@ output : NULL ast : map([k1,k2],[v1,v2])[1] raw expr : get(map(array(k1::Int16, k2::Int16), array(v1::String, v2::String)), 1) -checked expr : get(CAST(map(array(k1, k2), array(v1, v2)) AS Map(Int16, String NULL)), to_int16(1_u8)) -optimized expr : get(CAST(map(array(k1, k2), array(v1, v2)) AS Map(Int16, String NULL)), 1_i16) +checked expr : get(CAST(map(array(k1, k2), array(v1, v2)) AS Map(Int16, String NULL)), CAST(1_u8 AS Int16)) +optimized expr : get(CAST(map(array(k1, k2), array(v1, v2)) AS Map(Int16, String NULL)), 1_i16) evaluation: +--------+---------+---------+---------------+---------------+-------------+ | | k1 | k2 | v1 | v2 | Output | @@ -241,7 +241,7 @@ output : [1, 2, 3] ast : map_keys({'a':NULL,'b':2,'c':NULL}) raw expr : map_keys(map(array('a', 'b', 'c'), array(NULL, 2, NULL))) -checked expr : map_keys(map(array("a", "b", "c"), array(CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)))) +checked expr : map_keys(map(array("a", "b", "c"), array(CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)))) optimized expr : ['a', 'b', 'c'] output type : Array(String) output domain : [{"a"..="c"}] @@ -313,7 +313,7 @@ output : ['a', 'b', 'c'] ast : map_values({'a':NULL,'b':2,'c':NULL}) raw expr : map_values(map(array('a', 'b', 'c'), array(NULL, 2, NULL))) -checked expr : map_values(map(array("a", "b", "c"), array(CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)))) +checked expr : map_values(map(array("a", "b", "c"), array(CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)))) optimized expr : [NULL, 2, NULL] output type : Array(UInt8 NULL) output domain : [{2..=2} ∪ {NULL}] @@ -367,7 +367,7 @@ output : 3 ast : map_size({'a':NULL,'b':2,'c':NULL}) raw expr : map_size(map(array('a', 'b', 'c'), array(NULL, 2, NULL))) -checked expr : map_size(map(array("a", "b", "c"), array(CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)))) +checked expr : map_size(map(array("a", "b", "c"), array(CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)))) optimized expr : 3_u64 output type : UInt64 output domain : {3..=3} @@ -412,7 +412,7 @@ output : {} ast : map_cat({}, {'k1': 'v1'}) raw expr : map_cat(map(array(), array()), map(array('k1'), array('v1'))) -checked expr : map_cat(CAST(map(array<>(), array<>()) AS Map(String, String)), map(array("k1"), array("v1"))) +checked expr : map_cat(CAST(map(array<>(), array<>()) AS Map(String, String)), map(array("k1"), array("v1"))) optimized expr : {"k1":"v1"} output type : Map(String, String) output domain : {[{"k1"..="k1"}], [{"v1"..="v1"}]} @@ -421,7 +421,7 @@ output : {'k1':'v1'} ast : map_cat({'k1': 'v1'}, {}) raw expr : map_cat(map(array('k1'), array('v1')), map(array(), array())) -checked expr : map_cat(map(array("k1"), array("v1")), CAST(map(array<>(), array<>()) AS Map(String, String))) +checked expr : map_cat(map(array("k1"), array("v1")), CAST(map(array<>(), array<>()) AS Map(String, String))) optimized expr : {"k1":"v1"} output type : Map(String, String) output domain : {[{"k1"..="k1"}], [{"v1"..="v1"}]} @@ -511,7 +511,7 @@ output : {'k1':'v1', 'k2':'v2', 'k3':'v3'} ast : map_cat({'k1': 'v1', 'k2': NULL}, {'k2': 'v2', 'k3': NULL}) raw expr : map_cat(map(array('k1', 'k2'), array('v1', NULL)), map(array('k2', 'k3'), array('v2', NULL))) -checked expr : map_cat(map(array("k1", "k2"), array(CAST("v1" AS String NULL), CAST(NULL AS String NULL))), map(array("k2", "k3"), array(CAST("v2" AS String NULL), CAST(NULL AS String NULL)))) +checked expr : map_cat(map(array("k1", "k2"), array(CAST("v1" AS String NULL), CAST(NULL AS String NULL))), map(array("k2", "k3"), array(CAST("v2" AS String NULL), CAST(NULL AS String NULL)))) optimized expr : {"k1":"v1", "k2":"v2", "k3":NULL} output type : Map(String, String NULL) output domain : {[{"k1"..="k3"}], [{"v1"..="v2"} ∪ {NULL}]} @@ -732,7 +732,7 @@ output : false ast : map_contains_key({'a':NULL,'b':2,'c':NULL}, 'a') raw expr : map_contains_key(map(array('a', 'b', 'c'), array(NULL, 2, NULL)), 'a') -checked expr : map_contains_key(map(array("a", "b", "c"), array(CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))), "a") +checked expr : map_contains_key(map(array("a", "b", "c"), array(CAST(NULL AS UInt8 NULL), CAST(2_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL))), "a") optimized expr : true output type : Boolean output domain : {TRUE} @@ -876,7 +876,7 @@ evaluation (internal): ast : map_insert({}, 'k1', 'v1') raw expr : map_insert(map(array(), array()), 'k1', 'v1') -checked expr : map_insert(CAST(map(array<>(), array<>()) AS Map(String, String) NULL), "k1", "v1") +checked expr : map_insert(CAST(map(array<>(), array<>()) AS Map(String, String) NULL), "k1", "v1") optimized expr : {"k1":"v1"} output type : Map(String, String) output domain : {[{"k1"..="k1"}], [{"v1"..="v1"}]} @@ -885,7 +885,7 @@ output : {'k1':'v1'} ast : map_insert({'k1': 'v1'}, 'k2', 'v2') raw expr : map_insert(map(array('k1'), array('v1')), 'k2', 'v2') -checked expr : map_insert(CAST(map(array("k1"), array("v1")) AS Map(String, String) NULL), "k2", "v2") +checked expr : map_insert(CAST(map(array("k1"), array("v1")) AS Map(String, String) NULL), "k2", "v2") optimized expr : {"k1":"v1", "k2":"v2"} output type : Map(String, String) output domain : {[{"k1"..="k2"}], [{"v1"..="v2"}]} @@ -902,7 +902,7 @@ error: ast : map_insert({'k1': 'v1', 'k2': 'v2'}, 'k1', 'v10', true) raw expr : map_insert(map(array('k1', 'k2'), array('v1', 'v2')), 'k1', 'v10', true) -checked expr : map_insert(CAST(map(array("k1", "k2"), array("v1", "v2")) AS Map(String, String) NULL), "k1", "v10", true) +checked expr : map_insert(CAST(map(array("k1", "k2"), array("v1", "v2")) AS Map(String, String) NULL), "k1", "v10", true) optimized expr : {"k1":"v10", "k2":"v2"} output type : Map(String, String) output domain : {[{"k1"..="k2"}], [{"v10"..="v2"}]} @@ -911,8 +911,8 @@ output : {'k1':'v10', 'k2':'v2'} ast : map_insert(map([a_col, b_col, c_col], [d_col, e_col, f_col]), 'k1', 'v10') raw expr : map_insert(map(array(a_col::String, b_col::String, c_col::String), array(d_col::String NULL, e_col::String NULL, f_col::String NULL)), 'k1', 'v10') -checked expr : map_insert(CAST(map(array(a_col, b_col, c_col), array(d_col, e_col, f_col)) AS Map(String, String NULL) NULL), "k1", CAST("v10" AS String NULL)) -optimized expr : map_insert(CAST(map(array(a_col, b_col, c_col), array(d_col, e_col, f_col)) AS Map(String, String NULL) NULL), "k1", "v10") +checked expr : map_insert(CAST(map(array(a_col, b_col, c_col), array(d_col, e_col, f_col)) AS Map(String, String NULL) NULL), "k1", CAST("v10" AS String NULL)) +optimized expr : map_insert(CAST(map(array(a_col, b_col, c_col), array(d_col, e_col, f_col)) AS Map(String, String NULL) NULL), "k1", "v10") evaluation: +--------+-------------+-------------+-------------+---------------+------------------------+------------------------+--------------------------------------------+ | | a_col | b_col | c_col | d_col | e_col | f_col | Output | @@ -939,8 +939,8 @@ evaluation (internal): ast : map_insert(map([a_col, b_col, c_col], [d_col, e_col, f_col]), 'a', 'v10', true) raw expr : map_insert(map(array(a_col::String, b_col::String, c_col::String), array(d_col::String NULL, e_col::String NULL, f_col::String NULL)), 'a', 'v10', true) -checked expr : map_insert(CAST(map(array(a_col, b_col, c_col), array(d_col, e_col, f_col)) AS Map(String, String NULL) NULL), "a", CAST("v10" AS String NULL), true) -optimized expr : map_insert(CAST(map(array(a_col, b_col, c_col), array(d_col, e_col, f_col)) AS Map(String, String NULL) NULL), "a", "v10", true) +checked expr : map_insert(CAST(map(array(a_col, b_col, c_col), array(d_col, e_col, f_col)) AS Map(String, String NULL) NULL), "a", CAST("v10" AS String NULL), true) +optimized expr : map_insert(CAST(map(array(a_col, b_col, c_col), array(d_col, e_col, f_col)) AS Map(String, String NULL) NULL), "a", "v10", true) evaluation: +--------+-------------+-------------+-------------+---------------+------------------------+------------------------+-------------------------------------------+ | | a_col | b_col | c_col | d_col | e_col | f_col | Output | diff --git a/src/query/functions/tests/it/scalars/testdata/math.txt b/src/query/functions/tests/it/scalars/testdata/math.txt index 53763c82f1add..6fa477fed7be7 100644 --- a/src/query/functions/tests/it/scalars/testdata/math.txt +++ b/src/query/functions/tests/it/scalars/testdata/math.txt @@ -1,6 +1,6 @@ ast : abs(1) raw expr : abs(1) -checked expr : abs(to_uint64(1_u8)) +checked expr : abs(CAST(1_u8 AS UInt64)) optimized expr : 1_u64 output type : UInt64 output domain : {1..=1} @@ -18,7 +18,7 @@ output : 2.3434 ast : abs(-1) raw expr : abs(minus(1)) -checked expr : abs(to_int64(minus(1_u8))) +checked expr : abs(CAST(minus(1_u8) AS Int64)) optimized expr : 1_u64 output type : UInt64 output domain : {1..=1} @@ -27,7 +27,7 @@ output : 1 ast : abs(null) raw expr : abs(NULL) -checked expr : abs(CAST(NULL AS UInt64 NULL)) +checked expr : abs(CAST(NULL AS UInt64 NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -58,7 +58,7 @@ evaluation (internal): ast : sign(1) raw expr : sign(1) -checked expr : sign(to_float64(1_u8)) +checked expr : sign(CAST(1_u8 AS Float64)) optimized expr : 1_i8 output type : Int8 output domain : {1..=1} @@ -67,7 +67,7 @@ output : 1 ast : sign(-1) raw expr : sign(minus(1)) -checked expr : sign(to_float64(minus(1_u8))) +checked expr : sign(CAST(minus(1_u8) AS Float64)) optimized expr : -1_i8 output type : Int8 output domain : {-1..=-1} @@ -76,7 +76,7 @@ output : -1 ast : sign(null) raw expr : sign(NULL) -checked expr : sign(CAST(NULL AS Float64 NULL)) +checked expr : sign(CAST(NULL AS Float64 NULL)) optimized expr : NULL output type : Int8 NULL output domain : {NULL} @@ -85,7 +85,7 @@ output : NULL ast : sign(a) raw expr : sign(a::Int64) -checked expr : sign(to_float64(a)) +checked expr : sign(CAST(a AS Float64)) evaluation: +--------+--------------+----------+ | | a | Output | @@ -107,7 +107,7 @@ evaluation (internal): ast : sin(1) raw expr : sin(1) -checked expr : sin(to_float64(1_u8)) +checked expr : sin(CAST(1_u8 AS Float64)) optimized expr : 0.8414709848_f64 output type : Float64 output domain : {0.8414709848..=0.8414709848} @@ -116,7 +116,7 @@ output : 0.8414709848 ast : cos(1) raw expr : cos(1) -checked expr : cos(to_float64(1_u8)) +checked expr : cos(CAST(1_u8 AS Float64)) optimized expr : 0.5403023058_f64 output type : Float64 output domain : {0.5403023058..=0.5403023058} @@ -125,7 +125,7 @@ output : 0.5403023058 ast : tan(1) raw expr : tan(1) -checked expr : tan(to_float64(1_u8)) +checked expr : tan(CAST(1_u8 AS Float64)) optimized expr : 1.5574077246_f64 output type : Float64 output domain : {1.5574077246..=1.5574077246} @@ -134,7 +134,7 @@ output : 1.5574077246 ast : atan(0.5) raw expr : atan(0.5) -checked expr : atan(to_float64(0.5_d128(1,1))) +checked expr : atan(CAST(0.5_d128(1,1) AS Float64)) optimized expr : 0.463647609_f64 output type : Float64 output domain : {0.463647609..=0.463647609} @@ -143,7 +143,7 @@ output : 0.463647609 ast : cot(-1.0) raw expr : cot(minus(1.0)) -checked expr : cot(to_float64(minus(1.0_d128(2,1)))) +checked expr : cot(CAST(minus(1.0_d128(2,1)) AS Float64)) optimized expr : -0.6420926159_f64 output type : Float64 output domain : {-0.6420926159..=-0.6420926159} @@ -152,7 +152,7 @@ output : -0.6420926159 ast : asin(1) raw expr : asin(1) -checked expr : asin(to_float64(1_u8)) +checked expr : asin(CAST(1_u8 AS Float64)) optimized expr : 1.5707963267_f64 output type : Float64 output domain : {1.5707963267..=1.5707963267} @@ -161,7 +161,7 @@ output : 1.5707963267 ast : acos(0) raw expr : acos(0) -checked expr : acos(to_float64(0_u8)) +checked expr : acos(CAST(0_u8 AS Float64)) optimized expr : 1.5707963267_f64 output type : Float64 output domain : {1.5707963267..=1.5707963267} @@ -170,7 +170,7 @@ output : 1.5707963267 ast : atan(null) raw expr : atan(NULL) -checked expr : atan(CAST(NULL AS Float64 NULL)) +checked expr : atan(CAST(NULL AS Float64 NULL)) optimized expr : NULL output type : Float64 NULL output domain : {NULL} @@ -179,8 +179,8 @@ output : NULL ast : atan2(a, 4) raw expr : atan2(a::Int64, 4) -checked expr : atan2(to_float64(a), to_float64(4_u8)) -optimized expr : atan2(to_float64(a), 4_f64) +checked expr : atan2(CAST(a AS Float64), CAST(4_u8 AS Float64)) +optimized expr : atan2(CAST(a AS Float64), 4_f64) evaluation: +--------+-------------+--------------------------------+ | | a | Output | @@ -437,7 +437,7 @@ output : 1.9 ast : truncate(-2)(122::DECIMAL(3)) raw expr : truncate(-2)(CAST(122 AS Decimal(3, 0))) -checked expr : truncate(-2)(to_decimal(3, 0)(122_u8)) +checked expr : truncate(-2)(CAST(122_u8 AS Decimal(3, 0))) optimized expr : 100_d128(3,0) output type : Decimal(3, 0) output domain : {100..=100} @@ -446,7 +446,7 @@ output : 100 ast : truncate(1+3-6)(122::DECIMAL(3)) raw expr : truncate(-2)(CAST(122 AS Decimal(3, 0))) -checked expr : truncate(-2)(to_decimal(3, 0)(122_u8)) +checked expr : truncate(-2)(CAST(122_u8 AS Decimal(3, 0))) optimized expr : 100_d128(3,0) output type : Decimal(3, 0) output domain : {100..=100} @@ -455,7 +455,7 @@ output : 100 ast : truncate(122, -1) raw expr : truncate(122, minus(1)) -checked expr : truncate(122_u8, to_int64(minus(1_u8))) +checked expr : truncate(122_u8, CAST(minus(1_u8) AS Int64)) optimized expr : 120_f64 output type : Float64 output domain : {120..=120} @@ -473,7 +473,7 @@ output : 1028 ast : truncate(a, 1) raw expr : truncate(a::Float64, 1) -checked expr : truncate(a, to_int64(1_u8)) +checked expr : truncate(a, CAST(1_u8 AS Int64)) optimized expr : truncate(a, 1_i64) evaluation: +--------+------------------+--------------+ @@ -505,7 +505,7 @@ output : 0.6931471805 ast : log(2, 65536) raw expr : log(2, 65536) -checked expr : log(2_u8, to_float64(65536_u32)) +checked expr : log(2_u8, CAST(65536_u32 AS Float64)) optimized expr : 16_f64 output type : Float64 output domain : {16..=16} diff --git a/src/query/functions/tests/it/scalars/testdata/misc.txt b/src/query/functions/tests/it/scalars/testdata/misc.txt index b0c3c87388d19..7c4f7afb9b8f6 100644 --- a/src/query/functions/tests/it/scalars/testdata/misc.txt +++ b/src/query/functions/tests/it/scalars/testdata/misc.txt @@ -8,7 +8,7 @@ error: ast : const_false AND CAST('1000' AS UINT32) = 1000 raw expr : and(const_false::Boolean, eq(CAST('1000' AS UInt32), 1000)) -checked expr : and(const_false, eq(to_uint32("1000"), 1000_u32)) +checked expr : and(const_false, eq(CAST("1000" AS UInt32), CAST(1000_u16 AS UInt32))) optimized expr : false evaluation: +--------+-------------+---------+ @@ -29,7 +29,7 @@ evaluation (internal): ast : false AND CAST(str AS UINT32) = 1000 raw expr : and(false, eq(CAST(str::String AS UInt32), 1000)) -checked expr : and(false, eq(to_uint32(str), 1000_u32)) +checked expr : and(false, eq(CAST(str AS UInt32), CAST(1000_u16 AS UInt32))) optimized expr : false output type : Boolean output domain : {FALSE} diff --git a/src/query/functions/tests/it/scalars/testdata/obfuscator.txt b/src/query/functions/tests/it/scalars/testdata/obfuscator.txt index 7a549de4cef60..0b749256b2e97 100644 --- a/src/query/functions/tests/it/scalars/testdata/obfuscator.txt +++ b/src/query/functions/tests/it/scalars/testdata/obfuscator.txt @@ -1,6 +1,6 @@ ast : feistel_obfuscate(a,0) raw expr : feistel_obfuscate(a::Int64, 0) -checked expr : feistel_obfuscate(a, to_uint64(0_u8)) +checked expr : feistel_obfuscate(a, CAST(0_u8 AS UInt64)) optimized expr : feistel_obfuscate(a, 0_u64) evaluation: +--------+----------------------------------------------+----------------------------------------------+ @@ -27,7 +27,7 @@ evaluation (internal): ast : feistel_obfuscate(a,0) raw expr : feistel_obfuscate(a::UInt64, 0) -checked expr : feistel_obfuscate(a, to_uint64(0_u8)) +checked expr : feistel_obfuscate(a, CAST(0_u8 AS UInt64)) optimized expr : feistel_obfuscate(a, 0_u64) evaluation: +--------+----------------------------+----------------------------+ @@ -52,7 +52,7 @@ evaluation (internal): ast : feistel_obfuscate(a,0) raw expr : feistel_obfuscate(a::Float32, 0) -checked expr : feistel_obfuscate(a, to_uint64(0_u8)) +checked expr : feistel_obfuscate(a, CAST(0_u8 AS UInt64)) optimized expr : feistel_obfuscate(a, 0_u64) evaluation: +--------+--------------------------------------------------------------------------------------+------------------------------------------+ @@ -77,7 +77,7 @@ evaluation (internal): ast : feistel_obfuscate(a,0) raw expr : feistel_obfuscate(a::Float64, 0) -checked expr : feistel_obfuscate(a, to_uint64(0_u8)) +checked expr : feistel_obfuscate(a, CAST(0_u8 AS UInt64)) optimized expr : feistel_obfuscate(a, 0_u64) evaluation: +--------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -102,7 +102,7 @@ evaluation (internal): ast : feistel_obfuscate(null,0) raw expr : feistel_obfuscate(NULL, 0) -checked expr : feistel_obfuscate(CAST(NULL AS UInt64 NULL), CAST(0_u8 AS UInt64 NULL)) +checked expr : feistel_obfuscate(CAST(NULL AS UInt64 NULL), CAST(0_u8 AS UInt64 NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} diff --git a/src/query/functions/tests/it/scalars/testdata/other.txt b/src/query/functions/tests/it/scalars/testdata/other.txt index b4184f8ff5f58..8e816285959cb 100644 --- a/src/query/functions/tests/it/scalars/testdata/other.txt +++ b/src/query/functions/tests/it/scalars/testdata/other.txt @@ -1,6 +1,6 @@ ast : running_difference(-1) raw expr : running_difference(minus(1)) -checked expr : running_difference(to_int64(minus(1_u8))) +checked expr : running_difference(CAST(minus(1_u8) AS Int64)) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -9,7 +9,7 @@ output : 0 ast : running_difference(0.2) raw expr : running_difference(0.2) -checked expr : running_difference(to_float64(0.2_d128(1,1))) +checked expr : running_difference(CAST(0.2_d128(1,1) AS Float64)) optimized expr : 0_f64 output type : Float64 output domain : {0..=0} @@ -18,7 +18,7 @@ output : 0 ast : running_difference(to_datetime(10000)) raw expr : running_difference(to_datetime(10000)) -checked expr : running_difference(to_timestamp(to_int64(10000_u16))) +checked expr : running_difference(to_timestamp(CAST(10000_u16 AS Int64))) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -27,7 +27,7 @@ output : 0 ast : running_difference(to_date(10000)) raw expr : running_difference(to_date(10000)) -checked expr : running_difference(to_date(to_int64(10000_u16))) +checked expr : running_difference(to_date(CAST(10000_u16 AS Int64))) optimized expr : 0_i32 output type : Int32 output domain : {0..=0} @@ -36,7 +36,7 @@ output : 0 ast : running_difference(a) raw expr : running_difference(a::UInt16) -checked expr : running_difference(to_int64(a)) +checked expr : running_difference(CAST(a AS Int64)) evaluation: +--------+-------------+---------+ | | a | Output | @@ -80,7 +80,7 @@ evaluation (internal): ast : humanize_size(100) raw expr : humanize_size(100) -checked expr : humanize_size(to_float64(100_u8)) +checked expr : humanize_size(CAST(100_u8 AS Float64)) optimized expr : "100.00 B" output type : String output domain : {"100.00 B"..="100.00 B"} @@ -89,7 +89,7 @@ output : '100.00 B' ast : humanize_size(1024.33) raw expr : humanize_size(1024.33) -checked expr : humanize_size(to_float64(1024.33_d128(6,2))) +checked expr : humanize_size(CAST(1024.33_d128(6,2) AS Float64)) optimized expr : "1.00 KiB" output type : String output domain : {"1.00 KiB"..="1.00 KiB"} @@ -98,7 +98,7 @@ output : '1.00 KiB' ast : humanize_number(100) raw expr : humanize_number(100) -checked expr : humanize_number(to_float64(100_u8)) +checked expr : humanize_number(CAST(100_u8 AS Float64)) optimized expr : "100" output type : String output domain : {"100"..="100"} @@ -107,7 +107,7 @@ output : '100' ast : humanize_number(1024.33) raw expr : humanize_number(1024.33) -checked expr : humanize_number(to_float64(1024.33_d128(6,2))) +checked expr : humanize_number(CAST(1024.33_d128(6,2) AS Float64)) optimized expr : "1.02 thousand" output type : String output domain : {"1.02 thousand"..="1.02 thousand"} @@ -116,7 +116,7 @@ output : '1.02 thousand' ast : typeof(humanize_size(100)) raw expr : typeof(humanize_size(100)) -checked expr : typeof(humanize_size(to_float64(100_u8))) +checked expr : typeof(humanize_size(CAST(100_u8 AS Float64))) optimized expr : "VARCHAR" output type : String output domain : {"VARCHAR"..="VARCHAR"} @@ -133,7 +133,7 @@ output : 'DOUBLE' ast : sleep(2) raw expr : sleep(2) -checked expr : sleep(to_float64(2_u8)) +checked expr : sleep(CAST(2_u8 AS Float64)) optimized expr : 0_u8 output type : UInt8 output domain : {0..=0} @@ -144,7 +144,7 @@ error: --> SQL:1:1 | 1 | sleep(300.2) - | ^^^^^^^^^^^^ The maximum sleep time is 3 seconds. Requested: 300.2s while evaluating function `sleep(300.2)` in expr `sleep(to_float64(300.2))` + | ^^^^^^^^^^^^ The maximum sleep time is 3 seconds. Requested: 300.2s while evaluating function `sleep(300.2)` in expr `sleep(CAST(300.2 AS Float64))` @@ -226,7 +226,7 @@ output : 167773449 ast : inet_ntoa(16909060) raw expr : inet_ntoa(16909060) -checked expr : inet_ntoa(to_int64(16909060_u32)) +checked expr : inet_ntoa(CAST(16909060_u32 AS Int64)) optimized expr : "1.2.3.4" output type : String output domain : {"1.2.3.4"..="1.2.3.4"} @@ -235,7 +235,7 @@ output : '1.2.3.4' ast : try_inet_ntoa(121211111111111) raw expr : try_inet_ntoa(121211111111111) -checked expr : try_inet_ntoa(to_int64(121211111111111_u64)) +checked expr : try_inet_ntoa(CAST(121211111111111_u64 AS Int64)) optimized expr : NULL output type : String NULL output domain : {NULL} diff --git a/src/query/functions/tests/it/scalars/testdata/regexp.txt b/src/query/functions/tests/it/scalars/testdata/regexp.txt index fd143ce8672a9..af50cbe196fc6 100644 --- a/src/query/functions/tests/it/scalars/testdata/regexp.txt +++ b/src/query/functions/tests/it/scalars/testdata/regexp.txt @@ -1,6 +1,6 @@ ast : regexp_instr('dog cat dog', 'dog', 1) raw expr : regexp_instr('dog cat dog', 'dog', 1) -checked expr : regexp_instr("dog cat dog", "dog", to_int64(1_u8)) +checked expr : regexp_instr("dog cat dog", "dog", CAST(1_u8 AS Int64)) optimized expr : 1_u64 output type : UInt64 output domain : {1..=1} @@ -9,7 +9,7 @@ output : 1 ast : regexp_instr('aa aaa aaaa aa aaa aaaa', 'a{2}', 1) raw expr : regexp_instr('aa aaa aaaa aa aaa aaaa', 'a{2}', 1) -checked expr : regexp_instr("aa aaa aaaa aa aaa aaaa", "a{2}", to_int64(1_u8)) +checked expr : regexp_instr("aa aaa aaaa aa aaa aaaa", "a{2}", CAST(1_u8 AS Int64)) optimized expr : 1_u64 output type : UInt64 output domain : {1..=1} @@ -18,7 +18,7 @@ output : 1 ast : regexp_instr('aa aaa aaaa aa aaa aaaa', NULL, 2) raw expr : regexp_instr('aa aaa aaaa aa aaa aaaa', NULL, 2) -checked expr : regexp_instr(CAST("aa aaa aaaa aa aaa aaaa" AS String NULL), CAST(NULL AS String NULL), CAST(2_u8 AS Int64 NULL)) +checked expr : regexp_instr(CAST("aa aaa aaaa aa aaa aaaa" AS String NULL), CAST(NULL AS String NULL), CAST(2_u8 AS Int64 NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -27,7 +27,7 @@ output : NULL ast : regexp_instr('', '', 1) raw expr : regexp_instr('', '', 1) -checked expr : regexp_instr("", "", to_int64(1_u8)) +checked expr : regexp_instr("", "", CAST(1_u8 AS Int64)) optimized expr : 0_u64 output type : UInt64 output domain : {0..=0} @@ -38,7 +38,7 @@ error: --> SQL:1:1 | 1 | regexp_instr('', '', 0) - | ^^^^^^^^^^^^^^^^^^^^^^^ Incorrect arguments to regexp_instr: position must be positive, but got 0 while evaluating function `regexp_instr('', '', 0)` in expr `regexp_instr('', '', to_int64(0))` + | ^^^^^^^^^^^^^^^^^^^^^^^ Incorrect arguments to regexp_instr: position must be positive, but got 0 while evaluating function `regexp_instr('', '', 0)` in expr `regexp_instr('', '', CAST(0 AS Int64))` @@ -171,7 +171,7 @@ evaluation (internal): ast : regexp_instr(source, pat, pos, occur, ro) raw expr : regexp_instr(source::String NULL, pat::String NULL, pos::Int64, occur::Int64, ro::Int64) -checked expr : regexp_instr(source, pat, CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(ro AS Int64 NULL)) +checked expr : regexp_instr(source, pat, CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(ro AS Int64 NULL)) evaluation: +--------+------------------------------------------------------+---------------------------+---------+---------+---------+-------------+ | | source | pat | pos | occur | ro | Output | @@ -198,7 +198,7 @@ evaluation (internal): ast : regexp_instr(source, pat, pos, occur, ro, mt) raw expr : regexp_instr(source::String NULL, pat::String NULL, pos::Int64, occur::Int64, ro::Int64, mt::String) -checked expr : regexp_instr(source, pat, CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(ro AS Int64 NULL), CAST(mt AS String NULL)) +checked expr : regexp_instr(source, pat, CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(ro AS Int64 NULL), CAST(mt AS String NULL)) evaluation: +--------+------------------------------------------------------+---------------------------+---------+---------+---------+-------------+-------------+ | | source | pat | pos | occur | ro | mt | Output | @@ -314,7 +314,7 @@ output : false ast : regexp_like('abc', 'ABC', NULL) raw expr : regexp_like('abc', 'ABC', NULL) -checked expr : regexp_like(CAST("abc" AS String NULL), CAST("ABC" AS String NULL), CAST(NULL AS String NULL)) +checked expr : regexp_like(CAST("abc" AS String NULL), CAST("ABC" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -488,7 +488,7 @@ output : '' ast : regexp_replace('a b c', 'b', NULL) raw expr : regexp_replace('a b c', 'b', NULL) -checked expr : regexp_replace(CAST("a b c" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL)) +checked expr : regexp_replace(CAST("a b c" AS String NULL), CAST("b" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -497,7 +497,7 @@ output : NULL ast : regexp_replace('abc def ghi', '[a-z]+', 'X', 1, 3) raw expr : regexp_replace('abc def ghi', '[a-z]+', 'X', 1, 3) -checked expr : regexp_replace("abc def ghi", "[a-z]+", "X", to_int64(1_u8), to_int64(3_u8)) +checked expr : regexp_replace("abc def ghi", "[a-z]+", "X", CAST(1_u8 AS Int64), CAST(3_u8 AS Int64)) optimized expr : "abc def X" output type : String output domain : {"abc def X"..="abc def X"} @@ -615,8 +615,8 @@ evaluation (internal): ast : regexp_replace(source, pat, repl, pos, occur) raw expr : regexp_replace(source::String NULL, pat::String NULL, repl::String, pos::Int64, occur::Int64) -checked expr : regexp_replace(source, pat, CAST(repl AS String NULL), CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL)) -optimized expr : regexp_replace(source, pat, "X", CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL)) +checked expr : regexp_replace(source, pat, CAST(repl AS String NULL), CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL)) +optimized expr : regexp_replace(source, pat, "X", CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL)) evaluation: +--------+------------------------------------------+--------------------------------+-------------+---------+---------+-------------+ | | source | pat | repl | pos | occur | Output | @@ -643,8 +643,8 @@ evaluation (internal): ast : regexp_replace(source, pat, repl, pos, occur, mt) raw expr : regexp_replace(source::String NULL, pat::String NULL, repl::String, pos::Int64, occur::Int64, mt::String) -checked expr : regexp_replace(source, pat, CAST(repl AS String NULL), CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(mt AS String NULL)) -optimized expr : regexp_replace(source, pat, "X", CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(mt AS String NULL)) +checked expr : regexp_replace(source, pat, CAST(repl AS String NULL), CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(mt AS String NULL)) +optimized expr : regexp_replace(source, pat, "X", CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(mt AS String NULL)) evaluation: +--------+------------------------------------------+--------------------------------+-------------+---------+---------+------------+-------------+ | | source | pat | repl | pos | occur | mt | Output | @@ -733,7 +733,7 @@ output : 'abc' ast : regexp_substr('abc def ghi', '[a-z]+', 1, 3) raw expr : regexp_substr('abc def ghi', '[a-z]+', 1, 3) -checked expr : regexp_substr("abc def ghi", "[a-z]+", to_int64(1_u8), to_int64(3_u8)) +checked expr : regexp_substr("abc def ghi", "[a-z]+", CAST(1_u8 AS Int64), CAST(3_u8 AS Int64)) optimized expr : "ghi" output type : String NULL output domain : {"ghi"..="ghi"} @@ -742,7 +742,7 @@ output : 'ghi' ast : regexp_substr('abc def ghi', '[a-z]+', NULL) raw expr : regexp_substr('abc def ghi', '[a-z]+', NULL) -checked expr : regexp_substr(CAST("abc def ghi" AS String NULL), CAST("[a-z]+" AS String NULL), CAST(NULL AS Int64 NULL)) +checked expr : regexp_substr(CAST("abc def ghi" AS String NULL), CAST("[a-z]+" AS String NULL), CAST(NULL AS Int64 NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -760,7 +760,7 @@ output : NULL ast : regexp_substr('', NULL) raw expr : regexp_substr('', NULL) -checked expr : regexp_substr(CAST("" AS String NULL), CAST(NULL AS String NULL)) +checked expr : regexp_substr(CAST("" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -769,7 +769,7 @@ output : NULL ast : regexp_substr('', '', 1, 3) raw expr : regexp_substr('', '', 1, 3) -checked expr : regexp_substr("", "", to_int64(1_u8), to_int64(3_u8)) +checked expr : regexp_substr("", "", CAST(1_u8 AS Int64), CAST(3_u8 AS Int64)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -879,7 +879,7 @@ evaluation (internal): ast : regexp_substr(source, pat, pos, occur, mt) raw expr : regexp_substr(source::String NULL, pat::String NULL, pos::Int64, occur::Int64, mt::String) -checked expr : regexp_substr(source, pat, CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(mt AS String NULL)) +checked expr : regexp_substr(source, pat, CAST(pos AS Int64 NULL), CAST(occur AS Int64 NULL), CAST(mt AS String NULL)) evaluation: +--------+------------------------------------------+--------------------------------+---------+---------+------------+-------------+ | | source | pat | pos | occur | mt | Output | diff --git a/src/query/functions/tests/it/scalars/testdata/string.txt b/src/query/functions/tests/it/scalars/testdata/string.txt index b4df7286a2127..dc00744f52cea 100644 --- a/src/query/functions/tests/it/scalars/testdata/string.txt +++ b/src/query/functions/tests/it/scalars/testdata/string.txt @@ -27,7 +27,7 @@ output : 'SS😀山' ast : upper(NULL) raw expr : upper(NULL) -checked expr : upper(CAST(NULL AS String NULL)) +checked expr : upper(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -85,7 +85,7 @@ output : 'i̇😀山' ast : lower(NULL) raw expr : lower(NULL) -checked expr : lower(CAST(NULL AS String NULL)) +checked expr : lower(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -161,7 +161,7 @@ output : 216 ast : bit_length(NULL) raw expr : bit_length(NULL) -checked expr : bit_length(CAST(NULL AS String NULL)) +checked expr : bit_length(CAST(NULL AS String NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -237,7 +237,7 @@ output : 27 ast : octet_length(NULL) raw expr : octet_length(NULL) -checked expr : octet_length(CAST(NULL AS String NULL)) +checked expr : octet_length(CAST(NULL AS String NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -313,7 +313,7 @@ output : 14 ast : char_length(NULL) raw expr : char_length(NULL) -checked expr : length(CAST(NULL AS Variant NULL)) +checked expr : length(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : UInt32 NULL output domain : {NULL} @@ -444,7 +444,7 @@ output : 'Dobrý den' ast : quote(Null) raw expr : quote(NULL) -checked expr : quote(CAST(NULL AS String NULL)) +checked expr : quote(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -529,7 +529,7 @@ output : 'ned ýrboD' ast : reverse(Null) raw expr : reverse(NULL) -checked expr : reverse(CAST(NULL AS String NULL)) +checked expr : reverse(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -614,7 +614,7 @@ output : 240 ast : ascii(Null) raw expr : ascii(NULL) -checked expr : ascii(CAST(NULL AS String NULL)) +checked expr : ascii(CAST(NULL AS String NULL)) optimized expr : NULL output type : UInt8 NULL output domain : {NULL} @@ -712,7 +712,7 @@ output : 'あなたのことが好きです ' ast : ltrim(NULL) raw expr : ltrim(NULL) -checked expr : ltrim(CAST(NULL AS String NULL)) +checked expr : ltrim(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -816,7 +816,7 @@ output : ' あなたのことが好きです' ast : rtrim(NULL) raw expr : rtrim(NULL) -checked expr : rtrim(CAST(NULL AS String NULL)) +checked expr : rtrim(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -911,7 +911,7 @@ output : 'aaabbaaa' ast : trim_leading(NULL, 'a') raw expr : trim_leading(NULL, 'a') -checked expr : trim_leading(CAST(NULL AS String NULL), CAST("a" AS String NULL)) +checked expr : trim_leading(CAST(NULL AS String NULL), CAST("a" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -920,7 +920,7 @@ output : NULL ast : trim_leading('aaaaaaaa', NULL) raw expr : trim_leading('aaaaaaaa', NULL) -checked expr : trim_leading(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) +checked expr : trim_leading(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1062,7 +1062,7 @@ output : 'aaabbaaa' ast : trim_trailing(NULL, 'a') raw expr : trim_trailing(NULL, 'a') -checked expr : trim_trailing(CAST(NULL AS String NULL), CAST("a" AS String NULL)) +checked expr : trim_trailing(CAST(NULL AS String NULL), CAST("a" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1071,7 +1071,7 @@ output : NULL ast : trim_trailing('aaaaaaaa', NULL) raw expr : trim_trailing('aaaaaaaa', NULL) -checked expr : trim_trailing(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) +checked expr : trim_trailing(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1213,7 +1213,7 @@ output : 'aaabbaaa' ast : trim_both(NULL, 'a') raw expr : trim_both(NULL, 'a') -checked expr : trim_both(CAST(NULL AS String NULL), CAST("a" AS String NULL)) +checked expr : trim_both(CAST(NULL AS String NULL), CAST("a" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1222,7 +1222,7 @@ output : NULL ast : trim_both('aaaaaaaa', NULL) raw expr : trim_both('aaaaaaaa', NULL) -checked expr : trim_both(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) +checked expr : trim_both(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1382,7 +1382,7 @@ output : 'あなたのことが好きです' ast : trim(NULL) raw expr : trim(NULL) -checked expr : trim(CAST(NULL AS String NULL)) +checked expr : trim(CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1468,7 +1468,7 @@ output : 'aaabbaaa' ast : trim(both 'a' from NULL) raw expr : trim_both(NULL, 'a') -checked expr : trim_both(CAST(NULL AS String NULL), CAST("a" AS String NULL)) +checked expr : trim_both(CAST(NULL AS String NULL), CAST("a" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1477,7 +1477,7 @@ output : NULL ast : trim(both NULL from 'aaaaaaaa') raw expr : trim_both('aaaaaaaa', NULL) -checked expr : trim_both(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) +checked expr : trim_both(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1611,7 +1611,7 @@ output : 'aaabbaaa' ast : trim(leading 'a' from NULL) raw expr : trim_leading(NULL, 'a') -checked expr : trim_leading(CAST(NULL AS String NULL), CAST("a" AS String NULL)) +checked expr : trim_leading(CAST(NULL AS String NULL), CAST("a" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1620,7 +1620,7 @@ output : NULL ast : trim(leading NULL from 'aaaaaaaa') raw expr : trim_leading('aaaaaaaa', NULL) -checked expr : trim_leading(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) +checked expr : trim_leading(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1754,7 +1754,7 @@ output : 'aaabbaaa' ast : trim(trailing 'a' from NULL) raw expr : trim_trailing(NULL, 'a') -checked expr : trim_trailing(CAST(NULL AS String NULL), CAST("a" AS String NULL)) +checked expr : trim_trailing(CAST(NULL AS String NULL), CAST("a" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1763,7 +1763,7 @@ output : NULL ast : trim(trailing NULL from 'aaaaaaaa') raw expr : trim_trailing('aaaaaaaa', NULL) -checked expr : trim_trailing(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) +checked expr : trim_trailing(CAST("aaaaaaaa" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1870,7 +1870,7 @@ output : '534' ast : concat(NULL, '3', '4') raw expr : concat(NULL, '3', '4') -checked expr : concat(CAST(NULL AS String NULL), CAST("3" AS String NULL), CAST("4" AS String NULL)) +checked expr : concat(CAST(NULL AS String NULL), CAST("3" AS String NULL), CAST("4" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1911,7 +1911,7 @@ evaluation (internal): ast : concat(a, '3') raw expr : concat(a::String NULL, '3') -checked expr : concat(a, CAST("3" AS String NULL)) +checked expr : concat(a, CAST("3" AS String NULL)) optimized expr : concat(a, "3") evaluation: +--------+----------------------+------------------+ @@ -1935,7 +1935,7 @@ evaluation (internal): ast : concat_ws('-', '3', null, '4', null, '5') raw expr : concat_ws('-', '3', NULL, '4', NULL, '5') -checked expr : concat_ws(CAST("-" AS String NULL), CAST("3" AS String NULL), CAST(NULL AS String NULL), CAST("4" AS String NULL), CAST(NULL AS String NULL), CAST("5" AS String NULL)) +checked expr : concat_ws(CAST("-" AS String NULL), CAST("3" AS String NULL), CAST(NULL AS String NULL), CAST("4" AS String NULL), CAST(NULL AS String NULL), CAST("5" AS String NULL)) optimized expr : "3-4-5" output type : String NULL output domain : {"3-4-5"..="3-4-5"} @@ -1944,7 +1944,7 @@ output : '3-4-5' ast : concat_ws(NULL, '3', '4') raw expr : concat_ws(NULL, '3', '4') -checked expr : concat_ws(CAST(NULL AS String NULL), CAST("3" AS String NULL), CAST("4" AS String NULL)) +checked expr : concat_ws(CAST(NULL AS String NULL), CAST("3" AS String NULL), CAST("4" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1985,7 +1985,7 @@ evaluation (internal): ast : concat_ws(a, '3') raw expr : concat_ws(a::String NULL, '3') -checked expr : concat_ws(a, CAST("3" AS String NULL)) +checked expr : concat_ws(a, CAST("3" AS String NULL)) optimized expr : concat_ws(a, "3") evaluation: +--------+----------------------+-----------------+ @@ -2009,7 +2009,7 @@ evaluation (internal): ast : concat_ws(a, '3', '4') raw expr : concat_ws(a::String NULL, '3', '4') -checked expr : concat_ws(a, CAST("3" AS String NULL), CAST("4" AS String NULL)) +checked expr : concat_ws(a, CAST("3" AS String NULL), CAST("4" AS String NULL)) optimized expr : concat_ws(a, "3", "4") evaluation: +--------+----------------------+-----------------+ @@ -2045,7 +2045,7 @@ candidate functions: ast : bin(a) raw expr : bin(a::Int8) -checked expr : bin(to_int64(a)) +checked expr : bin(CAST(a AS Int64)) evaluation: +--------+----------+--------------------------------------------------------------------+ | | a | Output | @@ -2067,7 +2067,7 @@ evaluation (internal): ast : bin(a2) raw expr : bin(a2::UInt8 NULL) -checked expr : bin(CAST(a2 AS Int64 NULL)) +checked expr : bin(CAST(a2 AS Int64 NULL)) evaluation: +--------+------------------+-----------------+ | | a2 | Output | @@ -2089,7 +2089,7 @@ evaluation (internal): ast : bin(b) raw expr : bin(b::Int16) -checked expr : bin(to_int64(b)) +checked expr : bin(CAST(b AS Int64)) evaluation: +--------+---------+--------+ | | b | Output | @@ -2111,7 +2111,7 @@ evaluation (internal): ast : bin(c) raw expr : bin(c::UInt32) -checked expr : bin(to_int64(c)) +checked expr : bin(CAST(c AS Int64)) evaluation: +--------+-----------+---------+ | | c | Output | @@ -2147,13 +2147,13 @@ error: --> SQL:1:5 | 1 | bin(e) - | ^ invalid digit found in string while evaluating function `to_int64('abc')` in expr `to_int64(e)`, during run expr: `bin(to_int64(e))` + | ^ invalid digit found in string while evaluating function `to_int64('abc')` in expr `to_int64()`, during run expr: `bin(CAST(e AS Int64))` ast : oct(a) raw expr : oct(a::Int8) -checked expr : oct(to_int64(a)) +checked expr : oct(CAST(a AS Int64)) evaluation: +--------+----------+--------------------------+ | | a | Output | @@ -2175,7 +2175,7 @@ evaluation (internal): ast : oct(a2) raw expr : oct(a2::UInt8 NULL) -checked expr : oct(CAST(a2 AS Int64 NULL)) +checked expr : oct(CAST(a2 AS Int64 NULL)) evaluation: +--------+------------------+-----------------+ | | a2 | Output | @@ -2197,7 +2197,7 @@ evaluation (internal): ast : oct(b) raw expr : oct(b::Int16) -checked expr : oct(to_int64(b)) +checked expr : oct(CAST(b AS Int64)) evaluation: +--------+---------+--------+ | | b | Output | @@ -2219,7 +2219,7 @@ evaluation (internal): ast : oct(c) raw expr : oct(c::UInt32) -checked expr : oct(to_int64(c)) +checked expr : oct(CAST(c AS Int64)) evaluation: +--------+-----------+--------+ | | c | Output | @@ -2255,13 +2255,13 @@ error: --> SQL:1:5 | 1 | oct(e) - | ^ invalid digit found in string while evaluating function `to_int64('abc')` in expr `to_int64(e)`, during run expr: `oct(to_int64(e))` + | ^ invalid digit found in string while evaluating function `to_int64('abc')` in expr `to_int64()`, during run expr: `oct(CAST(e AS Int64))` ast : hex(a) raw expr : hex(a::Int8) -checked expr : to_hex(to_int64(a)) +checked expr : to_hex(CAST(a AS Int64)) evaluation: +--------+----------+--------------------+ | | a | Output | @@ -2283,7 +2283,7 @@ evaluation (internal): ast : hex(a2) raw expr : hex(a2::UInt8 NULL) -checked expr : to_hex(CAST(a2 AS Int64 NULL)) +checked expr : to_hex(CAST(a2 AS Int64 NULL)) evaluation: +--------+------------------+-----------------+ | | a2 | Output | @@ -2305,7 +2305,7 @@ evaluation (internal): ast : hex(b) raw expr : hex(b::Int16) -checked expr : to_hex(to_int64(b)) +checked expr : to_hex(CAST(b AS Int64)) evaluation: +--------+---------+--------+ | | b | Output | @@ -2327,7 +2327,7 @@ evaluation (internal): ast : hex(c) raw expr : hex(c::UInt32) -checked expr : to_hex(to_int64(c)) +checked expr : to_hex(CAST(c AS Int64)) evaluation: +--------+-----------+--------+ | | c | Output | @@ -2385,7 +2385,7 @@ evaluation (internal): ast : lpad('hi', 2, '?') raw expr : lpad('hi', 2, '?') -checked expr : lpad("hi", to_uint64(2_u8), "?") +checked expr : lpad("hi", CAST(2_u8 AS UInt64), "?") optimized expr : "hi" output type : String output domain : {"hi"..="hi"} @@ -2394,7 +2394,7 @@ output : 'hi' ast : lpad('hi', 4, '?') raw expr : lpad('hi', 4, '?') -checked expr : lpad("hi", to_uint64(4_u8), "?") +checked expr : lpad("hi", CAST(4_u8 AS UInt64), "?") optimized expr : "??hi" output type : String output domain : {"??hi"..="??hi"} @@ -2403,7 +2403,7 @@ output : '??hi' ast : lpad('hi', 0, '?') raw expr : lpad('hi', 0, '?') -checked expr : lpad("hi", to_uint64(0_u8), "?") +checked expr : lpad("hi", CAST(0_u8 AS UInt64), "?") optimized expr : "" output type : String output domain : {""..=""} @@ -2412,7 +2412,7 @@ output : '' ast : lpad('hi', 1, '?') raw expr : lpad('hi', 1, '?') -checked expr : lpad("hi", to_uint64(1_u8), "?") +checked expr : lpad("hi", CAST(1_u8 AS UInt64), "?") optimized expr : "h" output type : String output domain : {"h"..="h"} @@ -2423,13 +2423,13 @@ error: --> SQL:1:1 | 1 | lpad('', 1, '') - | ^^^^^^^^^^^^^^^ can't fill the '' length to '1' with an empty pad string while evaluating function `lpad('', 1, '')` in expr `lpad('', to_uint64(1), '')` + | ^^^^^^^^^^^^^^^ can't fill the '' length to '1' with an empty pad string while evaluating function `lpad('', 1, '')` in expr `lpad('', CAST(1 AS UInt64), '')` ast : lpad('hi', 1, '') raw expr : lpad('hi', 1, '') -checked expr : lpad("hi", to_uint64(1_u8), "") +checked expr : lpad("hi", CAST(1_u8 AS UInt64), "") optimized expr : "h" output type : String output domain : {"h"..="h"} @@ -2438,7 +2438,7 @@ output : 'h' ast : lpad('', 1, '?') raw expr : lpad('', 1, '?') -checked expr : lpad("", to_uint64(1_u8), "?") +checked expr : lpad("", CAST(1_u8 AS UInt64), "?") optimized expr : "?" output type : String output domain : {"?"..="?"} @@ -2449,7 +2449,7 @@ error: --> SQL:1:12 | 1 | lpad('hi', -1, '?') - | ^ number overflowed while evaluating function `to_uint64(-1)` in expr `to_uint64(- 1)`, during run expr: `lpad('hi', to_uint64(- 1), '?')` + | ^ number overflowed while evaluating function `to_uint64(-1)` in expr `to_uint64()`, during run expr: `lpad('hi', CAST(- 1 AS UInt64), '?')` @@ -2457,13 +2457,13 @@ error: --> SQL:1:1 | 1 | lpad('hi', 2000000, '?') - | ^^^^^^^^^^^^^^^^^^^^^^^^ padding length '2000000' is too big, max is: '1000000' while evaluating function `lpad('hi', 2000000, '?')` in expr `lpad('hi', to_uint64(2000000), '?')` + | ^^^^^^^^^^^^^^^^^^^^^^^^ padding length '2000000' is too big, max is: '1000000' while evaluating function `lpad('hi', 2000000, '?')` in expr `lpad('hi', CAST(2000000 AS UInt64), '?')` ast : lpad(a, b, c) raw expr : lpad(a::String, b::UInt8, c::String) -checked expr : lpad(a, to_uint64(b), c) +checked expr : lpad(a, CAST(b AS UInt64), c) evaluation: +--------+-----------------+---------+-------------+---------+ | | a | b | c | Output | @@ -2489,13 +2489,13 @@ error: --> SQL:1:1 | 1 | lpad(a, b, c) - | ^^^^^^^^^^^^^ can't fill the 'hi' length to '5' with an empty pad string while evaluating function `lpad('hi', 5, '')` in expr `lpad(a, to_uint64(b), c)` + | ^^^^^^^^^^^^^ can't fill the 'hi' length to '5' with an empty pad string while evaluating function `lpad('hi', 5, '')` in expr `lpad(a, CAST(b AS UInt64), c)` ast : rpad('hi', 2, '?') raw expr : rpad('hi', 2, '?') -checked expr : rpad("hi", to_uint64(2_u8), "?") +checked expr : rpad("hi", CAST(2_u8 AS UInt64), "?") optimized expr : "hi" output type : String output domain : {"hi"..="hi"} @@ -2504,7 +2504,7 @@ output : 'hi' ast : rpad('hi', 4, '?') raw expr : rpad('hi', 4, '?') -checked expr : rpad("hi", to_uint64(4_u8), "?") +checked expr : rpad("hi", CAST(4_u8 AS UInt64), "?") optimized expr : "hi??" output type : String output domain : {"hi??"..="hi??"} @@ -2513,7 +2513,7 @@ output : 'hi??' ast : rpad('hi', 0, '?') raw expr : rpad('hi', 0, '?') -checked expr : rpad("hi", to_uint64(0_u8), "?") +checked expr : rpad("hi", CAST(0_u8 AS UInt64), "?") optimized expr : "" output type : String output domain : {""..=""} @@ -2522,7 +2522,7 @@ output : '' ast : rpad('hi', 1, '?') raw expr : rpad('hi', 1, '?') -checked expr : rpad("hi", to_uint64(1_u8), "?") +checked expr : rpad("hi", CAST(1_u8 AS UInt64), "?") optimized expr : "h" output type : String output domain : {"h"..="h"} @@ -2533,13 +2533,13 @@ error: --> SQL:1:1 | 1 | rpad('', 1, '') - | ^^^^^^^^^^^^^^^ can't fill the '' length to '1' with an empty pad string while evaluating function `rpad('', 1, '')` in expr `rpad('', to_uint64(1), '')` + | ^^^^^^^^^^^^^^^ can't fill the '' length to '1' with an empty pad string while evaluating function `rpad('', 1, '')` in expr `rpad('', CAST(1 AS UInt64), '')` ast : rpad('hi', 1, '') raw expr : rpad('hi', 1, '') -checked expr : rpad("hi", to_uint64(1_u8), "") +checked expr : rpad("hi", CAST(1_u8 AS UInt64), "") optimized expr : "h" output type : String output domain : {"h"..="h"} @@ -2548,7 +2548,7 @@ output : 'h' ast : rpad('', 1, '?') raw expr : rpad('', 1, '?') -checked expr : rpad("", to_uint64(1_u8), "?") +checked expr : rpad("", CAST(1_u8 AS UInt64), "?") optimized expr : "?" output type : String output domain : {"?"..="?"} @@ -2559,7 +2559,7 @@ error: --> SQL:1:12 | 1 | rpad('hi', -1, '?') - | ^ number overflowed while evaluating function `to_uint64(-1)` in expr `to_uint64(- 1)`, during run expr: `rpad('hi', to_uint64(- 1), '?')` + | ^ number overflowed while evaluating function `to_uint64(-1)` in expr `to_uint64()`, during run expr: `rpad('hi', CAST(- 1 AS UInt64), '?')` @@ -2567,13 +2567,13 @@ error: --> SQL:1:1 | 1 | rpad('hi', 2000000, '?') - | ^^^^^^^^^^^^^^^^^^^^^^^^ padding length '2000000' is too big, max is: '1000000' while evaluating function `rpad('hi', 2000000, '?')` in expr `rpad('hi', to_uint64(2000000), '?')` + | ^^^^^^^^^^^^^^^^^^^^^^^^ padding length '2000000' is too big, max is: '1000000' while evaluating function `rpad('hi', 2000000, '?')` in expr `rpad('hi', CAST(2000000 AS UInt64), '?')` ast : rpad(a, b, c) raw expr : rpad(a::String, b::UInt8, c::String) -checked expr : rpad(a, to_uint64(b), c) +checked expr : rpad(a, CAST(b AS UInt64), c) evaluation: +--------+-----------------+---------+-------------+---------+ | | a | b | c | Output | @@ -2599,7 +2599,7 @@ error: --> SQL:1:1 | 1 | rpad(a, b, c) - | ^^^^^^^^^^^^^ can't fill the 'hi' length to '5' with an empty pad string while evaluating function `rpad('hi', 5, '')` in expr `rpad(a, to_uint64(b), c)` + | ^^^^^^^^^^^^^ can't fill the 'hi' length to '5' with an empty pad string while evaluating function `rpad('hi', 5, '')` in expr `rpad(a, CAST(b AS UInt64), c)` @@ -2878,7 +2878,7 @@ output : 0 ast : locate('bar', 'foobarbar', 5) raw expr : locate('bar', 'foobarbar', 5) -checked expr : locate("bar", "foobarbar", to_uint64(5_u8)) +checked expr : locate("bar", "foobarbar", CAST(5_u8 AS UInt64)) optimized expr : 7_u64 output type : UInt64 output domain : {7..=7} @@ -2887,7 +2887,7 @@ output : 7 ast : locate('好世', '你好世界', 1) raw expr : locate('好世', '你好世界', 1) -checked expr : locate("好世", "你好世界", to_uint64(1_u8)) +checked expr : locate("好世", "你好世界", CAST(1_u8 AS UInt64)) optimized expr : 2_u64 output type : UInt64 output domain : {2..=2} @@ -2896,7 +2896,7 @@ output : 2 ast : locate(a, b, c) raw expr : locate(a::String, b::String, c::UInt8) -checked expr : locate(a, b, to_uint64(c)) +checked expr : locate(a, b, CAST(c AS UInt64)) evaluation: +--------+---------------+---------------+---------+----------------------------+ | | a | b | c | Output | @@ -2930,7 +2930,7 @@ output : 414243 ast : char(65, null) raw expr : char(65, NULL) -checked expr : char(CAST(65_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) +checked expr : char(CAST(65_u8 AS UInt8 NULL), CAST(NULL AS UInt8 NULL)) optimized expr : NULL output type : Binary NULL output domain : {NULL} @@ -2962,7 +2962,7 @@ evaluation (internal): ast : char(a2, b, c) raw expr : char(a2::UInt8 NULL, b::UInt8, c::UInt8) -checked expr : char(a2, CAST(b AS UInt8 NULL), CAST(c AS UInt8 NULL)) +checked expr : char(a2, CAST(b AS UInt8 NULL), CAST(c AS UInt8 NULL)) evaluation: +--------+-----------+-----------+--------------------+--------------------+ | | b | c | a2 | Output | @@ -3056,7 +3056,7 @@ evaluation (internal): ast : ord(NULL) raw expr : ord(NULL) -checked expr : ord(CAST(NULL AS String NULL)) +checked expr : ord(CAST(NULL AS String NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -3092,7 +3092,7 @@ output : 4036989590 ast : repeat('3', NULL) raw expr : repeat('3', NULL) -checked expr : repeat(CAST("3" AS String NULL), CAST(NULL AS UInt64 NULL)) +checked expr : repeat(CAST("3" AS String NULL), CAST(NULL AS UInt64 NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3101,7 +3101,7 @@ output : NULL ast : repeat('3', 5) raw expr : repeat('3', 5) -checked expr : repeat("3", to_uint64(5_u8)) +checked expr : repeat("3", CAST(5_u8 AS UInt64)) optimized expr : "33333" output type : String output domain : {"33333"..="33333"} @@ -3110,7 +3110,7 @@ output : '33333' ast : repeat('你好世界', 3) raw expr : repeat('你好世界', 3) -checked expr : repeat("你好世界", to_uint64(3_u8)) +checked expr : repeat("你好世界", CAST(3_u8 AS UInt64)) optimized expr : "你好世界你好世界你好世界" output type : String output domain : {"你好世界你好世界你好世界"..="你好世界你好世界你好世界"} @@ -3119,7 +3119,7 @@ output : '你好世界你好世界你好世界' ast : repeat('こんにちは', 2) raw expr : repeat('こんにちは', 2) -checked expr : repeat("こんにちは", to_uint64(2_u8)) +checked expr : repeat("こんにちは", CAST(2_u8 AS UInt64)) optimized expr : "こんにちはこんにちは" output type : String output domain : {"こんにちはこんにちは"..="こんにちはこんにちは"} @@ -3130,13 +3130,13 @@ error: --> SQL:1:1 | 1 | repeat('3', 1000001) - | ^^^^^^^^^^^^^^^^^^^^ Too many times to repeat: (1000001), maximum is: 1000000 while evaluating function `repeat('3', 1000001)` in expr `repeat('3', to_uint64(1000001))` + | ^^^^^^^^^^^^^^^^^^^^ Too many times to repeat: (1000001), maximum is: 1000000 while evaluating function `repeat('3', 1000001)` in expr `repeat('3', CAST(1000001 AS UInt64))` ast : repeat(a, 3) raw expr : repeat(a::String, 3) -checked expr : repeat(a, to_uint64(3_u8)) +checked expr : repeat(a, CAST(3_u8 AS UInt64)) optimized expr : repeat(a, 3_u64) evaluation: +--------+-------------+---------+ @@ -3175,7 +3175,7 @@ error: ast : insert('Quadratic', 3, 4, a) raw expr : insert('Quadratic', 3, 4, a::String) -checked expr : insert("Quadratic", to_int64(3_u8), to_int64(4_u8), a) +checked expr : insert("Quadratic", CAST(3_u8 AS Int64), CAST(4_u8 AS Int64), a) optimized expr : insert("Quadratic", 3_i64, 4_i64, a) evaluation: +--------+-------------------+-------------+ @@ -3198,7 +3198,7 @@ evaluation (internal): ast : insert('Quadratic', 3, 4, 'What') raw expr : insert('Quadratic', 3, 4, 'What') -checked expr : insert("Quadratic", to_int64(3_u8), to_int64(4_u8), "What") +checked expr : insert("Quadratic", CAST(3_u8 AS Int64), CAST(4_u8 AS Int64), "What") optimized expr : "QuWhattic" output type : String output domain : {"QuWhattic"..="QuWhattic"} @@ -3207,7 +3207,7 @@ output : 'QuWhattic' ast : insert('Quadratic', -1, 4, 'What') raw expr : insert('Quadratic', minus(1), 4, 'What') -checked expr : insert("Quadratic", to_int64(minus(1_u8)), to_int64(4_u8), "What") +checked expr : insert("Quadratic", CAST(minus(1_u8) AS Int64), CAST(4_u8 AS Int64), "What") optimized expr : "Quadratic" output type : String output domain : {"Quadratic"..="Quadratic"} @@ -3216,7 +3216,7 @@ output : 'Quadratic' ast : insert('Quadratic', 3, 100, 'What') raw expr : insert('Quadratic', 3, 100, 'What') -checked expr : insert("Quadratic", to_int64(3_u8), to_int64(100_u8), "What") +checked expr : insert("Quadratic", CAST(3_u8 AS Int64), CAST(100_u8 AS Int64), "What") optimized expr : "QuWhat" output type : String output domain : {"QuWhat"..="QuWhat"} @@ -3225,7 +3225,7 @@ output : 'QuWhat' ast : insert('Quadratic', 3, 100, NULL) raw expr : insert('Quadratic', 3, 100, NULL) -checked expr : insert(CAST("Quadratic" AS String NULL), CAST(3_u8 AS Int64 NULL), CAST(100_u8 AS Int64 NULL), CAST(NULL AS String NULL)) +checked expr : insert(CAST("Quadratic" AS String NULL), CAST(3_u8 AS Int64 NULL), CAST(100_u8 AS Int64 NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3234,7 +3234,7 @@ output : NULL ast : insert('Quadratic', 3, NULL, 'NULL') raw expr : insert('Quadratic', 3, NULL, 'NULL') -checked expr : insert(CAST("Quadratic" AS String NULL), CAST(3_u8 AS Int64 NULL), CAST(NULL AS Int64 NULL), CAST("NULL" AS String NULL)) +checked expr : insert(CAST("Quadratic" AS String NULL), CAST(3_u8 AS Int64 NULL), CAST(NULL AS Int64 NULL), CAST("NULL" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3243,7 +3243,7 @@ output : NULL ast : insert('Quadratic', NULL, 100, 'NULL') raw expr : insert('Quadratic', NULL, 100, 'NULL') -checked expr : insert(CAST("Quadratic" AS String NULL), CAST(NULL AS Int64 NULL), CAST(100_u8 AS Int64 NULL), CAST("NULL" AS String NULL)) +checked expr : insert(CAST("Quadratic" AS String NULL), CAST(NULL AS Int64 NULL), CAST(100_u8 AS Int64 NULL), CAST("NULL" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3252,7 +3252,7 @@ output : NULL ast : insert('你好世界', 1, 2, 'こんにちは') raw expr : insert('你好世界', 1, 2, 'こんにちは') -checked expr : insert("你好世界", to_int64(1_u8), to_int64(2_u8), "こんにちは") +checked expr : insert("你好世界", CAST(1_u8 AS Int64), CAST(2_u8 AS Int64), "こんにちは") optimized expr : "こんにちは世界" output type : String output domain : {"こんにちは世界"..="こんにちは世界"} @@ -3261,7 +3261,7 @@ output : 'こんにちは世界' ast : insert(NULL, 2, 100, 'NULL') raw expr : insert(NULL, 2, 100, 'NULL') -checked expr : insert(CAST(NULL AS String NULL), CAST(2_u8 AS Int64 NULL), CAST(100_u8 AS Int64 NULL), CAST("NULL" AS String NULL)) +checked expr : insert(CAST(NULL AS String NULL), CAST(2_u8 AS Int64 NULL), CAST(100_u8 AS Int64 NULL), CAST("NULL" AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3270,7 +3270,7 @@ output : NULL ast : insert(a, b, c, d) raw expr : insert(a::String, b::UInt8, c::UInt8, d::String) -checked expr : insert(a, to_int64(b), to_int64(c), d) +checked expr : insert(a, CAST(b AS Int64), CAST(c AS Int64), d) evaluation: +--------+-----------------+---------+---------+---------------+---------+ | | a | b | c | d | Output | @@ -3296,7 +3296,7 @@ evaluation (internal): ast : insert(x, y, z, u) raw expr : insert(x::String NULL, y::UInt8 NULL, z::UInt8 NULL, u::String NULL) -checked expr : insert(x, CAST(y AS Int64 NULL), CAST(z AS Int64 NULL), u) +checked expr : insert(x, CAST(y AS Int64 NULL), CAST(z AS Int64 NULL), u) evaluation: +--------+--------------------------+------------------+------------------+------------------------+-----------------+ | | x | y | z | u | Output | @@ -3322,7 +3322,7 @@ evaluation (internal): ast : space(0) raw expr : space(0) -checked expr : space(to_uint64(0_u8)) +checked expr : space(CAST(0_u8 AS UInt64)) optimized expr : "" output type : String output domain : {""..=""} @@ -3331,7 +3331,7 @@ output : '' ast : space(5) raw expr : space(5) -checked expr : space(to_uint64(5_u8)) +checked expr : space(CAST(5_u8 AS UInt64)) optimized expr : " " output type : String output domain : {" "..=" "} @@ -3342,13 +3342,13 @@ error: --> SQL:1:1 | 1 | space(2000000) - | ^^^^^^^^^^^^^^ space length is too big, max is: 1000000 while evaluating function `space(2000000)` in expr `space(to_uint64(2000000))` + | ^^^^^^^^^^^^^^ space length is too big, max is: 1000000 while evaluating function `space(2000000)` in expr `space(CAST(2000000 AS UInt64))` ast : space(a) raw expr : space(a::UInt8) -checked expr : space(to_uint64(a)) +checked expr : space(CAST(a AS UInt64)) evaluation: +--------+---------+-------------+ | | a | Output | @@ -3377,7 +3377,7 @@ evaluation (internal): ast : left('', 0) raw expr : left('', 0) -checked expr : left("", to_uint64(0_u8)) +checked expr : left("", CAST(0_u8 AS UInt64)) optimized expr : "" output type : String output domain : {""..=""} @@ -3386,7 +3386,7 @@ output : '' ast : left('', 1) raw expr : left('', 1) -checked expr : left("", to_uint64(1_u8)) +checked expr : left("", CAST(1_u8 AS UInt64)) optimized expr : "" output type : String output domain : {""..=""} @@ -3395,7 +3395,7 @@ output : '' ast : left('123456789', a) raw expr : left('123456789', a::UInt8) -checked expr : left("123456789", to_uint64(a)) +checked expr : left("123456789", CAST(a AS UInt64)) evaluation: +--------+----------+--------------------+ | | a | Output | @@ -3425,7 +3425,7 @@ evaluation (internal): ast : right('', 0) raw expr : right('', 0) -checked expr : right("", to_uint64(0_u8)) +checked expr : right("", CAST(0_u8 AS UInt64)) optimized expr : "" output type : String output domain : {""..=""} @@ -3434,7 +3434,7 @@ output : '' ast : right('', 1) raw expr : right('', 1) -checked expr : right("", to_uint64(1_u8)) +checked expr : right("", CAST(1_u8 AS UInt64)) optimized expr : "" output type : String output domain : {""..=""} @@ -3443,7 +3443,7 @@ output : '' ast : right('123456789', a) raw expr : right('123456789', a::UInt8) -checked expr : right("123456789", to_uint64(a)) +checked expr : right("123456789", CAST(a AS UInt64)) evaluation: +--------+----------+-------------+ | | a | Output | @@ -3473,7 +3473,7 @@ evaluation (internal): ast : mid('1234567890', -3, 3) raw expr : mid('1234567890', minus(3), 3) -checked expr : substr("1234567890", to_int64(minus(3_u8)), to_uint64(3_u8)) +checked expr : substr("1234567890", CAST(minus(3_u8) AS Int64), CAST(3_u8 AS UInt64)) optimized expr : "890" output type : String output domain : {"890"..="890"} @@ -3482,7 +3482,7 @@ output : '890' ast : mid('1234567890', -3, 4 - 1) raw expr : mid('1234567890', minus(3), minus(4, 1)) -checked expr : substr("1234567890", to_int64(minus(3_u8)), to_uint64(minus(4_u8, 1_u8))) +checked expr : substr("1234567890", CAST(minus(3_u8) AS Int64), CAST(minus(4_u8, 1_u8) AS UInt64)) optimized expr : "890" output type : String output domain : {"890"..="890"} @@ -3491,7 +3491,7 @@ output : '890' ast : mid('1234567890', -3) raw expr : mid('1234567890', minus(3)) -checked expr : substr("1234567890", to_int64(minus(3_u8))) +checked expr : substr("1234567890", CAST(minus(3_u8) AS Int64)) optimized expr : "890" output type : String output domain : {"890"..="890"} @@ -3500,7 +3500,7 @@ output : '890' ast : substring('', 0, 1) raw expr : substr('', 0, 1) -checked expr : substr("", to_int64(0_u8), to_uint64(1_u8)) +checked expr : substr("", CAST(0_u8 AS Int64), CAST(1_u8 AS UInt64)) optimized expr : "" output type : String output domain : {""..=""} @@ -3509,7 +3509,7 @@ output : '' ast : substr('Sakila' from -4 for 2) raw expr : substr('Sakila', minus(4), 2) -checked expr : substr("Sakila", to_int64(minus(4_u8)), to_uint64(2_u8)) +checked expr : substr("Sakila", CAST(minus(4_u8) AS Int64), CAST(2_u8 AS UInt64)) optimized expr : "ki" output type : String output domain : {"ki"..="ki"} @@ -3518,7 +3518,7 @@ output : 'ki' ast : substr('sakila' FROM -4) raw expr : substr('sakila', minus(4)) -checked expr : substr("sakila", to_int64(minus(4_u8))) +checked expr : substr("sakila", CAST(minus(4_u8) AS Int64)) optimized expr : "kila" output type : String output domain : {"kila"..="kila"} @@ -3527,7 +3527,7 @@ output : 'kila' ast : substr('abc',2) raw expr : substr('abc', 2) -checked expr : substr("abc", to_int64(2_u8)) +checked expr : substr("abc", CAST(2_u8 AS Int64)) optimized expr : "bc" output type : String output domain : {"bc"..="bc"} @@ -3536,7 +3536,7 @@ output : 'bc' ast : substr('你好世界', 3) raw expr : substr('你好世界', 3) -checked expr : substr("你好世界", to_int64(3_u8)) +checked expr : substr("你好世界", CAST(3_u8 AS Int64)) optimized expr : "世界" output type : String output domain : {"世界"..="世界"} @@ -3545,7 +3545,7 @@ output : '世界' ast : substr('こんにちは', 2) raw expr : substr('こんにちは', 2) -checked expr : substr("こんにちは", to_int64(2_u8)) +checked expr : substr("こんにちは", CAST(2_u8 AS Int64)) optimized expr : "んにちは" output type : String output domain : {"んにちは"..="んにちは"} @@ -3554,7 +3554,7 @@ output : 'んにちは' ast : substr('abc', pos, len) raw expr : substr('abc', pos::Int8, len::UInt8) -checked expr : substr("abc", to_int64(pos), to_uint64(len)) +checked expr : substr("abc", CAST(pos AS Int64), CAST(len AS UInt64)) evaluation: +--------+----------+---------+--------+ | | pos | len | Output | diff --git a/src/query/functions/tests/it/scalars/testdata/variant.txt b/src/query/functions/tests/it/scalars/testdata/variant.txt index 8acfdcb8ba05f..029d80c4857c4 100644 --- a/src/query/functions/tests/it/scalars/testdata/variant.txt +++ b/src/query/functions/tests/it/scalars/testdata/variant.txt @@ -1,6 +1,6 @@ ast : parse_json(NULL) raw expr : parse_json(NULL) -checked expr : parse_json(CAST(NULL AS Variant NULL)) +checked expr : CAST(CAST(NULL AS Variant NULL) AS Variant NULL) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -11,13 +11,13 @@ error: --> SQL:1:1 | 1 | parse_json('nuLL') - | ^^^^^^^^^^^^^^^^^^ expected ident, pos 3 while evaluating function `parse_json('nuLL')` in expr `parse_json('nuLL')` + | ^^^^^^^^^^^^^^^^^^ expected ident, pos 3 while evaluating function `parse_json('nuLL')` in expr `parse_json()`, during run expr: `CAST('nuLL' AS Variant)` ast : parse_json('null') raw expr : parse_json('null') -checked expr : parse_json("null") +checked expr : CAST("null" AS Variant) optimized expr : 0x2000000000000000 output type : Variant output domain : Undefined @@ -28,13 +28,13 @@ error: --> SQL:1:1 | 1 | parse_json(' ') - | ^^^^^^^^^^^^^^^^ EOF while parsing a value, pos 2 while evaluating function `parse_json(' ')` in expr `parse_json(' ')` + | ^^^^^^^^^^^^^^^^ EOF while parsing a value, pos 2 while evaluating function `parse_json(' ')` in expr `parse_json()`, during run expr: `CAST(' ' AS Variant)` ast : parse_json('true') raw expr : parse_json('true') -checked expr : parse_json("true") +checked expr : CAST("true" AS Variant) optimized expr : 0x2000000040000000 output type : Variant output domain : Undefined @@ -43,7 +43,7 @@ output : 'true' ast : parse_json('false') raw expr : parse_json('false') -checked expr : parse_json("false") +checked expr : CAST("false" AS Variant) optimized expr : 0x2000000030000000 output type : Variant output domain : Undefined @@ -52,7 +52,7 @@ output : 'false' ast : parse_json('"测试"') raw expr : parse_json('"测试"') -checked expr : parse_json("\"测试\"") +checked expr : CAST("\"测试\"" AS Variant) optimized expr : 0x2000000010000006e6b58be8af95 output type : Variant output domain : Undefined @@ -61,7 +61,7 @@ output : '"测试"' ast : parse_json('1234') raw expr : parse_json('1234') -checked expr : parse_json("1234") +checked expr : CAST("1234" AS Variant) optimized expr : 0x20000000200000035004d2 output type : Variant output domain : Undefined @@ -70,7 +70,7 @@ output : '1234' ast : parse_json('[1,2,3,4]') raw expr : parse_json('[1,2,3,4]') -checked expr : parse_json("[1,2,3,4]") +checked expr : CAST("[1,2,3,4]" AS Variant) optimized expr : 0x80000004200000022000000220000002200000025001500250035004 output type : Variant output domain : Undefined @@ -79,7 +79,7 @@ output : '[1,2,3,4]' ast : parse_json('{"a":"b","c":"d"}') raw expr : parse_json('{"a":"b","c":"d"}') -checked expr : parse_json("{\"a\":\"b\",\"c\":\"d\"}") +checked expr : CAST("{\"a\":\"b\",\"c\":\"d\"}" AS Variant) optimized expr : 0x400000021000000110000001100000011000000161636264 output type : Variant output domain : Undefined @@ -88,7 +88,7 @@ output : '{"a":"b","c":"d"}' ast : parse_json(s) raw expr : parse_json(s::String) -checked expr : parse_json(s) +checked expr : CAST(s AS Variant) evaluation: +--------+-----------------------------------------------------------+-------------------------+ | | s | Output | @@ -117,7 +117,7 @@ evaluation (internal): ast : parse_json(s) raw expr : parse_json(s::String NULL) -checked expr : parse_json(s) +checked expr : CAST(s AS Variant NULL) evaluation: +--------+----------------------------+--------------+ | | s | Output | @@ -140,7 +140,7 @@ evaluation (internal): ast : try_parse_json(NULL) raw expr : try_parse_json(NULL) -checked expr : try_parse_json(CAST(NULL AS Variant NULL)) +checked expr : try_parse_json(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -273,7 +273,7 @@ evaluation (internal): ast : check_json(NULL) raw expr : check_json(NULL) -checked expr : check_json(CAST(NULL AS Variant NULL)) +checked expr : check_json(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -345,7 +345,7 @@ evaluation (internal): ast : length(parse_json('1234')) raw expr : length(parse_json('1234')) -checked expr : length(CAST(parse_json("1234") AS Variant NULL)) +checked expr : length(CAST(parse_json("1234") AS Variant NULL)) optimized expr : NULL output type : UInt32 NULL output domain : {NULL} @@ -354,7 +354,7 @@ output : NULL ast : length(parse_json('[1,2,3,4]')) raw expr : length(parse_json('[1,2,3,4]')) -checked expr : length(CAST(parse_json("[1,2,3,4]") AS Variant NULL)) +checked expr : length(CAST(parse_json("[1,2,3,4]") AS Variant NULL)) optimized expr : 4_u32 output type : UInt32 NULL output domain : {4..=4} @@ -363,7 +363,7 @@ output : 4 ast : length(parse_json('{"k":"v"}')) raw expr : length(parse_json('{"k":"v"}')) -checked expr : length(CAST(parse_json("{\"k\":\"v\"}") AS Variant NULL)) +checked expr : length(CAST(parse_json("{\"k\":\"v\"}") AS Variant NULL)) optimized expr : NULL output type : UInt32 NULL output domain : {NULL} @@ -372,7 +372,7 @@ output : NULL ast : length(parse_json(s)) raw expr : length(parse_json(s::String)) -checked expr : length(CAST(parse_json(s) AS Variant NULL)) +checked expr : length(CAST(parse_json(s) AS Variant NULL)) evaluation: +--------+----------------------------------+-------------+ | | s | Output | @@ -417,7 +417,7 @@ evaluation (internal): ast : json_object_keys(parse_json('[1,2,3,4]')) raw expr : json_object_keys(parse_json('[1,2,3,4]')) -checked expr : json_object_keys(CAST(parse_json("[1,2,3,4]") AS Variant NULL)) +checked expr : json_object_keys(CAST(parse_json("[1,2,3,4]") AS Variant NULL)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -426,7 +426,7 @@ output : NULL ast : json_object_keys(parse_json('{"k1":"v1","k2":"v2"}')) raw expr : json_object_keys(parse_json('{"k1":"v1","k2":"v2"}')) -checked expr : json_object_keys(CAST(parse_json("{\"k1\":\"v1\",\"k2\":\"v2\"}") AS Variant NULL)) +checked expr : json_object_keys(CAST(parse_json("{\"k1\":\"v1\",\"k2\":\"v2\"}") AS Variant NULL)) optimized expr : 0x8000000210000002100000026b316b32 output type : Variant NULL output domain : Undefined @@ -435,7 +435,7 @@ output : '["k1","k2"]' ast : json_object_keys(parse_json(s)) raw expr : json_object_keys(parse_json(s::String)) -checked expr : json_object_keys(CAST(parse_json(s) AS Variant NULL)) +checked expr : json_object_keys(CAST(parse_json(s) AS Variant NULL)) evaluation: +--------+-------------------------------------------------+---------------+ | | s | Output | @@ -480,7 +480,7 @@ evaluation (internal): ast : parse_json('null')[1] raw expr : get(parse_json('null'), 1) -checked expr : get(parse_json("null"), to_int64(1_u8)) +checked expr : get(parse_json("null"), CAST(1_u8 AS Int64)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -498,7 +498,7 @@ output : NULL ast : parse_json('[1,2,3,4]')[1] raw expr : get(parse_json('[1,2,3,4]'), 1) -checked expr : get(parse_json("[1,2,3,4]"), to_int64(1_u8)) +checked expr : get(parse_json("[1,2,3,4]"), CAST(1_u8 AS Int64)) optimized expr : 0x20000000200000025002 output type : Variant NULL output domain : Undefined @@ -507,7 +507,7 @@ output : '2' ast : parse_json('[1,2,3,4]')[2+3] raw expr : get(parse_json('[1,2,3,4]'), plus(2, 3)) -checked expr : get(parse_json("[1,2,3,4]"), to_int64(plus(2_u8, 3_u8))) +checked expr : get(parse_json("[1,2,3,4]"), CAST(plus(2_u8, 3_u8) AS Int64)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -534,7 +534,7 @@ output : NULL ast : CAST(('a', 'b') AS VARIANT)['2'] raw expr : get(CAST(tuple('a', 'b') AS Variant), '2') -checked expr : get(to_variant(tuple("a", "b")), "2") +checked expr : get(CAST(tuple("a", "b") AS Variant), "2") optimized expr : 0x200000001000000162 output type : Variant NULL output domain : Undefined @@ -543,7 +543,7 @@ output : '"b"' ast : parse_json(s)[i] raw expr : get(parse_json(s::String), i::UInt64) -checked expr : get(parse_json(s), to_int64(i)) +checked expr : get(parse_json(s), CAST(i AS Int64)) evaluation: +--------+----------------------------------+---------+--------------+ | | s | i | Output | @@ -566,7 +566,7 @@ evaluation (internal): ast : parse_json(s)[i] raw expr : get(parse_json(s::String NULL), i::UInt64 NULL) -checked expr : get(parse_json(s), CAST(i AS Int64 NULL)) +checked expr : get(parse_json(s), CAST(i AS Int64 NULL)) evaluation: +--------+-------------------------------------------+------------------+--------------+ | | s | i | Output | @@ -613,7 +613,7 @@ evaluation (internal): ast : parse_json(s)[k] raw expr : get(parse_json(s::String NULL), k::String) -checked expr : get(parse_json(s), CAST(k AS String NULL)) +checked expr : get(parse_json(s), CAST(k AS String NULL)) evaluation: +--------+---------------------------------+------------+--------------+ | | s | k | Output | @@ -687,7 +687,7 @@ evaluation (internal): ast : get_ignore_case(parse_json(s), k) raw expr : get_ignore_case(parse_json(s::String NULL), k::String) -checked expr : get_ignore_case(parse_json(s), CAST(k AS String NULL)) +checked expr : get_ignore_case(parse_json(s), CAST(k AS String NULL)) evaluation: +--------+---------------------------------+------------+--------------+ | | s | k | Output | @@ -806,7 +806,7 @@ evaluation (internal): ast : get_path(parse_json(s), k) raw expr : get_path(parse_json(s::String NULL), k::String) -checked expr : get_path(parse_json(s), CAST(k AS String NULL)) +checked expr : get_path(parse_json(s), CAST(k AS String NULL)) evaluation: +--------+------------------------------------------+--------------+--------------+ | | s | k | Output | @@ -934,7 +934,7 @@ evaluation (internal): ast : json_extract_path_text(s, k) raw expr : json_extract_path_text(s::String NULL, k::String) -checked expr : json_extract_path_text(s, CAST(k AS String NULL)) +checked expr : json_extract_path_text(s, CAST(k AS String NULL)) evaluation: +--------+------------------------------------------+--------------+-------------+ | | s | k | Output | @@ -2629,7 +2629,7 @@ output : '[10]' ast : json_path_query_array(parse_json(s), p) raw expr : json_path_query_array(parse_json(s::String NULL), p::String) -checked expr : json_path_query_array(parse_json(s), CAST(p AS String NULL)) +checked expr : json_path_query_array(parse_json(s), CAST(p AS String NULL)) evaluation: +--------+---------------------------------+------------------+--------------+ | | s | p | Output | @@ -2707,7 +2707,7 @@ output : '10' ast : json_path_query_first(parse_json(s), p) raw expr : json_path_query_first(parse_json(s::String NULL), p::String) -checked expr : json_path_query_first(parse_json(s), CAST(p AS String NULL)) +checked expr : json_path_query_first(parse_json(s), CAST(p AS String NULL)) evaluation: +--------+---------------------------------+------------------+--------------+ | | s | p | Output | @@ -2896,7 +2896,7 @@ output : '{"b":{"c":1},"c":[{"a":1}]}' ast : json_typeof(NULL) raw expr : json_typeof(NULL) -checked expr : json_typeof(CAST(NULL AS Variant NULL)) +checked expr : json_typeof(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3083,7 +3083,7 @@ output : true ast : parse_json('null')->1 raw expr : get(parse_json('null'), 1) -checked expr : get(parse_json("null"), to_int64(1_u8)) +checked expr : get(parse_json("null"), CAST(1_u8 AS Int64)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3101,7 +3101,7 @@ output : NULL ast : parse_json('[1,2,3,4]')->1 raw expr : get(parse_json('[1,2,3,4]'), 1) -checked expr : get(parse_json("[1,2,3,4]"), to_int64(1_u8)) +checked expr : get(parse_json("[1,2,3,4]"), CAST(1_u8 AS Int64)) optimized expr : 0x20000000200000025002 output type : Variant NULL output domain : Undefined @@ -3110,7 +3110,7 @@ output : '2' ast : parse_json('[1,2,3,4]')->(2+3) raw expr : get(parse_json('[1,2,3,4]'), plus(2, 3)) -checked expr : get(parse_json("[1,2,3,4]"), to_int64(plus(2_u8, 3_u8))) +checked expr : get(parse_json("[1,2,3,4]"), CAST(plus(2_u8, 3_u8) AS Int64)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3137,7 +3137,7 @@ output : NULL ast : CAST(('a', 'b') AS VARIANT)->'2' raw expr : get(CAST(tuple('a', 'b') AS Variant), '2') -checked expr : get(to_variant(tuple("a", "b")), "2") +checked expr : get(CAST(tuple("a", "b") AS Variant), "2") optimized expr : 0x200000001000000162 output type : Variant NULL output domain : Undefined @@ -3146,7 +3146,7 @@ output : '"b"' ast : parse_json(s)->i raw expr : get(parse_json(s::String), i::UInt64) -checked expr : get(parse_json(s), to_int64(i)) +checked expr : get(parse_json(s), CAST(i AS Int64)) evaluation: +--------+----------------------------------+---------+--------------+ | | s | i | Output | @@ -3169,7 +3169,7 @@ evaluation (internal): ast : parse_json(s)->i raw expr : get(parse_json(s::String NULL), i::UInt64 NULL) -checked expr : get(parse_json(s), CAST(i AS Int64 NULL)) +checked expr : get(parse_json(s), CAST(i AS Int64 NULL)) evaluation: +--------+-------------------------------------------+------------------+--------------+ | | s | i | Output | @@ -3216,7 +3216,7 @@ evaluation (internal): ast : parse_json(s)->k raw expr : get(parse_json(s::String NULL), k::String) -checked expr : get(parse_json(s), CAST(k AS String NULL)) +checked expr : get(parse_json(s), CAST(k AS String NULL)) evaluation: +--------+---------------------------------+------------+--------------+ | | s | k | Output | @@ -3240,7 +3240,7 @@ evaluation (internal): ast : parse_json('null')->>1 raw expr : get_string(parse_json('null'), 1) -checked expr : get_string(parse_json("null"), to_int64(1_u8)) +checked expr : get_string(parse_json("null"), CAST(1_u8 AS Int64)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3258,7 +3258,7 @@ output : NULL ast : parse_json('[1,2,3,4]')->>1 raw expr : get_string(parse_json('[1,2,3,4]'), 1) -checked expr : get_string(parse_json("[1,2,3,4]"), to_int64(1_u8)) +checked expr : get_string(parse_json("[1,2,3,4]"), CAST(1_u8 AS Int64)) optimized expr : "2" output type : String NULL output domain : {"2"..="2"} @@ -3267,7 +3267,7 @@ output : '2' ast : parse_json('[1,2,3,4]')->>(2+3) raw expr : get_string(parse_json('[1,2,3,4]'), plus(2, 3)) -checked expr : get_string(parse_json("[1,2,3,4]"), to_int64(plus(2_u8, 3_u8))) +checked expr : get_string(parse_json("[1,2,3,4]"), CAST(plus(2_u8, 3_u8) AS Int64)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3303,7 +3303,7 @@ output : NULL ast : CAST(('a', 'b') AS VARIANT)->>'2' raw expr : get_string(CAST(tuple('a', 'b') AS Variant), '2') -checked expr : get_string(to_variant(tuple("a", "b")), "2") +checked expr : get_string(CAST(tuple("a", "b") AS Variant), "2") optimized expr : "b" output type : String NULL output domain : {"b"..="b"} @@ -3312,7 +3312,7 @@ output : 'b' ast : parse_json(s)->>i raw expr : get_string(parse_json(s::String), i::UInt64) -checked expr : get_string(parse_json(s), to_int64(i)) +checked expr : get_string(parse_json(s), CAST(i AS Int64)) evaluation: +--------+----------------------------------+---------+-------------+ | | s | i | Output | @@ -3335,7 +3335,7 @@ evaluation (internal): ast : parse_json(s)->>i raw expr : get_string(parse_json(s::String NULL), i::UInt64 NULL) -checked expr : get_string(parse_json(s), CAST(i AS Int64 NULL)) +checked expr : get_string(parse_json(s), CAST(i AS Int64 NULL)) evaluation: +--------+-------------------------------------------+------------------+-------------+ | | s | i | Output | @@ -3382,7 +3382,7 @@ evaluation (internal): ast : parse_json(s)->>k raw expr : get_string(parse_json(s::String NULL), k::String) -checked expr : get_string(parse_json(s), CAST(k AS String NULL)) +checked expr : get_string(parse_json(s), CAST(k AS String NULL)) evaluation: +--------+---------------------------------+------------+-------------+ | | s | k | Output | @@ -3715,7 +3715,7 @@ evaluation (internal): ast : parse_json('["1","2","3"]') ? NULL raw expr : json_exists_key(parse_json('["1","2","3"]'), NULL) -checked expr : json_exists_key(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS String NULL)) +checked expr : json_exists_key(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3769,7 +3769,7 @@ output : false ast : parse_json(s) ? 'a' raw expr : json_exists_key(parse_json(s::String NULL), 'a') -checked expr : json_exists_key(parse_json(s), CAST("a" AS String NULL)) +checked expr : json_exists_key(parse_json(s), CAST("a" AS String NULL)) optimized expr : json_exists_key(parse_json(s), "a") evaluation: +--------+------------------------------------+--------------+ @@ -3793,7 +3793,7 @@ evaluation (internal): ast : parse_json('["1","2","3"]') ?| NULL raw expr : json_exists_any_keys(parse_json('["1","2","3"]'), NULL) -checked expr : json_exists_any_keys(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS Array(String) NULL)) +checked expr : json_exists_any_keys(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS Array(String) NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3847,7 +3847,7 @@ output : false ast : parse_json(s) ?| ['a','b'] raw expr : json_exists_any_keys(parse_json(s::String NULL), array('a', 'b')) -checked expr : json_exists_any_keys(parse_json(s), CAST(array("a", "b") AS Array(String) NULL)) +checked expr : json_exists_any_keys(parse_json(s), CAST(array("a", "b") AS Array(String) NULL)) optimized expr : json_exists_any_keys(parse_json(s), ['a', 'b']) evaluation: +--------+------------------------------------------------+--------------+ @@ -3871,7 +3871,7 @@ evaluation (internal): ast : parse_json('["1","2","3"]') ?& NULL raw expr : json_exists_all_keys(parse_json('["1","2","3"]'), NULL) -checked expr : json_exists_all_keys(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS Array(String) NULL)) +checked expr : json_exists_all_keys(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS Array(String) NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3925,7 +3925,7 @@ output : false ast : parse_json(s) ?& ['a','b'] raw expr : json_exists_all_keys(parse_json(s::String NULL), array('a', 'b')) -checked expr : json_exists_all_keys(parse_json(s), CAST(array("a", "b") AS Array(String) NULL)) +checked expr : json_exists_all_keys(parse_json(s), CAST(array("a", "b") AS Array(String) NULL)) optimized expr : json_exists_all_keys(parse_json(s), ['a', 'b']) evaluation: +--------+--------------------------------------------------------+--------------+ @@ -3949,7 +3949,7 @@ evaluation (internal): ast : NULL @> NULL raw expr : json_contains_in_left(NULL, NULL) -checked expr : json_contains_in_left(CAST(NULL AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : json_contains_in_left(CAST(NULL AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3958,7 +3958,7 @@ output : NULL ast : parse_json('[1,2,3]') @> NULL raw expr : json_contains_in_left(parse_json('[1,2,3]'), NULL) -checked expr : json_contains_in_left(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : json_contains_in_left(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3967,7 +3967,7 @@ output : NULL ast : NULL @> parse_json('1') raw expr : json_contains_in_left(NULL, parse_json('1')) -checked expr : json_contains_in_left(CAST(NULL AS Variant NULL), CAST(parse_json("1") AS Variant NULL)) +checked expr : json_contains_in_left(CAST(NULL AS Variant NULL), CAST(parse_json("1") AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -4129,7 +4129,7 @@ output : true ast : NULL <@ NULL raw expr : json_contains_in_right(NULL, NULL) -checked expr : json_contains_in_right(CAST(NULL AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : json_contains_in_right(CAST(NULL AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -4138,7 +4138,7 @@ output : NULL ast : parse_json('[1,2,3]') <@ NULL raw expr : json_contains_in_right(parse_json('[1,2,3]'), NULL) -checked expr : json_contains_in_right(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : json_contains_in_right(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -4147,7 +4147,7 @@ output : NULL ast : NULL <@ parse_json('1') raw expr : json_contains_in_right(NULL, parse_json('1')) -checked expr : json_contains_in_right(CAST(NULL AS Variant NULL), CAST(parse_json("1") AS Variant NULL)) +checked expr : json_contains_in_right(CAST(NULL AS Variant NULL), CAST(parse_json("1") AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -4600,7 +4600,7 @@ output : true ast : parse_json('[1,2,3]') || NULL raw expr : concat(parse_json('[1,2,3]'), NULL) -checked expr : concat(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : concat(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -4772,13 +4772,13 @@ error: --> SQL:1:20 | 1 | parse_json('true') - 1 - | ^ InvalidJsonType while evaluating function `minus('true', 1)` in expr `parse_json('true') - to_int32(1)` + | ^ InvalidJsonType while evaluating function `minus('true', 1)` in expr `parse_json('true') - CAST(1 AS Int32)` ast : parse_json('[1,2,3]') - 0 raw expr : minus(parse_json('[1,2,3]'), 0) -checked expr : minus(parse_json("[1,2,3]"), to_int32(0_u8)) +checked expr : minus(parse_json("[1,2,3]"), CAST(0_u8 AS Int32)) optimized expr : 0x80000002200000022000000250025003 output type : Variant output domain : Undefined @@ -4787,7 +4787,7 @@ output : '[2,3]' ast : parse_json('[1,2,3]') - 1 raw expr : minus(parse_json('[1,2,3]'), 1) -checked expr : minus(parse_json("[1,2,3]"), to_int32(1_u8)) +checked expr : minus(parse_json("[1,2,3]"), CAST(1_u8 AS Int32)) optimized expr : 0x80000002200000022000000250015003 output type : Variant output domain : Undefined @@ -4796,7 +4796,7 @@ output : '[1,3]' ast : parse_json('[1,2,3]') - 2 raw expr : minus(parse_json('[1,2,3]'), 2) -checked expr : minus(parse_json("[1,2,3]"), to_int32(2_u8)) +checked expr : minus(parse_json("[1,2,3]"), CAST(2_u8 AS Int32)) optimized expr : 0x80000002200000022000000250015002 output type : Variant output domain : Undefined @@ -4805,7 +4805,7 @@ output : '[1,2]' ast : parse_json('[1,2,3]') - -1 raw expr : minus(parse_json('[1,2,3]'), minus(1)) -checked expr : minus(parse_json("[1,2,3]"), to_int32(minus(1_u8))) +checked expr : minus(parse_json("[1,2,3]"), CAST(minus(1_u8) AS Int32)) optimized expr : 0x80000002200000022000000250015002 output type : Variant output domain : Undefined @@ -4814,7 +4814,7 @@ output : '[1,2]' ast : parse_json('[1,2,3]') - -2 raw expr : minus(parse_json('[1,2,3]'), minus(2)) -checked expr : minus(parse_json("[1,2,3]"), to_int32(minus(2_u8))) +checked expr : minus(parse_json("[1,2,3]"), CAST(minus(2_u8) AS Int32)) optimized expr : 0x80000002200000022000000250015003 output type : Variant output domain : Undefined @@ -4823,7 +4823,7 @@ output : '[1,3]' ast : parse_json('[1,2,3]') - -3 raw expr : minus(parse_json('[1,2,3]'), minus(3)) -checked expr : minus(parse_json("[1,2,3]"), to_int32(minus(3_u8))) +checked expr : minus(parse_json("[1,2,3]"), CAST(minus(3_u8) AS Int32)) optimized expr : 0x80000002200000022000000250025003 output type : Variant output domain : Undefined @@ -4832,7 +4832,7 @@ output : '[2,3]' ast : parse_json('[1,2,3]') - -4 raw expr : minus(parse_json('[1,2,3]'), minus(4)) -checked expr : minus(parse_json("[1,2,3]"), to_int32(minus(4_u8))) +checked expr : minus(parse_json("[1,2,3]"), CAST(minus(4_u8) AS Int32)) optimized expr : 0x80000003200000022000000220000002500150025003 output type : Variant output domain : Undefined @@ -4841,7 +4841,7 @@ output : '[1,2,3]' ast : parse_json('[1,2,{"a":[1,2,3],"b":[40,50,60]}]') - 2 raw expr : minus(parse_json('[1,2,{"a":[1,2,3],"b":[40,50,60]}]'), 2) -checked expr : minus(parse_json("[1,2,{\"a\":[1,2,3],\"b\":[40,50,60]}]"), to_int32(2_u8)) +checked expr : minus(parse_json("[1,2,{\"a\":[1,2,3],\"b\":[40,50,60]}]"), CAST(2_u8 AS Int32)) optimized expr : 0x80000002200000022000000250015002 output type : Variant output domain : Undefined @@ -5005,7 +5005,7 @@ evaluation (internal): ast : json_array_insert('[0,1,2,3]'::variant, 2, '"hello"'::variant) raw expr : json_array_insert(CAST('[0,1,2,3]' AS Variant), 2, CAST('"hello"' AS Variant)) -checked expr : json_array_insert(parse_json("[0,1,2,3]"), to_int32(2_u8), parse_json("\"hello\"")) +checked expr : json_array_insert(CAST("[0,1,2,3]" AS Variant), CAST(2_u8 AS Int32), CAST("\"hello\"" AS Variant)) optimized expr : 0x80000005200000012000000210000005200000022000000200500168656c6c6f50025003 output type : Variant output domain : Undefined @@ -5014,7 +5014,7 @@ output : '[0,1,"hello",2,3]' ast : json_array_insert('[0,1,2,3]'::variant, 10, '100'::variant) raw expr : json_array_insert(CAST('[0,1,2,3]' AS Variant), 10, CAST('100' AS Variant)) -checked expr : json_array_insert(parse_json("[0,1,2,3]"), to_int32(10_u8), parse_json("100")) +checked expr : json_array_insert(CAST("[0,1,2,3]" AS Variant), CAST(10_u8 AS Int32), CAST("100" AS Variant)) optimized expr : 0x800000052000000120000002200000022000000220000002005001500250035064 output type : Variant output domain : Undefined @@ -5023,7 +5023,7 @@ output : '[0,1,2,3,100]' ast : json_array_insert('[0,1,2,3]'::variant, 0, 'true'::variant) raw expr : json_array_insert(CAST('[0,1,2,3]' AS Variant), 0, CAST('true' AS Variant)) -checked expr : json_array_insert(parse_json("[0,1,2,3]"), to_int32(0_u8), parse_json("true")) +checked expr : json_array_insert(CAST("[0,1,2,3]" AS Variant), CAST(0_u8 AS Int32), CAST("true" AS Variant)) optimized expr : 0x80000005400000002000000120000002200000022000000200500150025003 output type : Variant output domain : Undefined @@ -5032,7 +5032,7 @@ output : '[true,0,1,2,3]' ast : json_array_insert('[0,1,2,3]'::variant, -1, '{"k":"v"}'::variant) raw expr : json_array_insert(CAST('[0,1,2,3]' AS Variant), minus(1), CAST('{"k":"v"}' AS Variant)) -checked expr : json_array_insert(parse_json("[0,1,2,3]"), to_int32(minus(1_u8)), parse_json("{\"k\":\"v\"}")) +checked expr : json_array_insert(CAST("[0,1,2,3]" AS Variant), CAST(minus(1_u8) AS Int32), CAST("{\"k\":\"v\"}" AS Variant)) optimized expr : 0x800000052000000120000002200000025000000e2000000200500150024000000110000001100000016b765003 output type : Variant output domain : Undefined @@ -5041,7 +5041,7 @@ output : '[0,1,2,{"k":"v"},3]' ast : json_array_insert('1'::variant, 1, '{"k":"v"}'::variant) raw expr : json_array_insert(CAST('1' AS Variant), 1, CAST('{"k":"v"}' AS Variant)) -checked expr : json_array_insert(parse_json("1"), to_int32(1_u8), parse_json("{\"k\":\"v\"}")) +checked expr : json_array_insert(CAST("1" AS Variant), CAST(1_u8 AS Int32), CAST("{\"k\":\"v\"}" AS Variant)) optimized expr : 0x80000002200000025000000e50014000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5050,7 +5050,7 @@ output : '[1,{"k":"v"}]' ast : json_array_insert('{"k":"v"}'::variant, 2, 'true'::variant) raw expr : json_array_insert(CAST('{"k":"v"}' AS Variant), 2, CAST('true' AS Variant)) -checked expr : json_array_insert(parse_json("{\"k\":\"v\"}"), to_int32(2_u8), parse_json("true")) +checked expr : json_array_insert(CAST("{\"k\":\"v\"}" AS Variant), CAST(2_u8 AS Int32), CAST("true" AS Variant)) optimized expr : 0x800000025000000e400000004000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5059,7 +5059,7 @@ output : '[{"k":"v"},true]' ast : json_array_insert(parse_json(v), 2, parse_json(n)) raw expr : json_array_insert(parse_json(v::String NULL), 2, parse_json(n::String NULL)) -checked expr : json_array_insert(parse_json(v), CAST(2_u8 AS Int32 NULL), parse_json(n)) +checked expr : json_array_insert(parse_json(v), CAST(2_u8 AS Int32 NULL), parse_json(n)) optimized expr : json_array_insert(parse_json(v), 2_i32, parse_json(n)) evaluation: +--------+----------------------------------------------+------------------------------+-----------------------+ @@ -5084,7 +5084,7 @@ evaluation (internal): ast : json_array_distinct('[0,1,1,2,2,2,3,4]'::variant) raw expr : json_array_distinct(CAST('[0,1,1,2,2,2,3,4]' AS Variant)) -checked expr : json_array_distinct(parse_json("[0,1,1,2,2,2,3,4]")) +checked expr : json_array_distinct(CAST("[0,1,1,2,2,2,3,4]" AS Variant)) optimized expr : 0x800000052000000120000002200000022000000220000002005001500250035004 output type : Variant output domain : Undefined @@ -5093,7 +5093,7 @@ output : '[0,1,2,3,4]' ast : json_array_distinct('["A","A","B","C","A","C"]'::variant) raw expr : json_array_distinct(CAST('["A","A","B","C","A","C"]' AS Variant)) -checked expr : json_array_distinct(parse_json("[\"A\",\"A\",\"B\",\"C\",\"A\",\"C\"]")) +checked expr : json_array_distinct(CAST("[\"A\",\"A\",\"B\",\"C\",\"A\",\"C\"]" AS Variant)) optimized expr : 0x80000003100000011000000110000001414243 output type : Variant output domain : Undefined @@ -5102,7 +5102,7 @@ output : '["A","B","C"]' ast : json_array_distinct('["A","A",10,false,null,false,null,10]'::variant) raw expr : json_array_distinct(CAST('["A","A",10,false,null,false,null,10]' AS Variant)) -checked expr : json_array_distinct(parse_json("[\"A\",\"A\",10,false,null,false,null,10]")) +checked expr : json_array_distinct(CAST("[\"A\",\"A\",10,false,null,false,null,10]" AS Variant)) optimized expr : 0x800000041000000120000002300000000000000041500a output type : Variant output domain : Undefined @@ -5111,7 +5111,7 @@ output : '["A",10,false,null]' ast : json_array_distinct('[[1,2,2],3,4,[1,2,2]]'::variant) raw expr : json_array_distinct(CAST('[[1,2,2],3,4,[1,2,2]]' AS Variant)) -checked expr : json_array_distinct(parse_json("[[1,2,2],3,4,[1,2,2]]")) +checked expr : json_array_distinct(CAST("[[1,2,2],3,4,[1,2,2]]" AS Variant)) optimized expr : 0x800000035000001620000002200000028000000320000002200000022000000250015002500250035004 output type : Variant output domain : Undefined @@ -5120,7 +5120,7 @@ output : '[[1,2,2],3,4]' ast : json_array_distinct('[{"k":"v"},"A","A","B",{"k":"v"}]'::variant) raw expr : json_array_distinct(CAST('[{"k":"v"},"A","A","B",{"k":"v"}]' AS Variant)) -checked expr : json_array_distinct(parse_json("[{\"k\":\"v\"},\"A\",\"A\",\"B\",{\"k\":\"v\"}]")) +checked expr : json_array_distinct(CAST("[{\"k\":\"v\"},\"A\",\"A\",\"B\",{\"k\":\"v\"}]" AS Variant)) optimized expr : 0x800000035000000e10000001100000014000000110000001100000016b764142 output type : Variant output domain : Undefined @@ -5129,7 +5129,7 @@ output : '[{"k":"v"},"A","B"]' ast : json_array_distinct('1'::variant) raw expr : json_array_distinct(CAST('1' AS Variant)) -checked expr : json_array_distinct(parse_json("1")) +checked expr : json_array_distinct(CAST("1" AS Variant)) optimized expr : 0x80000001200000025001 output type : Variant output domain : Undefined @@ -5138,7 +5138,7 @@ output : '[1]' ast : json_array_distinct('{"k":"v"}'::variant) raw expr : json_array_distinct(CAST('{"k":"v"}' AS Variant)) -checked expr : json_array_distinct(parse_json("{\"k\":\"v\"}")) +checked expr : json_array_distinct(CAST("{\"k\":\"v\"}" AS Variant)) optimized expr : 0x800000015000000e4000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5170,7 +5170,7 @@ evaluation (internal): ast : json_array_intersection('["A","B","C"]'::variant, '["B","C"]'::variant) raw expr : json_array_intersection(CAST('["A","B","C"]' AS Variant), CAST('["B","C"]' AS Variant)) -checked expr : json_array_intersection(parse_json("[\"A\",\"B\",\"C\"]"), parse_json("[\"B\",\"C\"]")) +checked expr : json_array_intersection(CAST("[\"A\",\"B\",\"C\"]" AS Variant), CAST("[\"B\",\"C\"]" AS Variant)) optimized expr : 0x8000000210000001100000014243 output type : Variant output domain : Undefined @@ -5179,7 +5179,7 @@ output : '["B","C"]' ast : json_array_intersection('["A","B","B","B","C"]'::variant, '["B","B"]'::variant) raw expr : json_array_intersection(CAST('["A","B","B","B","C"]' AS Variant), CAST('["B","B"]' AS Variant)) -checked expr : json_array_intersection(parse_json("[\"A\",\"B\",\"B\",\"B\",\"C\"]"), parse_json("[\"B\",\"B\"]")) +checked expr : json_array_intersection(CAST("[\"A\",\"B\",\"B\",\"B\",\"C\"]" AS Variant), CAST("[\"B\",\"B\"]" AS Variant)) optimized expr : 0x8000000210000001100000014242 output type : Variant output domain : Undefined @@ -5188,7 +5188,7 @@ output : '["B","B"]' ast : json_array_intersection('[1,2]'::variant, '[3,4]'::variant) raw expr : json_array_intersection(CAST('[1,2]' AS Variant), CAST('[3,4]' AS Variant)) -checked expr : json_array_intersection(parse_json("[1,2]"), parse_json("[3,4]")) +checked expr : json_array_intersection(CAST("[1,2]" AS Variant), CAST("[3,4]" AS Variant)) optimized expr : 0x80000000 output type : Variant output domain : Undefined @@ -5197,7 +5197,7 @@ output : '[]' ast : json_array_intersection('[null,102,null]'::variant, '[null,null,103]'::variant) raw expr : json_array_intersection(CAST('[null,102,null]' AS Variant), CAST('[null,null,103]' AS Variant)) -checked expr : json_array_intersection(parse_json("[null,102,null]"), parse_json("[null,null,103]")) +checked expr : json_array_intersection(CAST("[null,102,null]" AS Variant), CAST("[null,null,103]" AS Variant)) optimized expr : 0x800000020000000000000000 output type : Variant output domain : Undefined @@ -5206,7 +5206,7 @@ output : '[null,null]' ast : json_array_intersection('[{"a":1,"b":2},1,2]'::variant, '[{"a":1,"b":2},3,4]'::variant) raw expr : json_array_intersection(CAST('[{"a":1,"b":2},1,2]' AS Variant), CAST('[{"a":1,"b":2},3,4]' AS Variant)) -checked expr : json_array_intersection(parse_json("[{\"a\":1,\"b\":2},1,2]"), parse_json("[{\"a\":1,\"b\":2},3,4]")) +checked expr : json_array_intersection(CAST("[{\"a\":1,\"b\":2},1,2]" AS Variant), CAST("[{\"a\":1,\"b\":2},3,4]" AS Variant)) optimized expr : 0x800000015000001a4000000210000001100000012000000220000002616250015002 output type : Variant output domain : Undefined @@ -5215,7 +5215,7 @@ output : '[{"a":1,"b":2}]' ast : json_array_intersection('[{"a":1,"b":2},1,2]'::variant, '[{"a":2,"c":3},3,4]'::variant) raw expr : json_array_intersection(CAST('[{"a":1,"b":2},1,2]' AS Variant), CAST('[{"a":2,"c":3},3,4]' AS Variant)) -checked expr : json_array_intersection(parse_json("[{\"a\":1,\"b\":2},1,2]"), parse_json("[{\"a\":2,\"c\":3},3,4]")) +checked expr : json_array_intersection(CAST("[{\"a\":1,\"b\":2},1,2]" AS Variant), CAST("[{\"a\":2,\"c\":3},3,4]" AS Variant)) optimized expr : 0x80000000 output type : Variant output domain : Undefined @@ -5224,7 +5224,7 @@ output : '[]' ast : json_array_intersection('[{"a":1,"b":2,"c":3}]'::variant, '[{"c":3,"b":2,"a":1},3,4]'::variant) raw expr : json_array_intersection(CAST('[{"a":1,"b":2,"c":3}]' AS Variant), CAST('[{"c":3,"b":2,"a":1},3,4]' AS Variant)) -checked expr : json_array_intersection(parse_json("[{\"a\":1,\"b\":2,\"c\":3}]"), parse_json("[{\"c\":3,\"b\":2,\"a\":1},3,4]")) +checked expr : json_array_intersection(CAST("[{\"a\":1,\"b\":2,\"c\":3}]" AS Variant), CAST("[{\"c\":3,\"b\":2,\"a\":1},3,4]" AS Variant)) optimized expr : 0x800000015000002540000003100000011000000110000001200000022000000220000002616263500150025003 output type : Variant output domain : Undefined @@ -5233,7 +5233,7 @@ output : '[{"a":1,"b":2,"c":3}]' ast : json_array_intersection('1'::variant, '1'::variant) raw expr : json_array_intersection(CAST('1' AS Variant), CAST('1' AS Variant)) -checked expr : json_array_intersection(parse_json("1"), parse_json("1")) +checked expr : json_array_intersection(CAST("1" AS Variant), CAST("1" AS Variant)) optimized expr : 0x80000001200000025001 output type : Variant output domain : Undefined @@ -5242,7 +5242,7 @@ output : '[1]' ast : json_array_intersection('1'::variant, '2'::variant) raw expr : json_array_intersection(CAST('1' AS Variant), CAST('2' AS Variant)) -checked expr : json_array_intersection(parse_json("1"), parse_json("2")) +checked expr : json_array_intersection(CAST("1" AS Variant), CAST("2" AS Variant)) optimized expr : 0x80000000 output type : Variant output domain : Undefined @@ -5251,7 +5251,7 @@ output : '[]' ast : json_array_intersection('{"k":"v"}'::variant, '{"k":"v"}'::variant) raw expr : json_array_intersection(CAST('{"k":"v"}' AS Variant), CAST('{"k":"v"}' AS Variant)) -checked expr : json_array_intersection(parse_json("{\"k\":\"v\"}"), parse_json("{\"k\":\"v\"}")) +checked expr : json_array_intersection(CAST("{\"k\":\"v\"}" AS Variant), CAST("{\"k\":\"v\"}" AS Variant)) optimized expr : 0x800000015000000e4000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5284,7 +5284,7 @@ evaluation (internal): ast : json_array_except('["A","B","C"]'::variant, '["B","C"]'::variant) raw expr : json_array_except(CAST('["A","B","C"]' AS Variant), CAST('["B","C"]' AS Variant)) -checked expr : json_array_except(parse_json("[\"A\",\"B\",\"C\"]"), parse_json("[\"B\",\"C\"]")) +checked expr : json_array_except(CAST("[\"A\",\"B\",\"C\"]" AS Variant), CAST("[\"B\",\"C\"]" AS Variant)) optimized expr : 0x800000011000000141 output type : Variant output domain : Undefined @@ -5293,7 +5293,7 @@ output : '["A"]' ast : json_array_except('["A","B","B","B","C"]'::variant, '["B","B"]'::variant) raw expr : json_array_except(CAST('["A","B","B","B","C"]' AS Variant), CAST('["B","B"]' AS Variant)) -checked expr : json_array_except(parse_json("[\"A\",\"B\",\"B\",\"B\",\"C\"]"), parse_json("[\"B\",\"B\"]")) +checked expr : json_array_except(CAST("[\"A\",\"B\",\"B\",\"B\",\"C\"]" AS Variant), CAST("[\"B\",\"B\"]" AS Variant)) optimized expr : 0x80000003100000011000000110000001414243 output type : Variant output domain : Undefined @@ -5302,7 +5302,7 @@ output : '["A","B","C"]' ast : json_array_except('[1,2]'::variant, '[3,4]'::variant) raw expr : json_array_except(CAST('[1,2]' AS Variant), CAST('[3,4]' AS Variant)) -checked expr : json_array_except(parse_json("[1,2]"), parse_json("[3,4]")) +checked expr : json_array_except(CAST("[1,2]" AS Variant), CAST("[3,4]" AS Variant)) optimized expr : 0x80000002200000022000000250015002 output type : Variant output domain : Undefined @@ -5311,7 +5311,7 @@ output : '[1,2]' ast : json_array_except('[null,102,null]'::variant, '[null,null,103]'::variant) raw expr : json_array_except(CAST('[null,102,null]' AS Variant), CAST('[null,null,103]' AS Variant)) -checked expr : json_array_except(parse_json("[null,102,null]"), parse_json("[null,null,103]")) +checked expr : json_array_except(CAST("[null,102,null]" AS Variant), CAST("[null,null,103]" AS Variant)) optimized expr : 0x80000001200000025066 output type : Variant output domain : Undefined @@ -5320,7 +5320,7 @@ output : '[102]' ast : json_array_except('[{"a":1,"b":2},1,2]'::variant, '[{"a":1,"b":2},3,4]'::variant) raw expr : json_array_except(CAST('[{"a":1,"b":2},1,2]' AS Variant), CAST('[{"a":1,"b":2},3,4]' AS Variant)) -checked expr : json_array_except(parse_json("[{\"a\":1,\"b\":2},1,2]"), parse_json("[{\"a\":1,\"b\":2},3,4]")) +checked expr : json_array_except(CAST("[{\"a\":1,\"b\":2},1,2]" AS Variant), CAST("[{\"a\":1,\"b\":2},3,4]" AS Variant)) optimized expr : 0x80000002200000022000000250015002 output type : Variant output domain : Undefined @@ -5329,7 +5329,7 @@ output : '[1,2]' ast : json_array_except('[{"a":1,"b":2},1,2]'::variant, '[{"a":2,"c":3},3,4]'::variant) raw expr : json_array_except(CAST('[{"a":1,"b":2},1,2]' AS Variant), CAST('[{"a":2,"c":3},3,4]' AS Variant)) -checked expr : json_array_except(parse_json("[{\"a\":1,\"b\":2},1,2]"), parse_json("[{\"a\":2,\"c\":3},3,4]")) +checked expr : json_array_except(CAST("[{\"a\":1,\"b\":2},1,2]" AS Variant), CAST("[{\"a\":2,\"c\":3},3,4]" AS Variant)) optimized expr : 0x800000035000001a2000000220000002400000021000000110000001200000022000000261625001500250015002 output type : Variant output domain : Undefined @@ -5338,7 +5338,7 @@ output : '[{"a":1,"b":2},1,2]' ast : json_array_except('[{"a":1,"b":2,"c":3}]'::variant, '[{"c":3,"b":2,"a":1},3,4]'::variant) raw expr : json_array_except(CAST('[{"a":1,"b":2,"c":3}]' AS Variant), CAST('[{"c":3,"b":2,"a":1},3,4]' AS Variant)) -checked expr : json_array_except(parse_json("[{\"a\":1,\"b\":2,\"c\":3}]"), parse_json("[{\"c\":3,\"b\":2,\"a\":1},3,4]")) +checked expr : json_array_except(CAST("[{\"a\":1,\"b\":2,\"c\":3}]" AS Variant), CAST("[{\"c\":3,\"b\":2,\"a\":1},3,4]" AS Variant)) optimized expr : 0x80000000 output type : Variant output domain : Undefined @@ -5347,7 +5347,7 @@ output : '[]' ast : json_array_except('1'::variant, '1'::variant) raw expr : json_array_except(CAST('1' AS Variant), CAST('1' AS Variant)) -checked expr : json_array_except(parse_json("1"), parse_json("1")) +checked expr : json_array_except(CAST("1" AS Variant), CAST("1" AS Variant)) optimized expr : 0x80000000 output type : Variant output domain : Undefined @@ -5356,7 +5356,7 @@ output : '[]' ast : json_array_except('1'::variant, '2'::variant) raw expr : json_array_except(CAST('1' AS Variant), CAST('2' AS Variant)) -checked expr : json_array_except(parse_json("1"), parse_json("2")) +checked expr : json_array_except(CAST("1" AS Variant), CAST("2" AS Variant)) optimized expr : 0x80000001200000025001 output type : Variant output domain : Undefined @@ -5365,7 +5365,7 @@ output : '[1]' ast : json_array_except('{"k":"v"}'::variant, '{"k":"v"}'::variant) raw expr : json_array_except(CAST('{"k":"v"}' AS Variant), CAST('{"k":"v"}' AS Variant)) -checked expr : json_array_except(parse_json("{\"k\":\"v\"}"), parse_json("{\"k\":\"v\"}")) +checked expr : json_array_except(CAST("{\"k\":\"v\"}" AS Variant), CAST("{\"k\":\"v\"}" AS Variant)) optimized expr : 0x80000000 output type : Variant output domain : Undefined @@ -5398,7 +5398,7 @@ evaluation (internal): ast : json_array_overlap('["A","B","C"]'::variant, '["B","C"]'::variant) raw expr : json_array_overlap(CAST('["A","B","C"]' AS Variant), CAST('["B","C"]' AS Variant)) -checked expr : json_array_overlap(parse_json("[\"A\",\"B\",\"C\"]"), parse_json("[\"B\",\"C\"]")) +checked expr : json_array_overlap(CAST("[\"A\",\"B\",\"C\"]" AS Variant), CAST("[\"B\",\"C\"]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -5407,7 +5407,7 @@ output : true ast : json_array_overlap('["A","B","B","B","C"]'::variant, '["B","B"]'::variant) raw expr : json_array_overlap(CAST('["A","B","B","B","C"]' AS Variant), CAST('["B","B"]' AS Variant)) -checked expr : json_array_overlap(parse_json("[\"A\",\"B\",\"B\",\"B\",\"C\"]"), parse_json("[\"B\",\"B\"]")) +checked expr : json_array_overlap(CAST("[\"A\",\"B\",\"B\",\"B\",\"C\"]" AS Variant), CAST("[\"B\",\"B\"]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -5416,7 +5416,7 @@ output : true ast : json_array_overlap('[1,2]'::variant, '[3,4]'::variant) raw expr : json_array_overlap(CAST('[1,2]' AS Variant), CAST('[3,4]' AS Variant)) -checked expr : json_array_overlap(parse_json("[1,2]"), parse_json("[3,4]")) +checked expr : json_array_overlap(CAST("[1,2]" AS Variant), CAST("[3,4]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -5425,7 +5425,7 @@ output : false ast : json_array_overlap('[null,102,null]'::variant, '[null,null,103]'::variant) raw expr : json_array_overlap(CAST('[null,102,null]' AS Variant), CAST('[null,null,103]' AS Variant)) -checked expr : json_array_overlap(parse_json("[null,102,null]"), parse_json("[null,null,103]")) +checked expr : json_array_overlap(CAST("[null,102,null]" AS Variant), CAST("[null,null,103]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -5434,7 +5434,7 @@ output : true ast : json_array_overlap('[{"a":1,"b":2},1,2]'::variant, '[{"a":1,"b":2},3,4]'::variant) raw expr : json_array_overlap(CAST('[{"a":1,"b":2},1,2]' AS Variant), CAST('[{"a":1,"b":2},3,4]' AS Variant)) -checked expr : json_array_overlap(parse_json("[{\"a\":1,\"b\":2},1,2]"), parse_json("[{\"a\":1,\"b\":2},3,4]")) +checked expr : json_array_overlap(CAST("[{\"a\":1,\"b\":2},1,2]" AS Variant), CAST("[{\"a\":1,\"b\":2},3,4]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -5443,7 +5443,7 @@ output : true ast : json_array_overlap('[{"a":1,"b":2},1,2]'::variant, '[{"a":2,"c":3},3,4]'::variant) raw expr : json_array_overlap(CAST('[{"a":1,"b":2},1,2]' AS Variant), CAST('[{"a":2,"c":3},3,4]' AS Variant)) -checked expr : json_array_overlap(parse_json("[{\"a\":1,\"b\":2},1,2]"), parse_json("[{\"a\":2,\"c\":3},3,4]")) +checked expr : json_array_overlap(CAST("[{\"a\":1,\"b\":2},1,2]" AS Variant), CAST("[{\"a\":2,\"c\":3},3,4]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -5452,7 +5452,7 @@ output : false ast : json_array_overlap('[{"a":1,"b":2,"c":3}]'::variant, '[{"c":3,"b":2,"a":1},3,4]'::variant) raw expr : json_array_overlap(CAST('[{"a":1,"b":2,"c":3}]' AS Variant), CAST('[{"c":3,"b":2,"a":1},3,4]' AS Variant)) -checked expr : json_array_overlap(parse_json("[{\"a\":1,\"b\":2,\"c\":3}]"), parse_json("[{\"c\":3,\"b\":2,\"a\":1},3,4]")) +checked expr : json_array_overlap(CAST("[{\"a\":1,\"b\":2,\"c\":3}]" AS Variant), CAST("[{\"c\":3,\"b\":2,\"a\":1},3,4]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -5461,7 +5461,7 @@ output : true ast : json_array_overlap('1'::variant, '1'::variant) raw expr : json_array_overlap(CAST('1' AS Variant), CAST('1' AS Variant)) -checked expr : json_array_overlap(parse_json("1"), parse_json("1")) +checked expr : json_array_overlap(CAST("1" AS Variant), CAST("1" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -5470,7 +5470,7 @@ output : true ast : json_array_overlap('1'::variant, '2'::variant) raw expr : json_array_overlap(CAST('1' AS Variant), CAST('2' AS Variant)) -checked expr : json_array_overlap(parse_json("1"), parse_json("2")) +checked expr : json_array_overlap(CAST("1" AS Variant), CAST("2" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -5479,7 +5479,7 @@ output : false ast : json_array_overlap('{"k":"v"}'::variant, '{"k":"v"}'::variant) raw expr : json_array_overlap(CAST('{"k":"v"}' AS Variant), CAST('{"k":"v"}' AS Variant)) -checked expr : json_array_overlap(parse_json("{\"k\":\"v\"}"), parse_json("{\"k\":\"v\"}")) +checked expr : json_array_overlap(CAST("{\"k\":\"v\"}" AS Variant), CAST("{\"k\":\"v\"}" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -5512,7 +5512,7 @@ evaluation (internal): ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'a', 'hello') raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'a', 'hello') -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "a", "hello") +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "a", "hello") optimized expr : 0x400000051000000110000001100000011000000110000001100000052000000220000002500000105000000e6162646d7868656c6c6f500c5022800000022000000220000002500150024000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5521,7 +5521,7 @@ output : '{"a":"hello","b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'n', 100) raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'n', 100) -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "n", 100_u8) +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "n", 100_u8) optimized expr : 0x400000051000000110000001100000011000000110000001200000022000000250000010200000025000000e62646d6e78500c50228000000220000002200000025001500250644000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5530,7 +5530,7 @@ output : '{"b":12,"d":34,"m":[1,2],"n":100,"x":{"k":"v"}}' ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'z', [10,20]) raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'z', array(10, 20)) -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "z", array(10_u8, 20_u8)) +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "z", array(10_u8, 20_u8)) optimized expr : 0x4000000510000001100000011000000110000001100000012000000220000002500000105000000e5000001062646d787a500c5022800000022000000220000002500150024000000110000001100000016b76800000022000000220000002500a5014 output type : Variant output domain : Undefined @@ -5541,13 +5541,13 @@ error: --> SQL:1:1 | 1 | json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'x', '{"a":"b"}'::variant) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ObjectDuplicateKey while evaluating function `json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}', 'x', '{"a":"b"}')` in expr `json_object_insert(parse_json('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'), 'x', parse_json('{"a":"b"}'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ObjectDuplicateKey while evaluating function `json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}', 'x', '{"a":"b"}')` in expr `json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'x', CAST('{"a":"b"}' AS Variant))` ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'v', null) raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'v', NULL) -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "v", NULL) +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "v", NULL) optimized expr : 0x40000004100000011000000110000001100000012000000220000002500000105000000e62646d78500c5022800000022000000220000002500150024000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5556,7 +5556,7 @@ output : '{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' ast : json_object_insert('{}'::variant, 'v', 'vv') raw expr : json_object_insert(CAST('{}' AS Variant), 'v', 'vv') -checked expr : json_object_insert(parse_json("{}"), "v", "vv") +checked expr : json_object_insert(CAST("{}" AS Variant), "v", "vv") optimized expr : 0x400000011000000110000002767676 output type : Variant output domain : Undefined @@ -5567,13 +5567,13 @@ error: --> SQL:1:1 | 1 | json_object_insert('123'::variant, 'v', 'vv') - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid json object while evaluating function `json_object_insert('123', 'v', 'vv')` in expr `json_object_insert(parse_json('123'), 'v', 'vv')` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid json object while evaluating function `json_object_insert('123', 'v', 'vv')` in expr `json_object_insert(CAST('123' AS Variant), 'v', 'vv')` ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'a', 'hello', true) raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'a', 'hello', true) -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "a", "hello", true) +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "a", "hello", true) optimized expr : 0x400000051000000110000001100000011000000110000001100000052000000220000002500000105000000e6162646d7868656c6c6f500c5022800000022000000220000002500150024000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5582,7 +5582,7 @@ output : '{"a":"hello","b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'n', 100, true) raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'n', 100, true) -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "n", 100_u8, true) +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "n", 100_u8, true) optimized expr : 0x400000051000000110000001100000011000000110000001200000022000000250000010200000025000000e62646d6e78500c50228000000220000002200000025001500250644000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5591,7 +5591,7 @@ output : '{"b":12,"d":34,"m":[1,2],"n":100,"x":{"k":"v"}}' ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'z', [10,20], true) raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'z', array(10, 20), true) -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "z", array(10_u8, 20_u8), true) +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "z", array(10_u8, 20_u8), true) optimized expr : 0x4000000510000001100000011000000110000001100000012000000220000002500000105000000e5000001062646d787a500c5022800000022000000220000002500150024000000110000001100000016b76800000022000000220000002500a5014 output type : Variant output domain : Undefined @@ -5600,7 +5600,7 @@ output : '{"b":12,"d":34,"m":[1,2],"x":{"k":"v"},"z":[10,20]}' ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'x', '{"a":"b"}'::variant, true) raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'x', CAST('{"a":"b"}' AS Variant), true) -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "x", parse_json("{\"a\":\"b\"}"), true) +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "x", CAST("{\"a\":\"b\"}" AS Variant), true) optimized expr : 0x40000004100000011000000110000001100000012000000220000002500000105000000e62646d78500c5022800000022000000220000002500150024000000110000001100000016162 output type : Variant output domain : Undefined @@ -5609,7 +5609,7 @@ output : '{"b":12,"d":34,"m":[1,2],"x":{"a":"b"}}' ast : json_object_insert('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'v', null, true) raw expr : json_object_insert(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'v', NULL, true) -checked expr : json_object_insert(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "v", NULL, true) +checked expr : json_object_insert(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "v", NULL, true) optimized expr : 0x40000004100000011000000110000001100000012000000220000002500000105000000e62646d78500c5022800000022000000220000002500150024000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5618,7 +5618,7 @@ output : '{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' ast : json_object_insert('{}'::variant, 'v', 'vv', true) raw expr : json_object_insert(CAST('{}' AS Variant), 'v', 'vv', true) -checked expr : json_object_insert(parse_json("{}"), "v", "vv", true) +checked expr : json_object_insert(CAST("{}" AS Variant), "v", "vv", true) optimized expr : 0x400000011000000110000002767676 output type : Variant output domain : Undefined @@ -5629,7 +5629,7 @@ error: --> SQL:1:1 | 1 | json_object_insert('123'::variant, 'v', 'vv', true) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid json object while evaluating function `json_object_insert('123', 'v', 'vv', true)` in expr `json_object_insert(parse_json('123'), 'v', 'vv', true)` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid json object while evaluating function `json_object_insert('123', 'v', 'vv', true)` in expr `json_object_insert(CAST('123' AS Variant), 'v', 'vv', true)` @@ -5683,7 +5683,7 @@ evaluation (internal): ast : json_object_delete('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'a', 'b', 'c') raw expr : json_object_delete(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'a', 'b', 'c') -checked expr : json_object_delete(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "a", "b", "c") +checked expr : json_object_delete(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "a", "b", "c") optimized expr : 0x4000000310000001100000011000000120000002500000105000000e646d785022800000022000000220000002500150024000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5692,7 +5692,7 @@ output : '{"d":34,"m":[1,2],"x":{"k":"v"}}' ast : json_object_delete('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'm', 'n', 'm', 'x') raw expr : json_object_delete(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'm', 'n', 'm', 'x') -checked expr : json_object_delete(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "m", "n", "m", "x") +checked expr : json_object_delete(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "m", "n", "m", "x") optimized expr : 0x40000002100000011000000120000002200000026264500c5022 output type : Variant output domain : Undefined @@ -5701,7 +5701,7 @@ output : '{"b":12,"d":34}' ast : json_object_delete('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'z', null) raw expr : json_object_delete(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'z', NULL) -checked expr : json_object_delete(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "z", NULL) +checked expr : json_object_delete(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "z", NULL) optimized expr : 0x40000004100000011000000110000001100000012000000220000002500000105000000e62646d78500c5022800000022000000220000002500150024000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5710,7 +5710,7 @@ output : '{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' ast : json_object_delete('{}'::variant, 'v', 'vv') raw expr : json_object_delete(CAST('{}' AS Variant), 'v', 'vv') -checked expr : json_object_delete(parse_json("{}"), "v", "vv") +checked expr : json_object_delete(CAST("{}" AS Variant), "v", "vv") optimized expr : 0x40000000 output type : Variant output domain : Undefined @@ -5721,7 +5721,7 @@ error: --> SQL:1:1 | 1 | json_object_delete('123'::variant, 'v', 'vv') - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid json object while evaluating function `json_object_delete('123', 'v', 'vv')` in expr `json_object_delete(parse_json('123'), 'v', 'vv')` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid json object while evaluating function `json_object_delete('123', 'v', 'vv')` in expr `json_object_delete(CAST('123' AS Variant), 'v', 'vv')` @@ -5750,7 +5750,7 @@ evaluation (internal): ast : json_object_pick('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'a', 'b', 'c') raw expr : json_object_pick(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'a', 'b', 'c') -checked expr : json_object_pick(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "a", "b", "c") +checked expr : json_object_pick(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "a", "b", "c") optimized expr : 0x40000001100000012000000262500c output type : Variant output domain : Undefined @@ -5759,7 +5759,7 @@ output : '{"b":12}' ast : json_object_pick('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'm', 'n', 'm', 'x') raw expr : json_object_pick(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'm', 'n', 'm', 'x') -checked expr : json_object_pick(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "m", "n", "m", "x") +checked expr : json_object_pick(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "m", "n", "m", "x") optimized expr : 0x400000021000000110000001500000105000000e6d78800000022000000220000002500150024000000110000001100000016b76 output type : Variant output domain : Undefined @@ -5768,7 +5768,7 @@ output : '{"m":[1,2],"x":{"k":"v"}}' ast : json_object_pick('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}'::variant, 'z', null) raw expr : json_object_pick(CAST('{"b":12,"d":34,"m":[1,2],"x":{"k":"v"}}' AS Variant), 'z', NULL) -checked expr : json_object_pick(parse_json("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}"), "z", NULL) +checked expr : json_object_pick(CAST("{\"b\":12,\"d\":34,\"m\":[1,2],\"x\":{\"k\":\"v\"}}" AS Variant), "z", NULL) optimized expr : 0x40000000 output type : Variant output domain : Undefined @@ -5777,7 +5777,7 @@ output : '{}' ast : json_object_pick('{}'::variant, 'v', 'vv') raw expr : json_object_pick(CAST('{}' AS Variant), 'v', 'vv') -checked expr : json_object_pick(parse_json("{}"), "v", "vv") +checked expr : json_object_pick(CAST("{}" AS Variant), "v", "vv") optimized expr : 0x40000000 output type : Variant output domain : Undefined @@ -5788,7 +5788,7 @@ error: --> SQL:1:1 | 1 | json_object_pick('123'::variant, 'v', 'vv') - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid json object while evaluating function `json_object_pick('123', 'v', 'vv')` in expr `json_object_pick(parse_json('123'), 'v', 'vv')` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid json object while evaluating function `json_object_pick('123', 'v', 'vv')` in expr `json_object_pick(CAST('123' AS Variant), 'v', 'vv')` @@ -5817,7 +5817,7 @@ evaluation (internal): ast : strip_null_value(parse_json('1234')) raw expr : strip_null_value(parse_json('1234')) -checked expr : strip_null_value(CAST(parse_json("1234") AS Variant NULL)) +checked expr : strip_null_value(CAST(parse_json("1234") AS Variant NULL)) optimized expr : 0x20000000200000035004d2 output type : Variant NULL output domain : Undefined @@ -5826,7 +5826,7 @@ output : '1234' ast : strip_null_value(parse_json('null')) raw expr : strip_null_value(parse_json('null')) -checked expr : strip_null_value(CAST(parse_json("null") AS Variant NULL)) +checked expr : strip_null_value(CAST(parse_json("null") AS Variant NULL)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -5835,7 +5835,7 @@ output : NULL ast : strip_null_value(null) raw expr : strip_null_value(NULL) -checked expr : strip_null_value(CAST(NULL AS Variant NULL)) +checked expr : strip_null_value(CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -5844,7 +5844,7 @@ output : NULL ast : strip_null_value(parse_json(s)) raw expr : strip_null_value(parse_json(s::String)) -checked expr : strip_null_value(CAST(parse_json(s) AS Variant NULL)) +checked expr : strip_null_value(CAST(parse_json(s) AS Variant NULL)) evaluation: +--------+-------------------------------------------------------+--------------------+ | | s | Output | diff --git a/tests/sqllogictests/suites/mode/standalone/explain/infer_filter.test b/tests/sqllogictests/suites/mode/standalone/explain/infer_filter.test index 4cde2cf2462ed..5c875a57d265a 100644 --- a/tests/sqllogictests/suites/mode/standalone/explain/infer_filter.test +++ b/tests/sqllogictests/suites/mode/standalone/explain/infer_filter.test @@ -738,28 +738,15 @@ HashJoin ├── push downs: [filters: [], limit: NONE] └── estimated rows: 0.00 - -statement ok -drop table if exists t1; - -statement ok -drop table if exists t2; - statement ok drop table if exists t3; # merge predicates with different data types. statement ok -drop table if exists t1; - -statement ok -drop table if exists t2; - -statement ok -create table t1(id BIGINT NOT NULL); +create or replace table t1(id BIGINT NOT NULL); statement ok -create table t2(id BIGINT UNSIGNED NULL); +create or replace table t2(id BIGINT UNSIGNED NULL); statement ok insert into t1 values(869550529); From 46a8524baf128b1437e5ece7be4077cfb0595658 Mon Sep 17 00:00:00 2001 From: coldWater Date: Sat, 29 Mar 2025 16:21:24 +0800 Subject: [PATCH 03/23] update --- src/query/expression/src/expression.rs | 108 ++- src/query/expression/src/type_check.rs | 32 +- .../tests/it/scalars/testdata/array.txt | 2 +- .../tests/it/scalars/testdata/binary.txt | 16 +- .../tests/it/scalars/testdata/comparison.txt | 34 +- .../tests/it/scalars/testdata/hash.txt | 6 +- .../tests/it/scalars/testdata/variant.txt | 732 +++++++++--------- 7 files changed, 481 insertions(+), 449 deletions(-) diff --git a/src/query/expression/src/expression.rs b/src/query/expression/src/expression.rs index 38d356f04dce1..bbf1c79b77df7 100644 --- a/src/query/expression/src/expression.rs +++ b/src/query/expression/src/expression.rs @@ -12,7 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::borrow::Cow; use std::collections::HashMap; use std::fmt::Debug; use std::hash::Hash; @@ -289,33 +288,32 @@ impl PartialEq for Expr { } } -pub trait ExprVisitor: Sized { +pub trait ExprVisitor: Sized { type Error = ErrorCode; - fn enter_constant<'a>( - &mut self, - expr: &'a Expr, - ) -> Result>, Self::Error> { + fn enter_constant(&mut self, expr: &Expr) -> Result>, Self::Error> { let Expr::Constant { .. } = expr else { unreachable!() }; - Ok(Cow::Borrowed(expr)) + Ok(None) } - fn enter_column_ref<'a>( - &mut self, - expr: &'a Expr, - ) -> Result>, Self::Error> { + fn enter_column_ref(&mut self, expr: &Expr) -> Result>, Self::Error> { let Expr::ColumnRef { .. } = expr else { unreachable!() }; - Ok(Cow::Borrowed(expr)) + Ok(None) } - fn enter_cast<'a>( - &mut self, - expr: &'a Expr, - ) -> Result>, Self::Error> { + fn enter_cast(&mut self, expr: &Expr) -> Result>, Self::Error> { + Self::visit_cast(expr, self) + } + + fn visit_cast(expr: &Expr, visitor: &mut V) -> Result>, Self::Error> + where + I: ColumnIndex, + V: ExprVisitor, + { let Expr::Cast { span, is_try, @@ -325,21 +323,29 @@ pub trait ExprVisitor: Sized { else { unreachable!() }; - match visit_expr(inner, self)? { - Cow::Borrowed(_) => Ok(Cow::Borrowed(expr)), - Cow::Owned(inner) => Ok(Cow::Owned(Expr::Cast { + if let Some(inner) = visit_expr(inner, visitor)? { + Ok(Some(Expr::Cast { span: *span, is_try: *is_try, - expr: Box::new(inner), + expr: Box::new(inner.clone()), dest_type: dest_type.clone(), - })), + })) + } else { + Ok(None) } } - fn enter_function_call<'a>( - &mut self, - expr: &'a Expr, - ) -> Result>, Self::Error> { + fn enter_function_call(&mut self, expr: &Expr) -> Result>, Self::Error> { + Self::visit_function_call(expr, self) + } + + fn visit_function_call( + expr: &Expr, + visitor: &mut V, + ) -> Result>, Self::Error> + where + V: ExprVisitor, + { let Expr::FunctionCall { span, id, @@ -351,28 +357,41 @@ pub trait ExprVisitor: Sized { else { unreachable!() }; - let args = args + let new_args = args .iter() - .map(|arg| visit_expr(arg, self)) + .map(|arg| Ok((visit_expr(arg, visitor)?, arg))) .collect::, _>>()?; - if args.iter().all(Cow::is_borrowed) { - Ok(Cow::Borrowed(expr)) + if new_args.iter().all(|(v, _)| v.is_none()) { + Ok(None) } else { - Ok(Cow::Owned(Expr::FunctionCall { + Ok(Some(Expr::FunctionCall { span: *span, id: id.clone(), function: function.clone(), generics: generics.clone(), - args: args.into_iter().map(Cow::into_owned).collect(), + args: new_args + .into_iter() + .map(|(new, old)| new.unwrap_or_else(|| old.clone())) + .collect(), return_type: return_type.clone(), })) } } - fn enter_lambda_function_call<'a>( + fn enter_lambda_function_call( &mut self, - expr: &'a Expr, - ) -> Result>, Self::Error> { + expr: &Expr, + ) -> Result>, Self::Error> { + Self::visit_lambda_function_call(expr, self) + } + + fn visit_lambda_function_call( + expr: &Expr, + visitor: &mut V, + ) -> Result>, Self::Error> + where + V: ExprVisitor, + { let Expr::LambdaFunctionCall { span, name, @@ -384,17 +403,20 @@ pub trait ExprVisitor: Sized { else { unreachable!() }; - let args = args + let new_args = args .iter() - .map(|arg| visit_expr(arg, self)) + .map(|arg| Ok((visit_expr(arg, visitor)?, arg))) .collect::, _>>()?; - if args.iter().all(Cow::is_borrowed) { - Ok(Cow::Borrowed(expr)) + if new_args.iter().all(|(v, _)| v.is_none()) { + Ok(None) } else { - Ok(Cow::Owned(Expr::LambdaFunctionCall { + Ok(Some(Expr::LambdaFunctionCall { span: *span, name: name.clone(), - args: args.into_iter().map(Cow::into_owned).collect(), + args: new_args + .into_iter() + .map(|(new, old)| new.unwrap_or_else(|| old.clone())) + .collect(), lambda_expr: lambda_expr.clone(), lambda_display: lambda_display.clone(), return_type: return_type.clone(), @@ -403,10 +425,10 @@ pub trait ExprVisitor: Sized { } } -pub fn visit_expr<'a, Index: ColumnIndex, V: ExprVisitor>( - expr: &'a Expr, +pub fn visit_expr>( + expr: &Expr, visitor: &mut V, -) -> Result>, V::Error> { +) -> Result>, V::Error> { match expr { Expr::Constant { .. } => visitor.enter_constant(expr), Expr::ColumnRef { .. } => visitor.enter_column_ref(expr), diff --git a/src/query/expression/src/type_check.rs b/src/query/expression/src/type_check.rs index ed117a5905f7b..26cf025924f7e 100755 --- a/src/query/expression/src/type_check.rs +++ b/src/query/expression/src/type_check.rs @@ -739,8 +739,8 @@ fn is_simple_cast_function(name: &str) -> bool { pub fn rewrite_function_to_cast(expr: Expr) -> Result> { match visit_expr(&expr, &mut RewriteCast).unwrap() { - Cow::Borrowed(_) => Ok(expr), - Cow::Owned(expr) => Ok(expr), + None => Ok(expr), + Some(expr) => Ok(expr), } } @@ -749,10 +749,14 @@ struct RewriteCast; impl ExprVisitor for RewriteCast { type Error = (); - fn enter_function_call<'a>( + fn enter_function_call( &mut self, - expr: &'a Expr, - ) -> std::result::Result>, Self::Error> { + expr: &Expr, + ) -> std::result::Result>, Self::Error> { + let expr = match Self::visit_function_call(expr, self)? { + Some(expr) => Cow::Owned(expr), + None => Cow::Borrowed(expr), + }; let Expr::FunctionCall { span, function, @@ -760,15 +764,18 @@ impl ExprVisitor for RewriteCast { args, return_type, .. - } = &expr + } = expr.as_ref() else { unreachable!(); }; if !generics.is_empty() || args.len() != 1 { - return Ok(Cow::Borrowed(expr)); + return match expr { + Cow::Borrowed(_) => Ok(None), + Cow::Owned(expr) => Ok(Some(expr)), + }; } if function.signature.name == "parse_json" { - return Ok(Cow::Owned(Expr::Cast { + return Ok(Some(Expr::Cast { span: *span, is_try: false, expr: Box::new(args.first().unwrap().clone()), @@ -777,7 +784,7 @@ impl ExprVisitor for RewriteCast { } let func_name = format!("to_{}", return_type.remove_nullable()); if function.signature.name == func_name { - return Ok(Cow::Owned(Expr::Cast { + return Ok(Some(Expr::Cast { span: *span, is_try: false, expr: Box::new(args.first().unwrap().clone()), @@ -785,13 +792,16 @@ impl ExprVisitor for RewriteCast { })); }; if function.signature.name == format!("try_{func_name}") { - return Ok(Cow::Owned(Expr::Cast { + return Ok(Some(Expr::Cast { span: *span, is_try: true, expr: Box::new(args.first().unwrap().clone()), dest_type: return_type.clone(), })); } - Ok(Cow::Borrowed(expr)) + match expr { + Cow::Borrowed(_) => Ok(None), + Cow::Owned(expr) => Ok(Some(expr)), + } } } diff --git a/src/query/functions/tests/it/scalars/testdata/array.txt b/src/query/functions/tests/it/scalars/testdata/array.txt index f8ae45f9a0a52..3cb84c09e4466 100644 --- a/src/query/functions/tests/it/scalars/testdata/array.txt +++ b/src/query/functions/tests/it/scalars/testdata/array.txt @@ -57,7 +57,7 @@ candidate functions: ast : [parse_json('[]'), parse_json('{"foo":"bar"}')] raw expr : array(parse_json('[]'), parse_json('{"foo":"bar"}')) -checked expr : array(parse_json("[]"), parse_json("{\"foo\":\"bar\"}")) +checked expr : array(CAST("[]" AS Variant), CAST("{\"foo\":\"bar\"}" AS Variant)) optimized expr : ['[]', '{"foo":"bar"}'] output type : Array(Variant) output domain : [Undefined] diff --git a/src/query/functions/tests/it/scalars/testdata/binary.txt b/src/query/functions/tests/it/scalars/testdata/binary.txt index a105868f1b44c..fb215071e5d73 100644 --- a/src/query/functions/tests/it/scalars/testdata/binary.txt +++ b/src/query/functions/tests/it/scalars/testdata/binary.txt @@ -205,7 +205,7 @@ evaluation (internal): ast : to_binary(parse_json('{"k1":"val","k2":100}')) raw expr : to_binary(parse_json('{"k1":"val","k2":100}')) -checked expr : to_binary(parse_json("{\"k1\":\"val\",\"k2\":100}")) +checked expr : to_binary(CAST("{\"k1\":\"val\",\"k2\":100}" AS Variant)) optimized expr : 40000002100000021000000210000003200000026B316B3276616C5064 output type : Binary output domain : Undefined @@ -214,7 +214,7 @@ output : 40000002100000021000000210000003200000026B316B3276616C5064 ast : to_binary(parse_json('10')) raw expr : to_binary(parse_json('10')) -checked expr : to_binary(parse_json("10")) +checked expr : to_binary(CAST("10" AS Variant)) optimized expr : 2000000020000002500A output type : Binary output domain : Undefined @@ -223,7 +223,7 @@ output : 2000000020000002500A ast : to_binary(parse_json('123456')) raw expr : to_binary(parse_json('123456')) -checked expr : to_binary(parse_json("123456")) +checked expr : to_binary(CAST("123456" AS Variant)) optimized expr : 2000000020000005500001E240 output type : Binary output domain : Undefined @@ -232,7 +232,7 @@ output : 2000000020000005500001E240 ast : to_binary(parse_json('"abcd"')) raw expr : to_binary(parse_json('"abcd"')) -checked expr : to_binary(parse_json("\"abcd\"")) +checked expr : to_binary(CAST("\"abcd\"" AS Variant)) optimized expr : 200000001000000461626364 output type : Binary output domain : Undefined @@ -374,7 +374,7 @@ evaluation (internal): ast : TRY_to_binary(parse_json('{"k1":"val","k2":100}')) raw expr : TRY_to_binary(parse_json('{"k1":"val","k2":100}')) -checked expr : try_to_binary(parse_json("{\"k1\":\"val\",\"k2\":100}")) +checked expr : try_to_binary(CAST("{\"k1\":\"val\",\"k2\":100}" AS Variant)) optimized expr : 40000002100000021000000210000003200000026B316B3276616C5064 output type : Binary NULL output domain : Undefined @@ -383,7 +383,7 @@ output : 40000002100000021000000210000003200000026B316B3276616C5064 ast : TRY_to_binary(parse_json('10')) raw expr : TRY_to_binary(parse_json('10')) -checked expr : try_to_binary(parse_json("10")) +checked expr : try_to_binary(CAST("10" AS Variant)) optimized expr : 2000000020000002500A output type : Binary NULL output domain : Undefined @@ -392,7 +392,7 @@ output : 2000000020000002500A ast : TRY_to_binary(parse_json('123456')) raw expr : TRY_to_binary(parse_json('123456')) -checked expr : try_to_binary(parse_json("123456")) +checked expr : try_to_binary(CAST("123456" AS Variant)) optimized expr : 2000000020000005500001E240 output type : Binary NULL output domain : Undefined @@ -401,7 +401,7 @@ output : 2000000020000005500001E240 ast : TRY_to_binary(parse_json('"abcd"')) raw expr : TRY_to_binary(parse_json('"abcd"')) -checked expr : try_to_binary(parse_json("\"abcd\"")) +checked expr : try_to_binary(CAST("\"abcd\"" AS Variant)) optimized expr : 200000001000000461626364 output type : Binary NULL output domain : Undefined diff --git a/src/query/functions/tests/it/scalars/testdata/comparison.txt b/src/query/functions/tests/it/scalars/testdata/comparison.txt index 45e6e3f7b4e78..b8711f829ae45 100644 --- a/src/query/functions/tests/it/scalars/testdata/comparison.txt +++ b/src/query/functions/tests/it/scalars/testdata/comparison.txt @@ -207,7 +207,7 @@ output : true ast : parse_json('[1,2,3,["a","b","c"]]') = parse_json('[1,2,3,["a","b","c"]]') raw expr : eq(parse_json('[1,2,3,["a","b","c"]]'), parse_json('[1,2,3,["a","b","c"]]')) -checked expr : eq(parse_json("[1,2,3,[\"a\",\"b\",\"c\"]]"), parse_json("[1,2,3,[\"a\",\"b\",\"c\"]]")) +checked expr : eq(CAST("[1,2,3,[\"a\",\"b\",\"c\"]]" AS Variant), CAST("[1,2,3,[\"a\",\"b\",\"c\"]]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -216,7 +216,7 @@ output : true ast : parse_json(lhs) = parse_json(rhs) raw expr : eq(parse_json(lhs::String), parse_json(rhs::String)) -checked expr : eq(parse_json(lhs), parse_json(rhs)) +checked expr : eq(CAST(lhs AS Variant), CAST(rhs AS Variant)) evaluation: +--------+------------------------------------------+------------------------------------------+---------+ | | lhs | rhs | Output | @@ -401,7 +401,7 @@ output : true ast : parse_json('"databend"') != parse_json('"databend"') raw expr : noteq(parse_json('"databend"'), parse_json('"databend"')) -checked expr : noteq(parse_json("\"databend\""), parse_json("\"databend\"")) +checked expr : noteq(CAST("\"databend\"" AS Variant), CAST("\"databend\"" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -410,7 +410,7 @@ output : false ast : parse_json(lhs) != parse_json(rhs) raw expr : noteq(parse_json(lhs::String), parse_json(rhs::String)) -checked expr : noteq(parse_json(lhs), parse_json(rhs)) +checked expr : noteq(CAST(lhs AS Variant), CAST(rhs AS Variant)) evaluation: +--------+----------------------------------+----------------------------------+---------+ | | lhs | rhs | Output | @@ -575,7 +575,7 @@ output : true ast : parse_json('"true"') < parse_json('"false"') raw expr : lt(parse_json('"true"'), parse_json('"false"')) -checked expr : lt(parse_json("\"true\""), parse_json("\"false\"")) +checked expr : lt(CAST("\"true\"" AS Variant), CAST("\"false\"" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -584,7 +584,7 @@ output : false ast : parse_json(lhs) >= parse_json(rhs) raw expr : gte(parse_json(lhs::String), parse_json(rhs::String)) -checked expr : gte(parse_json(lhs), parse_json(rhs)) +checked expr : gte(CAST(lhs AS Variant), CAST(rhs AS Variant)) evaluation: +--------+-------------------------+-------------------------+---------+ | | lhs | rhs | Output | @@ -737,7 +737,7 @@ output : true ast : parse_json('null') <= parse_json('null') raw expr : lte(parse_json('null'), parse_json('null')) -checked expr : lte(parse_json("null"), parse_json("null")) +checked expr : lte(CAST("null" AS Variant), CAST("null" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -773,7 +773,7 @@ output : true ast : parse_json(lhs) <= parse_json(rhs) raw expr : lte(parse_json(lhs::String), parse_json(rhs::String)) -checked expr : lte(parse_json(lhs), parse_json(rhs)) +checked expr : lte(CAST(lhs AS Variant), CAST(rhs AS Variant)) evaluation: +--------+------------------------------------------------+------------------------------------------------+---------+ | | lhs | rhs | Output | @@ -945,7 +945,7 @@ output : false ast : parse_json('{"k":"v","a":"b"}') > parse_json('{"k":"v","a":"d"}') raw expr : gt(parse_json('{"k":"v","a":"b"}'), parse_json('{"k":"v","a":"d"}')) -checked expr : gt(parse_json("{\"k\":\"v\",\"a\":\"b\"}"), parse_json("{\"k\":\"v\",\"a\":\"d\"}")) +checked expr : gt(CAST("{\"k\":\"v\",\"a\":\"b\"}" AS Variant), CAST("{\"k\":\"v\",\"a\":\"d\"}" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -954,7 +954,7 @@ output : false ast : parse_json(lhs) > parse_json(rhs) raw expr : gt(parse_json(lhs::String), parse_json(rhs::String)) -checked expr : gt(parse_json(lhs), parse_json(rhs)) +checked expr : gt(CAST(lhs AS Variant), CAST(rhs AS Variant)) evaluation: +--------+-----------------------+-----------------------+---------+ | | lhs | rhs | Output | @@ -1152,7 +1152,7 @@ output : true ast : parse_json('1.912e2') >= parse_json('1.912e2') raw expr : gte(parse_json('1.912e2'), parse_json('1.912e2')) -checked expr : gte(parse_json("1.912e2"), parse_json("1.912e2")) +checked expr : gte(CAST("1.912e2" AS Variant), CAST("1.912e2" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1161,7 +1161,7 @@ output : true ast : parse_json(lhs) >= parse_json(rhs) raw expr : gte(parse_json(lhs::String), parse_json(rhs::String)) -checked expr : gte(parse_json(lhs), parse_json(rhs)) +checked expr : gte(CAST(lhs AS Variant), CAST(rhs AS Variant)) evaluation: +--------+-----------------------------------------------------------+-----------------------------------------------------------+---------+ | | lhs | rhs | Output | @@ -1382,7 +1382,7 @@ evaluation (internal): ast : parse_json('"hello"') like 'h%' raw expr : like(parse_json('"hello"'), 'h%') -checked expr : like(parse_json("\"hello\""), "h%") +checked expr : like(CAST("\"hello\"" AS Variant), "h%") optimized expr : true output type : Boolean output domain : {TRUE} @@ -1391,7 +1391,7 @@ output : true ast : parse_json('{"abc":1,"def":22}') like '%e%' raw expr : like(parse_json('{"abc":1,"def":22}'), '%e%') -checked expr : like(parse_json("{\"abc\":1,\"def\":22}"), "%e%") +checked expr : like(CAST("{\"abc\":1,\"def\":22}" AS Variant), "%e%") optimized expr : true output type : Boolean output domain : {TRUE} @@ -1400,7 +1400,7 @@ output : true ast : parse_json('{"k1":"abc","k2":"def"}') like '%e%' raw expr : like(parse_json('{"k1":"abc","k2":"def"}'), '%e%') -checked expr : like(parse_json("{\"k1\":\"abc\",\"k2\":\"def\"}"), "%e%") +checked expr : like(CAST("{\"k1\":\"abc\",\"k2\":\"def\"}" AS Variant), "%e%") optimized expr : true output type : Boolean output domain : {TRUE} @@ -1409,7 +1409,7 @@ output : true ast : parse_json(lhs) like 'a%' raw expr : like(parse_json(lhs::String), 'a%') -checked expr : like(parse_json(lhs), "a%") +checked expr : like(CAST(lhs AS Variant), "a%") evaluation: +--------+------------------------------+---------+ | | lhs | Output | @@ -1431,7 +1431,7 @@ evaluation (internal): ast : parse_json(lhs) like '%ab%' raw expr : like(parse_json(lhs::String), '%ab%') -checked expr : like(parse_json(lhs), "%ab%") +checked expr : like(CAST(lhs AS Variant), "%ab%") evaluation: +--------+------------------------------+---------+ | | lhs | Output | diff --git a/src/query/functions/tests/it/scalars/testdata/hash.txt b/src/query/functions/tests/it/scalars/testdata/hash.txt index baba332aa8eb5..5cce48d9bff60 100644 --- a/src/query/functions/tests/it/scalars/testdata/hash.txt +++ b/src/query/functions/tests/it/scalars/testdata/hash.txt @@ -355,7 +355,7 @@ output : NULL ast : siphash64(parse_json('{"a":1}')) raw expr : siphash64(parse_json('{"a":1}')) -checked expr : siphash64(parse_json("{\"a\":1}")) +checked expr : siphash64(CAST("{\"a\":1}" AS Variant)) optimized expr : 10266916306474055689_u64 output type : UInt64 output domain : {10266916306474055689..=10266916306474055689} @@ -448,7 +448,7 @@ output : NULL ast : xxhash64(parse_json('{"a":1}')) raw expr : xxhash64(parse_json('{"a":1}')) -checked expr : xxhash64(parse_json("{\"a\":1}")) +checked expr : xxhash64(CAST("{\"a\":1}" AS Variant)) optimized expr : 13558435650847720346_u64 output type : UInt64 output domain : {13558435650847720346..=13558435650847720346} @@ -541,7 +541,7 @@ output : NULL ast : xxhash32(parse_json('{"a":1}')) raw expr : xxhash32(parse_json('{"a":1}')) -checked expr : xxhash32(parse_json("{\"a\":1}")) +checked expr : xxhash32(CAST("{\"a\":1}" AS Variant)) optimized expr : 3886246173_u32 output type : UInt32 output domain : {3886246173..=3886246173} diff --git a/src/query/functions/tests/it/scalars/testdata/variant.txt b/src/query/functions/tests/it/scalars/testdata/variant.txt index 029d80c4857c4..7837a0f04c82c 100644 --- a/src/query/functions/tests/it/scalars/testdata/variant.txt +++ b/src/query/functions/tests/it/scalars/testdata/variant.txt @@ -345,7 +345,7 @@ evaluation (internal): ast : length(parse_json('1234')) raw expr : length(parse_json('1234')) -checked expr : length(CAST(parse_json("1234") AS Variant NULL)) +checked expr : length(CAST(CAST("1234" AS Variant) AS Variant NULL)) optimized expr : NULL output type : UInt32 NULL output domain : {NULL} @@ -354,7 +354,7 @@ output : NULL ast : length(parse_json('[1,2,3,4]')) raw expr : length(parse_json('[1,2,3,4]')) -checked expr : length(CAST(parse_json("[1,2,3,4]") AS Variant NULL)) +checked expr : length(CAST(CAST("[1,2,3,4]" AS Variant) AS Variant NULL)) optimized expr : 4_u32 output type : UInt32 NULL output domain : {4..=4} @@ -363,7 +363,7 @@ output : 4 ast : length(parse_json('{"k":"v"}')) raw expr : length(parse_json('{"k":"v"}')) -checked expr : length(CAST(parse_json("{\"k\":\"v\"}") AS Variant NULL)) +checked expr : length(CAST(CAST("{\"k\":\"v\"}" AS Variant) AS Variant NULL)) optimized expr : NULL output type : UInt32 NULL output domain : {NULL} @@ -372,7 +372,7 @@ output : NULL ast : length(parse_json(s)) raw expr : length(parse_json(s::String)) -checked expr : length(CAST(parse_json(s) AS Variant NULL)) +checked expr : length(CAST(CAST(s AS Variant) AS Variant NULL)) evaluation: +--------+----------------------------------+-------------+ | | s | Output | @@ -394,7 +394,7 @@ evaluation (internal): ast : length(parse_json(s)) raw expr : length(parse_json(s::String NULL)) -checked expr : length(parse_json(s)) +checked expr : length(CAST(s AS Variant NULL)) evaluation: +--------+-------------------------------------------+-------------+ | | s | Output | @@ -417,7 +417,7 @@ evaluation (internal): ast : json_object_keys(parse_json('[1,2,3,4]')) raw expr : json_object_keys(parse_json('[1,2,3,4]')) -checked expr : json_object_keys(CAST(parse_json("[1,2,3,4]") AS Variant NULL)) +checked expr : json_object_keys(CAST(CAST("[1,2,3,4]" AS Variant) AS Variant NULL)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -426,7 +426,7 @@ output : NULL ast : json_object_keys(parse_json('{"k1":"v1","k2":"v2"}')) raw expr : json_object_keys(parse_json('{"k1":"v1","k2":"v2"}')) -checked expr : json_object_keys(CAST(parse_json("{\"k1\":\"v1\",\"k2\":\"v2\"}") AS Variant NULL)) +checked expr : json_object_keys(CAST(CAST("{\"k1\":\"v1\",\"k2\":\"v2\"}" AS Variant) AS Variant NULL)) optimized expr : 0x8000000210000002100000026b316b32 output type : Variant NULL output domain : Undefined @@ -435,7 +435,7 @@ output : '["k1","k2"]' ast : json_object_keys(parse_json(s)) raw expr : json_object_keys(parse_json(s::String)) -checked expr : json_object_keys(CAST(parse_json(s) AS Variant NULL)) +checked expr : json_object_keys(CAST(CAST(s AS Variant) AS Variant NULL)) evaluation: +--------+-------------------------------------------------+---------------+ | | s | Output | @@ -457,7 +457,7 @@ evaluation (internal): ast : json_object_keys(parse_json(s)) raw expr : json_object_keys(parse_json(s::String NULL)) -checked expr : json_object_keys(parse_json(s)) +checked expr : json_object_keys(CAST(s AS Variant NULL)) evaluation: +--------+----------------------------------------------------------+---------------+ | | s | Output | @@ -480,7 +480,7 @@ evaluation (internal): ast : parse_json('null')[1] raw expr : get(parse_json('null'), 1) -checked expr : get(parse_json("null"), CAST(1_u8 AS Int64)) +checked expr : get(CAST("null" AS Variant), CAST(1_u8 AS Int64)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -489,7 +489,7 @@ output : NULL ast : parse_json('null')['k'] raw expr : get(parse_json('null'), 'k') -checked expr : get(parse_json("null"), "k") +checked expr : get(CAST("null" AS Variant), "k") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -498,7 +498,7 @@ output : NULL ast : parse_json('[1,2,3,4]')[1] raw expr : get(parse_json('[1,2,3,4]'), 1) -checked expr : get(parse_json("[1,2,3,4]"), CAST(1_u8 AS Int64)) +checked expr : get(CAST("[1,2,3,4]" AS Variant), CAST(1_u8 AS Int64)) optimized expr : 0x20000000200000025002 output type : Variant NULL output domain : Undefined @@ -507,7 +507,7 @@ output : '2' ast : parse_json('[1,2,3,4]')[2+3] raw expr : get(parse_json('[1,2,3,4]'), plus(2, 3)) -checked expr : get(parse_json("[1,2,3,4]"), CAST(plus(2_u8, 3_u8) AS Int64)) +checked expr : get(CAST("[1,2,3,4]" AS Variant), CAST(plus(2_u8, 3_u8) AS Int64)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -516,7 +516,7 @@ output : NULL ast : parse_json('{"k":"v"}')['k'] raw expr : get(parse_json('{"k":"v"}'), 'k') -checked expr : get(parse_json("{\"k\":\"v\"}"), "k") +checked expr : get(CAST("{\"k\":\"v\"}" AS Variant), "k") optimized expr : 0x200000001000000176 output type : Variant NULL output domain : Undefined @@ -525,7 +525,7 @@ output : '"v"' ast : parse_json('{"k":"v"}')['x'] raw expr : get(parse_json('{"k":"v"}'), 'x') -checked expr : get(parse_json("{\"k\":\"v\"}"), "x") +checked expr : get(CAST("{\"k\":\"v\"}" AS Variant), "x") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -543,7 +543,7 @@ output : '"b"' ast : parse_json(s)[i] raw expr : get(parse_json(s::String), i::UInt64) -checked expr : get(parse_json(s), CAST(i AS Int64)) +checked expr : get(CAST(s AS Variant), CAST(i AS Int64)) evaluation: +--------+----------------------------------+---------+--------------+ | | s | i | Output | @@ -566,7 +566,7 @@ evaluation (internal): ast : parse_json(s)[i] raw expr : get(parse_json(s::String NULL), i::UInt64 NULL) -checked expr : get(parse_json(s), CAST(i AS Int64 NULL)) +checked expr : get(CAST(s AS Variant NULL), CAST(i AS Int64 NULL)) evaluation: +--------+-------------------------------------------+------------------+--------------+ | | s | i | Output | @@ -590,7 +590,7 @@ evaluation (internal): ast : parse_json(s)[k] raw expr : get(parse_json(s::String), k::String) -checked expr : get(parse_json(s), k) +checked expr : get(CAST(s AS Variant), k) evaluation: +--------+------------------------+-------------+--------------+ | | s | k | Output | @@ -613,7 +613,7 @@ evaluation (internal): ast : parse_json(s)[k] raw expr : get(parse_json(s::String NULL), k::String) -checked expr : get(parse_json(s), CAST(k AS String NULL)) +checked expr : get(CAST(s AS Variant NULL), CAST(k AS String NULL)) evaluation: +--------+---------------------------------+------------+--------------+ | | s | k | Output | @@ -637,7 +637,7 @@ evaluation (internal): ast : get_ignore_case(parse_json('{"Aa":1, "aA":2, "aa":3}'), 'AA') raw expr : get_ignore_case(parse_json('{"Aa":1, "aA":2, "aa":3}'), 'AA') -checked expr : get_ignore_case(parse_json("{\"Aa\":1, \"aA\":2, \"aa\":3}"), "AA") +checked expr : get_ignore_case(CAST("{\"Aa\":1, \"aA\":2, \"aa\":3}" AS Variant), "AA") optimized expr : 0x20000000200000025001 output type : Variant NULL output domain : Undefined @@ -646,7 +646,7 @@ output : '1' ast : get_ignore_case(parse_json('{"Aa":1, "aA":2, "aa":3}'), 'aa') raw expr : get_ignore_case(parse_json('{"Aa":1, "aA":2, "aa":3}'), 'aa') -checked expr : get_ignore_case(parse_json("{\"Aa\":1, \"aA\":2, \"aa\":3}"), "aa") +checked expr : get_ignore_case(CAST("{\"Aa\":1, \"aA\":2, \"aa\":3}" AS Variant), "aa") optimized expr : 0x20000000200000025003 output type : Variant NULL output domain : Undefined @@ -655,7 +655,7 @@ output : '3' ast : get_ignore_case(parse_json('{"Aa":1, "aA":2, "aa":3}'), 'bb') raw expr : get_ignore_case(parse_json('{"Aa":1, "aA":2, "aa":3}'), 'bb') -checked expr : get_ignore_case(parse_json("{\"Aa\":1, \"aA\":2, \"aa\":3}"), "bb") +checked expr : get_ignore_case(CAST("{\"Aa\":1, \"aA\":2, \"aa\":3}" AS Variant), "bb") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -664,7 +664,7 @@ output : NULL ast : get_ignore_case(parse_json(s), k) raw expr : get_ignore_case(parse_json(s::String), k::String) -checked expr : get_ignore_case(parse_json(s), k) +checked expr : get_ignore_case(CAST(s AS Variant), k) evaluation: +--------+------------------------+-------------+--------------+ | | s | k | Output | @@ -687,7 +687,7 @@ evaluation (internal): ast : get_ignore_case(parse_json(s), k) raw expr : get_ignore_case(parse_json(s::String NULL), k::String) -checked expr : get_ignore_case(parse_json(s), CAST(k AS String NULL)) +checked expr : get_ignore_case(CAST(s AS Variant NULL), CAST(k AS String NULL)) evaluation: +--------+---------------------------------+------------+--------------+ | | s | k | Output | @@ -711,7 +711,7 @@ evaluation (internal): ast : get_path(parse_json('[[1,2],3]'), '[0]') raw expr : get_path(parse_json('[[1,2],3]'), '[0]') -checked expr : get_path(parse_json("[[1,2],3]"), "[0]") +checked expr : get_path(CAST("[[1,2],3]" AS Variant), "[0]") optimized expr : 0x80000002200000022000000250015002 output type : Variant NULL output domain : Undefined @@ -720,7 +720,7 @@ output : '[1,2]' ast : get_path(parse_json('[[1,2],3]'), '[0][1]') raw expr : get_path(parse_json('[[1,2],3]'), '[0][1]') -checked expr : get_path(parse_json("[[1,2],3]"), "[0][1]") +checked expr : get_path(CAST("[[1,2],3]" AS Variant), "[0][1]") optimized expr : 0x20000000200000025002 output type : Variant NULL output domain : Undefined @@ -729,7 +729,7 @@ output : '2' ast : get_path(parse_json('[1,2,3]'), '[0]') raw expr : get_path(parse_json('[1,2,3]'), '[0]') -checked expr : get_path(parse_json("[1,2,3]"), "[0]") +checked expr : get_path(CAST("[1,2,3]" AS Variant), "[0]") optimized expr : 0x20000000200000025001 output type : Variant NULL output domain : Undefined @@ -738,7 +738,7 @@ output : '1' ast : get_path(parse_json('[1,2,3]'), 'k2:k3') raw expr : get_path(parse_json('[1,2,3]'), 'k2:k3') -checked expr : get_path(parse_json("[1,2,3]"), "k2:k3") +checked expr : get_path(CAST("[1,2,3]" AS Variant), "k2:k3") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -747,7 +747,7 @@ output : NULL ast : get_path(parse_json('{"a":{"b":2}}'), '["a"]["b"]') raw expr : get_path(parse_json('{"a":{"b":2}}'), '["a"]["b"]') -checked expr : get_path(parse_json("{\"a\":{\"b\":2}}"), "[\"a\"][\"b\"]") +checked expr : get_path(CAST("{\"a\":{\"b\":2}}" AS Variant), "[\"a\"][\"b\"]") optimized expr : 0x20000000200000025002 output type : Variant NULL output domain : Undefined @@ -756,7 +756,7 @@ output : '2' ast : get_path(parse_json('{"a":{"b":2}}'), 'a:b') raw expr : get_path(parse_json('{"a":{"b":2}}'), 'a:b') -checked expr : get_path(parse_json("{\"a\":{\"b\":2}}"), "a:b") +checked expr : get_path(CAST("{\"a\":{\"b\":2}}" AS Variant), "a:b") optimized expr : 0x20000000200000025002 output type : Variant NULL output domain : Undefined @@ -765,7 +765,7 @@ output : '2' ast : get_path(parse_json('{"a":{"b":2}}'), '["a"]') raw expr : get_path(parse_json('{"a":{"b":2}}'), '["a"]') -checked expr : get_path(parse_json("{\"a\":{\"b\":2}}"), "[\"a\"]") +checked expr : get_path(CAST("{\"a\":{\"b\":2}}" AS Variant), "[\"a\"]") optimized expr : 0x400000011000000120000002625002 output type : Variant NULL output domain : Undefined @@ -774,7 +774,7 @@ output : '{"b":2}' ast : get_path(parse_json('{"a":{"b":2}}'), 'a') raw expr : get_path(parse_json('{"a":{"b":2}}'), 'a') -checked expr : get_path(parse_json("{\"a\":{\"b\":2}}"), "a") +checked expr : get_path(CAST("{\"a\":{\"b\":2}}" AS Variant), "a") optimized expr : 0x400000011000000120000002625002 output type : Variant NULL output domain : Undefined @@ -783,7 +783,7 @@ output : '{"b":2}' ast : get_path(parse_json(s), k) raw expr : get_path(parse_json(s::String), k::String) -checked expr : get_path(parse_json(s), k) +checked expr : get_path(CAST(s AS Variant), k) evaluation: +--------+---------------------------------+-------------------+--------------+ | | s | k | Output | @@ -806,7 +806,7 @@ evaluation (internal): ast : get_path(parse_json(s), k) raw expr : get_path(parse_json(s::String NULL), k::String) -checked expr : get_path(parse_json(s), CAST(k AS String NULL)) +checked expr : get_path(CAST(s AS Variant NULL), CAST(k AS String NULL)) evaluation: +--------+------------------------------------------+--------------+--------------+ | | s | k | Output | @@ -958,7 +958,7 @@ evaluation (internal): ast : as_boolean(parse_json('true')) raw expr : as_boolean(parse_json('true')) -checked expr : as_boolean(parse_json("true")) +checked expr : as_boolean(CAST("true" AS Variant)) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -967,7 +967,7 @@ output : true ast : as_boolean(parse_json('123')) raw expr : as_boolean(parse_json('123')) -checked expr : as_boolean(parse_json("123")) +checked expr : as_boolean(CAST("123" AS Variant)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -976,7 +976,7 @@ output : NULL ast : as_integer(parse_json('true')) raw expr : as_integer(parse_json('true')) -checked expr : as_integer(parse_json("true")) +checked expr : as_integer(CAST("true" AS Variant)) optimized expr : NULL output type : Int64 NULL output domain : {NULL} @@ -985,7 +985,7 @@ output : NULL ast : as_integer(parse_json('123')) raw expr : as_integer(parse_json('123')) -checked expr : as_integer(parse_json("123")) +checked expr : as_integer(CAST("123" AS Variant)) optimized expr : 123_i64 output type : Int64 NULL output domain : {123..=123} @@ -994,7 +994,7 @@ output : 123 ast : as_float(parse_json('"ab"')) raw expr : as_float(parse_json('"ab"')) -checked expr : as_float(parse_json("\"ab\"")) +checked expr : as_float(CAST("\"ab\"" AS Variant)) optimized expr : NULL output type : Float64 NULL output domain : {NULL} @@ -1003,7 +1003,7 @@ output : NULL ast : as_float(parse_json('12.34')) raw expr : as_float(parse_json('12.34')) -checked expr : as_float(parse_json("12.34")) +checked expr : as_float(CAST("12.34" AS Variant)) optimized expr : 12.34_f64 output type : Float64 NULL output domain : {12.34..=12.34} @@ -1012,7 +1012,7 @@ output : 12.34 ast : as_string(parse_json('"ab"')) raw expr : as_string(parse_json('"ab"')) -checked expr : as_string(parse_json("\"ab\"")) +checked expr : as_string(CAST("\"ab\"" AS Variant)) optimized expr : "ab" output type : String NULL output domain : {"ab"..="ab"} @@ -1021,7 +1021,7 @@ output : 'ab' ast : as_string(parse_json('12.34')) raw expr : as_string(parse_json('12.34')) -checked expr : as_string(parse_json("12.34")) +checked expr : as_string(CAST("12.34" AS Variant)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1030,7 +1030,7 @@ output : NULL ast : as_array(parse_json('[1,2,3]')) raw expr : as_array(parse_json('[1,2,3]')) -checked expr : as_array(parse_json("[1,2,3]")) +checked expr : as_array(CAST("[1,2,3]" AS Variant)) optimized expr : 0x80000003200000022000000220000002500150025003 output type : Variant NULL output domain : Undefined @@ -1039,7 +1039,7 @@ output : '[1,2,3]' ast : as_array(parse_json('{"a":"b"}')) raw expr : as_array(parse_json('{"a":"b"}')) -checked expr : as_array(parse_json("{\"a\":\"b\"}")) +checked expr : as_array(CAST("{\"a\":\"b\"}" AS Variant)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -1048,7 +1048,7 @@ output : NULL ast : as_object(parse_json('[1,2,3]')) raw expr : as_object(parse_json('[1,2,3]')) -checked expr : as_object(parse_json("[1,2,3]")) +checked expr : as_object(CAST("[1,2,3]" AS Variant)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -1057,7 +1057,7 @@ output : NULL ast : as_object(parse_json('{"a":"b"}')) raw expr : as_object(parse_json('{"a":"b"}')) -checked expr : as_object(parse_json("{\"a\":\"b\"}")) +checked expr : as_object(CAST("{\"a\":\"b\"}" AS Variant)) optimized expr : 0x4000000110000001100000016162 output type : Variant NULL output domain : Undefined @@ -1066,7 +1066,7 @@ output : '{"a":"b"}' ast : as_boolean(parse_json(s)) raw expr : as_boolean(parse_json(s::String)) -checked expr : as_boolean(parse_json(s)) +checked expr : as_boolean(CAST(s AS Variant)) evaluation: +--------+------------------------------+--------------+ | | s | Output | @@ -1092,7 +1092,7 @@ evaluation (internal): ast : as_integer(parse_json(s)) raw expr : as_integer(parse_json(s::String)) -checked expr : as_integer(parse_json(s)) +checked expr : as_integer(CAST(s AS Variant)) evaluation: +--------+------------------------------+------------+ | | s | Output | @@ -1118,7 +1118,7 @@ evaluation (internal): ast : as_float(parse_json(s)) raw expr : as_float(parse_json(s::String)) -checked expr : as_float(parse_json(s)) +checked expr : as_float(CAST(s AS Variant)) evaluation: +--------+------------------------------+--------------+ | | s | Output | @@ -1144,7 +1144,7 @@ evaluation (internal): ast : as_string(parse_json(s)) raw expr : as_string(parse_json(s::String)) -checked expr : as_string(parse_json(s)) +checked expr : as_string(CAST(s AS Variant)) evaluation: +--------+------------------------------+-------------+ | | s | Output | @@ -1170,7 +1170,7 @@ evaluation (internal): ast : as_array(parse_json(s)) raw expr : as_array(parse_json(s::String)) -checked expr : as_array(parse_json(s)) +checked expr : as_array(CAST(s AS Variant)) evaluation: +--------+------------------------------+--------------+ | | s | Output | @@ -1196,7 +1196,7 @@ evaluation (internal): ast : as_object(parse_json(s)) raw expr : as_object(parse_json(s::String)) -checked expr : as_object(parse_json(s)) +checked expr : as_object(CAST(s AS Variant)) evaluation: +--------+------------------------------+--------------+ | | s | Output | @@ -1222,7 +1222,7 @@ evaluation (internal): ast : is_null_value(parse_json('null')) raw expr : is_null_value(parse_json('null')) -checked expr : is_null_value(parse_json("null")) +checked expr : is_null_value(CAST("null" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1231,7 +1231,7 @@ output : true ast : is_null_value(parse_json('[1,2]')) raw expr : is_null_value(parse_json('[1,2]')) -checked expr : is_null_value(parse_json("[1,2]")) +checked expr : is_null_value(CAST("[1,2]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1240,7 +1240,7 @@ output : false ast : is_boolean(parse_json('true')) raw expr : is_boolean(parse_json('true')) -checked expr : is_boolean(parse_json("true")) +checked expr : is_boolean(CAST("true" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1249,7 +1249,7 @@ output : true ast : is_boolean(parse_json('123')) raw expr : is_boolean(parse_json('123')) -checked expr : is_boolean(parse_json("123")) +checked expr : is_boolean(CAST("123" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1258,7 +1258,7 @@ output : false ast : is_integer(parse_json('true')) raw expr : is_integer(parse_json('true')) -checked expr : is_integer(parse_json("true")) +checked expr : is_integer(CAST("true" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1267,7 +1267,7 @@ output : false ast : is_integer(parse_json('123')) raw expr : is_integer(parse_json('123')) -checked expr : is_integer(parse_json("123")) +checked expr : is_integer(CAST("123" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1276,7 +1276,7 @@ output : true ast : is_float(parse_json('"ab"')) raw expr : is_float(parse_json('"ab"')) -checked expr : is_float(parse_json("\"ab\"")) +checked expr : is_float(CAST("\"ab\"" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1285,7 +1285,7 @@ output : false ast : is_float(parse_json('12.34')) raw expr : is_float(parse_json('12.34')) -checked expr : is_float(parse_json("12.34")) +checked expr : is_float(CAST("12.34" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1294,7 +1294,7 @@ output : true ast : is_string(parse_json('"ab"')) raw expr : is_string(parse_json('"ab"')) -checked expr : is_string(parse_json("\"ab\"")) +checked expr : is_string(CAST("\"ab\"" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1303,7 +1303,7 @@ output : true ast : is_string(parse_json('12.34')) raw expr : is_string(parse_json('12.34')) -checked expr : is_string(parse_json("12.34")) +checked expr : is_string(CAST("12.34" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1312,7 +1312,7 @@ output : false ast : is_array(parse_json('[1,2,3]')) raw expr : is_array(parse_json('[1,2,3]')) -checked expr : is_array(parse_json("[1,2,3]")) +checked expr : is_array(CAST("[1,2,3]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1321,7 +1321,7 @@ output : true ast : is_array(parse_json('{"a":"b"}')) raw expr : is_array(parse_json('{"a":"b"}')) -checked expr : is_array(parse_json("{\"a\":\"b\"}")) +checked expr : is_array(CAST("{\"a\":\"b\"}" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1330,7 +1330,7 @@ output : false ast : is_object(parse_json('[1,2,3]')) raw expr : is_object(parse_json('[1,2,3]')) -checked expr : is_object(parse_json("[1,2,3]")) +checked expr : is_object(CAST("[1,2,3]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1339,7 +1339,7 @@ output : false ast : is_object(parse_json('{"a":"b"}')) raw expr : is_object(parse_json('{"a":"b"}')) -checked expr : is_object(parse_json("{\"a\":\"b\"}")) +checked expr : is_object(CAST("{\"a\":\"b\"}" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1348,7 +1348,7 @@ output : true ast : is_null_value(parse_json(s)) raw expr : is_null_value(parse_json(s::String)) -checked expr : is_null_value(parse_json(s)) +checked expr : is_null_value(CAST(s AS Variant)) evaluation: +--------+------------------------------+---------+ | | s | Output | @@ -1374,7 +1374,7 @@ evaluation (internal): ast : is_boolean(parse_json(s)) raw expr : is_boolean(parse_json(s::String)) -checked expr : is_boolean(parse_json(s)) +checked expr : is_boolean(CAST(s AS Variant)) evaluation: +--------+------------------------------+---------+ | | s | Output | @@ -1400,7 +1400,7 @@ evaluation (internal): ast : is_integer(parse_json(s)) raw expr : is_integer(parse_json(s::String)) -checked expr : is_integer(parse_json(s)) +checked expr : is_integer(CAST(s AS Variant)) evaluation: +--------+------------------------------+---------+ | | s | Output | @@ -1426,7 +1426,7 @@ evaluation (internal): ast : is_float(parse_json(s)) raw expr : is_float(parse_json(s::String)) -checked expr : is_float(parse_json(s)) +checked expr : is_float(CAST(s AS Variant)) evaluation: +--------+------------------------------+---------+ | | s | Output | @@ -1452,7 +1452,7 @@ evaluation (internal): ast : is_string(parse_json(s)) raw expr : is_string(parse_json(s::String)) -checked expr : is_string(parse_json(s)) +checked expr : is_string(CAST(s AS Variant)) evaluation: +--------+------------------------------+---------+ | | s | Output | @@ -1478,7 +1478,7 @@ evaluation (internal): ast : is_array(parse_json(s)) raw expr : is_array(parse_json(s::String)) -checked expr : is_array(parse_json(s)) +checked expr : is_array(CAST(s AS Variant)) evaluation: +--------+------------------------------+---------+ | | s | Output | @@ -1504,7 +1504,7 @@ evaluation (internal): ast : is_object(parse_json(s)) raw expr : is_object(parse_json(s::String)) -checked expr : is_object(parse_json(s)) +checked expr : is_object(CAST(s AS Variant)) evaluation: +--------+------------------------------+---------+ | | s | Output | @@ -1530,7 +1530,7 @@ evaluation (internal): ast : to_boolean(parse_json('null')) raw expr : to_boolean(parse_json('null')) -checked expr : to_boolean(parse_json("null")) +checked expr : to_boolean(CAST("null" AS Variant)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1539,7 +1539,7 @@ output : NULL ast : to_boolean(parse_json('true')) raw expr : to_boolean(parse_json('true')) -checked expr : to_boolean(parse_json("true")) +checked expr : to_boolean(CAST("true" AS Variant)) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -1550,7 +1550,7 @@ error: --> SQL:1:1 | 1 | to_boolean(parse_json('123')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ InvalidCast while evaluating function `to_boolean('123')` in expr `to_boolean(parse_json('123'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ InvalidCast while evaluating function `to_boolean('123')` in expr `to_boolean(CAST('123' AS Variant))` @@ -1558,13 +1558,13 @@ error: --> SQL:1:1 | 1 | to_boolean(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ InvalidCast while evaluating function `to_boolean('"abc"')` in expr `to_boolean(parse_json('"abc"'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ InvalidCast while evaluating function `to_boolean('"abc"')` in expr `to_boolean(CAST('"abc"' AS Variant))` ast : to_uint64(parse_json('null')) raw expr : to_uint64(parse_json('null')) -checked expr : to_uint64(parse_json("null")) +checked expr : to_uint64(CAST("null" AS Variant)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -1573,7 +1573,7 @@ output : NULL ast : to_uint64(parse_json('123')) raw expr : to_uint64(parse_json('123')) -checked expr : to_uint64(parse_json("123")) +checked expr : to_uint64(CAST("123" AS Variant)) optimized expr : 123_u64 output type : UInt64 NULL output domain : {123..=123} @@ -1584,7 +1584,7 @@ error: --> SQL:1:1 | 1 | to_uint64(parse_json('-123')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type UInt64 while evaluating function `to_uint64('-123')` in expr `to_uint64(parse_json('-123'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type UInt64 while evaluating function `to_uint64('-123')` in expr `to_uint64(CAST('-123' AS Variant))` @@ -1592,13 +1592,13 @@ error: --> SQL:1:1 | 1 | to_uint64(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type UInt64 while evaluating function `to_uint64('"abc"')` in expr `to_uint64(parse_json('"abc"'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type UInt64 while evaluating function `to_uint64('"abc"')` in expr `to_uint64(CAST('"abc"' AS Variant))` ast : to_int64(parse_json('123')) raw expr : to_int64(parse_json('123')) -checked expr : to_int64(parse_json("123")) +checked expr : to_int64(CAST("123" AS Variant)) optimized expr : 123_i64 output type : Int64 NULL output domain : {123..=123} @@ -1607,7 +1607,7 @@ output : 123 ast : to_int64(parse_json('-123')) raw expr : to_int64(parse_json('-123')) -checked expr : to_int64(parse_json("-123")) +checked expr : to_int64(CAST("-123" AS Variant)) optimized expr : -123_i64 output type : Int64 NULL output domain : {-123..=-123} @@ -1618,13 +1618,13 @@ error: --> SQL:1:1 | 1 | to_int64(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type Int64 while evaluating function `to_int64('"abc"')` in expr `to_int64(parse_json('"abc"'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type Int64 while evaluating function `to_int64('"abc"')` in expr `to_int64(CAST('"abc"' AS Variant))` ast : to_float64(parse_json('12.34')) raw expr : to_float64(parse_json('12.34')) -checked expr : to_float64(parse_json("12.34")) +checked expr : to_float64(CAST("12.34" AS Variant)) optimized expr : 12.34_f64 output type : Float64 NULL output domain : {12.34..=12.34} @@ -1635,13 +1635,13 @@ error: --> SQL:1:1 | 1 | to_float64(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type Float64 while evaluating function `to_float64('"abc"')` in expr `to_float64(parse_json('"abc"'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type Float64 while evaluating function `to_float64('"abc"')` in expr `to_float64(CAST('"abc"' AS Variant))` ast : to_date(parse_json('null')) raw expr : to_date(parse_json('null')) -checked expr : to_date(parse_json("null")) +checked expr : to_date(CAST("null" AS Variant)) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -1650,7 +1650,7 @@ output : NULL ast : to_date(parse_json('"2023-01-01"')) raw expr : to_date(parse_json('"2023-01-01"')) -checked expr : to_date(parse_json("\"2023-01-01\"")) +checked expr : to_date(CAST("\"2023-01-01\"" AS Variant)) optimized expr : 19358 output type : Date NULL output domain : {19358..=19358} @@ -1661,13 +1661,13 @@ error: --> SQL:1:1 | 1 | to_date(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type `DATE` unexpected argument. while evaluating function `to_date('"abc"')` in expr `to_date(parse_json('"abc"'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type `DATE` unexpected argument. while evaluating function `to_date('"abc"')` in expr `to_date(CAST('"abc"' AS Variant))` ast : to_timestamp(parse_json('null')) raw expr : to_timestamp(parse_json('null')) -checked expr : to_timestamp(parse_json("null")) +checked expr : to_timestamp(CAST("null" AS Variant)) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -1676,7 +1676,7 @@ output : NULL ast : to_timestamp(parse_json('"2023-01-01 00:00:00"')) raw expr : to_timestamp(parse_json('"2023-01-01 00:00:00"')) -checked expr : to_timestamp(parse_json("\"2023-01-01 00:00:00\"")) +checked expr : to_timestamp(CAST("\"2023-01-01 00:00:00\"" AS Variant)) optimized expr : 1672531200000000 output type : Timestamp NULL output domain : {1672531200000000..=1672531200000000} @@ -1687,13 +1687,13 @@ error: --> SQL:1:1 | 1 | to_timestamp(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type `TIMESTAMP` unexpected argument. while evaluating function `to_timestamp('"abc"')` in expr `to_timestamp(parse_json('"abc"'))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type `TIMESTAMP` unexpected argument. while evaluating function `to_timestamp('"abc"')` in expr `to_timestamp(CAST('"abc"' AS Variant))` ast : to_string(parse_json('null')) raw expr : to_string(parse_json('null')) -checked expr : to_string(parse_json("null")) +checked expr : to_string(CAST("null" AS Variant)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1702,7 +1702,7 @@ output : NULL ast : to_string(parse_json('12.34')) raw expr : to_string(parse_json('12.34')) -checked expr : to_string(parse_json("12.34")) +checked expr : to_string(CAST("12.34" AS Variant)) optimized expr : "12.34" output type : String NULL output domain : {"12.34"..="12.34"} @@ -1711,7 +1711,7 @@ output : '12.34' ast : to_string(parse_json('"abc"')) raw expr : to_string(parse_json('"abc"')) -checked expr : to_string(parse_json("\"abc\"")) +checked expr : to_string(CAST("\"abc\"" AS Variant)) optimized expr : "abc" output type : String NULL output domain : {"abc"..="abc"} @@ -1720,7 +1720,7 @@ output : 'abc' ast : to_boolean(parse_json(s)) raw expr : to_boolean(parse_json(s::String NULL)) -checked expr : to_boolean(parse_json(s)) +checked expr : to_boolean(CAST(s AS Variant NULL)) evaluation: +--------+----------------------------+--------------+ | | s | Output | @@ -1742,7 +1742,7 @@ evaluation (internal): ast : to_int64(parse_json(s)) raw expr : to_int64(parse_json(s::String NULL)) -checked expr : to_int64(parse_json(s)) +checked expr : to_int64(CAST(s AS Variant NULL)) evaluation: +--------+------------------------+------------+ | | s | Output | @@ -1764,7 +1764,7 @@ evaluation (internal): ast : to_uint64(parse_json(s)) raw expr : to_uint64(parse_json(s::String NULL)) -checked expr : to_uint64(parse_json(s)) +checked expr : to_uint64(CAST(s AS Variant NULL)) evaluation: +--------+-----------------------+-------------+ | | s | Output | @@ -1786,7 +1786,7 @@ evaluation (internal): ast : to_float64(parse_json(s)) raw expr : to_float64(parse_json(s::String NULL)) -checked expr : to_float64(parse_json(s)) +checked expr : to_float64(CAST(s AS Variant NULL)) evaluation: +--------+----------------------------+--------------+ | | s | Output | @@ -1808,7 +1808,7 @@ evaluation (internal): ast : to_date(parse_json(s)) raw expr : to_date(parse_json(s::String NULL)) -checked expr : to_date(parse_json(s)) +checked expr : to_date(CAST(s AS Variant NULL)) evaluation: +--------+------------------------------------------------+--------------+ | | s | Output | @@ -1830,7 +1830,7 @@ evaluation (internal): ast : to_timestamp(parse_json(s)) raw expr : to_timestamp(parse_json(s::String NULL)) -checked expr : to_timestamp(parse_json(s)) +checked expr : to_timestamp(CAST(s AS Variant NULL)) evaluation: +--------+------------------------------------------------------------------+------------------------------+ | | s | Output | @@ -1852,7 +1852,7 @@ evaluation (internal): ast : to_string(parse_json(s)) raw expr : to_string(parse_json(s::String NULL)) -checked expr : to_string(parse_json(s)) +checked expr : to_string(CAST(s AS Variant NULL)) evaluation: +--------+------------------------------+-------------+ | | s | Output | @@ -1874,7 +1874,7 @@ evaluation (internal): ast : try_to_boolean(parse_json('null')) raw expr : try_to_boolean(parse_json('null')) -checked expr : try_to_boolean(parse_json("null")) +checked expr : try_to_boolean(CAST("null" AS Variant)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1883,7 +1883,7 @@ output : NULL ast : try_to_boolean(parse_json('true')) raw expr : try_to_boolean(parse_json('true')) -checked expr : try_to_boolean(parse_json("true")) +checked expr : try_to_boolean(CAST("true" AS Variant)) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -1892,7 +1892,7 @@ output : true ast : try_to_boolean(parse_json('123')) raw expr : try_to_boolean(parse_json('123')) -checked expr : try_to_boolean(parse_json("123")) +checked expr : try_to_boolean(CAST("123" AS Variant)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1901,7 +1901,7 @@ output : NULL ast : try_to_boolean(parse_json('"abc"')) raw expr : try_to_boolean(parse_json('"abc"')) -checked expr : try_to_boolean(parse_json("\"abc\"")) +checked expr : try_to_boolean(CAST("\"abc\"" AS Variant)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1910,7 +1910,7 @@ output : NULL ast : try_to_uint64(parse_json('null')) raw expr : try_to_uint64(parse_json('null')) -checked expr : try_to_uint64(parse_json("null")) +checked expr : try_to_uint64(CAST("null" AS Variant)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -1919,7 +1919,7 @@ output : NULL ast : try_to_uint64(parse_json('123')) raw expr : try_to_uint64(parse_json('123')) -checked expr : try_to_uint64(parse_json("123")) +checked expr : try_to_uint64(CAST("123" AS Variant)) optimized expr : 123_u64 output type : UInt64 NULL output domain : {123..=123} @@ -1928,7 +1928,7 @@ output : 123 ast : try_to_uint64(parse_json('-123')) raw expr : try_to_uint64(parse_json('-123')) -checked expr : try_to_uint64(parse_json("-123")) +checked expr : try_to_uint64(CAST("-123" AS Variant)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -1937,7 +1937,7 @@ output : NULL ast : try_to_uint64(parse_json('"abc"')) raw expr : try_to_uint64(parse_json('"abc"')) -checked expr : try_to_uint64(parse_json("\"abc\"")) +checked expr : try_to_uint64(CAST("\"abc\"" AS Variant)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -1946,7 +1946,7 @@ output : NULL ast : try_to_int64(parse_json('123')) raw expr : try_to_int64(parse_json('123')) -checked expr : try_to_int64(parse_json("123")) +checked expr : try_to_int64(CAST("123" AS Variant)) optimized expr : 123_i64 output type : Int64 NULL output domain : {123..=123} @@ -1955,7 +1955,7 @@ output : 123 ast : try_to_int64(parse_json('-123')) raw expr : try_to_int64(parse_json('-123')) -checked expr : try_to_int64(parse_json("-123")) +checked expr : try_to_int64(CAST("-123" AS Variant)) optimized expr : -123_i64 output type : Int64 NULL output domain : {-123..=-123} @@ -1964,7 +1964,7 @@ output : -123 ast : try_to_int64(parse_json('"abc"')) raw expr : try_to_int64(parse_json('"abc"')) -checked expr : try_to_int64(parse_json("\"abc\"")) +checked expr : try_to_int64(CAST("\"abc\"" AS Variant)) optimized expr : NULL output type : Int64 NULL output domain : {NULL} @@ -1973,7 +1973,7 @@ output : NULL ast : try_to_float64(parse_json('12.34')) raw expr : try_to_float64(parse_json('12.34')) -checked expr : try_to_float64(parse_json("12.34")) +checked expr : try_to_float64(CAST("12.34" AS Variant)) optimized expr : 12.34_f64 output type : Float64 NULL output domain : {12.34..=12.34} @@ -1982,7 +1982,7 @@ output : 12.34 ast : try_to_float64(parse_json('"abc"')) raw expr : try_to_float64(parse_json('"abc"')) -checked expr : try_to_float64(parse_json("\"abc\"")) +checked expr : try_to_float64(CAST("\"abc\"" AS Variant)) optimized expr : NULL output type : Float64 NULL output domain : {NULL} @@ -1991,7 +1991,7 @@ output : NULL ast : try_to_date(parse_json('null')) raw expr : try_to_date(parse_json('null')) -checked expr : try_to_date(parse_json("null")) +checked expr : try_to_date(CAST("null" AS Variant)) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -2000,7 +2000,7 @@ output : NULL ast : try_to_date(parse_json('"2023-01-01"')) raw expr : try_to_date(parse_json('"2023-01-01"')) -checked expr : try_to_date(parse_json("\"2023-01-01\"")) +checked expr : try_to_date(CAST("\"2023-01-01\"" AS Variant)) optimized expr : 19358 output type : Date NULL output domain : {19358..=19358} @@ -2009,7 +2009,7 @@ output : '2023-01-01' ast : try_to_date(parse_json('"abc"')) raw expr : try_to_date(parse_json('"abc"')) -checked expr : try_to_date(parse_json("\"abc\"")) +checked expr : try_to_date(CAST("\"abc\"" AS Variant)) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -2018,7 +2018,7 @@ output : NULL ast : try_to_timestamp(parse_json('null')) raw expr : try_to_timestamp(parse_json('null')) -checked expr : try_to_timestamp(parse_json("null")) +checked expr : try_to_timestamp(CAST("null" AS Variant)) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -2027,7 +2027,7 @@ output : NULL ast : try_to_timestamp(parse_json('"2023-01-01 00:00:00"')) raw expr : try_to_timestamp(parse_json('"2023-01-01 00:00:00"')) -checked expr : try_to_timestamp(parse_json("\"2023-01-01 00:00:00\"")) +checked expr : try_to_timestamp(CAST("\"2023-01-01 00:00:00\"" AS Variant)) optimized expr : 1672531200000000 output type : Timestamp NULL output domain : {1672531200000000..=1672531200000000} @@ -2036,7 +2036,7 @@ output : '2023-01-01 00:00:00.000000' ast : try_to_timestamp(parse_json('"abc"')) raw expr : try_to_timestamp(parse_json('"abc"')) -checked expr : try_to_timestamp(parse_json("\"abc\"")) +checked expr : try_to_timestamp(CAST("\"abc\"" AS Variant)) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -2045,7 +2045,7 @@ output : NULL ast : try_to_string(parse_json('null')) raw expr : try_to_string(parse_json('null')) -checked expr : try_to_string(parse_json("null")) +checked expr : try_to_string(CAST("null" AS Variant)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -2054,7 +2054,7 @@ output : NULL ast : try_to_string(parse_json('12.34')) raw expr : try_to_string(parse_json('12.34')) -checked expr : try_to_string(parse_json("12.34")) +checked expr : try_to_string(CAST("12.34" AS Variant)) optimized expr : "12.34" output type : String NULL output domain : {"12.34"..="12.34"} @@ -2063,7 +2063,7 @@ output : '12.34' ast : try_to_string(parse_json('"abc"')) raw expr : try_to_string(parse_json('"abc"')) -checked expr : try_to_string(parse_json("\"abc\"")) +checked expr : try_to_string(CAST("\"abc\"" AS Variant)) optimized expr : "abc" output type : String NULL output domain : {"abc"..="abc"} @@ -2072,7 +2072,7 @@ output : 'abc' ast : try_to_boolean(parse_json(s)) raw expr : try_to_boolean(parse_json(s::String NULL)) -checked expr : try_to_boolean(parse_json(s)) +checked expr : try_to_boolean(CAST(s AS Variant NULL)) evaluation: +--------+--------------------------------------+--------------+ | | s | Output | @@ -2099,7 +2099,7 @@ evaluation (internal): ast : try_to_int64(parse_json(s)) raw expr : try_to_int64(parse_json(s::String NULL)) -checked expr : try_to_int64(parse_json(s)) +checked expr : try_to_int64(CAST(s AS Variant NULL)) evaluation: +--------+--------------------------------------+------------+ | | s | Output | @@ -2126,7 +2126,7 @@ evaluation (internal): ast : try_to_uint64(parse_json(s)) raw expr : try_to_uint64(parse_json(s::String NULL)) -checked expr : try_to_uint64(parse_json(s)) +checked expr : try_to_uint64(CAST(s AS Variant NULL)) evaluation: +--------+--------------------------------------+-------------+ | | s | Output | @@ -2153,7 +2153,7 @@ evaluation (internal): ast : try_to_float64(parse_json(s)) raw expr : try_to_float64(parse_json(s::String NULL)) -checked expr : try_to_float64(parse_json(s)) +checked expr : try_to_float64(CAST(s AS Variant NULL)) evaluation: +--------+--------------------------------------+--------------+ | | s | Output | @@ -2180,7 +2180,7 @@ evaluation (internal): ast : try_to_date(parse_json(s)) raw expr : try_to_date(parse_json(s::String NULL)) -checked expr : try_to_date(parse_json(s)) +checked expr : try_to_date(CAST(s AS Variant NULL)) evaluation: +--------+--------------------------------------+--------------+ | | s | Output | @@ -2207,7 +2207,7 @@ evaluation (internal): ast : try_to_timestamp(parse_json(s)) raw expr : try_to_timestamp(parse_json(s::String NULL)) -checked expr : try_to_timestamp(parse_json(s)) +checked expr : try_to_timestamp(CAST(s AS Variant NULL)) evaluation: +--------+--------------------------------------+------------------------------+ | | s | Output | @@ -2234,7 +2234,7 @@ evaluation (internal): ast : try_to_string(parse_json(s)) raw expr : try_to_string(parse_json(s::String NULL)) -checked expr : try_to_string(parse_json(s)) +checked expr : try_to_string(CAST(s AS Variant NULL)) evaluation: +--------+--------------------------------------+-----------------------+ | | s | Output | @@ -2575,7 +2575,7 @@ evaluation (internal): ast : json_path_query_array(parse_json('[1, 2, 3, 4, 5, 6]'), '$[0, 2 to last, 4]') raw expr : json_path_query_array(parse_json('[1, 2, 3, 4, 5, 6]'), '$[0, 2 to last, 4]') -checked expr : json_path_query_array(parse_json("[1, 2, 3, 4, 5, 6]"), "$[0, 2 to last, 4]") +checked expr : json_path_query_array(CAST("[1, 2, 3, 4, 5, 6]" AS Variant), "$[0, 2 to last, 4]") optimized expr : 0x80000006200000022000000220000002200000022000000220000002500150035004500550065005 output type : Variant NULL output domain : Undefined @@ -2584,7 +2584,7 @@ output : '[1,3,4,5,6,5]' ast : json_path_query_array(parse_json('[1, 2, 3, 4, 5, 6]'), '$[100]') raw expr : json_path_query_array(parse_json('[1, 2, 3, 4, 5, 6]'), '$[100]') -checked expr : json_path_query_array(parse_json("[1, 2, 3, 4, 5, 6]"), "$[100]") +checked expr : json_path_query_array(CAST("[1, 2, 3, 4, 5, 6]" AS Variant), "$[100]") optimized expr : 0x80000000 output type : Variant NULL output domain : Undefined @@ -2593,7 +2593,7 @@ output : '[]' ast : json_path_query_array(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a') raw expr : json_path_query_array(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a') -checked expr : json_path_query_array(parse_json("[{\"a\": 1}, {\"a\": 2}]"), "$[*].a") +checked expr : json_path_query_array(CAST("[{\"a\": 1}, {\"a\": 2}]" AS Variant), "$[*].a") optimized expr : 0x80000002200000022000000250015002 output type : Variant NULL output domain : Undefined @@ -2602,7 +2602,7 @@ output : '[1,2]' ast : json_path_query_array(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a ? (@ == 1)') raw expr : json_path_query_array(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a ? (@ == 1)') -checked expr : json_path_query_array(parse_json("[{\"a\": 1}, {\"a\": 2}]"), "$[*].a ? (@ == 1)") +checked expr : json_path_query_array(CAST("[{\"a\": 1}, {\"a\": 2}]" AS Variant), "$[*].a ? (@ == 1)") optimized expr : 0x80000001200000025001 output type : Variant NULL output domain : Undefined @@ -2611,7 +2611,7 @@ output : '[1]' ast : json_path_query_array(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a ? (@ > 10)') raw expr : json_path_query_array(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a ? (@ > 10)') -checked expr : json_path_query_array(parse_json("[{\"a\": 1}, {\"a\": 2}]"), "$[*].a ? (@ > 10)") +checked expr : json_path_query_array(CAST("[{\"a\": 1}, {\"a\": 2}]" AS Variant), "$[*].a ? (@ > 10)") optimized expr : 0x80000000 output type : Variant NULL output domain : Undefined @@ -2620,7 +2620,7 @@ output : '[]' ast : json_path_query_array(parse_json('[{"a": {"b":10}}, {"a": 2}]'), '$[*].a.b') raw expr : json_path_query_array(parse_json('[{"a": {"b":10}}, {"a": 2}]'), '$[*].a.b') -checked expr : json_path_query_array(parse_json("[{\"a\": {\"b\":10}}, {\"a\": 2}]"), "$[*].a.b") +checked expr : json_path_query_array(CAST("[{\"a\": {\"b\":10}}, {\"a\": 2}]" AS Variant), "$[*].a.b") optimized expr : 0x8000000120000002500a output type : Variant NULL output domain : Undefined @@ -2629,7 +2629,7 @@ output : '[10]' ast : json_path_query_array(parse_json(s), p) raw expr : json_path_query_array(parse_json(s::String NULL), p::String) -checked expr : json_path_query_array(parse_json(s), CAST(p AS String NULL)) +checked expr : json_path_query_array(CAST(s AS Variant NULL), CAST(p AS String NULL)) evaluation: +--------+---------------------------------+------------------+--------------+ | | s | p | Output | @@ -2653,7 +2653,7 @@ evaluation (internal): ast : json_path_query_first(parse_json('[1, 2, 3, 4, 5, 6]'), '$[0, 2 to last, 4]') raw expr : json_path_query_first(parse_json('[1, 2, 3, 4, 5, 6]'), '$[0, 2 to last, 4]') -checked expr : json_path_query_first(parse_json("[1, 2, 3, 4, 5, 6]"), "$[0, 2 to last, 4]") +checked expr : json_path_query_first(CAST("[1, 2, 3, 4, 5, 6]" AS Variant), "$[0, 2 to last, 4]") optimized expr : 0x20000000200000025001 output type : Variant NULL output domain : Undefined @@ -2662,7 +2662,7 @@ output : '1' ast : json_path_query_first(parse_json('[1, 2, 3, 4, 5, 6]'), '$[100]') raw expr : json_path_query_first(parse_json('[1, 2, 3, 4, 5, 6]'), '$[100]') -checked expr : json_path_query_first(parse_json("[1, 2, 3, 4, 5, 6]"), "$[100]") +checked expr : json_path_query_first(CAST("[1, 2, 3, 4, 5, 6]" AS Variant), "$[100]") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -2671,7 +2671,7 @@ output : NULL ast : json_path_query_first(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a') raw expr : json_path_query_first(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a') -checked expr : json_path_query_first(parse_json("[{\"a\": 1}, {\"a\": 2}]"), "$[*].a") +checked expr : json_path_query_first(CAST("[{\"a\": 1}, {\"a\": 2}]" AS Variant), "$[*].a") optimized expr : 0x20000000200000025001 output type : Variant NULL output domain : Undefined @@ -2680,7 +2680,7 @@ output : '1' ast : json_path_query_first(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a ? (@ == 1)') raw expr : json_path_query_first(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a ? (@ == 1)') -checked expr : json_path_query_first(parse_json("[{\"a\": 1}, {\"a\": 2}]"), "$[*].a ? (@ == 1)") +checked expr : json_path_query_first(CAST("[{\"a\": 1}, {\"a\": 2}]" AS Variant), "$[*].a ? (@ == 1)") optimized expr : 0x20000000200000025001 output type : Variant NULL output domain : Undefined @@ -2689,7 +2689,7 @@ output : '1' ast : json_path_query_first(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a ? (@ > 10)') raw expr : json_path_query_first(parse_json('[{"a": 1}, {"a": 2}]'), '$[*].a ? (@ > 10)') -checked expr : json_path_query_first(parse_json("[{\"a\": 1}, {\"a\": 2}]"), "$[*].a ? (@ > 10)") +checked expr : json_path_query_first(CAST("[{\"a\": 1}, {\"a\": 2}]" AS Variant), "$[*].a ? (@ > 10)") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -2698,7 +2698,7 @@ output : NULL ast : json_path_query_first(parse_json('[{"a": {"b":10}}, {"a": 2}]'), '$[*].a.b') raw expr : json_path_query_first(parse_json('[{"a": {"b":10}}, {"a": 2}]'), '$[*].a.b') -checked expr : json_path_query_first(parse_json("[{\"a\": {\"b\":10}}, {\"a\": 2}]"), "$[*].a.b") +checked expr : json_path_query_first(CAST("[{\"a\": {\"b\":10}}, {\"a\": 2}]" AS Variant), "$[*].a.b") optimized expr : 0x2000000020000002500a output type : Variant NULL output domain : Undefined @@ -2707,7 +2707,7 @@ output : '10' ast : json_path_query_first(parse_json(s), p) raw expr : json_path_query_first(parse_json(s::String NULL), p::String) -checked expr : json_path_query_first(parse_json(s), CAST(p AS String NULL)) +checked expr : json_path_query_first(CAST(s AS Variant NULL), CAST(p AS String NULL)) evaluation: +--------+---------------------------------+------------------+--------------+ | | s | p | Output | @@ -2731,7 +2731,7 @@ evaluation (internal): ast : json_to_string(parse_json('true')) raw expr : json_to_string(parse_json('true')) -checked expr : to_string(parse_json("true")) +checked expr : to_string(CAST("true" AS Variant)) optimized expr : "true" output type : String NULL output domain : {"true"..="true"} @@ -2740,7 +2740,7 @@ output : 'true' ast : json_to_string(parse_json('123456')) raw expr : json_to_string(parse_json('123456')) -checked expr : to_string(parse_json("123456")) +checked expr : to_string(CAST("123456" AS Variant)) optimized expr : "123456" output type : String NULL output domain : {"123456"..="123456"} @@ -2749,7 +2749,7 @@ output : '123456' ast : json_to_string(parse_json('"abcd"')) raw expr : json_to_string(parse_json('"abcd"')) -checked expr : to_string(parse_json("\"abcd\"")) +checked expr : to_string(CAST("\"abcd\"" AS Variant)) optimized expr : "abcd" output type : String NULL output domain : {"abcd"..="abcd"} @@ -2758,7 +2758,7 @@ output : 'abcd' ast : json_to_string(parse_json('[1, 2, 3, 4, 5, 6]')) raw expr : json_to_string(parse_json('[1, 2, 3, 4, 5, 6]')) -checked expr : to_string(parse_json("[1, 2, 3, 4, 5, 6]")) +checked expr : to_string(CAST("[1, 2, 3, 4, 5, 6]" AS Variant)) optimized expr : "[1,2,3,4,5,6]" output type : String NULL output domain : {"[1,2,3,4,5,6]"..="[1,2,3,4,5,6]"} @@ -2767,7 +2767,7 @@ output : '[1,2,3,4,5,6]' ast : json_to_string(parse_json('{"k1":123, "k2":"abc"}')) raw expr : json_to_string(parse_json('{"k1":123, "k2":"abc"}')) -checked expr : to_string(parse_json("{\"k1\":123, \"k2\":\"abc\"}")) +checked expr : to_string(CAST("{\"k1\":123, \"k2\":\"abc\"}" AS Variant)) optimized expr : "{\"k1\":123,\"k2\":\"abc\"}" output type : String NULL output domain : {"{\"k1\":123,\"k2\":\"abc\"}"..="{\"k1\":123,\"k2\":\"abc\"}"} @@ -2776,7 +2776,7 @@ output : '{"k1":123,"k2":"abc"}' ast : json_pretty(parse_json('true')) raw expr : json_pretty(parse_json('true')) -checked expr : json_pretty(parse_json("true")) +checked expr : json_pretty(CAST("true" AS Variant)) optimized expr : "true" output type : String output domain : {"true"..="true"} @@ -2785,7 +2785,7 @@ output : 'true' ast : json_pretty(parse_json('123456')) raw expr : json_pretty(parse_json('123456')) -checked expr : json_pretty(parse_json("123456")) +checked expr : json_pretty(CAST("123456" AS Variant)) optimized expr : "123456" output type : String output domain : {"123456"..="123456"} @@ -2794,7 +2794,7 @@ output : '123456' ast : json_pretty(parse_json('"abcd"')) raw expr : json_pretty(parse_json('"abcd"')) -checked expr : json_pretty(parse_json("\"abcd\"")) +checked expr : json_pretty(CAST("\"abcd\"" AS Variant)) optimized expr : "\"abcd\"" output type : String output domain : {"\"abcd\""..="\"abcd\""} @@ -2803,7 +2803,7 @@ output : '"abcd"' ast : json_pretty(parse_json('[1, 2, 3, 4, 5, 6]')) raw expr : json_pretty(parse_json('[1, 2, 3, 4, 5, 6]')) -checked expr : json_pretty(parse_json("[1, 2, 3, 4, 5, 6]")) +checked expr : json_pretty(CAST("[1, 2, 3, 4, 5, 6]" AS Variant)) optimized expr : "[\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n]" output type : String output domain : {"[\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n]"..="[\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n]"} @@ -2819,7 +2819,7 @@ output : '[ ast : json_pretty(parse_json('{"k1":123, "k2":"abc"}')) raw expr : json_pretty(parse_json('{"k1":123, "k2":"abc"}')) -checked expr : json_pretty(parse_json("{\"k1\":123, \"k2\":\"abc\"}")) +checked expr : json_pretty(CAST("{\"k1\":123, \"k2\":\"abc\"}" AS Variant)) optimized expr : "{\n \"k1\": 123,\n \"k2\": \"abc\"\n}" output type : String output domain : {"{\n \"k1\": 123,\n \"k2\": \"abc\"\n}"..="{\n \"k1\": 123,\n \"k2\": \"abc\"\n}"} @@ -2831,7 +2831,7 @@ output : '{ ast : json_pretty(parse_json('{"a":1,"b":true,"c":["1","2","3"],"d":{"a":1,"b":[1,2,3],"c":{"a":1,"b":2}}}')) raw expr : json_pretty(parse_json('{"a":1,"b":true,"c":["1","2","3"],"d":{"a":1,"b":[1,2,3],"c":{"a":1,"b":2}}}')) -checked expr : json_pretty(parse_json("{\"a\":1,\"b\":true,\"c\":[\"1\",\"2\",\"3\"],\"d\":{\"a\":1,\"b\":[1,2,3],\"c\":{\"a\":1,\"b\":2}}}")) +checked expr : json_pretty(CAST("{\"a\":1,\"b\":true,\"c\":[\"1\",\"2\",\"3\"],\"d\":{\"a\":1,\"b\":[1,2,3],\"c\":{\"a\":1,\"b\":2}}}" AS Variant)) optimized expr : "{\n \"a\": 1,\n \"b\": true,\n \"c\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"d\": {\n \"a\": 1,\n \"b\": [\n 1,\n 2,\n 3\n ],\n \"c\": {\n \"a\": 1,\n \"b\": 2\n }\n }\n}" output type : String output domain : {"{\n \"a\": 1,\n \"b\": true,\n \"c\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"d\": {\n \"a\": 1,\n \"b\": [\n 1,\n 2,\n 3\n ],\n \"c\": {\n \"a\": 1,\n \"b\": 2\n }\n }\n}"..="{\n \"a\": 1,\n \"b\": true,\n \"c\": [\n \"1\",\n \"2\",\n \"3\"\n ],\n \"d\": {\n \"a\": 1,\n \"b\": [\n 1,\n 2,\n 3\n ],\n \"c\": {\n \"a\": 1,\n \"b\": 2\n }\n }\n}"} @@ -2860,7 +2860,7 @@ output : '{ ast : json_strip_nulls(parse_json('true')) raw expr : json_strip_nulls(parse_json('true')) -checked expr : json_strip_nulls(parse_json("true")) +checked expr : json_strip_nulls(CAST("true" AS Variant)) optimized expr : 0x2000000040000000 output type : Variant output domain : Undefined @@ -2869,7 +2869,7 @@ output : 'true' ast : json_strip_nulls(parse_json('null')) raw expr : json_strip_nulls(parse_json('null')) -checked expr : json_strip_nulls(parse_json("null")) +checked expr : json_strip_nulls(CAST("null" AS Variant)) optimized expr : 0x2000000000000000 output type : Variant output domain : Undefined @@ -2878,7 +2878,7 @@ output : 'null' ast : json_strip_nulls(parse_json('[1, 2, 3, null]')) raw expr : json_strip_nulls(parse_json('[1, 2, 3, null]')) -checked expr : json_strip_nulls(parse_json("[1, 2, 3, null]")) +checked expr : json_strip_nulls(CAST("[1, 2, 3, null]" AS Variant)) optimized expr : 0x8000000420000002200000022000000200000000500150025003 output type : Variant output domain : Undefined @@ -2887,7 +2887,7 @@ output : '[1,2,3,null]' ast : json_strip_nulls(parse_json('{"a":null, "b": {"c": 1, "d": null}, "c": [{"a": 1, "b": null}]}')) raw expr : json_strip_nulls(parse_json('{"a":null, "b": {"c": 1, "d": null}, "c": [{"a": 1, "b": null}]}')) -checked expr : json_strip_nulls(parse_json("{\"a\":null, \"b\": {\"c\": 1, \"d\": null}, \"c\": [{\"a\": 1, \"b\": null}]}")) +checked expr : json_strip_nulls(CAST("{\"a\":null, \"b\": {\"c\": 1, \"d\": null}, \"c\": [{\"a\": 1, \"b\": null}]}" AS Variant)) optimized expr : 0x4000000210000001100000015000000f500000176263400000011000000120000002635001800000015000000f400000011000000120000002615001 output type : Variant output domain : Undefined @@ -2905,7 +2905,7 @@ output : NULL ast : json_typeof(parse_json('null')) raw expr : json_typeof(parse_json('null')) -checked expr : json_typeof(parse_json("null")) +checked expr : json_typeof(CAST("null" AS Variant)) optimized expr : "null" output type : String output domain : {"null"..="null"} @@ -2914,7 +2914,7 @@ output : 'null' ast : json_typeof(parse_json('true')) raw expr : json_typeof(parse_json('true')) -checked expr : json_typeof(parse_json("true")) +checked expr : json_typeof(CAST("true" AS Variant)) optimized expr : "boolean" output type : String output domain : {"boolean"..="boolean"} @@ -2923,7 +2923,7 @@ output : 'boolean' ast : json_typeof(parse_json('"test"')) raw expr : json_typeof(parse_json('"test"')) -checked expr : json_typeof(parse_json("\"test\"")) +checked expr : json_typeof(CAST("\"test\"" AS Variant)) optimized expr : "string" output type : String output domain : {"string"..="string"} @@ -2932,7 +2932,7 @@ output : 'string' ast : json_typeof(parse_json('-1.12')) raw expr : json_typeof(parse_json('-1.12')) -checked expr : json_typeof(parse_json("-1.12")) +checked expr : json_typeof(CAST("-1.12" AS Variant)) optimized expr : "number" output type : String output domain : {"number"..="number"} @@ -2941,7 +2941,7 @@ output : 'number' ast : json_typeof(parse_json('[1,2,3]')) raw expr : json_typeof(parse_json('[1,2,3]')) -checked expr : json_typeof(parse_json("[1,2,3]")) +checked expr : json_typeof(CAST("[1,2,3]" AS Variant)) optimized expr : "array" output type : String output domain : {"array"..="array"} @@ -2950,7 +2950,7 @@ output : 'array' ast : json_typeof(parse_json('{"a":1,"b":2}')) raw expr : json_typeof(parse_json('{"a":1,"b":2}')) -checked expr : json_typeof(parse_json("{\"a\":1,\"b\":2}")) +checked expr : json_typeof(CAST("{\"a\":1,\"b\":2}" AS Variant)) optimized expr : "object" output type : String output domain : {"object"..="object"} @@ -3011,7 +3011,7 @@ output : NULL ast : json_path_exists(parse_json('{"a": 1, "b": 2}'), NULL) raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), NULL) -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), NULL) +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3020,7 +3020,7 @@ output : NULL ast : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a') raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), "$.a") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), "$.a") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3029,7 +3029,7 @@ output : true ast : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.c') raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.c') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), "$.c") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), "$.c") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3038,7 +3038,7 @@ output : false ast : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a ? (@ == 1)') raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a ? (@ == 1)') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), "$.a ? (@ == 1)") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), "$.a ? (@ == 1)") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3047,7 +3047,7 @@ output : true ast : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a ? (@ > 1)') raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a ? (@ > 1)') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), "$.a ? (@ > 1)") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), "$.a ? (@ > 1)") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3056,7 +3056,7 @@ output : false ast : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[0]') raw expr : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[0]') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": [1,2,3]}"), "$.b[0]") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": [1,2,3]}" AS Variant), "$.b[0]") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3065,7 +3065,7 @@ output : true ast : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[3]') raw expr : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[3]') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": [1,2,3]}"), "$.b[3]") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": [1,2,3]}" AS Variant), "$.b[3]") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -3074,7 +3074,7 @@ output : false ast : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[1 to last] ? (@ >=2 && @ <=3)') raw expr : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[1 to last] ? (@ >=2 && @ <=3)') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": [1,2,3]}"), "$.b[1 to last] ? (@ >=2 && @ <=3)") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": [1,2,3]}" AS Variant), "$.b[1 to last] ? (@ >=2 && @ <=3)") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -3083,7 +3083,7 @@ output : true ast : parse_json('null')->1 raw expr : get(parse_json('null'), 1) -checked expr : get(parse_json("null"), CAST(1_u8 AS Int64)) +checked expr : get(CAST("null" AS Variant), CAST(1_u8 AS Int64)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3092,7 +3092,7 @@ output : NULL ast : parse_json('null')->'k' raw expr : get(parse_json('null'), 'k') -checked expr : get(parse_json("null"), "k") +checked expr : get(CAST("null" AS Variant), "k") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3101,7 +3101,7 @@ output : NULL ast : parse_json('[1,2,3,4]')->1 raw expr : get(parse_json('[1,2,3,4]'), 1) -checked expr : get(parse_json("[1,2,3,4]"), CAST(1_u8 AS Int64)) +checked expr : get(CAST("[1,2,3,4]" AS Variant), CAST(1_u8 AS Int64)) optimized expr : 0x20000000200000025002 output type : Variant NULL output domain : Undefined @@ -3110,7 +3110,7 @@ output : '2' ast : parse_json('[1,2,3,4]')->(2+3) raw expr : get(parse_json('[1,2,3,4]'), plus(2, 3)) -checked expr : get(parse_json("[1,2,3,4]"), CAST(plus(2_u8, 3_u8) AS Int64)) +checked expr : get(CAST("[1,2,3,4]" AS Variant), CAST(plus(2_u8, 3_u8) AS Int64)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3119,7 +3119,7 @@ output : NULL ast : parse_json('{"k":"v"}')->'k' raw expr : get(parse_json('{"k":"v"}'), 'k') -checked expr : get(parse_json("{\"k\":\"v\"}"), "k") +checked expr : get(CAST("{\"k\":\"v\"}" AS Variant), "k") optimized expr : 0x200000001000000176 output type : Variant NULL output domain : Undefined @@ -3128,7 +3128,7 @@ output : '"v"' ast : parse_json('{"k":"v"}')->'x' raw expr : get(parse_json('{"k":"v"}'), 'x') -checked expr : get(parse_json("{\"k\":\"v\"}"), "x") +checked expr : get(CAST("{\"k\":\"v\"}" AS Variant), "x") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3146,7 +3146,7 @@ output : '"b"' ast : parse_json(s)->i raw expr : get(parse_json(s::String), i::UInt64) -checked expr : get(parse_json(s), CAST(i AS Int64)) +checked expr : get(CAST(s AS Variant), CAST(i AS Int64)) evaluation: +--------+----------------------------------+---------+--------------+ | | s | i | Output | @@ -3169,7 +3169,7 @@ evaluation (internal): ast : parse_json(s)->i raw expr : get(parse_json(s::String NULL), i::UInt64 NULL) -checked expr : get(parse_json(s), CAST(i AS Int64 NULL)) +checked expr : get(CAST(s AS Variant NULL), CAST(i AS Int64 NULL)) evaluation: +--------+-------------------------------------------+------------------+--------------+ | | s | i | Output | @@ -3193,7 +3193,7 @@ evaluation (internal): ast : parse_json(s)->k raw expr : get(parse_json(s::String), k::String) -checked expr : get(parse_json(s), k) +checked expr : get(CAST(s AS Variant), k) evaluation: +--------+------------------------+-------------+--------------+ | | s | k | Output | @@ -3216,7 +3216,7 @@ evaluation (internal): ast : parse_json(s)->k raw expr : get(parse_json(s::String NULL), k::String) -checked expr : get(parse_json(s), CAST(k AS String NULL)) +checked expr : get(CAST(s AS Variant NULL), CAST(k AS String NULL)) evaluation: +--------+---------------------------------+------------+--------------+ | | s | k | Output | @@ -3240,7 +3240,7 @@ evaluation (internal): ast : parse_json('null')->>1 raw expr : get_string(parse_json('null'), 1) -checked expr : get_string(parse_json("null"), CAST(1_u8 AS Int64)) +checked expr : get_string(CAST("null" AS Variant), CAST(1_u8 AS Int64)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3249,7 +3249,7 @@ output : NULL ast : parse_json('null')->>'k' raw expr : get_string(parse_json('null'), 'k') -checked expr : get_string(parse_json("null"), "k") +checked expr : get_string(CAST("null" AS Variant), "k") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3258,7 +3258,7 @@ output : NULL ast : parse_json('[1,2,3,4]')->>1 raw expr : get_string(parse_json('[1,2,3,4]'), 1) -checked expr : get_string(parse_json("[1,2,3,4]"), CAST(1_u8 AS Int64)) +checked expr : get_string(CAST("[1,2,3,4]" AS Variant), CAST(1_u8 AS Int64)) optimized expr : "2" output type : String NULL output domain : {"2"..="2"} @@ -3267,7 +3267,7 @@ output : '2' ast : parse_json('[1,2,3,4]')->>(2+3) raw expr : get_string(parse_json('[1,2,3,4]'), plus(2, 3)) -checked expr : get_string(parse_json("[1,2,3,4]"), CAST(plus(2_u8, 3_u8) AS Int64)) +checked expr : get_string(CAST("[1,2,3,4]" AS Variant), CAST(plus(2_u8, 3_u8) AS Int64)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3276,7 +3276,7 @@ output : NULL ast : parse_json('{"k":"v"}')->>'k' raw expr : get_string(parse_json('{"k":"v"}'), 'k') -checked expr : get_string(parse_json("{\"k\":\"v\"}"), "k") +checked expr : get_string(CAST("{\"k\":\"v\"}" AS Variant), "k") optimized expr : "v" output type : String NULL output domain : {"v"..="v"} @@ -3285,7 +3285,7 @@ output : 'v' ast : parse_json('{"k":"v"}')->>'x' raw expr : get_string(parse_json('{"k":"v"}'), 'x') -checked expr : get_string(parse_json("{\"k\":\"v\"}"), "x") +checked expr : get_string(CAST("{\"k\":\"v\"}" AS Variant), "x") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3294,7 +3294,7 @@ output : NULL ast : parse_json('{"k":null}')->>'k' raw expr : get_string(parse_json('{"k":null}'), 'k') -checked expr : get_string(parse_json("{\"k\":null}"), "k") +checked expr : get_string(CAST("{\"k\":null}" AS Variant), "k") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3312,7 +3312,7 @@ output : 'b' ast : parse_json(s)->>i raw expr : get_string(parse_json(s::String), i::UInt64) -checked expr : get_string(parse_json(s), CAST(i AS Int64)) +checked expr : get_string(CAST(s AS Variant), CAST(i AS Int64)) evaluation: +--------+----------------------------------+---------+-------------+ | | s | i | Output | @@ -3335,7 +3335,7 @@ evaluation (internal): ast : parse_json(s)->>i raw expr : get_string(parse_json(s::String NULL), i::UInt64 NULL) -checked expr : get_string(parse_json(s), CAST(i AS Int64 NULL)) +checked expr : get_string(CAST(s AS Variant NULL), CAST(i AS Int64 NULL)) evaluation: +--------+-------------------------------------------+------------------+-------------+ | | s | i | Output | @@ -3359,7 +3359,7 @@ evaluation (internal): ast : parse_json(s)->>k raw expr : get_string(parse_json(s::String), k::String) -checked expr : get_string(parse_json(s), k) +checked expr : get_string(CAST(s AS Variant), k) evaluation: +--------+------------------------+-------------+-------------+ | | s | k | Output | @@ -3382,7 +3382,7 @@ evaluation (internal): ast : parse_json(s)->>k raw expr : get_string(parse_json(s::String NULL), k::String) -checked expr : get_string(parse_json(s), CAST(k AS String NULL)) +checked expr : get_string(CAST(s AS Variant NULL), CAST(k AS String NULL)) evaluation: +--------+---------------------------------+------------+-------------+ | | s | k | Output | @@ -3408,7 +3408,7 @@ error: --> SQL:1:28 | 1 | parse_json('[10, 20, 30]') #> '1' - | ^^ InvalidKeyPath while evaluating function `get_by_keypath('[10,20,30]', '1')` in expr `get_by_keypath(parse_json('[10, 20, 30]'), '1')` + | ^^ InvalidKeyPath while evaluating function `get_by_keypath('[10,20,30]', '1')` in expr `get_by_keypath(CAST('[10, 20, 30]' AS Variant), '1')` @@ -3432,7 +3432,7 @@ output : NULL ast : parse_json('"string"') #> '{0}' raw expr : get_by_keypath(parse_json('"string"'), '{0}') -checked expr : get_by_keypath(parse_json("\"string\""), "{0}") +checked expr : get_by_keypath(CAST("\"string\"" AS Variant), "{0}") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3441,7 +3441,7 @@ output : NULL ast : parse_json('1') #> '{0}' raw expr : get_by_keypath(parse_json('1'), '{0}') -checked expr : get_by_keypath(parse_json("1"), "{0}") +checked expr : get_by_keypath(CAST("1" AS Variant), "{0}") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3450,7 +3450,7 @@ output : NULL ast : parse_json('[10, 20, 30]') #> '{1}' raw expr : get_by_keypath(parse_json('[10, 20, 30]'), '{1}') -checked expr : get_by_keypath(parse_json("[10, 20, 30]"), "{1}") +checked expr : get_by_keypath(CAST("[10, 20, 30]" AS Variant), "{1}") optimized expr : 0x20000000200000025014 output type : Variant NULL output domain : Undefined @@ -3459,7 +3459,7 @@ output : '20' ast : parse_json('[10, 20, 30]') #> '{3}' raw expr : get_by_keypath(parse_json('[10, 20, 30]'), '{3}') -checked expr : get_by_keypath(parse_json("[10, 20, 30]"), "{3}") +checked expr : get_by_keypath(CAST("[10, 20, 30]" AS Variant), "{3}") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3468,7 +3468,7 @@ output : NULL ast : parse_json('[10, 20, 30]') #> '{a}' raw expr : get_by_keypath(parse_json('[10, 20, 30]'), '{a}') -checked expr : get_by_keypath(parse_json("[10, 20, 30]"), "{a}") +checked expr : get_by_keypath(CAST("[10, 20, 30]" AS Variant), "{a}") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3477,7 +3477,7 @@ output : NULL ast : parse_json('{"k": null}') #> '{k}' raw expr : get_by_keypath(parse_json('{"k": null}'), '{k}') -checked expr : get_by_keypath(parse_json("{\"k\": null}"), "{k}") +checked expr : get_by_keypath(CAST("{\"k\": null}" AS Variant), "{k}") optimized expr : 0x2000000000000000 output type : Variant NULL output domain : Undefined @@ -3486,7 +3486,7 @@ output : 'null' ast : parse_json('[10, 20, null]') #> '{2}' raw expr : get_by_keypath(parse_json('[10, 20, null]'), '{2}') -checked expr : get_by_keypath(parse_json("[10, 20, null]"), "{2}") +checked expr : get_by_keypath(CAST("[10, 20, null]" AS Variant), "{2}") optimized expr : 0x2000000000000000 output type : Variant NULL output domain : Undefined @@ -3495,7 +3495,7 @@ output : 'null' ast : parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]') #> '{1, a, k1}' raw expr : get_by_keypath(parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]'), '{1, a, k1}') -checked expr : get_by_keypath(parse_json("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]"), "{1, a, k1}") +checked expr : get_by_keypath(CAST("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]" AS Variant), "{1, a, k1}") optimized expr : 0x80000003200000022000000220000002500150025003 output type : Variant NULL output domain : Undefined @@ -3504,7 +3504,7 @@ output : '[1,2,3]' ast : parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]') #> '{1, a, k1, 0}' raw expr : get_by_keypath(parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]'), '{1, a, k1, 0}') -checked expr : get_by_keypath(parse_json("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]"), "{1, a, k1, 0}") +checked expr : get_by_keypath(CAST("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]" AS Variant), "{1, a, k1, 0}") optimized expr : 0x20000000200000025001 output type : Variant NULL output domain : Undefined @@ -3513,7 +3513,7 @@ output : '1' ast : parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]') #> '{1, a, k1, 0, 10}' raw expr : get_by_keypath(parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]'), '{1, a, k1, 0, 10}') -checked expr : get_by_keypath(parse_json("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]"), "{1, a, k1, 0, 10}") +checked expr : get_by_keypath(CAST("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]" AS Variant), "{1, a, k1, 0, 10}") optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -3522,7 +3522,7 @@ output : NULL ast : parse_json(s) #> '{0}' raw expr : get_by_keypath(parse_json(s::String NULL), '{0}') -checked expr : get_by_keypath(parse_json(s), "{0}") +checked expr : get_by_keypath(CAST(s AS Variant NULL), "{0}") evaluation: +--------+------------------------------------+--------------+ | | s | Output | @@ -3545,7 +3545,7 @@ evaluation (internal): ast : parse_json(s) #> k raw expr : get_by_keypath(parse_json(s::String NULL), k::String NULL) -checked expr : get_by_keypath(parse_json(s), k) +checked expr : get_by_keypath(CAST(s AS Variant NULL), k) evaluation: +--------+---------------------------------+--------------------------+--------------+ | | s | k | Output | @@ -3578,7 +3578,7 @@ output : NULL ast : parse_json('"string"') #>> '{0}' raw expr : get_by_keypath_string(parse_json('"string"'), '{0}') -checked expr : get_by_keypath_string(parse_json("\"string\""), "{0}") +checked expr : get_by_keypath_string(CAST("\"string\"" AS Variant), "{0}") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3587,7 +3587,7 @@ output : NULL ast : parse_json('1') #>> '{0}' raw expr : get_by_keypath_string(parse_json('1'), '{0}') -checked expr : get_by_keypath_string(parse_json("1"), "{0}") +checked expr : get_by_keypath_string(CAST("1" AS Variant), "{0}") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3596,7 +3596,7 @@ output : NULL ast : parse_json('[10, 20, 30]') #>> '{1}' raw expr : get_by_keypath_string(parse_json('[10, 20, 30]'), '{1}') -checked expr : get_by_keypath_string(parse_json("[10, 20, 30]"), "{1}") +checked expr : get_by_keypath_string(CAST("[10, 20, 30]" AS Variant), "{1}") optimized expr : "20" output type : String NULL output domain : {"20"..="20"} @@ -3605,7 +3605,7 @@ output : '20' ast : parse_json('[10, 20, 30]') #>> '{3}' raw expr : get_by_keypath_string(parse_json('[10, 20, 30]'), '{3}') -checked expr : get_by_keypath_string(parse_json("[10, 20, 30]"), "{3}") +checked expr : get_by_keypath_string(CAST("[10, 20, 30]" AS Variant), "{3}") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3614,7 +3614,7 @@ output : NULL ast : parse_json('[10, 20, 30]') #>> '{a}' raw expr : get_by_keypath_string(parse_json('[10, 20, 30]'), '{a}') -checked expr : get_by_keypath_string(parse_json("[10, 20, 30]"), "{a}") +checked expr : get_by_keypath_string(CAST("[10, 20, 30]" AS Variant), "{a}") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3623,7 +3623,7 @@ output : NULL ast : parse_json('{"k": null}') #>> '{k}' raw expr : get_by_keypath_string(parse_json('{"k": null}'), '{k}') -checked expr : get_by_keypath_string(parse_json("{\"k\": null}"), "{k}") +checked expr : get_by_keypath_string(CAST("{\"k\": null}" AS Variant), "{k}") optimized expr : "null" output type : String NULL output domain : {"null"..="null"} @@ -3632,7 +3632,7 @@ output : 'null' ast : parse_json('[10, 20, null]') #>> '{2}' raw expr : get_by_keypath_string(parse_json('[10, 20, null]'), '{2}') -checked expr : get_by_keypath_string(parse_json("[10, 20, null]"), "{2}") +checked expr : get_by_keypath_string(CAST("[10, 20, null]" AS Variant), "{2}") optimized expr : "null" output type : String NULL output domain : {"null"..="null"} @@ -3641,7 +3641,7 @@ output : 'null' ast : parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]') #>> '{1, a, k1}' raw expr : get_by_keypath_string(parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]'), '{1, a, k1}') -checked expr : get_by_keypath_string(parse_json("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]"), "{1, a, k1}") +checked expr : get_by_keypath_string(CAST("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]" AS Variant), "{1, a, k1}") optimized expr : "[1,2,3]" output type : String NULL output domain : {"[1,2,3]"..="[1,2,3]"} @@ -3650,7 +3650,7 @@ output : '[1,2,3]' ast : parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]') #>> '{1, a, k1, 0}' raw expr : get_by_keypath_string(parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]'), '{1, a, k1, 0}') -checked expr : get_by_keypath_string(parse_json("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]"), "{1, a, k1, 0}") +checked expr : get_by_keypath_string(CAST("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]" AS Variant), "{1, a, k1, 0}") optimized expr : "1" output type : String NULL output domain : {"1"..="1"} @@ -3659,7 +3659,7 @@ output : '1' ast : parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]') #>> '{1, a, k1, 0, 10}' raw expr : get_by_keypath_string(parse_json('[10, {"a":{"k1":[1,2,3], "k2":2}}, 30]'), '{1, a, k1, 0, 10}') -checked expr : get_by_keypath_string(parse_json("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]"), "{1, a, k1, 0, 10}") +checked expr : get_by_keypath_string(CAST("[10, {\"a\":{\"k1\":[1,2,3], \"k2\":2}}, 30]" AS Variant), "{1, a, k1, 0, 10}") optimized expr : NULL output type : String NULL output domain : {NULL} @@ -3668,7 +3668,7 @@ output : NULL ast : parse_json(s) #>> '{0}' raw expr : get_by_keypath_string(parse_json(s::String NULL), '{0}') -checked expr : get_by_keypath_string(parse_json(s), "{0}") +checked expr : get_by_keypath_string(CAST(s AS Variant NULL), "{0}") evaluation: +--------+------------------------------------+-------------+ | | s | Output | @@ -3691,7 +3691,7 @@ evaluation (internal): ast : parse_json(s) #>> k raw expr : get_by_keypath_string(parse_json(s::String NULL), k::String NULL) -checked expr : get_by_keypath_string(parse_json(s), k) +checked expr : get_by_keypath_string(CAST(s AS Variant NULL), k) evaluation: +--------+---------------------------------+--------------------------+-------------+ | | s | k | Output | @@ -3715,7 +3715,7 @@ evaluation (internal): ast : parse_json('["1","2","3"]') ? NULL raw expr : json_exists_key(parse_json('["1","2","3"]'), NULL) -checked expr : json_exists_key(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS String NULL)) +checked expr : json_exists_key(CAST(CAST("[\"1\",\"2\",\"3\"]" AS Variant) AS Variant NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3724,7 +3724,7 @@ output : NULL ast : parse_json('true') ? '1' raw expr : json_exists_key(parse_json('true'), '1') -checked expr : json_exists_key(parse_json("true"), "1") +checked expr : json_exists_key(CAST("true" AS Variant), "1") optimized expr : false output type : Boolean output domain : {FALSE} @@ -3733,7 +3733,7 @@ output : false ast : parse_json('["1","2","3"]') ? '1' raw expr : json_exists_key(parse_json('["1","2","3"]'), '1') -checked expr : json_exists_key(parse_json("[\"1\",\"2\",\"3\"]"), "1") +checked expr : json_exists_key(CAST("[\"1\",\"2\",\"3\"]" AS Variant), "1") optimized expr : true output type : Boolean output domain : {TRUE} @@ -3742,7 +3742,7 @@ output : true ast : parse_json('["1","2","3"]') ? '4' raw expr : json_exists_key(parse_json('["1","2","3"]'), '4') -checked expr : json_exists_key(parse_json("[\"1\",\"2\",\"3\"]"), "4") +checked expr : json_exists_key(CAST("[\"1\",\"2\",\"3\"]" AS Variant), "4") optimized expr : false output type : Boolean output domain : {FALSE} @@ -3751,7 +3751,7 @@ output : false ast : parse_json('{"a":1,"b":2,"c":3}') ? 'a' raw expr : json_exists_key(parse_json('{"a":1,"b":2,"c":3}'), 'a') -checked expr : json_exists_key(parse_json("{\"a\":1,\"b\":2,\"c\":3}"), "a") +checked expr : json_exists_key(CAST("{\"a\":1,\"b\":2,\"c\":3}" AS Variant), "a") optimized expr : true output type : Boolean output domain : {TRUE} @@ -3760,7 +3760,7 @@ output : true ast : parse_json('{"a":1,"b":2,"c":3}') ? 'd' raw expr : json_exists_key(parse_json('{"a":1,"b":2,"c":3}'), 'd') -checked expr : json_exists_key(parse_json("{\"a\":1,\"b\":2,\"c\":3}"), "d") +checked expr : json_exists_key(CAST("{\"a\":1,\"b\":2,\"c\":3}" AS Variant), "d") optimized expr : false output type : Boolean output domain : {FALSE} @@ -3769,8 +3769,8 @@ output : false ast : parse_json(s) ? 'a' raw expr : json_exists_key(parse_json(s::String NULL), 'a') -checked expr : json_exists_key(parse_json(s), CAST("a" AS String NULL)) -optimized expr : json_exists_key(parse_json(s), "a") +checked expr : json_exists_key(CAST(s AS Variant NULL), CAST("a" AS String NULL)) +optimized expr : json_exists_key(CAST(s AS Variant NULL), "a") evaluation: +--------+------------------------------------+--------------+ | | s | Output | @@ -3793,7 +3793,7 @@ evaluation (internal): ast : parse_json('["1","2","3"]') ?| NULL raw expr : json_exists_any_keys(parse_json('["1","2","3"]'), NULL) -checked expr : json_exists_any_keys(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS Array(String) NULL)) +checked expr : json_exists_any_keys(CAST(CAST("[\"1\",\"2\",\"3\"]" AS Variant) AS Variant NULL), CAST(NULL AS Array(String) NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3802,7 +3802,7 @@ output : NULL ast : parse_json('true') ?| ['1','2'] raw expr : json_exists_any_keys(parse_json('true'), array('1', '2')) -checked expr : json_exists_any_keys(parse_json("true"), array("1", "2")) +checked expr : json_exists_any_keys(CAST("true" AS Variant), array("1", "2")) optimized expr : false output type : Boolean output domain : {FALSE} @@ -3811,7 +3811,7 @@ output : false ast : parse_json('["1","2","3"]') ?| ['1','2'] raw expr : json_exists_any_keys(parse_json('["1","2","3"]'), array('1', '2')) -checked expr : json_exists_any_keys(parse_json("[\"1\",\"2\",\"3\"]"), array("1", "2")) +checked expr : json_exists_any_keys(CAST("[\"1\",\"2\",\"3\"]" AS Variant), array("1", "2")) optimized expr : true output type : Boolean output domain : {TRUE} @@ -3820,7 +3820,7 @@ output : true ast : parse_json('["1","2","3"]') ?| ['4','5'] raw expr : json_exists_any_keys(parse_json('["1","2","3"]'), array('4', '5')) -checked expr : json_exists_any_keys(parse_json("[\"1\",\"2\",\"3\"]"), array("4", "5")) +checked expr : json_exists_any_keys(CAST("[\"1\",\"2\",\"3\"]" AS Variant), array("4", "5")) optimized expr : false output type : Boolean output domain : {FALSE} @@ -3829,7 +3829,7 @@ output : false ast : parse_json('{"a":1,"b":2,"c":3}') ?| ['a','b'] raw expr : json_exists_any_keys(parse_json('{"a":1,"b":2,"c":3}'), array('a', 'b')) -checked expr : json_exists_any_keys(parse_json("{\"a\":1,\"b\":2,\"c\":3}"), array("a", "b")) +checked expr : json_exists_any_keys(CAST("{\"a\":1,\"b\":2,\"c\":3}" AS Variant), array("a", "b")) optimized expr : true output type : Boolean output domain : {TRUE} @@ -3838,7 +3838,7 @@ output : true ast : parse_json('{"a":1,"b":2,"c":3}') ?| ['d','e'] raw expr : json_exists_any_keys(parse_json('{"a":1,"b":2,"c":3}'), array('d', 'e')) -checked expr : json_exists_any_keys(parse_json("{\"a\":1,\"b\":2,\"c\":3}"), array("d", "e")) +checked expr : json_exists_any_keys(CAST("{\"a\":1,\"b\":2,\"c\":3}" AS Variant), array("d", "e")) optimized expr : false output type : Boolean output domain : {FALSE} @@ -3847,8 +3847,8 @@ output : false ast : parse_json(s) ?| ['a','b'] raw expr : json_exists_any_keys(parse_json(s::String NULL), array('a', 'b')) -checked expr : json_exists_any_keys(parse_json(s), CAST(array("a", "b") AS Array(String) NULL)) -optimized expr : json_exists_any_keys(parse_json(s), ['a', 'b']) +checked expr : json_exists_any_keys(CAST(s AS Variant NULL), CAST(array("a", "b") AS Array(String) NULL)) +optimized expr : json_exists_any_keys(CAST(s AS Variant NULL), ['a', 'b']) evaluation: +--------+------------------------------------------------+--------------+ | | s | Output | @@ -3871,7 +3871,7 @@ evaluation (internal): ast : parse_json('["1","2","3"]') ?& NULL raw expr : json_exists_all_keys(parse_json('["1","2","3"]'), NULL) -checked expr : json_exists_all_keys(CAST(parse_json("[\"1\",\"2\",\"3\"]") AS Variant NULL), CAST(NULL AS Array(String) NULL)) +checked expr : json_exists_all_keys(CAST(CAST("[\"1\",\"2\",\"3\"]" AS Variant) AS Variant NULL), CAST(NULL AS Array(String) NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3880,7 +3880,7 @@ output : NULL ast : parse_json('true') ?& ['1','2'] raw expr : json_exists_all_keys(parse_json('true'), array('1', '2')) -checked expr : json_exists_all_keys(parse_json("true"), array("1", "2")) +checked expr : json_exists_all_keys(CAST("true" AS Variant), array("1", "2")) optimized expr : false output type : Boolean output domain : {FALSE} @@ -3889,7 +3889,7 @@ output : false ast : parse_json('["1","2","3"]') ?& ['1','2'] raw expr : json_exists_all_keys(parse_json('["1","2","3"]'), array('1', '2')) -checked expr : json_exists_all_keys(parse_json("[\"1\",\"2\",\"3\"]"), array("1", "2")) +checked expr : json_exists_all_keys(CAST("[\"1\",\"2\",\"3\"]" AS Variant), array("1", "2")) optimized expr : true output type : Boolean output domain : {TRUE} @@ -3898,7 +3898,7 @@ output : true ast : parse_json('["1","2","3"]') ?& ['3','5'] raw expr : json_exists_all_keys(parse_json('["1","2","3"]'), array('3', '5')) -checked expr : json_exists_all_keys(parse_json("[\"1\",\"2\",\"3\"]"), array("3", "5")) +checked expr : json_exists_all_keys(CAST("[\"1\",\"2\",\"3\"]" AS Variant), array("3", "5")) optimized expr : false output type : Boolean output domain : {FALSE} @@ -3907,7 +3907,7 @@ output : false ast : parse_json('{"a":1,"b":2,"c":3}') ?& ['a','b'] raw expr : json_exists_all_keys(parse_json('{"a":1,"b":2,"c":3}'), array('a', 'b')) -checked expr : json_exists_all_keys(parse_json("{\"a\":1,\"b\":2,\"c\":3}"), array("a", "b")) +checked expr : json_exists_all_keys(CAST("{\"a\":1,\"b\":2,\"c\":3}" AS Variant), array("a", "b")) optimized expr : true output type : Boolean output domain : {TRUE} @@ -3916,7 +3916,7 @@ output : true ast : parse_json('{"a":1,"b":2,"c":3}') ?& ['c','e'] raw expr : json_exists_all_keys(parse_json('{"a":1,"b":2,"c":3}'), array('c', 'e')) -checked expr : json_exists_all_keys(parse_json("{\"a\":1,\"b\":2,\"c\":3}"), array("c", "e")) +checked expr : json_exists_all_keys(CAST("{\"a\":1,\"b\":2,\"c\":3}" AS Variant), array("c", "e")) optimized expr : false output type : Boolean output domain : {FALSE} @@ -3925,8 +3925,8 @@ output : false ast : parse_json(s) ?& ['a','b'] raw expr : json_exists_all_keys(parse_json(s::String NULL), array('a', 'b')) -checked expr : json_exists_all_keys(parse_json(s), CAST(array("a", "b") AS Array(String) NULL)) -optimized expr : json_exists_all_keys(parse_json(s), ['a', 'b']) +checked expr : json_exists_all_keys(CAST(s AS Variant NULL), CAST(array("a", "b") AS Array(String) NULL)) +optimized expr : json_exists_all_keys(CAST(s AS Variant NULL), ['a', 'b']) evaluation: +--------+--------------------------------------------------------+--------------+ | | s | Output | @@ -3958,7 +3958,7 @@ output : NULL ast : parse_json('[1,2,3]') @> NULL raw expr : json_contains_in_left(parse_json('[1,2,3]'), NULL) -checked expr : json_contains_in_left(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : json_contains_in_left(CAST(CAST("[1,2,3]" AS Variant) AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3967,7 +3967,7 @@ output : NULL ast : NULL @> parse_json('1') raw expr : json_contains_in_left(NULL, parse_json('1')) -checked expr : json_contains_in_left(CAST(NULL AS Variant NULL), CAST(parse_json("1") AS Variant NULL)) +checked expr : json_contains_in_left(CAST(NULL AS Variant NULL), CAST(CAST("1" AS Variant) AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -3976,7 +3976,7 @@ output : NULL ast : parse_json('true') @> parse_json('true') raw expr : json_contains_in_left(parse_json('true'), parse_json('true')) -checked expr : json_contains_in_left(parse_json("true"), parse_json("true")) +checked expr : json_contains_in_left(CAST("true" AS Variant), CAST("true" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -3985,7 +3985,7 @@ output : true ast : parse_json('true') @> parse_json('false') raw expr : json_contains_in_left(parse_json('true'), parse_json('false')) -checked expr : json_contains_in_left(parse_json("true"), parse_json("false")) +checked expr : json_contains_in_left(CAST("true" AS Variant), CAST("false" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -3994,7 +3994,7 @@ output : false ast : parse_json('"asd"') @> parse_json('"asd"') raw expr : json_contains_in_left(parse_json('"asd"'), parse_json('"asd"')) -checked expr : json_contains_in_left(parse_json("\"asd\""), parse_json("\"asd\"")) +checked expr : json_contains_in_left(CAST("\"asd\"" AS Variant), CAST("\"asd\"" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4003,7 +4003,7 @@ output : true ast : parse_json('"asd"') @> parse_json('"asdd"') raw expr : json_contains_in_left(parse_json('"asd"'), parse_json('"asdd"')) -checked expr : json_contains_in_left(parse_json("\"asd\""), parse_json("\"asdd\"")) +checked expr : json_contains_in_left(CAST("\"asd\"" AS Variant), CAST("\"asdd\"" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4012,7 +4012,7 @@ output : false ast : parse_json('[1,2,3]') @> parse_json('1') raw expr : json_contains_in_left(parse_json('[1,2,3]'), parse_json('1')) -checked expr : json_contains_in_left(parse_json("[1,2,3]"), parse_json("1")) +checked expr : json_contains_in_left(CAST("[1,2,3]" AS Variant), CAST("1" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4021,7 +4021,7 @@ output : true ast : parse_json('[1,2,3]') @> parse_json('4') raw expr : json_contains_in_left(parse_json('[1,2,3]'), parse_json('4')) -checked expr : json_contains_in_left(parse_json("[1,2,3]"), parse_json("4")) +checked expr : json_contains_in_left(CAST("[1,2,3]" AS Variant), CAST("4" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4030,7 +4030,7 @@ output : false ast : parse_json('[1,2,3,4]') @> parse_json('[2,1,3]') raw expr : json_contains_in_left(parse_json('[1,2,3,4]'), parse_json('[2,1,3]')) -checked expr : json_contains_in_left(parse_json("[1,2,3,4]"), parse_json("[2,1,3]")) +checked expr : json_contains_in_left(CAST("[1,2,3,4]" AS Variant), CAST("[2,1,3]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4039,7 +4039,7 @@ output : true ast : parse_json('[1,2,3,4]') @> parse_json('[2,1,1]') raw expr : json_contains_in_left(parse_json('[1,2,3,4]'), parse_json('[2,1,1]')) -checked expr : json_contains_in_left(parse_json("[1,2,3,4]"), parse_json("[2,1,1]")) +checked expr : json_contains_in_left(CAST("[1,2,3,4]" AS Variant), CAST("[2,1,1]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4048,7 +4048,7 @@ output : true ast : parse_json('[1,2,[1,3]]') @> parse_json('[1,3]') raw expr : json_contains_in_left(parse_json('[1,2,[1,3]]'), parse_json('[1,3]')) -checked expr : json_contains_in_left(parse_json("[1,2,[1,3]]"), parse_json("[1,3]")) +checked expr : json_contains_in_left(CAST("[1,2,[1,3]]" AS Variant), CAST("[1,3]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4057,7 +4057,7 @@ output : false ast : parse_json('[1,2,[1,3]]') @> parse_json('[[1,3]]') raw expr : json_contains_in_left(parse_json('[1,2,[1,3]]'), parse_json('[[1,3]]')) -checked expr : json_contains_in_left(parse_json("[1,2,[1,3]]"), parse_json("[[1,3]]")) +checked expr : json_contains_in_left(CAST("[1,2,[1,3]]" AS Variant), CAST("[[1,3]]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4066,7 +4066,7 @@ output : true ast : parse_json('[1,2,[1,3]]') @> parse_json('[[[1,3]]]') raw expr : json_contains_in_left(parse_json('[1,2,[1,3]]'), parse_json('[[[1,3]]]')) -checked expr : json_contains_in_left(parse_json("[1,2,[1,3]]"), parse_json("[[[1,3]]]")) +checked expr : json_contains_in_left(CAST("[1,2,[1,3]]" AS Variant), CAST("[[[1,3]]]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4075,7 +4075,7 @@ output : false ast : parse_json('[{"a":1}]') @> parse_json('{"a":1}') raw expr : json_contains_in_left(parse_json('[{"a":1}]'), parse_json('{"a":1}')) -checked expr : json_contains_in_left(parse_json("[{\"a\":1}]"), parse_json("{\"a\":1}")) +checked expr : json_contains_in_left(CAST("[{\"a\":1}]" AS Variant), CAST("{\"a\":1}" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4084,7 +4084,7 @@ output : false ast : parse_json('[{"a":1},{"b":2}]') @> parse_json('[{"a":1}]') raw expr : json_contains_in_left(parse_json('[{"a":1},{"b":2}]'), parse_json('[{"a":1}]')) -checked expr : json_contains_in_left(parse_json("[{\"a\":1},{\"b\":2}]"), parse_json("[{\"a\":1}]")) +checked expr : json_contains_in_left(CAST("[{\"a\":1},{\"b\":2}]" AS Variant), CAST("[{\"a\":1}]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4093,7 +4093,7 @@ output : true ast : parse_json('{"a":1,"b":2}') @> parse_json('{"a":1}') raw expr : json_contains_in_left(parse_json('{"a":1,"b":2}'), parse_json('{"a":1}')) -checked expr : json_contains_in_left(parse_json("{\"a\":1,\"b\":2}"), parse_json("{\"a\":1}")) +checked expr : json_contains_in_left(CAST("{\"a\":1,\"b\":2}" AS Variant), CAST("{\"a\":1}" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4102,7 +4102,7 @@ output : true ast : parse_json('{"a":1,"b":2}') @> parse_json('{"a":2}') raw expr : json_contains_in_left(parse_json('{"a":1,"b":2}'), parse_json('{"a":2}')) -checked expr : json_contains_in_left(parse_json("{\"a\":1,\"b\":2}"), parse_json("{\"a\":2}")) +checked expr : json_contains_in_left(CAST("{\"a\":1,\"b\":2}" AS Variant), CAST("{\"a\":2}" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4111,7 +4111,7 @@ output : false ast : parse_json('{"z":2,"b":{"a":1}}') @> parse_json('{"a":1}') raw expr : json_contains_in_left(parse_json('{"z":2,"b":{"a":1}}'), parse_json('{"a":1}')) -checked expr : json_contains_in_left(parse_json("{\"z\":2,\"b\":{\"a\":1}}"), parse_json("{\"a\":1}")) +checked expr : json_contains_in_left(CAST("{\"z\":2,\"b\":{\"a\":1}}" AS Variant), CAST("{\"a\":1}" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4120,7 +4120,7 @@ output : false ast : parse_json('{"a":{"c":100,"d":200},"b":2}') @> parse_json('{"a":{}}') raw expr : json_contains_in_left(parse_json('{"a":{"c":100,"d":200},"b":2}'), parse_json('{"a":{}}')) -checked expr : json_contains_in_left(parse_json("{\"a\":{\"c\":100,\"d\":200},\"b\":2}"), parse_json("{\"a\":{}}")) +checked expr : json_contains_in_left(CAST("{\"a\":{\"c\":100,\"d\":200},\"b\":2}" AS Variant), CAST("{\"a\":{}}" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4138,7 +4138,7 @@ output : NULL ast : parse_json('[1,2,3]') <@ NULL raw expr : json_contains_in_right(parse_json('[1,2,3]'), NULL) -checked expr : json_contains_in_right(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : json_contains_in_right(CAST(CAST("[1,2,3]" AS Variant) AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -4147,7 +4147,7 @@ output : NULL ast : NULL <@ parse_json('1') raw expr : json_contains_in_right(NULL, parse_json('1')) -checked expr : json_contains_in_right(CAST(NULL AS Variant NULL), CAST(parse_json("1") AS Variant NULL)) +checked expr : json_contains_in_right(CAST(NULL AS Variant NULL), CAST(CAST("1" AS Variant) AS Variant NULL)) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -4156,7 +4156,7 @@ output : NULL ast : parse_json('true') <@ parse_json('true') raw expr : json_contains_in_right(parse_json('true'), parse_json('true')) -checked expr : json_contains_in_right(parse_json("true"), parse_json("true")) +checked expr : json_contains_in_right(CAST("true" AS Variant), CAST("true" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4165,7 +4165,7 @@ output : true ast : parse_json('true') <@ parse_json('false') raw expr : json_contains_in_right(parse_json('true'), parse_json('false')) -checked expr : json_contains_in_right(parse_json("true"), parse_json("false")) +checked expr : json_contains_in_right(CAST("true" AS Variant), CAST("false" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4174,7 +4174,7 @@ output : false ast : parse_json('"asd"') <@ parse_json('"asd"') raw expr : json_contains_in_right(parse_json('"asd"'), parse_json('"asd"')) -checked expr : json_contains_in_right(parse_json("\"asd\""), parse_json("\"asd\"")) +checked expr : json_contains_in_right(CAST("\"asd\"" AS Variant), CAST("\"asd\"" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4183,7 +4183,7 @@ output : true ast : parse_json('"asd"') <@ parse_json('"asdd"') raw expr : json_contains_in_right(parse_json('"asd"'), parse_json('"asdd"')) -checked expr : json_contains_in_right(parse_json("\"asd\""), parse_json("\"asdd\"")) +checked expr : json_contains_in_right(CAST("\"asd\"" AS Variant), CAST("\"asdd\"" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4192,7 +4192,7 @@ output : false ast : parse_json('1') <@ parse_json('[1,2,3]') raw expr : json_contains_in_right(parse_json('1'), parse_json('[1,2,3]')) -checked expr : json_contains_in_right(parse_json("1"), parse_json("[1,2,3]")) +checked expr : json_contains_in_right(CAST("1" AS Variant), CAST("[1,2,3]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4201,7 +4201,7 @@ output : true ast : parse_json('4') <@ parse_json('[1,2,3]') raw expr : json_contains_in_right(parse_json('4'), parse_json('[1,2,3]')) -checked expr : json_contains_in_right(parse_json("4"), parse_json("[1,2,3]")) +checked expr : json_contains_in_right(CAST("4" AS Variant), CAST("[1,2,3]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4210,7 +4210,7 @@ output : false ast : parse_json('[2,1,3]') <@ parse_json('[1,2,3,4]') raw expr : json_contains_in_right(parse_json('[2,1,3]'), parse_json('[1,2,3,4]')) -checked expr : json_contains_in_right(parse_json("[2,1,3]"), parse_json("[1,2,3,4]")) +checked expr : json_contains_in_right(CAST("[2,1,3]" AS Variant), CAST("[1,2,3,4]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4219,7 +4219,7 @@ output : true ast : parse_json('[2,1,1]') <@ parse_json('[1,2,3,4]') raw expr : json_contains_in_right(parse_json('[2,1,1]'), parse_json('[1,2,3,4]')) -checked expr : json_contains_in_right(parse_json("[2,1,1]"), parse_json("[1,2,3,4]")) +checked expr : json_contains_in_right(CAST("[2,1,1]" AS Variant), CAST("[1,2,3,4]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4228,7 +4228,7 @@ output : true ast : parse_json('[1,3]') <@ parse_json('[1,2,[1,3]]') raw expr : json_contains_in_right(parse_json('[1,3]'), parse_json('[1,2,[1,3]]')) -checked expr : json_contains_in_right(parse_json("[1,3]"), parse_json("[1,2,[1,3]]")) +checked expr : json_contains_in_right(CAST("[1,3]" AS Variant), CAST("[1,2,[1,3]]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4237,7 +4237,7 @@ output : false ast : parse_json('[[1,3]]') <@ parse_json('[1,2,[1,3]]') raw expr : json_contains_in_right(parse_json('[[1,3]]'), parse_json('[1,2,[1,3]]')) -checked expr : json_contains_in_right(parse_json("[[1,3]]"), parse_json("[1,2,[1,3]]")) +checked expr : json_contains_in_right(CAST("[[1,3]]" AS Variant), CAST("[1,2,[1,3]]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4246,7 +4246,7 @@ output : true ast : parse_json('[[[1,3]]]') <@ parse_json('[1,2,[1,3]]') raw expr : json_contains_in_right(parse_json('[[[1,3]]]'), parse_json('[1,2,[1,3]]')) -checked expr : json_contains_in_right(parse_json("[[[1,3]]]"), parse_json("[1,2,[1,3]]")) +checked expr : json_contains_in_right(CAST("[[[1,3]]]" AS Variant), CAST("[1,2,[1,3]]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4255,7 +4255,7 @@ output : false ast : parse_json('{"a":1}') <@ parse_json('[{"a":1}]') raw expr : json_contains_in_right(parse_json('{"a":1}'), parse_json('[{"a":1}]')) -checked expr : json_contains_in_right(parse_json("{\"a\":1}"), parse_json("[{\"a\":1}]")) +checked expr : json_contains_in_right(CAST("{\"a\":1}" AS Variant), CAST("[{\"a\":1}]" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4264,7 +4264,7 @@ output : false ast : parse_json('[{"a":1}]') <@ parse_json('[{"a":1},{"b":2}]') raw expr : json_contains_in_right(parse_json('[{"a":1}]'), parse_json('[{"a":1},{"b":2}]')) -checked expr : json_contains_in_right(parse_json("[{\"a\":1}]"), parse_json("[{\"a\":1},{\"b\":2}]")) +checked expr : json_contains_in_right(CAST("[{\"a\":1}]" AS Variant), CAST("[{\"a\":1},{\"b\":2}]" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4273,7 +4273,7 @@ output : true ast : parse_json('{"a":1}') <@ parse_json('{"a":1,"b":2}') raw expr : json_contains_in_right(parse_json('{"a":1}'), parse_json('{"a":1,"b":2}')) -checked expr : json_contains_in_right(parse_json("{\"a\":1}"), parse_json("{\"a\":1,\"b\":2}")) +checked expr : json_contains_in_right(CAST("{\"a\":1}" AS Variant), CAST("{\"a\":1,\"b\":2}" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4282,7 +4282,7 @@ output : true ast : parse_json('{"a":2}') <@ parse_json('{"a":1,"b":2}') raw expr : json_contains_in_right(parse_json('{"a":2}'), parse_json('{"a":1,"b":2}')) -checked expr : json_contains_in_right(parse_json("{\"a\":2}"), parse_json("{\"a\":1,\"b\":2}")) +checked expr : json_contains_in_right(CAST("{\"a\":2}" AS Variant), CAST("{\"a\":1,\"b\":2}" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4291,7 +4291,7 @@ output : false ast : parse_json('{"a":1}') <@ parse_json('{"z":2,"b":{"a":1}}') raw expr : json_contains_in_right(parse_json('{"a":1}'), parse_json('{"z":2,"b":{"a":1}}')) -checked expr : json_contains_in_right(parse_json("{\"a\":1}"), parse_json("{\"z\":2,\"b\":{\"a\":1}}")) +checked expr : json_contains_in_right(CAST("{\"a\":1}" AS Variant), CAST("{\"z\":2,\"b\":{\"a\":1}}" AS Variant)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -4300,7 +4300,7 @@ output : false ast : parse_json('{"a":{}}') <@ parse_json('{"a":{"c":100,"d":200},"b":2}') raw expr : json_contains_in_right(parse_json('{"a":{}}'), parse_json('{"a":{"c":100,"d":200},"b":2}')) -checked expr : json_contains_in_right(parse_json("{\"a\":{}}"), parse_json("{\"a\":{\"c\":100,\"d\":200},\"b\":2}")) +checked expr : json_contains_in_right(CAST("{\"a\":{}}" AS Variant), CAST("{\"a\":{\"c\":100,\"d\":200},\"b\":2}" AS Variant)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -4309,7 +4309,7 @@ output : true ast : json_path_match(parse_json('{"a":1,"b":2}'), '$.a == 1') raw expr : json_path_match(parse_json('{"a":1,"b":2}'), '$.a == 1') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":2}"), "$.a == 1") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":2}" AS Variant), "$.a == 1") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4318,7 +4318,7 @@ output : true ast : json_path_match(parse_json('{"a":1,"b":2}'), '$.a > 1') raw expr : json_path_match(parse_json('{"a":1,"b":2}'), '$.a > 1') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":2}"), "$.a > 1") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":2}" AS Variant), "$.a > 1") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4327,7 +4327,7 @@ output : false ast : json_path_match(parse_json('{"a":1,"b":2}'), '$.c > 0') raw expr : json_path_match(parse_json('{"a":1,"b":2}'), '$.c > 0') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":2}"), "$.c > 0") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":2}" AS Variant), "$.c > 0") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4336,7 +4336,7 @@ output : false ast : json_path_match(parse_json('{"a":1,"b":2}'), '$.b < 2') raw expr : json_path_match(parse_json('{"a":1,"b":2}'), '$.b < 2') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":2}"), "$.b < 2") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":2}" AS Variant), "$.b < 2") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4345,7 +4345,7 @@ output : false ast : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] == 1') raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] == 1') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[0] == 1") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[0] == 1") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4354,7 +4354,7 @@ output : true ast : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] > 1') raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] > 1') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[0] > 1") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[0] > 1") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4363,7 +4363,7 @@ output : false ast : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[3] == 0') raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[3] == 0') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[3] == 0") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[3] == 0") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4372,7 +4372,7 @@ output : false ast : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[1 to last] >= 2') raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[1 to last] >= 2') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[1 to last] >= 2") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[1 to last] >= 2") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4381,7 +4381,7 @@ output : true ast : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[1 to last] == 2 || $.b[1 to last] == 3') raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[1 to last] == 2 || $.b[1 to last] == 3') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[1 to last] == 2 || $.b[1 to last] == 3") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[1 to last] == 2 || $.b[1 to last] == 3") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4390,7 +4390,7 @@ output : true ast : json_path_match(parse_json(s), p) raw expr : json_path_match(parse_json(s::String NULL), p::String) -checked expr : json_path_match(parse_json(s), p) +checked expr : json_path_match(CAST(s AS Variant NULL), p) evaluation: +--------+---------------------------------+-----------------------------+--------------+ | | s | p | Output | @@ -4414,7 +4414,7 @@ evaluation (internal): ast : parse_json('{"a":1,"b":2}') @@ '$.a == 1' raw expr : json_path_match(parse_json('{"a":1,"b":2}'), '$.a == 1') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":2}"), "$.a == 1") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":2}" AS Variant), "$.a == 1") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4423,7 +4423,7 @@ output : true ast : parse_json('{"a":1,"b":2}') @@ '$.a > 1' raw expr : json_path_match(parse_json('{"a":1,"b":2}'), '$.a > 1') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":2}"), "$.a > 1") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":2}" AS Variant), "$.a > 1") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4432,7 +4432,7 @@ output : false ast : parse_json('{"a":1,"b":2}') @@ '$.c > 0' raw expr : json_path_match(parse_json('{"a":1,"b":2}'), '$.c > 0') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":2}"), "$.c > 0") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":2}" AS Variant), "$.c > 0") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4441,7 +4441,7 @@ output : false ast : parse_json('{"a":1,"b":2}') @@ '$.b < 2' raw expr : json_path_match(parse_json('{"a":1,"b":2}'), '$.b < 2') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":2}"), "$.b < 2") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":2}" AS Variant), "$.b < 2") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4450,7 +4450,7 @@ output : false ast : parse_json('{"a":1,"b":[1,2,3]}') @@ '$.b[0] == 1' raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] == 1') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[0] == 1") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[0] == 1") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4459,7 +4459,7 @@ output : true ast : parse_json('{"a":1,"b":[1,2,3]}') @@ '$.b[0] > 1' raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[0] > 1') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[0] > 1") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[0] > 1") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4468,7 +4468,7 @@ output : false ast : parse_json('{"a":1,"b":[1,2,3]}') @@ '$.b[3] == 0' raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[3] == 0') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[3] == 0") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[3] == 0") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4477,7 +4477,7 @@ output : false ast : parse_json('{"a":1,"b":[1,2,3]}') @@ '$.b[1 to last] >= 2' raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[1 to last] >= 2') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[1 to last] >= 2") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[1 to last] >= 2") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4486,7 +4486,7 @@ output : true ast : parse_json('{"a":1,"b":[1,2,3]}') @@ '$.b[1 to last] == 2 || $.b[1 to last] == 3' raw expr : json_path_match(parse_json('{"a":1,"b":[1,2,3]}'), '$.b[1 to last] == 2 || $.b[1 to last] == 3') -checked expr : json_path_match(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "$.b[1 to last] == 2 || $.b[1 to last] == 3") +checked expr : json_path_match(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "$.b[1 to last] == 2 || $.b[1 to last] == 3") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4495,7 +4495,7 @@ output : true ast : parse_json(s) @@ p raw expr : json_path_match(parse_json(s::String NULL), p::String) -checked expr : json_path_match(parse_json(s), p) +checked expr : json_path_match(CAST(s AS Variant NULL), p) evaluation: +--------+---------------------------------+-----------------------------+--------------+ | | s | p | Output | @@ -4528,7 +4528,7 @@ output : NULL ast : parse_json('{"a": 1, "b": 2}') @? NULL raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), NULL) -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), NULL) +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -4537,7 +4537,7 @@ output : NULL ast : parse_json('{"a": 1, "b": 2}') @? '$.a' raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), "$.a") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), "$.a") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4546,7 +4546,7 @@ output : true ast : parse_json('{"a": 1, "b": 2}') @? '$.c' raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.c') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), "$.c") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), "$.c") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4555,7 +4555,7 @@ output : false ast : parse_json('{"a": 1, "b": 2}') @? '$.a ? (@ == 1)' raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a ? (@ == 1)') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), "$.a ? (@ == 1)") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), "$.a ? (@ == 1)") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4564,7 +4564,7 @@ output : true ast : parse_json('{"a": 1, "b": 2}') @? '$.a ? (@ > 1)' raw expr : json_path_exists(parse_json('{"a": 1, "b": 2}'), '$.a ? (@ > 1)') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": 2}"), "$.a ? (@ > 1)") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": 2}" AS Variant), "$.a ? (@ > 1)") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4573,7 +4573,7 @@ output : false ast : parse_json('{"a": 1, "b": [1,2,3]}') @? '$.b[0]' raw expr : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[0]') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": [1,2,3]}"), "$.b[0]") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": [1,2,3]}" AS Variant), "$.b[0]") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4582,7 +4582,7 @@ output : true ast : parse_json('{"a": 1, "b": [1,2,3]}') @? '$.b[3]' raw expr : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[3]') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": [1,2,3]}"), "$.b[3]") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": [1,2,3]}" AS Variant), "$.b[3]") optimized expr : false output type : Boolean NULL output domain : {FALSE} @@ -4591,7 +4591,7 @@ output : false ast : parse_json('{"a": 1, "b": [1,2,3]}') @? '$.b[1 to last] ? (@ >=2 && @ <=3)' raw expr : json_path_exists(parse_json('{"a": 1, "b": [1,2,3]}'), '$.b[1 to last] ? (@ >=2 && @ <=3)') -checked expr : json_path_exists(parse_json("{\"a\": 1, \"b\": [1,2,3]}"), "$.b[1 to last] ? (@ >=2 && @ <=3)") +checked expr : json_path_exists(CAST("{\"a\": 1, \"b\": [1,2,3]}" AS Variant), "$.b[1 to last] ? (@ >=2 && @ <=3)") optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -4600,7 +4600,7 @@ output : true ast : parse_json('[1,2,3]') || NULL raw expr : concat(parse_json('[1,2,3]'), NULL) -checked expr : concat(CAST(parse_json("[1,2,3]") AS Variant NULL), CAST(NULL AS Variant NULL)) +checked expr : concat(CAST(CAST("[1,2,3]" AS Variant) AS Variant NULL), CAST(NULL AS Variant NULL)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -4609,7 +4609,7 @@ output : NULL ast : parse_json('[1,2,3]') || parse_json('10') raw expr : concat(parse_json('[1,2,3]'), parse_json('10')) -checked expr : concat(parse_json("[1,2,3]"), parse_json("10")) +checked expr : concat(CAST("[1,2,3]" AS Variant), CAST("10" AS Variant)) optimized expr : 0x8000000420000002200000022000000220000002500150025003500a output type : Variant output domain : Undefined @@ -4618,7 +4618,7 @@ output : '[1,2,3,10]' ast : parse_json('"asd"') || parse_json('[1,2,3]') raw expr : concat(parse_json('"asd"'), parse_json('[1,2,3]')) -checked expr : concat(parse_json("\"asd\""), parse_json("[1,2,3]")) +checked expr : concat(CAST("\"asd\"" AS Variant), CAST("[1,2,3]" AS Variant)) optimized expr : 0x8000000410000003200000022000000220000002617364500150025003 output type : Variant output domain : Undefined @@ -4627,7 +4627,7 @@ output : '["asd",1,2,3]' ast : parse_json('[1,{"a":1,"b":2,"c":[1,2,3]},3]') || parse_json('"asd"') raw expr : concat(parse_json('[1,{"a":1,"b":2,"c":[1,2,3]},3]'), parse_json('"asd"')) -checked expr : concat(parse_json("[1,{\"a\":1,\"b\":2,\"c\":[1,2,3]},3]"), parse_json("\"asd\"")) +checked expr : concat(CAST("[1,{\"a\":1,\"b\":2,\"c\":[1,2,3]},3]" AS Variant), CAST("\"asd\"" AS Variant)) optimized expr : 0x800000042000000250000039200000021000000350014000000310000001100000011000000120000002200000025000001661626350015002800000032000000220000002200000025001500250035003617364 output type : Variant output domain : Undefined @@ -4636,7 +4636,7 @@ output : '[1,{"a":1,"b":2,"c":[1,2,3]},3,"asd"]' ast : parse_json('[1,{"a":1,"b":2,"c":[1,2,3]},3]') || parse_json('[10,20,30]') raw expr : concat(parse_json('[1,{"a":1,"b":2,"c":[1,2,3]},3]'), parse_json('[10,20,30]')) -checked expr : concat(parse_json("[1,{\"a\":1,\"b\":2,\"c\":[1,2,3]},3]"), parse_json("[10,20,30]")) +checked expr : concat(CAST("[1,{\"a\":1,\"b\":2,\"c\":[1,2,3]},3]" AS Variant), CAST("[10,20,30]" AS Variant)) optimized expr : 0x8000000620000002500000392000000220000002200000022000000250014000000310000001100000011000000120000002200000025000001661626350015002800000032000000220000002200000025001500250035003500a5014501e output type : Variant output domain : Undefined @@ -4645,7 +4645,7 @@ output : '[1,{"a":1,"b":2,"c":[1,2,3]},3,10,20,30]' ast : parse_json('[1,[1,2,3],3]') || parse_json('[[10,20,30]]') raw expr : concat(parse_json('[1,[1,2,3],3]'), parse_json('[[10,20,30]]')) -checked expr : concat(parse_json("[1,[1,2,3],3]"), parse_json("[[10,20,30]]")) +checked expr : concat(CAST("[1,[1,2,3],3]" AS Variant), CAST("[[10,20,30]]" AS Variant)) optimized expr : 0x8000000420000002500000162000000250000016500180000003200000022000000220000002500150025003500380000003200000022000000220000002500a5014501e output type : Variant output domain : Undefined @@ -4654,7 +4654,7 @@ output : '[1,[1,2,3],3,[10,20,30]]' ast : parse_json('{"a":1,"b":2}') || parse_json('true') raw expr : concat(parse_json('{"a":1,"b":2}'), parse_json('true')) -checked expr : concat(parse_json("{\"a\":1,\"b\":2}"), parse_json("true")) +checked expr : concat(CAST("{\"a\":1,\"b\":2}" AS Variant), CAST("true" AS Variant)) optimized expr : 0x800000025000001a400000004000000210000001100000012000000220000002616250015002 output type : Variant output domain : Undefined @@ -4663,7 +4663,7 @@ output : '[{"a":1,"b":2},true]' ast : parse_json('[1,2,3]') || parse_json('{"a":1,"b":2}') raw expr : concat(parse_json('[1,2,3]'), parse_json('{"a":1,"b":2}')) -checked expr : concat(parse_json("[1,2,3]"), parse_json("{\"a\":1,\"b\":2}")) +checked expr : concat(CAST("[1,2,3]" AS Variant), CAST("{\"a\":1,\"b\":2}" AS Variant)) optimized expr : 0x800000042000000220000002200000025000001a5001500250034000000210000001100000012000000220000002616250015002 output type : Variant output domain : Undefined @@ -4672,7 +4672,7 @@ output : '[1,2,3,{"a":1,"b":2}]' ast : parse_json('{"a":1,"b":2}') || parse_json('[1,2,3]') raw expr : concat(parse_json('{"a":1,"b":2}'), parse_json('[1,2,3]')) -checked expr : concat(parse_json("{\"a\":1,\"b\":2}"), parse_json("[1,2,3]")) +checked expr : concat(CAST("{\"a\":1,\"b\":2}" AS Variant), CAST("[1,2,3]" AS Variant)) optimized expr : 0x800000045000001a2000000220000002200000024000000210000001100000012000000220000002616250015002500150025003 output type : Variant output domain : Undefined @@ -4681,7 +4681,7 @@ output : '[{"a":1,"b":2},1,2,3]' ast : parse_json('{"a":1,"b":2}') || parse_json('{"c":3,"d":4}') raw expr : concat(parse_json('{"a":1,"b":2}'), parse_json('{"c":3,"d":4}')) -checked expr : concat(parse_json("{\"a\":1,\"b\":2}"), parse_json("{\"c\":3,\"d\":4}")) +checked expr : concat(CAST("{\"a\":1,\"b\":2}" AS Variant), CAST("{\"c\":3,\"d\":4}" AS Variant)) optimized expr : 0x400000041000000110000001100000011000000120000002200000022000000220000002616263645001500250035004 output type : Variant output domain : Undefined @@ -4690,7 +4690,7 @@ output : '{"a":1,"b":2,"c":3,"d":4}' ast : parse_json('{"a":1,"b":2,"d":10}') || parse_json('{"a":3,"b":4}') raw expr : concat(parse_json('{"a":1,"b":2,"d":10}'), parse_json('{"a":3,"b":4}')) -checked expr : concat(parse_json("{\"a\":1,\"b\":2,\"d\":10}"), parse_json("{\"a\":3,\"b\":4}")) +checked expr : concat(CAST("{\"a\":1,\"b\":2,\"d\":10}" AS Variant), CAST("{\"a\":3,\"b\":4}" AS Variant)) optimized expr : 0x4000000310000001100000011000000120000002200000022000000261626450035004500a output type : Variant output domain : Undefined @@ -4701,13 +4701,13 @@ error: --> SQL:1:20 | 1 | parse_json('true') - '1' - | ^ InvalidJsonType while evaluating function `minus('true', '1')` in expr `parse_json('true') - '1'` + | ^ InvalidJsonType while evaluating function `minus('true', '1')` in expr `CAST('true' AS Variant) - '1'` ast : parse_json('[1,2,3]') - '1' raw expr : minus(parse_json('[1,2,3]'), '1') -checked expr : minus(parse_json("[1,2,3]"), "1") +checked expr : minus(CAST("[1,2,3]" AS Variant), "1") optimized expr : 0x80000003200000022000000220000002500150025003 output type : Variant output domain : Undefined @@ -4716,7 +4716,7 @@ output : '[1,2,3]' ast : parse_json('["1","2","3"]') - '0' raw expr : minus(parse_json('["1","2","3"]'), '0') -checked expr : minus(parse_json("[\"1\",\"2\",\"3\"]"), "0") +checked expr : minus(CAST("[\"1\",\"2\",\"3\"]" AS Variant), "0") optimized expr : 0x80000003100000011000000110000001313233 output type : Variant output domain : Undefined @@ -4725,7 +4725,7 @@ output : '["1","2","3"]' ast : parse_json('["1","2","3"]') - '1' raw expr : minus(parse_json('["1","2","3"]'), '1') -checked expr : minus(parse_json("[\"1\",\"2\",\"3\"]"), "1") +checked expr : minus(CAST("[\"1\",\"2\",\"3\"]" AS Variant), "1") optimized expr : 0x8000000210000001100000013233 output type : Variant output domain : Undefined @@ -4734,7 +4734,7 @@ output : '["2","3"]' ast : parse_json('["1","2","3",{"a":1,"b":2}]') - '1' raw expr : minus(parse_json('["1","2","3",{"a":1,"b":2}]'), '1') -checked expr : minus(parse_json("[\"1\",\"2\",\"3\",{\"a\":1,\"b\":2}]"), "1") +checked expr : minus(CAST("[\"1\",\"2\",\"3\",{\"a\":1,\"b\":2}]" AS Variant), "1") optimized expr : 0x8000000310000001100000015000001a32334000000210000001100000012000000220000002616250015002 output type : Variant output domain : Undefined @@ -4743,7 +4743,7 @@ output : '["2","3",{"a":1,"b":2}]' ast : parse_json('{"a":1,"b":2}') - 'c' raw expr : minus(parse_json('{"a":1,"b":2}'), 'c') -checked expr : minus(parse_json("{\"a\":1,\"b\":2}"), "c") +checked expr : minus(CAST("{\"a\":1,\"b\":2}" AS Variant), "c") optimized expr : 0x4000000210000001100000012000000220000002616250015002 output type : Variant output domain : Undefined @@ -4752,7 +4752,7 @@ output : '{"a":1,"b":2}' ast : parse_json('{"a":1,"b":2}') - 'a' raw expr : minus(parse_json('{"a":1,"b":2}'), 'a') -checked expr : minus(parse_json("{\"a\":1,\"b\":2}"), "a") +checked expr : minus(CAST("{\"a\":1,\"b\":2}" AS Variant), "a") optimized expr : 0x400000011000000120000002625002 output type : Variant output domain : Undefined @@ -4761,7 +4761,7 @@ output : '{"b":2}' ast : parse_json('{"b":2}') - 'b' raw expr : minus(parse_json('{"b":2}'), 'b') -checked expr : minus(parse_json("{\"b\":2}"), "b") +checked expr : minus(CAST("{\"b\":2}" AS Variant), "b") optimized expr : 0x40000000 output type : Variant output domain : Undefined @@ -4772,13 +4772,13 @@ error: --> SQL:1:20 | 1 | parse_json('true') - 1 - | ^ InvalidJsonType while evaluating function `minus('true', 1)` in expr `parse_json('true') - CAST(1 AS Int32)` + | ^ InvalidJsonType while evaluating function `minus('true', 1)` in expr `CAST('true' AS Variant) - CAST(1 AS Int32)` ast : parse_json('[1,2,3]') - 0 raw expr : minus(parse_json('[1,2,3]'), 0) -checked expr : minus(parse_json("[1,2,3]"), CAST(0_u8 AS Int32)) +checked expr : minus(CAST("[1,2,3]" AS Variant), CAST(0_u8 AS Int32)) optimized expr : 0x80000002200000022000000250025003 output type : Variant output domain : Undefined @@ -4787,7 +4787,7 @@ output : '[2,3]' ast : parse_json('[1,2,3]') - 1 raw expr : minus(parse_json('[1,2,3]'), 1) -checked expr : minus(parse_json("[1,2,3]"), CAST(1_u8 AS Int32)) +checked expr : minus(CAST("[1,2,3]" AS Variant), CAST(1_u8 AS Int32)) optimized expr : 0x80000002200000022000000250015003 output type : Variant output domain : Undefined @@ -4796,7 +4796,7 @@ output : '[1,3]' ast : parse_json('[1,2,3]') - 2 raw expr : minus(parse_json('[1,2,3]'), 2) -checked expr : minus(parse_json("[1,2,3]"), CAST(2_u8 AS Int32)) +checked expr : minus(CAST("[1,2,3]" AS Variant), CAST(2_u8 AS Int32)) optimized expr : 0x80000002200000022000000250015002 output type : Variant output domain : Undefined @@ -4805,7 +4805,7 @@ output : '[1,2]' ast : parse_json('[1,2,3]') - -1 raw expr : minus(parse_json('[1,2,3]'), minus(1)) -checked expr : minus(parse_json("[1,2,3]"), CAST(minus(1_u8) AS Int32)) +checked expr : minus(CAST("[1,2,3]" AS Variant), CAST(minus(1_u8) AS Int32)) optimized expr : 0x80000002200000022000000250015002 output type : Variant output domain : Undefined @@ -4814,7 +4814,7 @@ output : '[1,2]' ast : parse_json('[1,2,3]') - -2 raw expr : minus(parse_json('[1,2,3]'), minus(2)) -checked expr : minus(parse_json("[1,2,3]"), CAST(minus(2_u8) AS Int32)) +checked expr : minus(CAST("[1,2,3]" AS Variant), CAST(minus(2_u8) AS Int32)) optimized expr : 0x80000002200000022000000250015003 output type : Variant output domain : Undefined @@ -4823,7 +4823,7 @@ output : '[1,3]' ast : parse_json('[1,2,3]') - -3 raw expr : minus(parse_json('[1,2,3]'), minus(3)) -checked expr : minus(parse_json("[1,2,3]"), CAST(minus(3_u8) AS Int32)) +checked expr : minus(CAST("[1,2,3]" AS Variant), CAST(minus(3_u8) AS Int32)) optimized expr : 0x80000002200000022000000250025003 output type : Variant output domain : Undefined @@ -4832,7 +4832,7 @@ output : '[2,3]' ast : parse_json('[1,2,3]') - -4 raw expr : minus(parse_json('[1,2,3]'), minus(4)) -checked expr : minus(parse_json("[1,2,3]"), CAST(minus(4_u8) AS Int32)) +checked expr : minus(CAST("[1,2,3]" AS Variant), CAST(minus(4_u8) AS Int32)) optimized expr : 0x80000003200000022000000220000002500150025003 output type : Variant output domain : Undefined @@ -4841,7 +4841,7 @@ output : '[1,2,3]' ast : parse_json('[1,2,{"a":[1,2,3],"b":[40,50,60]}]') - 2 raw expr : minus(parse_json('[1,2,{"a":[1,2,3],"b":[40,50,60]}]'), 2) -checked expr : minus(parse_json("[1,2,{\"a\":[1,2,3],\"b\":[40,50,60]}]"), CAST(2_u8 AS Int32)) +checked expr : minus(CAST("[1,2,{\"a\":[1,2,3],\"b\":[40,50,60]}]" AS Variant), CAST(2_u8 AS Int32)) optimized expr : 0x80000002200000022000000250015002 output type : Variant output domain : Undefined @@ -4850,7 +4850,7 @@ output : '[1,2]' ast : parse_json('[1,2,3]') #- NULL raw expr : delete_by_keypath(parse_json('[1,2,3]'), NULL) -checked expr : delete_by_keypath(parse_json("[1,2,3]"), NULL) +checked expr : delete_by_keypath(CAST("[1,2,3]" AS Variant), NULL) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -4859,7 +4859,7 @@ output : NULL ast : parse_json('[1,2,3]') #- '{}' raw expr : delete_by_keypath(parse_json('[1,2,3]'), '{}') -checked expr : delete_by_keypath(parse_json("[1,2,3]"), "{}") +checked expr : delete_by_keypath(CAST("[1,2,3]" AS Variant), "{}") optimized expr : 0x80000003200000022000000220000002500150025003 output type : Variant NULL output domain : Undefined @@ -4868,7 +4868,7 @@ output : '[1,2,3]' ast : parse_json('[1,2,3]') #- '{0}' raw expr : delete_by_keypath(parse_json('[1,2,3]'), '{0}') -checked expr : delete_by_keypath(parse_json("[1,2,3]"), "{0}") +checked expr : delete_by_keypath(CAST("[1,2,3]" AS Variant), "{0}") optimized expr : 0x80000002200000022000000250025003 output type : Variant NULL output domain : Undefined @@ -4877,7 +4877,7 @@ output : '[2,3]' ast : parse_json('[1,2,3]') #- '{-1}' raw expr : delete_by_keypath(parse_json('[1,2,3]'), '{-1}') -checked expr : delete_by_keypath(parse_json("[1,2,3]"), "{-1}") +checked expr : delete_by_keypath(CAST("[1,2,3]" AS Variant), "{-1}") optimized expr : 0x80000002200000022000000250015002 output type : Variant NULL output domain : Undefined @@ -4886,7 +4886,7 @@ output : '[1,2]' ast : parse_json('[1,2,3]') #- '{3}' raw expr : delete_by_keypath(parse_json('[1,2,3]'), '{3}') -checked expr : delete_by_keypath(parse_json("[1,2,3]"), "{3}") +checked expr : delete_by_keypath(CAST("[1,2,3]" AS Variant), "{3}") optimized expr : 0x80000003200000022000000220000002500150025003 output type : Variant NULL output domain : Undefined @@ -4895,7 +4895,7 @@ output : '[1,2,3]' ast : parse_json('{"a":1,"b":[1,2,3]}') #- '{b}' raw expr : delete_by_keypath(parse_json('{"a":1,"b":[1,2,3]}'), '{b}') -checked expr : delete_by_keypath(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "{b}") +checked expr : delete_by_keypath(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "{b}") optimized expr : 0x400000011000000120000002615001 output type : Variant NULL output domain : Undefined @@ -4904,7 +4904,7 @@ output : '{"a":1}' ast : parse_json('{"a":1,"b":[1,2,3]}') #- '{c}' raw expr : delete_by_keypath(parse_json('{"a":1,"b":[1,2,3]}'), '{c}') -checked expr : delete_by_keypath(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "{c}") +checked expr : delete_by_keypath(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "{c}") optimized expr : 0x40000002100000011000000120000002500000166162500180000003200000022000000220000002500150025003 output type : Variant NULL output domain : Undefined @@ -4913,7 +4913,7 @@ output : '{"a":1,"b":[1,2,3]}' ast : parse_json('{"a":1,"b":[1,2,3]}') #- '{b,2}' raw expr : delete_by_keypath(parse_json('{"a":1,"b":[1,2,3]}'), '{b,2}') -checked expr : delete_by_keypath(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "{b,2}") +checked expr : delete_by_keypath(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "{b,2}") optimized expr : 0x40000002100000011000000120000002500000106162500180000002200000022000000250015002 output type : Variant NULL output domain : Undefined @@ -4922,7 +4922,7 @@ output : '{"a":1,"b":[1,2]}' ast : parse_json('{"a":1,"b":[1,2,3]}') #- '{b,-2}' raw expr : delete_by_keypath(parse_json('{"a":1,"b":[1,2,3]}'), '{b,-2}') -checked expr : delete_by_keypath(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "{b,-2}") +checked expr : delete_by_keypath(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "{b,-2}") optimized expr : 0x40000002100000011000000120000002500000106162500180000002200000022000000250015003 output type : Variant NULL output domain : Undefined @@ -4931,7 +4931,7 @@ output : '{"a":1,"b":[1,3]}' ast : parse_json('{"a":1,"b":[1,2,3]}') #- '{b,20}' raw expr : delete_by_keypath(parse_json('{"a":1,"b":[1,2,3]}'), '{b,20}') -checked expr : delete_by_keypath(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "{b,20}") +checked expr : delete_by_keypath(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "{b,20}") optimized expr : 0x40000002100000011000000120000002500000166162500180000003200000022000000220000002500150025003 output type : Variant NULL output domain : Undefined @@ -4940,7 +4940,7 @@ output : '{"a":1,"b":[1,2,3]}' ast : parse_json('{"a":1,"b":[1,2,3]}') #- '{b,20,c,e}' raw expr : delete_by_keypath(parse_json('{"a":1,"b":[1,2,3]}'), '{b,20,c,e}') -checked expr : delete_by_keypath(parse_json("{\"a\":1,\"b\":[1,2,3]}"), "{b,20,c,e}") +checked expr : delete_by_keypath(CAST("{\"a\":1,\"b\":[1,2,3]}" AS Variant), "{b,20,c,e}") optimized expr : 0x40000002100000011000000120000002500000166162500180000003200000022000000220000002500150025003 output type : Variant NULL output domain : Undefined @@ -4949,7 +4949,7 @@ output : '{"a":1,"b":[1,2,3]}' ast : parse_json('{"a":1,"b":[{"c":1,"d":10},2,3]}') #- '{b,0,d}' raw expr : delete_by_keypath(parse_json('{"a":1,"b":[{"c":1,"d":10},2,3]}'), '{b,0,d}') -checked expr : delete_by_keypath(parse_json("{\"a\":1,\"b\":[{\"c\":1,\"d\":10},2,3]}"), "{b,0,d}") +checked expr : delete_by_keypath(CAST("{\"a\":1,\"b\":[{\"c\":1,\"d\":10},2,3]}" AS Variant), "{b,0,d}") optimized expr : 0x400000021000000110000001200000025000002361625001800000035000000f200000022000000240000001100000012000000263500150025003 output type : Variant NULL output domain : Undefined @@ -4958,7 +4958,7 @@ output : '{"a":1,"b":[{"c":1},2,3]}' ast : parse_json(s) #- '{0,a}' raw expr : delete_by_keypath(parse_json(s::String NULL), '{0,a}') -checked expr : delete_by_keypath(parse_json(s), "{0,a}") +checked expr : delete_by_keypath(CAST(s AS Variant NULL), "{0,a}") evaluation: +--------+----------------------------------------+--------------+ | | s | Output | @@ -4981,7 +4981,7 @@ evaluation (internal): ast : parse_json(s) #- k raw expr : delete_by_keypath(parse_json(s::String NULL), k::String NULL) -checked expr : delete_by_keypath(parse_json(s), k) +checked expr : delete_by_keypath(CAST(s AS Variant NULL), k) evaluation: +--------+--------------------------------------------------+-------------------------------+---------------+ | | s | k | Output | @@ -5059,8 +5059,8 @@ output : '[{"k":"v"},true]' ast : json_array_insert(parse_json(v), 2, parse_json(n)) raw expr : json_array_insert(parse_json(v::String NULL), 2, parse_json(n::String NULL)) -checked expr : json_array_insert(parse_json(v), CAST(2_u8 AS Int32 NULL), parse_json(n)) -optimized expr : json_array_insert(parse_json(v), 2_i32, parse_json(n)) +checked expr : json_array_insert(CAST(v AS Variant NULL), CAST(2_u8 AS Int32 NULL), CAST(n AS Variant NULL)) +optimized expr : json_array_insert(CAST(v AS Variant NULL), 2_i32, CAST(n AS Variant NULL)) evaluation: +--------+----------------------------------------------+------------------------------+-----------------------+ | | v | n | Output | @@ -5147,7 +5147,7 @@ output : '[{"k":"v"}]' ast : json_array_distinct(parse_json(v)) raw expr : json_array_distinct(parse_json(v::String NULL)) -checked expr : json_array_distinct(parse_json(v)) +checked expr : json_array_distinct(CAST(v AS Variant NULL)) evaluation: +--------+----------------------------------------------------------------+-----------------+ | | v | Output | @@ -5260,7 +5260,7 @@ output : '[{"k":"v"}]' ast : json_array_intersection(parse_json(v1), parse_json(v2)) raw expr : json_array_intersection(parse_json(v1::String NULL), parse_json(v2::String NULL)) -checked expr : json_array_intersection(parse_json(v1), parse_json(v2)) +checked expr : json_array_intersection(CAST(v1 AS Variant NULL), CAST(v2 AS Variant NULL)) evaluation: +--------+----------------------------------------------------------------+----------------------------------------------------+----------------+ | | v1 | v2 | Output | @@ -5374,7 +5374,7 @@ output : '[]' ast : json_array_except(parse_json(v1), parse_json(v2)) raw expr : json_array_except(parse_json(v1::String NULL), parse_json(v2::String NULL)) -checked expr : json_array_except(parse_json(v1), parse_json(v2)) +checked expr : json_array_except(CAST(v1 AS Variant NULL), CAST(v2 AS Variant NULL)) evaluation: +--------+----------------------------------------------------------------+----------------------------------------------------+-------------------------+ | | v1 | v2 | Output | @@ -5488,7 +5488,7 @@ output : true ast : json_array_overlap(parse_json(v1), parse_json(v2)) raw expr : json_array_overlap(parse_json(v1::String NULL), parse_json(v2::String NULL)) -checked expr : json_array_overlap(parse_json(v1), parse_json(v2)) +checked expr : json_array_overlap(CAST(v1 AS Variant NULL), CAST(v2 AS Variant NULL)) evaluation: +--------+----------------------------------------------------------------+----------------------------------------------------+--------------+ | | v1 | v2 | Output | @@ -5635,7 +5635,7 @@ error: ast : json_object_insert(parse_json(v), 'x', parse_json(n)) raw expr : json_object_insert(parse_json(v::String NULL), 'x', parse_json(n::String NULL)) -checked expr : json_object_insert(parse_json(v), "x", parse_json(n)) +checked expr : json_object_insert(CAST(v AS Variant NULL), "x", CAST(n AS Variant NULL)) evaluation: +--------+----------------------------------------------------------------------+------------------------------+-----------------------------------------+ | | v | n | Output | @@ -5659,7 +5659,7 @@ evaluation (internal): ast : json_object_insert(parse_json(v), 'c', parse_json(n), true) raw expr : json_object_insert(parse_json(v::String NULL), 'c', parse_json(n::String NULL), true) -checked expr : json_object_insert(parse_json(v), "c", parse_json(n), true) +checked expr : json_object_insert(CAST(v AS Variant NULL), "c", CAST(n AS Variant NULL), true) evaluation: +--------+----------------------------------------------------------------------+------------------------------+---------------------------------+ | | v | n | Output | @@ -5727,7 +5727,7 @@ error: ast : json_object_delete(parse_json(v), 'a', 'm') raw expr : json_object_delete(parse_json(v::String NULL), 'a', 'm') -checked expr : json_object_delete(parse_json(v), "a", "m") +checked expr : json_object_delete(CAST(v AS Variant NULL), "a", "m") evaluation: +--------+----------------------------------------------------------------------+---------------------+ | | v | Output | @@ -5794,7 +5794,7 @@ error: ast : json_object_pick(parse_json(v), 'a', 'm') raw expr : json_object_pick(parse_json(v::String NULL), 'a', 'm') -checked expr : json_object_pick(parse_json(v), "a", "m") +checked expr : json_object_pick(CAST(v AS Variant NULL), "a", "m") evaluation: +--------+----------------------------------------------------------------------+--------------+ | | v | Output | @@ -5817,7 +5817,7 @@ evaluation (internal): ast : strip_null_value(parse_json('1234')) raw expr : strip_null_value(parse_json('1234')) -checked expr : strip_null_value(CAST(parse_json("1234") AS Variant NULL)) +checked expr : strip_null_value(CAST(CAST("1234" AS Variant) AS Variant NULL)) optimized expr : 0x20000000200000035004d2 output type : Variant NULL output domain : Undefined @@ -5826,7 +5826,7 @@ output : '1234' ast : strip_null_value(parse_json('null')) raw expr : strip_null_value(parse_json('null')) -checked expr : strip_null_value(CAST(parse_json("null") AS Variant NULL)) +checked expr : strip_null_value(CAST(CAST("null" AS Variant) AS Variant NULL)) optimized expr : NULL output type : Variant NULL output domain : {NULL} @@ -5844,7 +5844,7 @@ output : NULL ast : strip_null_value(parse_json(s)) raw expr : strip_null_value(parse_json(s::String)) -checked expr : strip_null_value(CAST(parse_json(s) AS Variant NULL)) +checked expr : strip_null_value(CAST(CAST(s AS Variant) AS Variant NULL)) evaluation: +--------+-------------------------------------------------------+--------------------+ | | s | Output | @@ -5866,7 +5866,7 @@ evaluation (internal): ast : strip_null_value(parse_json(s)) raw expr : strip_null_value(parse_json(s::String NULL)) -checked expr : strip_null_value(parse_json(s)) +checked expr : strip_null_value(CAST(s AS Variant NULL)) evaluation: +--------+----------------------------------------------------------------+--------------------+ | | s | Output | From a681f482ad41709ad956eff223339565e7828366 Mon Sep 17 00:00:00 2001 From: coldWater Date: Mon, 31 Mar 2025 16:05:57 +0800 Subject: [PATCH 04/23] fmt_with_options --- src/query/expression/src/expression.rs | 3 +- src/query/expression/src/utils/display.rs | 241 +++++++++++++++------- src/query/expression/tests/it/display.rs | 57 +++++ src/query/expression/tests/it/main.rs | 1 + 4 files changed, 228 insertions(+), 74 deletions(-) create mode 100644 src/query/expression/tests/it/display.rs diff --git a/src/query/expression/src/expression.rs b/src/query/expression/src/expression.rs index bbf1c79b77df7..b106360fa619b 100644 --- a/src/query/expression/src/expression.rs +++ b/src/query/expression/src/expression.rs @@ -14,6 +14,7 @@ use std::collections::HashMap; use std::fmt::Debug; +use std::fmt::Display; use std::hash::Hash; use std::sync::Arc; @@ -30,7 +31,7 @@ use crate::function::FunctionRegistry; use crate::types::DataType; use crate::values::Scalar; -pub trait ColumnIndex: Debug + Clone + Serialize + Hash + Eq + 'static {} +pub trait ColumnIndex: Debug + Display + Clone + Serialize + Hash + Eq + 'static {} impl ColumnIndex for usize {} diff --git a/src/query/expression/src/utils/display.rs b/src/query/expression/src/utils/display.rs index 8bfaa79a397df..041578939cb37 100755 --- a/src/query/expression/src/utils/display.rs +++ b/src/query/expression/src/utils/display.rs @@ -15,6 +15,7 @@ use std::fmt::Debug; use std::fmt::Display; use std::fmt::Formatter; +use std::fmt::Write; use comfy_table::Cell; use comfy_table::Table; @@ -63,9 +64,11 @@ use crate::types::ValueType; use crate::values::Scalar; use crate::values::ScalarRef; use crate::values::Value; +use crate::visit_expr; use crate::with_integer_mapped_type; use crate::Column; use crate::ColumnIndex; +use crate::ExprVisitor; use crate::FunctionEval; use crate::TableDataType; @@ -627,87 +630,179 @@ impl Display for NumberClass { impl Display for Expr { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - match self { - Expr::Constant { scalar, .. } => write!(f, "{:?}", scalar.as_ref()), - Expr::ColumnRef { display_name, .. } => write!(f, "{display_name}"), - Expr::Cast { - is_try, - expr, - dest_type, - .. - } => { - if *is_try { - write!(f, "TRY_")?; + let mut visitor = ExprFormatter { f, with_id: false }; + visit_expr(self, &mut visitor)?; + Ok(()) + } +} + +pub struct FmtExpr<'a, I: ColumnIndex> { + expr: &'a Expr, + with_id: bool, +} + +impl Display for FmtExpr<'_, I> { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + let mut visitor = ExprFormatter { + f, + with_id: self.with_id, + }; + visit_expr(self.expr, &mut visitor)?; + Ok(()) + } +} + +impl Expr { + pub fn fmt_with_options(&self, with_id: bool) -> FmtExpr<'_, I> { + FmtExpr { + expr: self, + with_id, + } + } +} + +struct ExprFormatter<'a, 'b> { + f: &'a mut std::fmt::Formatter<'b>, + with_id: bool, +} + +impl<'a> std::fmt::Write for ExprFormatter<'a, '_> { + fn write_str(&mut self, s: &str) -> std::fmt::Result { + self.f.write_str(s) + } + + fn write_char(&mut self, c: char) -> std::fmt::Result { + self.f.write_char(c) + } + + fn write_fmt(&mut self, args: std::fmt::Arguments<'_>) -> std::fmt::Result { + self.f.write_fmt(args) + } +} + +impl<'a, I: ColumnIndex> ExprVisitor for ExprFormatter<'a, '_> { + type Error = std::fmt::Error; + + fn enter_constant(&mut self, expr: &Expr) -> Result>, Self::Error> { + let Expr::Constant { scalar, .. } = expr else { + unreachable!() + }; + write!(self, "{:?}", scalar.as_ref())?; + Ok(None) + } + + fn enter_column_ref(&mut self, expr: &Expr) -> Result>, Self::Error> { + let Expr::ColumnRef { + display_name, id, .. + } = expr + else { + unreachable!() + }; + self.write_str(display_name)?; + if self.with_id { + write!(self, " (#{id})")?; + } + Ok(None) + } + + fn enter_cast(&mut self, expr: &Expr) -> Result>, Self::Error> { + let Expr::Cast { + is_try, + expr, + dest_type, + .. + } = expr + else { + unreachable!() + }; + if *is_try { + self.write_str("TRY_")?; + } + write!(self, "CAST<{}>(", expr.data_type())?; + visit_expr(expr, self)?; + write!(self, " AS {dest_type})")?; + Ok(None) + } + + fn enter_function_call(&mut self, expr: &Expr) -> Result>, Self::Error> { + let Expr::FunctionCall { + function, + args, + generics, + id, + .. + } = expr + else { + unreachable!() + }; + self.write_str(&function.signature.name)?; + if !generics.is_empty() { + self.write_char('<')?; + for (i, ty) in generics.iter().enumerate() { + if i > 0 { + self.write_str(", ")?; } - write!(f, "CAST<{}>({expr} AS {dest_type})", expr.data_type()) + write!(self, "T{i}={ty}")?; } - Expr::FunctionCall { - function, - args, - generics, - id, - .. - } => { - write!(f, "{}", function.signature.name)?; - if !generics.is_empty() { - write!(f, "<")?; - for (i, ty) in generics.iter().enumerate() { - if i > 0 { - write!(f, ", ")?; - } - write!(f, "T{i}={ty}")?; - } - write!(f, ">")?; - } - write!(f, "<")?; - for (i, ty) in function.signature.args_type.iter().enumerate() { - if i > 0 { - write!(f, ", ")?; - } - write!(f, "{ty}")?; - } - write!(f, ">")?; + self.write_char('>')?; + } + self.write_char('<')?; + for (i, ty) in function.signature.args_type.iter().enumerate() { + if i > 0 { + self.write_str(", ")?; + } + write!(self, "{ty}")?; + } + self.write_char('>')?; - let params = id.params(); - if !params.is_empty() { - write!(f, "(")?; - for (i, ty) in params.iter().enumerate() { - if i > 0 { - write!(f, ", ")?; - } - write!(f, "{ty}")?; - } - write!(f, ")")?; + let params = id.params(); + if !params.is_empty() { + self.write_char('(')?; + for (i, ty) in params.iter().enumerate() { + if i > 0 { + self.write_str(", ")?; } + write!(self, "{ty}")?; + } + self.write_char(')')?; + } - write!(f, "(")?; - for (i, arg) in args.iter().enumerate() { - if i > 0 { - write!(f, ", ")?; - } - write!(f, "{arg}")?; - } - write!(f, ")") + self.write_char('(')?; + for (i, arg) in args.iter().enumerate() { + if i > 0 { + self.write_str(", ")?; } - Expr::LambdaFunctionCall { - name, - args, - lambda_display, - .. - } => { - write!(f, "{name}")?; - write!(f, "(")?; - for (i, arg) in args.iter().enumerate() { - if i > 0 { - write!(f, ", ")?; - } - write!(f, "{arg}")?; - } - write!(f, ", ")?; - write!(f, "{lambda_display}")?; - write!(f, ")") + visit_expr(arg, self)?; + } + self.write_char(')')?; + Ok(None) + } + + fn enter_lambda_function_call( + &mut self, + expr: &Expr, + ) -> Result>, Self::Error> { + let Expr::LambdaFunctionCall { + name, + args, + lambda_display, + .. + } = expr + else { + unreachable!() + }; + self.write_str(name)?; + self.write_char('(')?; + for (i, arg) in args.iter().enumerate() { + if i > 0 { + self.write_str(", ")?; } + visit_expr(arg, self)?; } + self.write_str(", ")?; + self.write_str(lambda_display)?; + self.write_char(')')?; + Ok(None) } } diff --git a/src/query/expression/tests/it/display.rs b/src/query/expression/tests/it/display.rs new file mode 100644 index 0000000000000..a3380ac7ca2c9 --- /dev/null +++ b/src/query/expression/tests/it/display.rs @@ -0,0 +1,57 @@ +// Copyright 2023 Datafuse Labs. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use databend_common_expression::type_check; +use databend_common_expression::types::*; +use databend_common_expression::FunctionDomain; +use databend_common_expression::FunctionRegistry; +use databend_common_expression::RawExpr; +use databend_common_expression::Value; + +#[test] +fn test_fmt_expr() { + let mut fake_registry = FunctionRegistry::empty(); + fake_registry.register_2_arg_core::( + "test_fn", + |_, _, _| FunctionDomain::Full, + |_, _, _| Value::Scalar("x".to_string()), + ); + + let raw_expr = RawExpr::Cast { + span: None, + is_try: false, + expr: Box::new(RawExpr::ColumnRef { + span: None, + id: 1, + data_type: BooleanType::data_type(), + display_name: "aaa".to_string(), + }), + dest_type: StringType::data_type(), + }; + + let raw_expr = RawExpr::FunctionCall { + span: None, + name: "test_fn".to_string(), + params: vec![Scalar::Null], + args: vec![raw_expr.clone(), raw_expr.clone()], + }; + + let expr = type_check::check(&raw_expr, &fake_registry).unwrap(); + + assert_eq!( + "test_fn(CAST(aaa AS String), CAST(aaa AS String))", + format!("{expr}") + ); + assert_eq!("test_fn(CAST(aaa (#1) AS String), CAST(aaa (#1) AS String))",format!("{}",expr.fmt_with_options(true))); +} diff --git a/src/query/expression/tests/it/main.rs b/src/query/expression/tests/it/main.rs index 5586a9104a6f7..1a93938439726 100644 --- a/src/query/expression/tests/it/main.rs +++ b/src/query/expression/tests/it/main.rs @@ -29,6 +29,7 @@ mod block; mod block_thresholds; mod common; mod decimal; +mod display; mod fill_field_default_value; mod group_by; mod hilbert; From e4c72d60cc0afbbc1271e6415fefd08dda36d849 Mon Sep 17 00:00:00 2001 From: coldWater Date: Mon, 31 Mar 2025 17:49:38 +0800 Subject: [PATCH 05/23] fix --- src/query/expression/src/expression.rs | 18 ++++++++++++++---- src/query/expression/src/utils/display.rs | 2 +- .../sql/src/planner/binder/column_binding.rs | 6 +++++- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/query/expression/src/expression.rs b/src/query/expression/src/expression.rs index b106360fa619b..cd5bcc0028918 100644 --- a/src/query/expression/src/expression.rs +++ b/src/query/expression/src/expression.rs @@ -14,7 +14,7 @@ use std::collections::HashMap; use std::fmt::Debug; -use std::fmt::Display; +use std::fmt::Write; use std::hash::Hash; use std::sync::Arc; @@ -31,11 +31,21 @@ use crate::function::FunctionRegistry; use crate::types::DataType; use crate::values::Scalar; -pub trait ColumnIndex: Debug + Display + Clone + Serialize + Hash + Eq + 'static {} +pub trait ColumnIndex: Debug + Clone + Serialize + Hash + Eq + 'static { + fn unique_name(&self, f: &mut W) -> std::fmt::Result; +} -impl ColumnIndex for usize {} +impl ColumnIndex for usize { + fn unique_name(&self, f: &mut W) -> std::fmt::Result { + write!(f, "{self}") + } +} -impl ColumnIndex for String {} +impl ColumnIndex for String { + fn unique_name(&self, f: &mut W) -> std::fmt::Result { + write!(f, "{self}") + } +} /// An unchecked expression that is directly discarded from SQL or constructed by the planner. /// It can be type-checked and then converted to an evaluable [`Expr`]. diff --git a/src/query/expression/src/utils/display.rs b/src/query/expression/src/utils/display.rs index 041578939cb37..a7dc47bbc8004 100755 --- a/src/query/expression/src/utils/display.rs +++ b/src/query/expression/src/utils/display.rs @@ -700,7 +700,7 @@ impl<'a, I: ColumnIndex> ExprVisitor for ExprFormatter<'a, '_> { }; self.write_str(display_name)?; if self.with_id { - write!(self, " (#{id})")?; + id.unique_name(self)?; } Ok(None) } diff --git a/src/query/sql/src/planner/binder/column_binding.rs b/src/query/sql/src/planner/binder/column_binding.rs index bbecaefbcbf30..b8c609b9068af 100644 --- a/src/query/sql/src/planner/binder/column_binding.rs +++ b/src/query/sql/src/planner/binder/column_binding.rs @@ -85,7 +85,11 @@ impl ColumnBinding { } } -impl ColumnIndex for ColumnBinding {} +impl ColumnIndex for ColumnBinding { + fn unique_name(&self, f: &mut W) -> std::fmt::Result { + write!(f, "{}", self.index) + } +} pub struct ColumnBindingBuilder { /// Database name of this `ColumnBinding` in current context From f55216f8b0c1145a4e2091923cd95265baf58406 Mon Sep 17 00:00:00 2001 From: coldWater Date: Mon, 31 Mar 2025 21:23:56 +0800 Subject: [PATCH 06/23] check_function score --- src/query/expression/src/type_check.rs | 32 ++++++++++++++++++++--- src/query/expression/src/utils/display.rs | 4 +-- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/query/expression/src/type_check.rs b/src/query/expression/src/type_check.rs index 26cf025924f7e..caf59c11a2e46 100755 --- a/src/query/expression/src/type_check.rs +++ b/src/query/expression/src/type_check.rs @@ -262,22 +262,46 @@ pub fn check_function( let auto_cast_rules = fn_registry.get_auto_cast_rules(name); let mut fail_reasons = Vec::with_capacity(candidates.len()); + let mut checked_candidates = vec![]; + let need_sort = candidates.len() > 1 && args.iter().any(|arg| !arg.contains_column_ref()); for (id, func) in &candidates { match try_check_function(args, &func.signature, auto_cast_rules, fn_registry) { - Ok((checked_args, return_type, generics)) => { - return Ok(Expr::FunctionCall { + Ok((args, return_type, generics)) => { + let score = if need_sort { + args.iter() + .map(|arg| { + if arg.is_cast() && arg.contains_column_ref() { + 1 + } else { + 0 + } + }) + .sum::() + } else { + 0 + }; + let expr = Expr::FunctionCall { span, id: id.clone(), function: func.clone(), generics, - args: checked_args, + args, return_type, - }); + }; + if !need_sort { + return Ok(expr); + } + checked_candidates.push((expr, score)); } Err(err) => fail_reasons.push(err), } } + if !checked_candidates.is_empty() { + checked_candidates.sort_by_key(|checked| std::cmp::Reverse(checked.1)); + return Ok(checked_candidates.pop().unwrap().0); + } + let mut msg = if params.is_empty() { format!( "no function matches signature `{name}({})`, you might need to add explicit type casts.", diff --git a/src/query/expression/src/utils/display.rs b/src/query/expression/src/utils/display.rs index a7dc47bbc8004..f77885d5e438b 100755 --- a/src/query/expression/src/utils/display.rs +++ b/src/query/expression/src/utils/display.rs @@ -666,7 +666,7 @@ struct ExprFormatter<'a, 'b> { with_id: bool, } -impl<'a> std::fmt::Write for ExprFormatter<'a, '_> { +impl std::fmt::Write for ExprFormatter<'_, '_> { fn write_str(&mut self, s: &str) -> std::fmt::Result { self.f.write_str(s) } @@ -680,7 +680,7 @@ impl<'a> std::fmt::Write for ExprFormatter<'a, '_> { } } -impl<'a, I: ColumnIndex> ExprVisitor for ExprFormatter<'a, '_> { +impl ExprVisitor for ExprFormatter<'_, '_> { type Error = std::fmt::Error; fn enter_constant(&mut self, expr: &Expr) -> Result>, Self::Error> { From 1f6d4cf7da7ef12adf6ca38e8cc01f0b7a8c6ee2 Mon Sep 17 00:00:00 2001 From: coldWater Date: Mon, 31 Mar 2025 17:49:59 +0800 Subject: [PATCH 07/23] x --- .../physical_plans/physical_filter.rs | 5 ++ .../sql/src/planner/semantic/lowering.rs | 52 +++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/src/query/sql/src/executor/physical_plans/physical_filter.rs b/src/query/sql/src/executor/physical_plans/physical_filter.rs index c6c33dd7d4f7c..2b1a57f9f1d01 100644 --- a/src/query/sql/src/executor/physical_plans/physical_filter.rs +++ b/src/query/sql/src/executor/physical_plans/physical_filter.rs @@ -61,6 +61,7 @@ impl PhysicalPlanBuilder { mut required: ColumnSet, stat_info: PlanStatsInfo, ) -> Result { + log::info!("filter {filter:#?}"); // 1. Prune unused Columns. let used = filter.predicates.iter().fold(required.clone(), |acc, v| { acc.union(&v.used_columns()).cloned().collect() @@ -89,13 +90,17 @@ impl PhysicalPlanBuilder { .predicates .iter() .map(|scalar| { + log::info!("scalar {scalar:#?}"); let expr = scalar .type_check(input_schema.as_ref())? .project_column_ref(|index| { input_schema.index_of(&index.to_string()).unwrap() }); + log::info!("expr 1 {expr:#?}"); let expr = cast_expr_to_non_null_boolean(expr)?; + log::info!("expr 2 {expr:#?}"); let (expr, _) = ConstantFolder::fold(&expr, &self.func_ctx, &BUILTIN_FUNCTIONS); + log::info!("expr 3 {expr:#?}"); Ok(expr.as_remote_expr()) }) .collect::>()?, diff --git a/src/query/sql/src/planner/semantic/lowering.rs b/src/query/sql/src/planner/semantic/lowering.rs index 0fbf8b7e0b8f0..bd9ca331cce1c 100644 --- a/src/query/sql/src/planner/semantic/lowering.rs +++ b/src/query/sql/src/planner/semantic/lowering.rs @@ -298,3 +298,55 @@ impl ScalarExpr { matches!(self, ScalarExpr::BoundColumnRef(_)) } } + +#[cfg(test)] +mod tests { + use databend_common_expression::types::ArgType; + use databend_common_expression::types::NumberScalar; + use databend_common_expression::types::UInt64Type; + use databend_common_expression::DataField; + + use super::*; + use crate::plans::BoundColumnRef; + use crate::plans::ConstantExpr; + use crate::plans::FunctionCall; + use crate::Visibility; + + #[test] + fn test_aaa() { + let x = ScalarExpr::FunctionCall(FunctionCall { + span: None, + func_name: "eq".to_string(), + params: vec![], + arguments: vec![ + ScalarExpr::BoundColumnRef(BoundColumnRef { + span: None, + column: ColumnBinding { + database_name: Some("default".to_string()), + table_name: Some("t2".to_string()), + column_position: Some(1), + table_index: Some(1), + column_name: "id".to_string(), + index: 1, + data_type: Box::new(UInt64Type::data_type().wrap_nullable()), + visibility: Visibility::Visible, + virtual_expr: None, + }, + }), + ScalarExpr::ConstantExpr(ConstantExpr { + span: None, + value: databend_common_expression::Scalar::Number(NumberScalar::Int64( + 869550529_i64, + )), + }), + ], + }); + + let fields = vec![DataField::new("1", UInt64Type::data_type().wrap_nullable())]; + let schema = DataSchema::new(fields); + + let xxx = x.type_check(&schema); + + println!("{xxx:#?}"); + } +} From 22d454a92074aec5405b7e40802063d750ee7aa3 Mon Sep 17 00:00:00 2001 From: coldWater Date: Mon, 31 Mar 2025 21:24:17 +0800 Subject: [PATCH 08/23] Revert "x" This reverts commit 507642037d9a20df2e2a098534090b1e0f33829a. --- .../physical_plans/physical_filter.rs | 5 -- .../sql/src/planner/semantic/lowering.rs | 52 ------------------- 2 files changed, 57 deletions(-) diff --git a/src/query/sql/src/executor/physical_plans/physical_filter.rs b/src/query/sql/src/executor/physical_plans/physical_filter.rs index 2b1a57f9f1d01..c6c33dd7d4f7c 100644 --- a/src/query/sql/src/executor/physical_plans/physical_filter.rs +++ b/src/query/sql/src/executor/physical_plans/physical_filter.rs @@ -61,7 +61,6 @@ impl PhysicalPlanBuilder { mut required: ColumnSet, stat_info: PlanStatsInfo, ) -> Result { - log::info!("filter {filter:#?}"); // 1. Prune unused Columns. let used = filter.predicates.iter().fold(required.clone(), |acc, v| { acc.union(&v.used_columns()).cloned().collect() @@ -90,17 +89,13 @@ impl PhysicalPlanBuilder { .predicates .iter() .map(|scalar| { - log::info!("scalar {scalar:#?}"); let expr = scalar .type_check(input_schema.as_ref())? .project_column_ref(|index| { input_schema.index_of(&index.to_string()).unwrap() }); - log::info!("expr 1 {expr:#?}"); let expr = cast_expr_to_non_null_boolean(expr)?; - log::info!("expr 2 {expr:#?}"); let (expr, _) = ConstantFolder::fold(&expr, &self.func_ctx, &BUILTIN_FUNCTIONS); - log::info!("expr 3 {expr:#?}"); Ok(expr.as_remote_expr()) }) .collect::>()?, diff --git a/src/query/sql/src/planner/semantic/lowering.rs b/src/query/sql/src/planner/semantic/lowering.rs index bd9ca331cce1c..0fbf8b7e0b8f0 100644 --- a/src/query/sql/src/planner/semantic/lowering.rs +++ b/src/query/sql/src/planner/semantic/lowering.rs @@ -298,55 +298,3 @@ impl ScalarExpr { matches!(self, ScalarExpr::BoundColumnRef(_)) } } - -#[cfg(test)] -mod tests { - use databend_common_expression::types::ArgType; - use databend_common_expression::types::NumberScalar; - use databend_common_expression::types::UInt64Type; - use databend_common_expression::DataField; - - use super::*; - use crate::plans::BoundColumnRef; - use crate::plans::ConstantExpr; - use crate::plans::FunctionCall; - use crate::Visibility; - - #[test] - fn test_aaa() { - let x = ScalarExpr::FunctionCall(FunctionCall { - span: None, - func_name: "eq".to_string(), - params: vec![], - arguments: vec![ - ScalarExpr::BoundColumnRef(BoundColumnRef { - span: None, - column: ColumnBinding { - database_name: Some("default".to_string()), - table_name: Some("t2".to_string()), - column_position: Some(1), - table_index: Some(1), - column_name: "id".to_string(), - index: 1, - data_type: Box::new(UInt64Type::data_type().wrap_nullable()), - visibility: Visibility::Visible, - virtual_expr: None, - }, - }), - ScalarExpr::ConstantExpr(ConstantExpr { - span: None, - value: databend_common_expression::Scalar::Number(NumberScalar::Int64( - 869550529_i64, - )), - }), - ], - }); - - let fields = vec![DataField::new("1", UInt64Type::data_type().wrap_nullable())]; - let schema = DataSchema::new(fields); - - let xxx = x.type_check(&schema); - - println!("{xxx:#?}"); - } -} From f38bf146b99e5c51eaf901bb7039fa98f2c19d2c Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 1 Apr 2025 10:11:13 +0800 Subject: [PATCH 09/23] cast_scalar --- src/query/expression/src/type_check.rs | 53 ++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 7 deletions(-) diff --git a/src/query/expression/src/type_check.rs b/src/query/expression/src/type_check.rs index caf59c11a2e46..e653a72b9b8ff 100755 --- a/src/query/expression/src/type_check.rs +++ b/src/query/expression/src/type_check.rs @@ -21,6 +21,7 @@ use databend_common_exception::ErrorCode; use databend_common_exception::Result; use itertools::Itertools; +use crate::cast_scalar; use crate::expression::Expr; use crate::expression::RawExpr; use crate::function::FunctionRegistry; @@ -83,11 +84,42 @@ pub fn check( args, params, } => { - let args_expr: Vec<_> = args + let mut args_expr: Vec<_> = args .iter() .map(|arg| check(arg, fn_registry)) .try_collect()?; + // https://github.com/datafuselabs/databend/issues/11541 + // c:int16 = 12456 will be resolve as `to_int32(c) == to_int32(12456)` + // This may hurt the bloom filter, we should try cast to literal as the datatype of column + if name == "eq" && args_expr.len() == 2 { + match args_expr.as_mut_slice() { + [e, Expr::Constant { + span, + scalar, + data_type, + }] + | [Expr::Constant { + span, + scalar, + data_type, + }, e] => { + let src_ty = data_type.remove_nullable(); + let dest_ty = e.data_type().remove_nullable(); + + if dest_ty.is_integer() && src_ty.is_integer() { + if let Ok(casted_scalar) = + cast_scalar(*span, scalar.clone(), dest_ty, fn_registry) + { + *scalar = casted_scalar; + *data_type = scalar.as_ref().infer_data_type(); + } + } + } + _ => {} + } + } + check_function(*span, name, params, &args_expr, fn_registry) } RawExpr::LambdaFunctionCall { @@ -263,14 +295,20 @@ pub fn check_function( let mut fail_reasons = Vec::with_capacity(candidates.len()); let mut checked_candidates = vec![]; - let need_sort = candidates.len() > 1 && args.iter().any(|arg| !arg.contains_column_ref()); - for (id, func) in &candidates { + let args_not_const = args + .iter() + .map(Expr::contains_column_ref) + .collect::>(); + let need_sort = candidates.len() > 1 && args_not_const.iter().any(|contain| !*contain); + for (seq, (id, func)) in candidates.iter().enumerate() { match try_check_function(args, &func.signature, auto_cast_rules, fn_registry) { Ok((args, return_type, generics)) => { let score = if need_sort { args.iter() - .map(|arg| { - if arg.is_cast() && arg.contains_column_ref() { + .zip(args_not_const.iter().copied()) + .map(|(expr, not_const)| { + // smaller score win + if not_const && expr.is_cast() { 1 } else { 0 @@ -291,14 +329,15 @@ pub fn check_function( if !need_sort { return Ok(expr); } - checked_candidates.push((expr, score)); + checked_candidates.push((expr, score, seq)); } Err(err) => fail_reasons.push(err), } } if !checked_candidates.is_empty() { - checked_candidates.sort_by_key(|checked| std::cmp::Reverse(checked.1)); + checked_candidates.sort_by_key(|(_, score, seq)| std::cmp::Reverse((*score, *seq))); + println!("checked_candidates {:#?}", checked_candidates); return Ok(checked_candidates.pop().unwrap().0); } From f10cea74a3555da025edbbeeb138b250260c0521 Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 1 Apr 2025 11:55:14 +0800 Subject: [PATCH 10/23] num string Signed-off-by: coldWater --- src/query/functions/tests/it/main.rs | 1 + src/query/functions/tests/it/type_check.rs | 147 + .../tests/it/type_check/testdata/constant.txt | 3808 +++++++++++++++++ .../tests/it/type_check/testdata/decimal.txt | 2808 ++++++++++++ .../tests/it/type_check/testdata/float.txt | 2808 ++++++++++++ .../type_check/testdata/nullable_signed.txt | 1404 ++++++ .../type_check/testdata/nullable_unsigned.txt | 1404 ++++++ .../tests/it/type_check/testdata/signed.txt | 1404 ++++++ .../tests/it/type_check/testdata/unsigned.txt | 1404 ++++++ 9 files changed, 15188 insertions(+) create mode 100644 src/query/functions/tests/it/type_check.rs create mode 100644 src/query/functions/tests/it/type_check/testdata/constant.txt create mode 100644 src/query/functions/tests/it/type_check/testdata/decimal.txt create mode 100644 src/query/functions/tests/it/type_check/testdata/float.txt create mode 100644 src/query/functions/tests/it/type_check/testdata/nullable_signed.txt create mode 100644 src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt create mode 100644 src/query/functions/tests/it/type_check/testdata/signed.txt create mode 100644 src/query/functions/tests/it/type_check/testdata/unsigned.txt diff --git a/src/query/functions/tests/it/main.rs b/src/query/functions/tests/it/main.rs index e8c6121e6af8e..6198543a2677b 100644 --- a/src/query/functions/tests/it/main.rs +++ b/src/query/functions/tests/it/main.rs @@ -21,3 +21,4 @@ // We can generate new test files via using `env REGENERATE_GOLDENFILES=1 cargo test` and `git diff` to show differs mod aggregates; mod scalars; +mod type_check; diff --git a/src/query/functions/tests/it/type_check.rs b/src/query/functions/tests/it/type_check.rs new file mode 100644 index 0000000000000..b0198e15f829a --- /dev/null +++ b/src/query/functions/tests/it/type_check.rs @@ -0,0 +1,147 @@ +// Copyright 2021 Datafuse Labs +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use databend_common_expression::types::*; +use databend_common_expression::FromData; +use goldenfile::Mint; + +use crate::scalars::run_ast; + +#[test] +fn test_type_check() { + let mut mint = Mint::new("tests/it/type_check/testdata"); + + let columns = [ + ("s", StringType::from_data(vec!["s"])), + ("n_s", StringType::from_data(vec!["s"]).wrap_nullable(None)), + ("i8", Int8Type::from_data(vec![0])), + ("n_i8", Int8Type::from_data(vec![0]).wrap_nullable(None)), + ("u8", UInt8Type::from_data(vec![0])), + ("n_u8", UInt8Type::from_data(vec![0]).wrap_nullable(None)), + ("i16", Int16Type::from_data(vec![0])), + ("n_i16", Int16Type::from_data(vec![0]).wrap_nullable(None)), + ("u16", UInt16Type::from_data(vec![0])), + ("n_u16", UInt16Type::from_data(vec![0]).wrap_nullable(None)), + ("i32", Int32Type::from_data(vec![0])), + ("n_i32", Int32Type::from_data(vec![0]).wrap_nullable(None)), + ("u32", UInt32Type::from_data(vec![0])), + ("n_u32", UInt32Type::from_data(vec![0]).wrap_nullable(None)), + ("i64", Int64Type::from_data(vec![0])), + ("n_i64", Int64Type::from_data(vec![0]).wrap_nullable(None)), + ("u64", UInt64Type::from_data(vec![0])), + ("n_u64", UInt64Type::from_data(vec![0]).wrap_nullable(None)), + ("f32", Float32Type::from_data(vec![0.0])), + ( + "n_f32", + Float32Type::from_data(vec![0.0]).wrap_nullable(None), + ), + ("f64", Float64Type::from_data(vec![0.0])), + ( + "n_f64", + Float64Type::from_data(vec![0.0]).wrap_nullable(None), + ), + ("b", BooleanType::from_data(vec![true])), + ( + "n_b", + BooleanType::from_data(vec![true]).wrap_nullable(None), + ), + ("d", DateType::from_data(vec![0])), + ("n_d", DateType::from_data(vec![0]).wrap_nullable(None)), + ("ts", TimestampType::from_data(vec![0])), + ( + "n_ts", + TimestampType::from_data(vec![0]).wrap_nullable(None), + ), + // BinaryColumn != BinaryColumn + // ("j", VariantType::from_data(vec![b"{}".into()])), + // ( + // "n_j", + // VariantType::from_data(vec![b"{}".into()]).wrap_nullable(None), + // ), + ("d128", Decimal128Type::from_data(vec![0_i128])), + ( + "n_d128", + Decimal128Type::from_data(vec![0_i128]).wrap_nullable(None), + ), + ("d256", Decimal256Type::from_data(vec![ethnum::I256::ZERO])), + ( + "n_d256", + Decimal256Type::from_data(vec![ethnum::I256::ZERO]).wrap_nullable(None), + ), + ]; + + // 8 and 16 are just smaller 32. + let size = vec!["32", "64"]; + + let signed = size.iter().map(|s| format!("i{}", s)).collect::>(); + let unsigned = size.iter().map(|s| format!("u{}", s)).collect::>(); + let nullable_signed = size.iter().map(|s| format!("n_i{}", s)).collect::>(); + let nullable_unsigned = size.iter().map(|s| format!("n_u{}", s)).collect::>(); + let float = size + .iter() + .flat_map(|s| [format!("f{s}"), format!("n_f{s}")].into_iter()) + .collect::>(); + let decimal = ["d128", "n_d128", "d256", "n_d256"] + .into_iter() + .map(String::from) + .collect::>(); + + let all_num = signed + .iter() + .chain(unsigned.iter()) + .chain(nullable_signed.iter()) + .chain(nullable_unsigned.iter()) + .chain(float.iter()) + .chain(decimal.iter()) + .collect::>(); + + for (name, types) in [ + ("signed", &signed), + ("unsigned", &unsigned), + ("nullable_signed", &nullable_signed), + ("nullable_unsigned", &nullable_unsigned), + ("float", &float), + ("decimal", &decimal), + ] { + let file = &mut mint.new_goldenfile(format!("{name}.txt")).unwrap(); + let pair = types + .iter() + .flat_map(|lhs| all_num.iter().map(move |rhs| (lhs, *rhs))) + .collect::>(); + for (lhs, rhs) in pair { + run_ast(file, &format!("{lhs} > {rhs}"), &columns); + run_ast(file, &format!("{lhs} = {rhs}"), &columns); + } + } + + { + let file = &mut mint.new_goldenfile(format!("constant.txt")).unwrap(); + for int in &all_num { + run_ast(file, &format!("{int} > 1"), &columns); + run_ast(file, &format!("{int} = 1"), &columns); + run_ast(file, &format!("1 > {int}"), &columns); + run_ast(file, &format!("1 = {int}"), &columns); + + run_ast(file, &format!("{int} > 1.0"), &columns); + run_ast(file, &format!("{int} = 1.0"), &columns); + run_ast(file, &format!("1.0 > {int}"), &columns); + run_ast(file, &format!("1.0 = {int}"), &columns); + + run_ast(file, &format!("{int} > '1'"), &columns); + run_ast(file, &format!("{int} = '1'"), &columns); + run_ast(file, &format!("'1' > {int}"), &columns); + run_ast(file, &format!("'1' = {int}"), &columns); + } + } +} diff --git a/src/query/functions/tests/it/type_check/testdata/constant.txt b/src/query/functions/tests/it/type_check/testdata/constant.txt new file mode 100644 index 0000000000000..f64d019d2421e --- /dev/null +++ b/src/query/functions/tests/it/type_check/testdata/constant.txt @@ -0,0 +1,3808 @@ +ast : i32 > 1 +raw expr : gt(i32::Int32, 1) +checked expr : gt(i32, to_int32(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = 1 +raw expr : eq(i32::Int32, 1) +checked expr : eq(i32, 1_i32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > i32 +raw expr : gt(1, i32::Int32) +checked expr : gt(to_int32(1_u8), i32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = i32 +raw expr : eq(1, i32::Int32) +checked expr : eq(1_i32, i32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 > 1.0 +raw expr : gt(i32::Int32, 1.0) +checked expr : gt(to_decimal(10, 0)(i32), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = 1.0 +raw expr : eq(i32::Int32, 1.0) +checked expr : eq(to_decimal(10, 0)(i32), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > i32 +raw expr : gt(1.0, i32::Int32) +checked expr : gt(1.0_d128(2,1), to_decimal(10, 0)(i32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = i32 +raw expr : eq(1.0, i32::Int32) +checked expr : eq(1.0_d128(2,1), to_decimal(10, 0)(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | i32 > '1' + | ^ no function matches signature `gt(Int32, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Int32` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int32` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int32` with `String` +... and 33 more + + + +ast : i32 = '1' +raw expr : eq(i32::Int32, '1') +checked expr : eq(to_int64(i32), to_int64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > i32 + | ^ no function matches signature `gt(String, Int32)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int32` with `String` +... and 33 more + + + +ast : '1' = i32 +raw expr : eq('1', i32::Int32) +checked expr : eq(to_int64("1"), to_int64(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 > 1 +raw expr : gt(i64::Int64, 1) +checked expr : gt(i64, to_int64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = 1 +raw expr : eq(i64::Int64, 1) +checked expr : eq(i64, 1_i64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > i64 +raw expr : gt(1, i64::Int64) +checked expr : gt(to_int64(1_u8), i64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = i64 +raw expr : eq(1, i64::Int64) +checked expr : eq(1_i64, i64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 > 1.0 +raw expr : gt(i64::Int64, 1.0) +checked expr : gt(to_decimal(19, 0)(i64), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = 1.0 +raw expr : eq(i64::Int64, 1.0) +checked expr : eq(to_decimal(19, 0)(i64), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > i64 +raw expr : gt(1.0, i64::Int64) +checked expr : gt(1.0_d128(2,1), to_decimal(19, 0)(i64)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = i64 +raw expr : eq(1.0, i64::Int64) +checked expr : eq(1.0_d128(2,1), to_decimal(19, 0)(i64)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | i64 > '1' + | ^ no function matches signature `gt(Int64, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Int64` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int64` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int64` with `String` +... and 33 more + + + +ast : i64 = '1' +raw expr : eq(i64::Int64, '1') +checked expr : eq(i64, to_int64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > i64 + | ^ no function matches signature `gt(String, Int64)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int64` with `String` +... and 33 more + + + +ast : '1' = i64 +raw expr : eq('1', i64::Int64) +checked expr : eq(to_int64("1"), i64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 > 1 +raw expr : gt(u32::UInt32, 1) +checked expr : gt(u32, to_uint32(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = 1 +raw expr : eq(u32::UInt32, 1) +checked expr : eq(u32, 1_u32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > u32 +raw expr : gt(1, u32::UInt32) +checked expr : gt(to_uint32(1_u8), u32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = u32 +raw expr : eq(1, u32::UInt32) +checked expr : eq(1_u32, u32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 > 1.0 +raw expr : gt(u32::UInt32, 1.0) +checked expr : gt(to_decimal(10, 0)(u32), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = 1.0 +raw expr : eq(u32::UInt32, 1.0) +checked expr : eq(to_decimal(10, 0)(u32), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > u32 +raw expr : gt(1.0, u32::UInt32) +checked expr : gt(1.0_d128(2,1), to_decimal(10, 0)(u32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = u32 +raw expr : eq(1.0, u32::UInt32) +checked expr : eq(1.0_d128(2,1), to_decimal(10, 0)(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | u32 > '1' + | ^ no function matches signature `gt(UInt32, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `UInt32` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt32` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt32` with `String` +... and 33 more + + + +ast : u32 = '1' +raw expr : eq(u32::UInt32, '1') +checked expr : eq(to_uint64(u32), to_uint64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > u32 + | ^ no function matches signature `gt(String, UInt32)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt32` with `String` +... and 33 more + + + +ast : '1' = u32 +raw expr : eq('1', u32::UInt32) +checked expr : eq(to_uint64("1"), to_uint64(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 > 1 +raw expr : gt(u64::UInt64, 1) +checked expr : gt(u64, to_uint64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = 1 +raw expr : eq(u64::UInt64, 1) +checked expr : eq(u64, 1_u64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > u64 +raw expr : gt(1, u64::UInt64) +checked expr : gt(to_uint64(1_u8), u64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = u64 +raw expr : eq(1, u64::UInt64) +checked expr : eq(1_u64, u64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 > 1.0 +raw expr : gt(u64::UInt64, 1.0) +checked expr : gt(to_decimal(20, 0)(u64), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = 1.0 +raw expr : eq(u64::UInt64, 1.0) +checked expr : eq(to_decimal(20, 0)(u64), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > u64 +raw expr : gt(1.0, u64::UInt64) +checked expr : gt(1.0_d128(2,1), to_decimal(20, 0)(u64)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = u64 +raw expr : eq(1.0, u64::UInt64) +checked expr : eq(1.0_d128(2,1), to_decimal(20, 0)(u64)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | u64 > '1' + | ^ no function matches signature `gt(UInt64, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `UInt64` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt64` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt64` with `String` +... and 33 more + + + +ast : u64 = '1' +raw expr : eq(u64::UInt64, '1') +checked expr : eq(u64, to_uint64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > u64 + | ^ no function matches signature `gt(String, UInt64)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt64` with `String` +... and 33 more + + + +ast : '1' = u64 +raw expr : eq('1', u64::UInt64) +checked expr : eq(to_uint64("1"), u64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_i32 > 1 +raw expr : gt(n_i32::Int32 NULL, 1) +checked expr : gt(n_i32, CAST(1_u8 AS Int32 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = 1 +raw expr : eq(n_i32::Int32 NULL, 1) +checked expr : eq(n_i32, CAST(1_i32 AS Int32 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_i32 +raw expr : gt(1, n_i32::Int32 NULL) +checked expr : gt(CAST(1_u8 AS Int32 NULL), n_i32) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_i32 +raw expr : eq(1, n_i32::Int32 NULL) +checked expr : eq(CAST(1_i32 AS Int32 NULL), n_i32) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > 1.0 +raw expr : gt(n_i32::Int32 NULL, 1.0) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = 1.0 +raw expr : eq(n_i32::Int32 NULL, 1.0) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_i32 +raw expr : gt(1.0, n_i32::Int32 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_i32 +raw expr : eq(1.0, n_i32::Int32 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_i32 > '1' + | ^ no function matches signature `gt(Int32 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Int32 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int32` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int32 NULL` with `String` +... and 33 more + + + +ast : n_i32 = '1' +raw expr : eq(n_i32::Int32 NULL, '1') +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST("1" AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_i32 + | ^ no function matches signature `gt(String, Int32 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int32 NULL` with `String` +... and 33 more + + + +ast : '1' = n_i32 +raw expr : eq('1', n_i32::Int32 NULL) +checked expr : eq(CAST("1" AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > 1 +raw expr : gt(n_i64::Int64 NULL, 1) +checked expr : gt(n_i64, CAST(1_u8 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = 1 +raw expr : eq(n_i64::Int64 NULL, 1) +checked expr : eq(n_i64, CAST(1_i64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_i64 +raw expr : gt(1, n_i64::Int64 NULL) +checked expr : gt(CAST(1_u8 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_i64 +raw expr : eq(1, n_i64::Int64 NULL) +checked expr : eq(CAST(1_i64 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > 1.0 +raw expr : gt(n_i64::Int64 NULL, 1.0) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = 1.0 +raw expr : eq(n_i64::Int64 NULL, 1.0) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_i64 +raw expr : gt(1.0, n_i64::Int64 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_i64 +raw expr : eq(1.0, n_i64::Int64 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_i64 > '1' + | ^ no function matches signature `gt(Int64 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Int64 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int64` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int64 NULL` with `String` +... and 33 more + + + +ast : n_i64 = '1' +raw expr : eq(n_i64::Int64 NULL, '1') +checked expr : eq(n_i64, CAST("1" AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_i64 + | ^ no function matches signature `gt(String, Int64 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int64 NULL` with `String` +... and 33 more + + + +ast : '1' = n_i64 +raw expr : eq('1', n_i64::Int64 NULL) +checked expr : eq(CAST("1" AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > 1 +raw expr : gt(n_u32::UInt32 NULL, 1) +checked expr : gt(n_u32, CAST(1_u8 AS UInt32 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = 1 +raw expr : eq(n_u32::UInt32 NULL, 1) +checked expr : eq(n_u32, CAST(1_u32 AS UInt32 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_u32 +raw expr : gt(1, n_u32::UInt32 NULL) +checked expr : gt(CAST(1_u8 AS UInt32 NULL), n_u32) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_u32 +raw expr : eq(1, n_u32::UInt32 NULL) +checked expr : eq(CAST(1_u32 AS UInt32 NULL), n_u32) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > 1.0 +raw expr : gt(n_u32::UInt32 NULL, 1.0) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = 1.0 +raw expr : eq(n_u32::UInt32 NULL, 1.0) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_u32 +raw expr : gt(1.0, n_u32::UInt32 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_u32 +raw expr : eq(1.0, n_u32::UInt32 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_u32 > '1' + | ^ no function matches signature `gt(UInt32 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `UInt32 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt32` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt32 NULL` with `String` +... and 33 more + + + +ast : n_u32 = '1' +raw expr : eq(n_u32::UInt32 NULL, '1') +checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST("1" AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_u32 + | ^ no function matches signature `gt(String, UInt32 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt32 NULL` with `String` +... and 33 more + + + +ast : '1' = n_u32 +raw expr : eq('1', n_u32::UInt32 NULL) +checked expr : eq(CAST("1" AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > 1 +raw expr : gt(n_u64::UInt64 NULL, 1) +checked expr : gt(n_u64, CAST(1_u8 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = 1 +raw expr : eq(n_u64::UInt64 NULL, 1) +checked expr : eq(n_u64, CAST(1_u64 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_u64 +raw expr : gt(1, n_u64::UInt64 NULL) +checked expr : gt(CAST(1_u8 AS UInt64 NULL), n_u64) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_u64 +raw expr : eq(1, n_u64::UInt64 NULL) +checked expr : eq(CAST(1_u64 AS UInt64 NULL), n_u64) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > 1.0 +raw expr : gt(n_u64::UInt64 NULL, 1.0) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = 1.0 +raw expr : eq(n_u64::UInt64 NULL, 1.0) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_u64 +raw expr : gt(1.0, n_u64::UInt64 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_u64 +raw expr : eq(1.0, n_u64::UInt64 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_u64 > '1' + | ^ no function matches signature `gt(UInt64 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `UInt64 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt64` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt64 NULL` with `String` +... and 33 more + + + +ast : n_u64 = '1' +raw expr : eq(n_u64::UInt64 NULL, '1') +checked expr : eq(n_u64, CAST("1" AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_u64 + | ^ no function matches signature `gt(String, UInt64 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt64 NULL` with `String` +... and 33 more + + + +ast : '1' = n_u64 +raw expr : eq('1', n_u64::UInt64 NULL) +checked expr : eq(CAST("1" AS UInt64 NULL), n_u64) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 > 1 +raw expr : gt(f32::Float32, 1) +checked expr : gt(f32, to_float32(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = 1 +raw expr : eq(f32::Float32, 1) +checked expr : eq(f32, to_float32(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > f32 +raw expr : gt(1, f32::Float32) +checked expr : gt(to_float32(1_u8), f32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = f32 +raw expr : eq(1, f32::Float32) +checked expr : eq(to_float32(1_u8), f32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 > 1.0 +raw expr : gt(f32::Float32, 1.0) +checked expr : gt(to_float64(f32), to_float64(1.0_d128(2,1))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = 1.0 +raw expr : eq(f32::Float32, 1.0) +checked expr : eq(to_float64(f32), to_float64(1.0_d128(2,1))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > f32 +raw expr : gt(1.0, f32::Float32) +checked expr : gt(to_float64(1.0_d128(2,1)), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = f32 +raw expr : eq(1.0, f32::Float32) +checked expr : eq(to_float64(1.0_d128(2,1)), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | f32 > '1' + | ^ no function matches signature `gt(Float32, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Float32` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float32` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float32` with `String` +... and 33 more + + + +ast : f32 = '1' +raw expr : eq(f32::Float32, '1') +checked expr : eq(f32, to_float32("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > f32 + | ^ no function matches signature `gt(String, Float32)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float32` with `String` +... and 33 more + + + +ast : '1' = f32 +raw expr : eq('1', f32::Float32) +checked expr : eq(to_float32("1"), f32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_f32 > 1 +raw expr : gt(n_f32::Float32 NULL, 1) +checked expr : gt(n_f32, CAST(1_u8 AS Float32 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = 1 +raw expr : eq(n_f32::Float32 NULL, 1) +checked expr : eq(n_f32, CAST(1_u8 AS Float32 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_f32 +raw expr : gt(1, n_f32::Float32 NULL) +checked expr : gt(CAST(1_u8 AS Float32 NULL), n_f32) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_f32 +raw expr : eq(1, n_f32::Float32 NULL) +checked expr : eq(CAST(1_u8 AS Float32 NULL), n_f32) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > 1.0 +raw expr : gt(n_f32::Float32 NULL, 1.0) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = 1.0 +raw expr : eq(n_f32::Float32 NULL, 1.0) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_f32 +raw expr : gt(1.0, n_f32::Float32 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_f32 +raw expr : eq(1.0, n_f32::Float32 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_f32 > '1' + | ^ no function matches signature `gt(Float32 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Float32 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float32` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float32 NULL` with `String` +... and 33 more + + + +ast : n_f32 = '1' +raw expr : eq(n_f32::Float32 NULL, '1') +checked expr : eq(n_f32, CAST("1" AS Float32 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_f32 + | ^ no function matches signature `gt(String, Float32 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float32 NULL` with `String` +... and 33 more + + + +ast : '1' = n_f32 +raw expr : eq('1', n_f32::Float32 NULL) +checked expr : eq(CAST("1" AS Float32 NULL), n_f32) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > 1 +raw expr : gt(f64::Float64, 1) +checked expr : gt(f64, to_float64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = 1 +raw expr : eq(f64::Float64, 1) +checked expr : eq(f64, to_float64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > f64 +raw expr : gt(1, f64::Float64) +checked expr : gt(to_float64(1_u8), f64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = f64 +raw expr : eq(1, f64::Float64) +checked expr : eq(to_float64(1_u8), f64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 > 1.0 +raw expr : gt(f64::Float64, 1.0) +checked expr : gt(f64, to_float64(1.0_d128(2,1))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = 1.0 +raw expr : eq(f64::Float64, 1.0) +checked expr : eq(f64, to_float64(1.0_d128(2,1))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > f64 +raw expr : gt(1.0, f64::Float64) +checked expr : gt(to_float64(1.0_d128(2,1)), f64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = f64 +raw expr : eq(1.0, f64::Float64) +checked expr : eq(to_float64(1.0_d128(2,1)), f64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | f64 > '1' + | ^ no function matches signature `gt(Float64, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Float64` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float64` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float64` with `String` +... and 33 more + + + +ast : f64 = '1' +raw expr : eq(f64::Float64, '1') +checked expr : eq(f64, to_float64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > f64 + | ^ no function matches signature `gt(String, Float64)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float64` with `String` +... and 33 more + + + +ast : '1' = f64 +raw expr : eq('1', f64::Float64) +checked expr : eq(to_float64("1"), f64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_f64 > 1 +raw expr : gt(n_f64::Float64 NULL, 1) +checked expr : gt(n_f64, CAST(1_u8 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = 1 +raw expr : eq(n_f64::Float64 NULL, 1) +checked expr : eq(n_f64, CAST(1_u8 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_f64 +raw expr : gt(1, n_f64::Float64 NULL) +checked expr : gt(CAST(1_u8 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_f64 +raw expr : eq(1, n_f64::Float64 NULL) +checked expr : eq(CAST(1_u8 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > 1.0 +raw expr : gt(n_f64::Float64 NULL, 1.0) +checked expr : gt(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = 1.0 +raw expr : eq(n_f64::Float64 NULL, 1.0) +checked expr : eq(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_f64 +raw expr : gt(1.0, n_f64::Float64 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_f64 +raw expr : eq(1.0, n_f64::Float64 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_f64 > '1' + | ^ no function matches signature `gt(Float64 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Float64 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float64` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float64 NULL` with `String` +... and 33 more + + + +ast : n_f64 = '1' +raw expr : eq(n_f64::Float64 NULL, '1') +checked expr : eq(n_f64, CAST("1" AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_f64 + | ^ no function matches signature `gt(String, Float64 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float64 NULL` with `String` +... and 33 more + + + +ast : '1' = n_f64 +raw expr : eq('1', n_f64::Float64 NULL) +checked expr : eq(CAST("1" AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 > 1 +raw expr : gt(d128::Decimal(38, 0), 1) +checked expr : gt(d128, to_decimal(3, 0)(1_u8)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = 1 +raw expr : eq(d128::Decimal(38, 0), 1) +checked expr : eq(d128, to_decimal(3, 0)(1_u8)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > d128 +raw expr : gt(1, d128::Decimal(38, 0)) +checked expr : gt(to_decimal(3, 0)(1_u8), d128) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = d128 +raw expr : eq(1, d128::Decimal(38, 0)) +checked expr : eq(to_decimal(3, 0)(1_u8), d128) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 > 1.0 +raw expr : gt(d128::Decimal(38, 0), 1.0) +checked expr : gt(d128, 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = 1.0 +raw expr : eq(d128::Decimal(38, 0), 1.0) +checked expr : eq(d128, 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > d128 +raw expr : gt(1.0, d128::Decimal(38, 0)) +checked expr : gt(1.0_d128(2,1), d128) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = d128 +raw expr : eq(1.0, d128::Decimal(38, 0)) +checked expr : eq(1.0_d128(2,1), d128) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:6 + | +1 | d128 > '1' + | ^ no function matches signature `gt(Decimal(38, 0), String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Decimal(38, 0)` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(38, 0)` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(38, 0)` with `String` +... and 33 more + + + +ast : d128 = '1' +raw expr : eq(d128::Decimal(38, 0), '1') +checked expr : eq(to_float64(d128), to_float64("1")) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > d128 + | ^ no function matches signature `gt(String, Decimal(38, 0))`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(38, 0)` with `String` +... and 33 more + + + +ast : '1' = d128 +raw expr : eq('1', d128::Decimal(38, 0)) +checked expr : eq(to_float64("1"), to_float64(d128)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_d128 > 1 +raw expr : gt(n_d128::Decimal(38, 0) NULL, 1) +checked expr : gt(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = 1 +raw expr : eq(n_d128::Decimal(38, 0) NULL, 1) +checked expr : eq(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_d128 +raw expr : gt(1, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_d128 +raw expr : eq(1, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > 1.0 +raw expr : gt(n_d128::Decimal(38, 0) NULL, 1.0) +checked expr : gt(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = 1.0 +raw expr : eq(n_d128::Decimal(38, 0) NULL, 1.0) +checked expr : eq(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_d128 +raw expr : gt(1.0, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_d128 +raw expr : eq(1.0, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:8 + | +1 | n_d128 > '1' + | ^ no function matches signature `gt(Decimal(38, 0) NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(38, 0)` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `String` +... and 33 more + + + +ast : n_d128 = '1' +raw expr : eq(n_d128::Decimal(38, 0) NULL, '1') +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST("1" AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_d128 + | ^ no function matches signature `gt(String, Decimal(38, 0) NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `String` +... and 33 more + + + +ast : '1' = n_d128 +raw expr : eq('1', n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > 1 +raw expr : gt(d256::Decimal(76, 0), 1) +checked expr : gt(d256, to_decimal(3, 0)(1_u8)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = 1 +raw expr : eq(d256::Decimal(76, 0), 1) +checked expr : eq(d256, to_decimal(3, 0)(1_u8)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > d256 +raw expr : gt(1, d256::Decimal(76, 0)) +checked expr : gt(to_decimal(3, 0)(1_u8), d256) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = d256 +raw expr : eq(1, d256::Decimal(76, 0)) +checked expr : eq(to_decimal(3, 0)(1_u8), d256) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 > 1.0 +raw expr : gt(d256::Decimal(76, 0), 1.0) +checked expr : gt(d256, 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = 1.0 +raw expr : eq(d256::Decimal(76, 0), 1.0) +checked expr : eq(d256, 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > d256 +raw expr : gt(1.0, d256::Decimal(76, 0)) +checked expr : gt(1.0_d128(2,1), d256) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = d256 +raw expr : eq(1.0, d256::Decimal(76, 0)) +checked expr : eq(1.0_d128(2,1), d256) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:6 + | +1 | d256 > '1' + | ^ no function matches signature `gt(Decimal(76, 0), String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Decimal(76, 0)` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(76, 0)` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(76, 0)` with `String` +... and 33 more + + + +ast : d256 = '1' +raw expr : eq(d256::Decimal(76, 0), '1') +checked expr : eq(to_float64(d256), to_float64("1")) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > d256 + | ^ no function matches signature `gt(String, Decimal(76, 0))`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(76, 0)` with `String` +... and 33 more + + + +ast : '1' = d256 +raw expr : eq('1', d256::Decimal(76, 0)) +checked expr : eq(to_float64("1"), to_float64(d256)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_d256 > 1 +raw expr : gt(n_d256::Decimal(76, 0) NULL, 1) +checked expr : gt(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = 1 +raw expr : eq(n_d256::Decimal(76, 0) NULL, 1) +checked expr : eq(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_d256 +raw expr : gt(1, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_d256 +raw expr : eq(1, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > 1.0 +raw expr : gt(n_d256::Decimal(76, 0) NULL, 1.0) +checked expr : gt(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = 1.0 +raw expr : eq(n_d256::Decimal(76, 0) NULL, 1.0) +checked expr : eq(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_d256 +raw expr : gt(1.0, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_d256 +raw expr : eq(1.0, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:8 + | +1 | n_d256 > '1' + | ^ no function matches signature `gt(Decimal(76, 0) NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(76, 0)` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `String` +... and 33 more + + + +ast : n_d256 = '1' +raw expr : eq(n_d256::Decimal(76, 0) NULL, '1') +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST("1" AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_d256 + | ^ no function matches signature `gt(String, Decimal(76, 0) NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `String` +... and 33 more + + + +ast : '1' = n_d256 +raw expr : eq('1', n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/decimal.txt b/src/query/functions/tests/it/type_check/testdata/decimal.txt new file mode 100644 index 0000000000000..66527ecee38da --- /dev/null +++ b/src/query/functions/tests/it/type_check/testdata/decimal.txt @@ -0,0 +1,2808 @@ +ast : d128 > i32 +raw expr : gt(d128::Decimal(38, 0), i32::Int32) +checked expr : gt(d128, to_decimal(10, 0)(i32)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | i32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Int32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = i32 +raw expr : eq(d128::Decimal(38, 0), i32::Int32) +checked expr : eq(d128, to_decimal(10, 0)(i32)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | i32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Int32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d128 > i64 +raw expr : gt(d128::Decimal(38, 0), i64::Int64) +checked expr : gt(d128, to_decimal(19, 0)(i64)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | i64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Int64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = i64 +raw expr : eq(d128::Decimal(38, 0), i64::Int64) +checked expr : eq(d128, to_decimal(19, 0)(i64)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | i64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Int64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d128 > u32 +raw expr : gt(d128::Decimal(38, 0), u32::UInt32) +checked expr : gt(d128, to_decimal(10, 0)(u32)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | u32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | UInt32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = u32 +raw expr : eq(d128::Decimal(38, 0), u32::UInt32) +checked expr : eq(d128, to_decimal(10, 0)(u32)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | u32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | UInt32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d128 > u64 +raw expr : gt(d128::Decimal(38, 0), u64::UInt64) +checked expr : gt(d128, to_decimal(20, 0)(u64)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | u64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | UInt64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = u64 +raw expr : eq(d128::Decimal(38, 0), u64::UInt64) +checked expr : eq(d128, to_decimal(20, 0)(u64)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | u64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | UInt64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d128 > n_i32 +raw expr : gt(d128::Decimal(38, 0), n_i32::Int32 NULL) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+----------------+--------------+ +| | n_i32 | d128 | Output | ++--------+------------+----------------+--------------+ +| Type | Int32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 = n_i32 +raw expr : eq(d128::Decimal(38, 0), n_i32::Int32 NULL) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+----------------+--------------+ +| | n_i32 | d128 | Output | ++--------+------------+----------------+--------------+ +| Type | Int32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 > n_i64 +raw expr : gt(d128::Decimal(38, 0), n_i64::Int64 NULL) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+----------------+--------------+ +| | n_i64 | d128 | Output | ++--------+------------+----------------+--------------+ +| Type | Int64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 = n_i64 +raw expr : eq(d128::Decimal(38, 0), n_i64::Int64 NULL) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+----------------+--------------+ +| | n_i64 | d128 | Output | ++--------+------------+----------------+--------------+ +| Type | Int64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 > n_u32 +raw expr : gt(d128::Decimal(38, 0), n_u32::UInt32 NULL) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u32 | d128 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 = n_u32 +raw expr : eq(d128::Decimal(38, 0), n_u32::UInt32 NULL) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u32 | d128 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 > n_u64 +raw expr : gt(d128::Decimal(38, 0), n_u64::UInt64 NULL) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u64 | d128 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 = n_u64 +raw expr : eq(d128::Decimal(38, 0), n_u64::UInt64 NULL) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u64 | d128 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 > f32 +raw expr : gt(d128::Decimal(38, 0), f32::Float32) +checked expr : gt(to_float64(d128), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | f32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Float32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = f32 +raw expr : eq(d128::Decimal(38, 0), f32::Float32) +checked expr : eq(to_float64(d128), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | f32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Float32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d128 > n_f32 +raw expr : gt(d128::Decimal(38, 0), n_f32::Float32 NULL) +checked expr : gt(CAST(d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f32 | d128 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 = n_f32 +raw expr : eq(d128::Decimal(38, 0), n_f32::Float32 NULL) +checked expr : eq(CAST(d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f32 | d128 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 > f64 +raw expr : gt(d128::Decimal(38, 0), f64::Float64) +checked expr : gt(to_float64(d128), f64) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | f64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Float64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = f64 +raw expr : eq(d128::Decimal(38, 0), f64::Float64) +checked expr : eq(to_float64(d128), f64) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | f64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Float64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d128 > n_f64 +raw expr : gt(d128::Decimal(38, 0), n_f64::Float64 NULL) +checked expr : gt(CAST(d128 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f64 | d128 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 = n_f64 +raw expr : eq(d128::Decimal(38, 0), n_f64::Float64 NULL) +checked expr : eq(CAST(d128 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f64 | d128 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 > d128 +raw expr : gt(d128::Decimal(38, 0), d128::Decimal(38, 0)) +checked expr : gt(d128, d128) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = d128 +raw expr : eq(d128::Decimal(38, 0), d128::Decimal(38, 0)) +checked expr : eq(d128, d128) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d128 > n_d128 +raw expr : gt(d128::Decimal(38, 0), n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+----------------+---------------------+--------------+ +| | d128 | n_d128 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(38, 0) | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d128 | Decimal128([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 = n_d128 +raw expr : eq(d128::Decimal(38, 0), n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+----------------+---------------------+--------------+ +| | d128 | n_d128 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(38, 0) | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d128 | Decimal128([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 > d256 +raw expr : gt(d128::Decimal(38, 0), d256::Decimal(76, 0)) +checked expr : gt(d128, d256) +optimized expr : false +evaluation: ++--------+----------------+----------------+---------+ +| | d128 | d256 | Output | ++--------+----------------+----------------+---------+ +| Type | Decimal(38, 0) | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+----------------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = d256 +raw expr : eq(d128::Decimal(38, 0), d256::Decimal(76, 0)) +checked expr : eq(d128, d256) +optimized expr : true +evaluation: ++--------+----------------+----------------+---------+ +| | d128 | d256 | Output | ++--------+----------------+----------------+---------+ +| Type | Decimal(38, 0) | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+----------------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d128 > n_d256 +raw expr : gt(d128::Decimal(38, 0), n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+----------------+---------------------+--------------+ +| | d128 | n_d256 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(38, 0) | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d128 | Decimal128([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d128 = n_d256 +raw expr : eq(d128::Decimal(38, 0), n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+----------------+---------------------+--------------+ +| | d128 | n_d256 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(38, 0) | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d128 | Decimal128([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > i32 +raw expr : gt(n_d128::Decimal(38, 0) NULL, i32::Int32) +checked expr : gt(n_d128, CAST(i32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | i32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = i32 +raw expr : eq(n_d128::Decimal(38, 0) NULL, i32::Int32) +checked expr : eq(n_d128, CAST(i32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | i32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > i64 +raw expr : gt(n_d128::Decimal(38, 0) NULL, i64::Int64) +checked expr : gt(n_d128, CAST(i64 AS Decimal(19, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | i64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = i64 +raw expr : eq(n_d128::Decimal(38, 0) NULL, i64::Int64) +checked expr : eq(n_d128, CAST(i64 AS Decimal(19, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | i64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > u32 +raw expr : gt(n_d128::Decimal(38, 0) NULL, u32::UInt32) +checked expr : gt(n_d128, CAST(u32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | u32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = u32 +raw expr : eq(n_d128::Decimal(38, 0) NULL, u32::UInt32) +checked expr : eq(n_d128, CAST(u32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | u32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > u64 +raw expr : gt(n_d128::Decimal(38, 0) NULL, u64::UInt64) +checked expr : gt(n_d128, CAST(u64 AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | u64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = u64 +raw expr : eq(n_d128::Decimal(38, 0) NULL, u64::UInt64) +checked expr : eq(n_d128, CAST(u64 AS Decimal(20, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | u64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > n_i32 +raw expr : gt(n_d128::Decimal(38, 0) NULL, n_i32::Int32 NULL) +checked expr : gt(n_d128, CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i32 | n_d128 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = n_i32 +raw expr : eq(n_d128::Decimal(38, 0) NULL, n_i32::Int32 NULL) +checked expr : eq(n_d128, CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i32 | n_d128 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > n_i64 +raw expr : gt(n_d128::Decimal(38, 0) NULL, n_i64::Int64 NULL) +checked expr : gt(n_d128, CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i64 | n_d128 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = n_i64 +raw expr : eq(n_d128::Decimal(38, 0) NULL, n_i64::Int64 NULL) +checked expr : eq(n_d128, CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i64 | n_d128 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > n_u32 +raw expr : gt(n_d128::Decimal(38, 0) NULL, n_u32::UInt32 NULL) +checked expr : gt(n_d128, CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u32 | n_d128 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = n_u32 +raw expr : eq(n_d128::Decimal(38, 0) NULL, n_u32::UInt32 NULL) +checked expr : eq(n_d128, CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u32 | n_d128 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > n_u64 +raw expr : gt(n_d128::Decimal(38, 0) NULL, n_u64::UInt64 NULL) +checked expr : gt(n_d128, CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u64 | n_d128 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = n_u64 +raw expr : eq(n_d128::Decimal(38, 0) NULL, n_u64::UInt64 NULL) +checked expr : eq(n_d128, CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u64 | n_d128 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > f32 +raw expr : gt(n_d128::Decimal(38, 0) NULL, f32::Float32) +checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | f32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = f32 +raw expr : eq(n_d128::Decimal(38, 0) NULL, f32::Float32) +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | f32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > n_f32 +raw expr : gt(n_d128::Decimal(38, 0) NULL, n_f32::Float32 NULL) +checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f32 | n_d128 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = n_f32 +raw expr : eq(n_d128::Decimal(38, 0) NULL, n_f32::Float32 NULL) +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f32 | n_d128 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > f64 +raw expr : gt(n_d128::Decimal(38, 0) NULL, f64::Float64) +checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | f64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = f64 +raw expr : eq(n_d128::Decimal(38, 0) NULL, f64::Float64) +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | f64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > n_f64 +raw expr : gt(n_d128::Decimal(38, 0) NULL, n_f64::Float64 NULL) +checked expr : gt(CAST(n_d128 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f64 | n_d128 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = n_f64 +raw expr : eq(n_d128::Decimal(38, 0) NULL, n_f64::Float64 NULL) +checked expr : eq(CAST(n_d128 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f64 | n_d128 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > d128 +raw expr : gt(n_d128::Decimal(38, 0) NULL, d128::Decimal(38, 0)) +checked expr : gt(n_d128, CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : false +evaluation: ++--------+----------------+---------------------+--------------+ +| | d128 | n_d128 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(38, 0) | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d128 | Decimal128([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = d128 +raw expr : eq(n_d128::Decimal(38, 0) NULL, d128::Decimal(38, 0)) +checked expr : eq(n_d128, CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : true +evaluation: ++--------+----------------+---------------------+--------------+ +| | d128 | n_d128 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(38, 0) | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d128 | Decimal128([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > n_d128 +raw expr : gt(n_d128::Decimal(38, 0) NULL, n_d128::Decimal(38, 0) NULL) +checked expr : gt(n_d128, n_d128) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = n_d128 +raw expr : eq(n_d128::Decimal(38, 0) NULL, n_d128::Decimal(38, 0) NULL) +checked expr : eq(n_d128, n_d128) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > d256 +raw expr : gt(n_d128::Decimal(38, 0) NULL, d256::Decimal(76, 0)) +checked expr : gt(n_d128, CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+----------------+--------------+ +| | n_d128 | d256 | Output | ++--------+---------------------+----------------+--------------+ +| Type | Decimal(38, 0) NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = d256 +raw expr : eq(n_d128::Decimal(38, 0) NULL, d256::Decimal(76, 0)) +checked expr : eq(n_d128, CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------------------+----------------+--------------+ +| | n_d128 | d256 | Output | ++--------+---------------------+----------------+--------------+ +| Type | Decimal(38, 0) NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > n_d256 +raw expr : gt(n_d128::Decimal(38, 0) NULL, n_d256::Decimal(76, 0) NULL) +checked expr : gt(n_d128, n_d256) +optimized expr : false +evaluation: ++--------+---------------------+---------------------+--------------+ +| | n_d128 | n_d256 | Output | ++--------+---------------------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = n_d256 +raw expr : eq(n_d128::Decimal(38, 0) NULL, n_d256::Decimal(76, 0) NULL) +checked expr : eq(n_d128, n_d256) +optimized expr : true +evaluation: ++--------+---------------------+---------------------+--------------+ +| | n_d128 | n_d256 | Output | ++--------+---------------------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > i32 +raw expr : gt(d256::Decimal(76, 0), i32::Int32) +checked expr : gt(d256, to_decimal(10, 0)(i32)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | i32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Int32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = i32 +raw expr : eq(d256::Decimal(76, 0), i32::Int32) +checked expr : eq(d256, to_decimal(10, 0)(i32)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | i32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Int32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d256 > i64 +raw expr : gt(d256::Decimal(76, 0), i64::Int64) +checked expr : gt(d256, to_decimal(19, 0)(i64)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | i64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Int64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = i64 +raw expr : eq(d256::Decimal(76, 0), i64::Int64) +checked expr : eq(d256, to_decimal(19, 0)(i64)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | i64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Int64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d256 > u32 +raw expr : gt(d256::Decimal(76, 0), u32::UInt32) +checked expr : gt(d256, to_decimal(10, 0)(u32)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | u32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | UInt32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = u32 +raw expr : eq(d256::Decimal(76, 0), u32::UInt32) +checked expr : eq(d256, to_decimal(10, 0)(u32)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | u32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | UInt32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d256 > u64 +raw expr : gt(d256::Decimal(76, 0), u64::UInt64) +checked expr : gt(d256, to_decimal(20, 0)(u64)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | u64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | UInt64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = u64 +raw expr : eq(d256::Decimal(76, 0), u64::UInt64) +checked expr : eq(d256, to_decimal(20, 0)(u64)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | u64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | UInt64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d256 > n_i32 +raw expr : gt(d256::Decimal(76, 0), n_i32::Int32 NULL) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+----------------+--------------+ +| | n_i32 | d256 | Output | ++--------+------------+----------------+--------------+ +| Type | Int32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 = n_i32 +raw expr : eq(d256::Decimal(76, 0), n_i32::Int32 NULL) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+----------------+--------------+ +| | n_i32 | d256 | Output | ++--------+------------+----------------+--------------+ +| Type | Int32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > n_i64 +raw expr : gt(d256::Decimal(76, 0), n_i64::Int64 NULL) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+----------------+--------------+ +| | n_i64 | d256 | Output | ++--------+------------+----------------+--------------+ +| Type | Int64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 = n_i64 +raw expr : eq(d256::Decimal(76, 0), n_i64::Int64 NULL) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+----------------+--------------+ +| | n_i64 | d256 | Output | ++--------+------------+----------------+--------------+ +| Type | Int64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > n_u32 +raw expr : gt(d256::Decimal(76, 0), n_u32::UInt32 NULL) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u32 | d256 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 = n_u32 +raw expr : eq(d256::Decimal(76, 0), n_u32::UInt32 NULL) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u32 | d256 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > n_u64 +raw expr : gt(d256::Decimal(76, 0), n_u64::UInt64 NULL) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u64 | d256 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 = n_u64 +raw expr : eq(d256::Decimal(76, 0), n_u64::UInt64 NULL) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u64 | d256 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > f32 +raw expr : gt(d256::Decimal(76, 0), f32::Float32) +checked expr : gt(to_float64(d256), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | f32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Float32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = f32 +raw expr : eq(d256::Decimal(76, 0), f32::Float32) +checked expr : eq(to_float64(d256), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | f32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Float32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d256 > n_f32 +raw expr : gt(d256::Decimal(76, 0), n_f32::Float32 NULL) +checked expr : gt(CAST(d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f32 | d256 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 = n_f32 +raw expr : eq(d256::Decimal(76, 0), n_f32::Float32 NULL) +checked expr : eq(CAST(d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f32 | d256 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > f64 +raw expr : gt(d256::Decimal(76, 0), f64::Float64) +checked expr : gt(to_float64(d256), f64) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | f64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Float64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = f64 +raw expr : eq(d256::Decimal(76, 0), f64::Float64) +checked expr : eq(to_float64(d256), f64) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | f64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Float64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d256 > n_f64 +raw expr : gt(d256::Decimal(76, 0), n_f64::Float64 NULL) +checked expr : gt(CAST(d256 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f64 | d256 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 = n_f64 +raw expr : eq(d256::Decimal(76, 0), n_f64::Float64 NULL) +checked expr : eq(CAST(d256 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f64 | d256 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > d128 +raw expr : gt(d256::Decimal(76, 0), d128::Decimal(38, 0)) +checked expr : gt(d256, d128) +optimized expr : false +evaluation: ++--------+----------------+----------------+---------+ +| | d128 | d256 | Output | ++--------+----------------+----------------+---------+ +| Type | Decimal(38, 0) | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+----------------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = d128 +raw expr : eq(d256::Decimal(76, 0), d128::Decimal(38, 0)) +checked expr : eq(d256, d128) +optimized expr : true +evaluation: ++--------+----------------+----------------+---------+ +| | d128 | d256 | Output | ++--------+----------------+----------------+---------+ +| Type | Decimal(38, 0) | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+----------------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d256 > n_d128 +raw expr : gt(d256::Decimal(76, 0), n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------------------+----------------+--------------+ +| | n_d128 | d256 | Output | ++--------+---------------------+----------------+--------------+ +| Type | Decimal(38, 0) NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 = n_d128 +raw expr : eq(d256::Decimal(76, 0), n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------------------+----------------+--------------+ +| | n_d128 | d256 | Output | ++--------+---------------------+----------------+--------------+ +| Type | Decimal(38, 0) NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > d256 +raw expr : gt(d256::Decimal(76, 0), d256::Decimal(76, 0)) +checked expr : gt(d256, d256) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = d256 +raw expr : eq(d256::Decimal(76, 0), d256::Decimal(76, 0)) +checked expr : eq(d256, d256) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : d256 > n_d256 +raw expr : gt(d256::Decimal(76, 0), n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+----------------+---------------------+--------------+ +| | d256 | n_d256 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(76, 0) | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d256 | Decimal256([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 = n_d256 +raw expr : eq(d256::Decimal(76, 0), n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+----------------+---------------------+--------------+ +| | d256 | n_d256 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(76, 0) | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d256 | Decimal256([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > i32 +raw expr : gt(n_d256::Decimal(76, 0) NULL, i32::Int32) +checked expr : gt(n_d256, CAST(i32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | i32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = i32 +raw expr : eq(n_d256::Decimal(76, 0) NULL, i32::Int32) +checked expr : eq(n_d256, CAST(i32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | i32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > i64 +raw expr : gt(n_d256::Decimal(76, 0) NULL, i64::Int64) +checked expr : gt(n_d256, CAST(i64 AS Decimal(19, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | i64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = i64 +raw expr : eq(n_d256::Decimal(76, 0) NULL, i64::Int64) +checked expr : eq(n_d256, CAST(i64 AS Decimal(19, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | i64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > u32 +raw expr : gt(n_d256::Decimal(76, 0) NULL, u32::UInt32) +checked expr : gt(n_d256, CAST(u32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | u32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = u32 +raw expr : eq(n_d256::Decimal(76, 0) NULL, u32::UInt32) +checked expr : eq(n_d256, CAST(u32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | u32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > u64 +raw expr : gt(n_d256::Decimal(76, 0) NULL, u64::UInt64) +checked expr : gt(n_d256, CAST(u64 AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | u64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = u64 +raw expr : eq(n_d256::Decimal(76, 0) NULL, u64::UInt64) +checked expr : eq(n_d256, CAST(u64 AS Decimal(20, 0) NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | u64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > n_i32 +raw expr : gt(n_d256::Decimal(76, 0) NULL, n_i32::Int32 NULL) +checked expr : gt(n_d256, CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i32 | n_d256 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = n_i32 +raw expr : eq(n_d256::Decimal(76, 0) NULL, n_i32::Int32 NULL) +checked expr : eq(n_d256, CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i32 | n_d256 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > n_i64 +raw expr : gt(n_d256::Decimal(76, 0) NULL, n_i64::Int64 NULL) +checked expr : gt(n_d256, CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i64 | n_d256 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = n_i64 +raw expr : eq(n_d256::Decimal(76, 0) NULL, n_i64::Int64 NULL) +checked expr : eq(n_d256, CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i64 | n_d256 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > n_u32 +raw expr : gt(n_d256::Decimal(76, 0) NULL, n_u32::UInt32 NULL) +checked expr : gt(n_d256, CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u32 | n_d256 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = n_u32 +raw expr : eq(n_d256::Decimal(76, 0) NULL, n_u32::UInt32 NULL) +checked expr : eq(n_d256, CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u32 | n_d256 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > n_u64 +raw expr : gt(n_d256::Decimal(76, 0) NULL, n_u64::UInt64 NULL) +checked expr : gt(n_d256, CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u64 | n_d256 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = n_u64 +raw expr : eq(n_d256::Decimal(76, 0) NULL, n_u64::UInt64 NULL) +checked expr : eq(n_d256, CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u64 | n_d256 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > f32 +raw expr : gt(n_d256::Decimal(76, 0) NULL, f32::Float32) +checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | f32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = f32 +raw expr : eq(n_d256::Decimal(76, 0) NULL, f32::Float32) +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | f32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > n_f32 +raw expr : gt(n_d256::Decimal(76, 0) NULL, n_f32::Float32 NULL) +checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f32 | n_d256 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = n_f32 +raw expr : eq(n_d256::Decimal(76, 0) NULL, n_f32::Float32 NULL) +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f32 | n_d256 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > f64 +raw expr : gt(n_d256::Decimal(76, 0) NULL, f64::Float64) +checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | f64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = f64 +raw expr : eq(n_d256::Decimal(76, 0) NULL, f64::Float64) +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | f64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > n_f64 +raw expr : gt(n_d256::Decimal(76, 0) NULL, n_f64::Float64 NULL) +checked expr : gt(CAST(n_d256 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f64 | n_d256 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = n_f64 +raw expr : eq(n_d256::Decimal(76, 0) NULL, n_f64::Float64 NULL) +checked expr : eq(CAST(n_d256 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f64 | n_d256 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > d128 +raw expr : gt(n_d256::Decimal(76, 0) NULL, d128::Decimal(38, 0)) +checked expr : gt(n_d256, CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : false +evaluation: ++--------+----------------+---------------------+--------------+ +| | d128 | n_d256 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(38, 0) | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d128 | Decimal128([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = d128 +raw expr : eq(n_d256::Decimal(76, 0) NULL, d128::Decimal(38, 0)) +checked expr : eq(n_d256, CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : true +evaluation: ++--------+----------------+---------------------+--------------+ +| | d128 | n_d256 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(38, 0) | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d128 | Decimal128([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > n_d128 +raw expr : gt(n_d256::Decimal(76, 0) NULL, n_d128::Decimal(38, 0) NULL) +checked expr : gt(n_d256, n_d128) +optimized expr : false +evaluation: ++--------+---------------------+---------------------+--------------+ +| | n_d128 | n_d256 | Output | ++--------+---------------------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = n_d128 +raw expr : eq(n_d256::Decimal(76, 0) NULL, n_d128::Decimal(38, 0) NULL) +checked expr : eq(n_d256, n_d128) +optimized expr : true +evaluation: ++--------+---------------------+---------------------+--------------+ +| | n_d128 | n_d256 | Output | ++--------+---------------------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > d256 +raw expr : gt(n_d256::Decimal(76, 0) NULL, d256::Decimal(76, 0)) +checked expr : gt(n_d256, CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : false +evaluation: ++--------+----------------+---------------------+--------------+ +| | d256 | n_d256 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(76, 0) | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d256 | Decimal256([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = d256 +raw expr : eq(n_d256::Decimal(76, 0) NULL, d256::Decimal(76, 0)) +checked expr : eq(n_d256, CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : true +evaluation: ++--------+----------------+---------------------+--------------+ +| | d256 | n_d256 | Output | ++--------+----------------+---------------------+--------------+ +| Type | Decimal(76, 0) | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+----------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| d256 | Decimal256([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > n_d256 +raw expr : gt(n_d256::Decimal(76, 0) NULL, n_d256::Decimal(76, 0) NULL) +checked expr : gt(n_d256, n_d256) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = n_d256 +raw expr : eq(n_d256::Decimal(76, 0) NULL, n_d256::Decimal(76, 0) NULL) +checked expr : eq(n_d256, n_d256) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/float.txt b/src/query/functions/tests/it/type_check/testdata/float.txt new file mode 100644 index 0000000000000..d1daff8024292 --- /dev/null +++ b/src/query/functions/tests/it/type_check/testdata/float.txt @@ -0,0 +1,2808 @@ +ast : f32 > i32 +raw expr : gt(f32::Float32, i32::Int32) +checked expr : gt(to_float64(f32), to_float64(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | f32 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = i32 +raw expr : eq(f32::Float32, i32::Int32) +checked expr : eq(to_float64(f32), to_float64(i32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | f32 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f32 > i64 +raw expr : gt(f32::Float32, i64::Int64) +checked expr : gt(to_float64(f32), to_float64(i64)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i64 | f32 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = i64 +raw expr : eq(f32::Float32, i64::Int64) +checked expr : eq(to_float64(f32), to_float64(i64)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i64 | f32 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f32 > u32 +raw expr : gt(f32::Float32, u32::UInt32) +checked expr : gt(to_float64(f32), to_float64(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u32 | f32 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = u32 +raw expr : eq(f32::Float32, u32::UInt32) +checked expr : eq(to_float64(f32), to_float64(u32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u32 | f32 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f32 > u64 +raw expr : gt(f32::Float32, u64::UInt64) +checked expr : gt(to_float64(f32), to_float64(u64)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u64 | f32 | Output | ++--------+---------+---------+---------+ +| Type | UInt64 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = u64 +raw expr : eq(f32::Float32, u64::UInt64) +checked expr : eq(to_float64(f32), to_float64(u64)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u64 | f32 | Output | ++--------+---------+---------+---------+ +| Type | UInt64 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f32 > n_i32 +raw expr : gt(f32::Float32, n_i32::Int32 NULL) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | f32 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 = n_i32 +raw expr : eq(f32::Float32, n_i32::Int32 NULL) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | f32 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 > n_i64 +raw expr : gt(f32::Float32, n_i64::Int64 NULL) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | f32 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 = n_i64 +raw expr : eq(f32::Float32, n_i64::Int64 NULL) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | f32 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 > n_u32 +raw expr : gt(f32::Float32, n_u32::UInt32 NULL) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | f32 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 = n_u32 +raw expr : eq(f32::Float32, n_u32::UInt32 NULL) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | f32 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 > n_u64 +raw expr : gt(f32::Float32, n_u64::UInt64 NULL) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u64 | f32 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt64 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 = n_u64 +raw expr : eq(f32::Float32, n_u64::UInt64 NULL) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u64 | f32 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt64 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 > f32 +raw expr : gt(f32::Float32, f32::Float32) +checked expr : gt(f32, f32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = f32 +raw expr : eq(f32::Float32, f32::Float32) +checked expr : eq(f32, f32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f32 > n_f32 +raw expr : gt(f32::Float32, n_f32::Float32 NULL) +checked expr : gt(CAST(f32 AS Float32 NULL), n_f32) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | f32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Float32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 = n_f32 +raw expr : eq(f32::Float32, n_f32::Float32 NULL) +checked expr : eq(CAST(f32 AS Float32 NULL), n_f32) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | f32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Float32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 > f64 +raw expr : gt(f32::Float32, f64::Float64) +checked expr : gt(to_float64(f32), f64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | f32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Float32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = f64 +raw expr : eq(f32::Float32, f64::Float64) +checked expr : eq(to_float64(f32), f64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | f32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Float32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f32 > n_f64 +raw expr : gt(f32::Float32, n_f64::Float64 NULL) +checked expr : gt(CAST(f32 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | f32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Float32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 = n_f64 +raw expr : eq(f32::Float32, n_f64::Float64 NULL) +checked expr : eq(CAST(f32 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | f32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Float32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 > d128 +raw expr : gt(f32::Float32, d128::Decimal(38, 0)) +checked expr : gt(to_float64(f32), to_float64(d128)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | f32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Float32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = d128 +raw expr : eq(f32::Float32, d128::Decimal(38, 0)) +checked expr : eq(to_float64(f32), to_float64(d128)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | f32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Float32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f32 > n_d128 +raw expr : gt(f32::Float32, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | f32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 = n_d128 +raw expr : eq(f32::Float32, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | f32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 > d256 +raw expr : gt(f32::Float32, d256::Decimal(76, 0)) +checked expr : gt(to_float64(f32), to_float64(d256)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | f32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Float32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = d256 +raw expr : eq(f32::Float32, d256::Decimal(76, 0)) +checked expr : eq(to_float64(f32), to_float64(d256)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | f32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Float32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f32 > n_d256 +raw expr : gt(f32::Float32, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | f32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f32 = n_d256 +raw expr : eq(f32::Float32, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | f32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > i32 +raw expr : gt(n_f32::Float32 NULL, i32::Int32) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(i32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | i32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Int32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = i32 +raw expr : eq(n_f32::Float32 NULL, i32::Int32) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(i32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | i32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Int32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > i64 +raw expr : gt(n_f32::Float32 NULL, i64::Int64) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(i64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | i64 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Int64 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = i64 +raw expr : eq(n_f32::Float32 NULL, i64::Int64) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(i64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | i64 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Int64 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > u32 +raw expr : gt(n_f32::Float32 NULL, u32::UInt32) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(u32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | u32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = u32 +raw expr : eq(n_f32::Float32 NULL, u32::UInt32) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(u32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | u32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > u64 +raw expr : gt(n_f32::Float32 NULL, u64::UInt64) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(u64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | u64 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt64 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = u64 +raw expr : eq(n_f32::Float32 NULL, u64::UInt64) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(u64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | u64 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt64 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > n_i32 +raw expr : gt(n_f32::Float32 NULL, n_i32::Int32 NULL) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+--------------+ +| | n_i32 | n_f32 | Output | ++--------+------------+--------------+--------------+ +| Type | Int32 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = n_i32 +raw expr : eq(n_f32::Float32 NULL, n_i32::Int32 NULL) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+--------------+ +| | n_i32 | n_f32 | Output | ++--------+------------+--------------+--------------+ +| Type | Int32 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > n_i64 +raw expr : gt(n_f32::Float32 NULL, n_i64::Int64 NULL) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+--------------+ +| | n_i64 | n_f32 | Output | ++--------+------------+--------------+--------------+ +| Type | Int64 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = n_i64 +raw expr : eq(n_f32::Float32 NULL, n_i64::Int64 NULL) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+--------------+ +| | n_i64 | n_f32 | Output | ++--------+------------+--------------+--------------+ +| Type | Int64 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > n_u32 +raw expr : gt(n_f32::Float32 NULL, n_u32::UInt32 NULL) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u32 | n_f32 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt32 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = n_u32 +raw expr : eq(n_f32::Float32 NULL, n_u32::UInt32 NULL) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u32 | n_f32 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt32 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > n_u64 +raw expr : gt(n_f32::Float32 NULL, n_u64::UInt64 NULL) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u64 | n_f32 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt64 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = n_u64 +raw expr : eq(n_f32::Float32 NULL, n_u64::UInt64 NULL) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u64 | n_f32 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt64 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > f32 +raw expr : gt(n_f32::Float32 NULL, f32::Float32) +checked expr : gt(n_f32, CAST(f32 AS Float32 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | f32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Float32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = f32 +raw expr : eq(n_f32::Float32 NULL, f32::Float32) +checked expr : eq(n_f32, CAST(f32 AS Float32 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | f32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Float32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > n_f32 +raw expr : gt(n_f32::Float32 NULL, n_f32::Float32 NULL) +checked expr : gt(n_f32, n_f32) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = n_f32 +raw expr : eq(n_f32::Float32 NULL, n_f32::Float32 NULL) +checked expr : eq(n_f32, n_f32) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > f64 +raw expr : gt(n_f32::Float32 NULL, f64::Float64) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+---------+--------------+ +| | n_f32 | f64 | Output | ++--------+--------------+---------+--------------+ +| Type | Float32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = f64 +raw expr : eq(n_f32::Float32 NULL, f64::Float64) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+---------+--------------+ +| | n_f32 | f64 | Output | ++--------+--------------+---------+--------------+ +| Type | Float32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > n_f64 +raw expr : gt(n_f32::Float32 NULL, n_f64::Float64 NULL) +checked expr : gt(CAST(n_f32 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+--------------+ +| | n_f32 | n_f64 | Output | ++--------+--------------+--------------+--------------+ +| Type | Float32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = n_f64 +raw expr : eq(n_f32::Float32 NULL, n_f64::Float64 NULL) +checked expr : eq(CAST(n_f32 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+--------------+--------------+ +| | n_f32 | n_f64 | Output | ++--------+--------------+--------------+--------------+ +| Type | Float32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > d128 +raw expr : gt(n_f32::Float32 NULL, d128::Decimal(38, 0)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(d128 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f32 | d128 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = d128 +raw expr : eq(n_f32::Float32 NULL, d128::Decimal(38, 0)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(d128 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f32 | d128 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > n_d128 +raw expr : gt(n_f32::Float32 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f32 | n_d128 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = n_d128 +raw expr : eq(n_f32::Float32 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f32 | n_d128 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > d256 +raw expr : gt(n_f32::Float32 NULL, d256::Decimal(76, 0)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(d256 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f32 | d256 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = d256 +raw expr : eq(n_f32::Float32 NULL, d256::Decimal(76, 0)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(d256 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f32 | d256 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > n_d256 +raw expr : gt(n_f32::Float32 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f32 | n_d256 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = n_d256 +raw expr : eq(n_f32::Float32 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f32 | n_d256 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > i32 +raw expr : gt(f64::Float64, i32::Int32) +checked expr : gt(f64, to_float64(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = i32 +raw expr : eq(f64::Float64, i32::Int32) +checked expr : eq(f64, to_float64(i32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f64 > i64 +raw expr : gt(f64::Float64, i64::Int64) +checked expr : gt(f64, to_float64(i64)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i64 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = i64 +raw expr : eq(f64::Float64, i64::Int64) +checked expr : eq(f64, to_float64(i64)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i64 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f64 > u32 +raw expr : gt(f64::Float64, u32::UInt32) +checked expr : gt(f64, to_float64(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = u32 +raw expr : eq(f64::Float64, u32::UInt32) +checked expr : eq(f64, to_float64(u32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f64 > u64 +raw expr : gt(f64::Float64, u64::UInt64) +checked expr : gt(f64, to_float64(u64)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u64 | f64 | Output | ++--------+---------+---------+---------+ +| Type | UInt64 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = u64 +raw expr : eq(f64::Float64, u64::UInt64) +checked expr : eq(f64, to_float64(u64)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u64 | f64 | Output | ++--------+---------+---------+---------+ +| Type | UInt64 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f64 > n_i32 +raw expr : gt(f64::Float64, n_i32::Int32 NULL) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | f64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 = n_i32 +raw expr : eq(f64::Float64, n_i32::Int32 NULL) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | f64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > n_i64 +raw expr : gt(f64::Float64, n_i64::Int64 NULL) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | f64 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 = n_i64 +raw expr : eq(f64::Float64, n_i64::Int64 NULL) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | f64 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > n_u32 +raw expr : gt(f64::Float64, n_u32::UInt32 NULL) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | f64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 = n_u32 +raw expr : eq(f64::Float64, n_u32::UInt32 NULL) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | f64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > n_u64 +raw expr : gt(f64::Float64, n_u64::UInt64 NULL) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u64 | f64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt64 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 = n_u64 +raw expr : eq(f64::Float64, n_u64::UInt64 NULL) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u64 | f64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt64 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > f32 +raw expr : gt(f64::Float64, f32::Float32) +checked expr : gt(f64, to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | f32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Float32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = f32 +raw expr : eq(f64::Float64, f32::Float32) +checked expr : eq(f64, to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | f32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Float32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f64 > n_f32 +raw expr : gt(f64::Float64, n_f32::Float32 NULL) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+---------+--------------+ +| | n_f32 | f64 | Output | ++--------+--------------+---------+--------------+ +| Type | Float32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 = n_f32 +raw expr : eq(f64::Float64, n_f32::Float32 NULL) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+---------+--------------+ +| | n_f32 | f64 | Output | ++--------+--------------+---------+--------------+ +| Type | Float32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > f64 +raw expr : gt(f64::Float64, f64::Float64) +checked expr : gt(f64, f64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = f64 +raw expr : eq(f64::Float64, f64::Float64) +checked expr : eq(f64, f64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f64 > n_f64 +raw expr : gt(f64::Float64, n_f64::Float64 NULL) +checked expr : gt(CAST(f64 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | f64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Float64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 = n_f64 +raw expr : eq(f64::Float64, n_f64::Float64 NULL) +checked expr : eq(CAST(f64 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | f64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Float64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > d128 +raw expr : gt(f64::Float64, d128::Decimal(38, 0)) +checked expr : gt(f64, to_float64(d128)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | f64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Float64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = d128 +raw expr : eq(f64::Float64, d128::Decimal(38, 0)) +checked expr : eq(f64, to_float64(d128)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | f64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Float64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f64 > n_d128 +raw expr : gt(f64::Float64, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | f64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 = n_d128 +raw expr : eq(f64::Float64, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | f64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > d256 +raw expr : gt(f64::Float64, d256::Decimal(76, 0)) +checked expr : gt(f64, to_float64(d256)) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | f64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Float64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = d256 +raw expr : eq(f64::Float64, d256::Decimal(76, 0)) +checked expr : eq(f64, to_float64(d256)) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | f64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Float64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : f64 > n_d256 +raw expr : gt(f64::Float64, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | f64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 = n_d256 +raw expr : eq(f64::Float64, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | f64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Float64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > i32 +raw expr : gt(n_f64::Float64 NULL, i32::Int32) +checked expr : gt(n_f64, CAST(i32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | i32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Int32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = i32 +raw expr : eq(n_f64::Float64 NULL, i32::Int32) +checked expr : eq(n_f64, CAST(i32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | i32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Int32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > i64 +raw expr : gt(n_f64::Float64 NULL, i64::Int64) +checked expr : gt(n_f64, CAST(i64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | i64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Int64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = i64 +raw expr : eq(n_f64::Float64 NULL, i64::Int64) +checked expr : eq(n_f64, CAST(i64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | i64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Int64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > u32 +raw expr : gt(n_f64::Float64 NULL, u32::UInt32) +checked expr : gt(n_f64, CAST(u32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | u32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = u32 +raw expr : eq(n_f64::Float64 NULL, u32::UInt32) +checked expr : eq(n_f64, CAST(u32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | u32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > u64 +raw expr : gt(n_f64::Float64 NULL, u64::UInt64) +checked expr : gt(n_f64, CAST(u64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | u64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = u64 +raw expr : eq(n_f64::Float64 NULL, u64::UInt64) +checked expr : eq(n_f64, CAST(u64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | u64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > n_i32 +raw expr : gt(n_f64::Float64 NULL, n_i32::Int32 NULL) +checked expr : gt(n_f64, CAST(n_i32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+--------------+ +| | n_i32 | n_f64 | Output | ++--------+------------+--------------+--------------+ +| Type | Int32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = n_i32 +raw expr : eq(n_f64::Float64 NULL, n_i32::Int32 NULL) +checked expr : eq(n_f64, CAST(n_i32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+--------------+ +| | n_i32 | n_f64 | Output | ++--------+------------+--------------+--------------+ +| Type | Int32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > n_i64 +raw expr : gt(n_f64::Float64 NULL, n_i64::Int64 NULL) +checked expr : gt(n_f64, CAST(n_i64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+--------------+ +| | n_i64 | n_f64 | Output | ++--------+------------+--------------+--------------+ +| Type | Int64 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = n_i64 +raw expr : eq(n_f64::Float64 NULL, n_i64::Int64 NULL) +checked expr : eq(n_f64, CAST(n_i64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+--------------+ +| | n_i64 | n_f64 | Output | ++--------+------------+--------------+--------------+ +| Type | Int64 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > n_u32 +raw expr : gt(n_f64::Float64 NULL, n_u32::UInt32 NULL) +checked expr : gt(n_f64, CAST(n_u32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u32 | n_f64 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = n_u32 +raw expr : eq(n_f64::Float64 NULL, n_u32::UInt32 NULL) +checked expr : eq(n_f64, CAST(n_u32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u32 | n_f64 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > n_u64 +raw expr : gt(n_f64::Float64 NULL, n_u64::UInt64 NULL) +checked expr : gt(n_f64, CAST(n_u64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u64 | n_f64 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt64 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = n_u64 +raw expr : eq(n_f64::Float64 NULL, n_u64::UInt64 NULL) +checked expr : eq(n_f64, CAST(n_u64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u64 | n_f64 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt64 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > f32 +raw expr : gt(n_f64::Float64 NULL, f32::Float32) +checked expr : gt(n_f64, CAST(f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | f32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Float32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = f32 +raw expr : eq(n_f64::Float64 NULL, f32::Float32) +checked expr : eq(n_f64, CAST(f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | f32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Float32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f32 | Float32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > n_f32 +raw expr : gt(n_f64::Float64 NULL, n_f32::Float32 NULL) +checked expr : gt(n_f64, CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+--------------+ +| | n_f32 | n_f64 | Output | ++--------+--------------+--------------+--------------+ +| Type | Float32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = n_f32 +raw expr : eq(n_f64::Float64 NULL, n_f32::Float32 NULL) +checked expr : eq(n_f64, CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+--------------+--------------+ +| | n_f32 | n_f64 | Output | ++--------+--------------+--------------+--------------+ +| Type | Float32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > f64 +raw expr : gt(n_f64::Float64 NULL, f64::Float64) +checked expr : gt(n_f64, CAST(f64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | f64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Float64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = f64 +raw expr : eq(n_f64::Float64 NULL, f64::Float64) +checked expr : eq(n_f64, CAST(f64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | f64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Float64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| f64 | Float64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > n_f64 +raw expr : gt(n_f64::Float64 NULL, n_f64::Float64 NULL) +checked expr : gt(n_f64, n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = n_f64 +raw expr : eq(n_f64::Float64 NULL, n_f64::Float64 NULL) +checked expr : eq(n_f64, n_f64) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > d128 +raw expr : gt(n_f64::Float64 NULL, d128::Decimal(38, 0)) +checked expr : gt(n_f64, CAST(d128 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f64 | d128 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = d128 +raw expr : eq(n_f64::Float64 NULL, d128::Decimal(38, 0)) +checked expr : eq(n_f64, CAST(d128 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f64 | d128 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > n_d128 +raw expr : gt(n_f64::Float64 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : gt(n_f64, CAST(n_d128 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f64 | n_d128 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = n_d128 +raw expr : eq(n_f64::Float64 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : eq(n_f64, CAST(n_d128 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f64 | n_d128 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > d256 +raw expr : gt(n_f64::Float64 NULL, d256::Decimal(76, 0)) +checked expr : gt(n_f64, CAST(d256 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f64 | d256 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = d256 +raw expr : eq(n_f64::Float64 NULL, d256::Decimal(76, 0)) +checked expr : eq(n_f64, CAST(d256 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+----------------+--------------+ +| | n_f64 | d256 | Output | ++--------+--------------+----------------+--------------+ +| Type | Float64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > n_d256 +raw expr : gt(n_f64::Float64 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : gt(n_f64, CAST(n_d256 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f64 | n_d256 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = n_d256 +raw expr : eq(n_f64::Float64 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : eq(n_f64, CAST(n_d256 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+---------------------+--------------+ +| | n_f64 | n_d256 | Output | ++--------+--------------+---------------------+--------------+ +| Type | Float64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+--------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt b/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt new file mode 100644 index 0000000000000..7df25a1ff020a --- /dev/null +++ b/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt @@ -0,0 +1,1404 @@ +ast : n_i32 > i32 +raw expr : gt(n_i32::Int32 NULL, i32::Int32) +checked expr : gt(n_i32, CAST(i32 AS Int32 NULL)) +optimized expr : false +evaluation: ++--------+---------+------------+--------------+ +| | i32 | n_i32 | Output | ++--------+---------+------------+--------------+ +| Type | Int32 | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = i32 +raw expr : eq(n_i32::Int32 NULL, i32::Int32) +checked expr : eq(n_i32, CAST(i32 AS Int32 NULL)) +optimized expr : true +evaluation: ++--------+---------+------------+--------------+ +| | i32 | n_i32 | Output | ++--------+---------+------------+--------------+ +| Type | Int32 | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > i64 +raw expr : gt(n_i32::Int32 NULL, i64::Int64) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | i64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Int64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| i64 | Int64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = i64 +raw expr : eq(n_i32::Int32 NULL, i64::Int64) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | i64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Int64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| i64 | Int64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > u32 +raw expr : gt(n_i32::Int32 NULL, u32::UInt32) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(u32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | u32 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | UInt32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| u32 | UInt32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = u32 +raw expr : eq(n_i32::Int32 NULL, u32::UInt32) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(u32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | u32 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | UInt32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| u32 | UInt32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > u64 +raw expr : gt(n_i32::Int32 NULL, u64::UInt64) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(u64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | u64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = u64 +raw expr : eq(n_i32::Int32 NULL, u64::UInt64) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(u64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | u64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > n_i32 +raw expr : gt(n_i32::Int32 NULL, n_i32::Int32 NULL) +checked expr : gt(n_i32, n_i32) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = n_i32 +raw expr : eq(n_i32::Int32 NULL, n_i32::Int32 NULL) +checked expr : eq(n_i32, n_i32) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > n_i64 +raw expr : gt(n_i32::Int32 NULL, n_i64::Int64 NULL) +checked expr : gt(CAST(n_i32 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+------------+------------+--------------+ +| | n_i32 | n_i64 | Output | ++--------+------------+------------+--------------+ +| Type | Int32 NULL | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = n_i64 +raw expr : eq(n_i32::Int32 NULL, n_i64::Int64 NULL) +checked expr : eq(CAST(n_i32 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+------------+------------+--------------+ +| | n_i32 | n_i64 | Output | ++--------+------------+------------+--------------+ +| Type | Int32 NULL | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > n_u32 +raw expr : gt(n_i32::Int32 NULL, n_u32::UInt32 NULL) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+-------------+--------------+ +| | n_i32 | n_u32 | Output | ++--------+------------+-------------+--------------+ +| Type | Int32 NULL | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = n_u32 +raw expr : eq(n_i32::Int32 NULL, n_u32::UInt32 NULL) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+-------------+--------------+ +| | n_i32 | n_u32 | Output | ++--------+------------+-------------+--------------+ +| Type | Int32 NULL | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > n_u64 +raw expr : gt(n_i32::Int32 NULL, n_u64::UInt64 NULL) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+-------------+--------------+ +| | n_i32 | n_u64 | Output | ++--------+------------+-------------+--------------+ +| Type | Int32 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = n_u64 +raw expr : eq(n_i32::Int32 NULL, n_u64::UInt64 NULL) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+-------------+--------------+ +| | n_i32 | n_u64 | Output | ++--------+------------+-------------+--------------+ +| Type | Int32 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > f32 +raw expr : gt(n_i32::Int32 NULL, f32::Float32) +checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | f32 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = f32 +raw expr : eq(n_i32::Int32 NULL, f32::Float32) +checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | f32 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > n_f32 +raw expr : gt(n_i32::Int32 NULL, n_f32::Float32 NULL) +checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+--------------+ +| | n_i32 | n_f32 | Output | ++--------+------------+--------------+--------------+ +| Type | Int32 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = n_f32 +raw expr : eq(n_i32::Int32 NULL, n_f32::Float32 NULL) +checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+--------------+ +| | n_i32 | n_f32 | Output | ++--------+------------+--------------+--------------+ +| Type | Int32 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > f64 +raw expr : gt(n_i32::Int32 NULL, f64::Float64) +checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | f64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = f64 +raw expr : eq(n_i32::Int32 NULL, f64::Float64) +checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | f64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > n_f64 +raw expr : gt(n_i32::Int32 NULL, n_f64::Float64 NULL) +checked expr : gt(CAST(n_i32 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+------------+--------------+--------------+ +| | n_i32 | n_f64 | Output | ++--------+------------+--------------+--------------+ +| Type | Int32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = n_f64 +raw expr : eq(n_i32::Int32 NULL, n_f64::Float64 NULL) +checked expr : eq(CAST(n_i32 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+------------+--------------+--------------+ +| | n_i32 | n_f64 | Output | ++--------+------------+--------------+--------------+ +| Type | Int32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > d128 +raw expr : gt(n_i32::Int32 NULL, d128::Decimal(38, 0)) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+----------------+--------------+ +| | n_i32 | d128 | Output | ++--------+------------+----------------+--------------+ +| Type | Int32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = d128 +raw expr : eq(n_i32::Int32 NULL, d128::Decimal(38, 0)) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+----------------+--------------+ +| | n_i32 | d128 | Output | ++--------+------------+----------------+--------------+ +| Type | Int32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > n_d128 +raw expr : gt(n_i32::Int32 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i32 | n_d128 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = n_d128 +raw expr : eq(n_i32::Int32 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i32 | n_d128 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > d256 +raw expr : gt(n_i32::Int32 NULL, d256::Decimal(76, 0)) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+----------------+--------------+ +| | n_i32 | d256 | Output | ++--------+------------+----------------+--------------+ +| Type | Int32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = d256 +raw expr : eq(n_i32::Int32 NULL, d256::Decimal(76, 0)) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+----------------+--------------+ +| | n_i32 | d256 | Output | ++--------+------------+----------------+--------------+ +| Type | Int32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > n_d256 +raw expr : gt(n_i32::Int32 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i32 | n_d256 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = n_d256 +raw expr : eq(n_i32::Int32 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i32 | n_d256 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > i32 +raw expr : gt(n_i64::Int64 NULL, i32::Int32) +checked expr : gt(n_i64, CAST(i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+------------+--------------+ +| | i32 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | Int32 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = i32 +raw expr : eq(n_i64::Int64 NULL, i32::Int32) +checked expr : eq(n_i64, CAST(i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+------------+--------------+ +| | i32 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | Int32 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > i64 +raw expr : gt(n_i64::Int64 NULL, i64::Int64) +checked expr : gt(n_i64, CAST(i64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+------------+--------------+ +| | i64 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | Int64 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = i64 +raw expr : eq(n_i64::Int64 NULL, i64::Int64) +checked expr : eq(n_i64, CAST(i64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+------------+--------------+ +| | i64 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | Int64 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > u32 +raw expr : gt(n_i64::Int64 NULL, u32::UInt32) +checked expr : gt(n_i64, CAST(u32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+------------+--------------+ +| | u32 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | UInt32 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = u32 +raw expr : eq(n_i64::Int64 NULL, u32::UInt32) +checked expr : eq(n_i64, CAST(u32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+------------+--------------+ +| | u32 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | UInt32 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > u64 +raw expr : gt(n_i64::Int64 NULL, u64::UInt64) +checked expr : gt(n_i64, CAST(u64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | u64 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = u64 +raw expr : eq(n_i64::Int64 NULL, u64::UInt64) +checked expr : eq(n_i64, CAST(u64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | u64 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > n_i32 +raw expr : gt(n_i64::Int64 NULL, n_i32::Int32 NULL) +checked expr : gt(n_i64, CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+------------+--------------+ +| | n_i32 | n_i64 | Output | ++--------+------------+------------+--------------+ +| Type | Int32 NULL | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = n_i32 +raw expr : eq(n_i64::Int64 NULL, n_i32::Int32 NULL) +checked expr : eq(n_i64, CAST(n_i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+------------+--------------+ +| | n_i32 | n_i64 | Output | ++--------+------------+------------+--------------+ +| Type | Int32 NULL | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > n_i64 +raw expr : gt(n_i64::Int64 NULL, n_i64::Int64 NULL) +checked expr : gt(n_i64, n_i64) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = n_i64 +raw expr : eq(n_i64::Int64 NULL, n_i64::Int64 NULL) +checked expr : eq(n_i64, n_i64) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > n_u32 +raw expr : gt(n_i64::Int64 NULL, n_u32::UInt32 NULL) +checked expr : gt(n_i64, CAST(n_u32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+------------+--------------+ +| | n_u32 | n_i64 | Output | ++--------+-------------+------------+--------------+ +| Type | UInt32 NULL | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = n_u32 +raw expr : eq(n_i64::Int64 NULL, n_u32::UInt32 NULL) +checked expr : eq(n_i64, CAST(n_u32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+------------+--------------+ +| | n_u32 | n_i64 | Output | ++--------+-------------+------------+--------------+ +| Type | UInt32 NULL | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > n_u64 +raw expr : gt(n_i64::Int64 NULL, n_u64::UInt64 NULL) +checked expr : gt(n_i64, CAST(n_u64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+-------------+--------------+ +| | n_i64 | n_u64 | Output | ++--------+------------+-------------+--------------+ +| Type | Int64 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = n_u64 +raw expr : eq(n_i64::Int64 NULL, n_u64::UInt64 NULL) +checked expr : eq(n_i64, CAST(n_u64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+-------------+--------------+ +| | n_i64 | n_u64 | Output | ++--------+------------+-------------+--------------+ +| Type | Int64 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > f32 +raw expr : gt(n_i64::Int64 NULL, f32::Float32) +checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | f32 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = f32 +raw expr : eq(n_i64::Int64 NULL, f32::Float32) +checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | f32 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > n_f32 +raw expr : gt(n_i64::Int64 NULL, n_f32::Float32 NULL) +checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+--------------+ +| | n_i64 | n_f32 | Output | ++--------+------------+--------------+--------------+ +| Type | Int64 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = n_f32 +raw expr : eq(n_i64::Int64 NULL, n_f32::Float32 NULL) +checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+--------------+ +| | n_i64 | n_f32 | Output | ++--------+------------+--------------+--------------+ +| Type | Int64 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > f64 +raw expr : gt(n_i64::Int64 NULL, f64::Float64) +checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | f64 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = f64 +raw expr : eq(n_i64::Int64 NULL, f64::Float64) +checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | f64 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > n_f64 +raw expr : gt(n_i64::Int64 NULL, n_f64::Float64 NULL) +checked expr : gt(CAST(n_i64 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+------------+--------------+--------------+ +| | n_i64 | n_f64 | Output | ++--------+------------+--------------+--------------+ +| Type | Int64 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = n_f64 +raw expr : eq(n_i64::Int64 NULL, n_f64::Float64 NULL) +checked expr : eq(CAST(n_i64 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+------------+--------------+--------------+ +| | n_i64 | n_f64 | Output | ++--------+------------+--------------+--------------+ +| Type | Int64 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > d128 +raw expr : gt(n_i64::Int64 NULL, d128::Decimal(38, 0)) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+----------------+--------------+ +| | n_i64 | d128 | Output | ++--------+------------+----------------+--------------+ +| Type | Int64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = d128 +raw expr : eq(n_i64::Int64 NULL, d128::Decimal(38, 0)) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+----------------+--------------+ +| | n_i64 | d128 | Output | ++--------+------------+----------------+--------------+ +| Type | Int64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > n_d128 +raw expr : gt(n_i64::Int64 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i64 | n_d128 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = n_d128 +raw expr : eq(n_i64::Int64 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i64 | n_d128 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > d256 +raw expr : gt(n_i64::Int64 NULL, d256::Decimal(76, 0)) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+----------------+--------------+ +| | n_i64 | d256 | Output | ++--------+------------+----------------+--------------+ +| Type | Int64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = d256 +raw expr : eq(n_i64::Int64 NULL, d256::Decimal(76, 0)) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+----------------+--------------+ +| | n_i64 | d256 | Output | ++--------+------------+----------------+--------------+ +| Type | Int64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > n_d256 +raw expr : gt(n_i64::Int64 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i64 | n_d256 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = n_d256 +raw expr : eq(n_i64::Int64 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+------------+---------------------+--------------+ +| | n_i64 | n_d256 | Output | ++--------+------------+---------------------+--------------+ +| Type | Int64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt b/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt new file mode 100644 index 0000000000000..708c20088c773 --- /dev/null +++ b/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt @@ -0,0 +1,1404 @@ +ast : n_u32 > i32 +raw expr : gt(n_u32::UInt32 NULL, i32::Int32) +checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | i32 | n_u32 | Output | ++--------+---------+-------------+--------------+ +| Type | Int32 | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = i32 +raw expr : eq(n_u32::UInt32 NULL, i32::Int32) +checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | i32 | n_u32 | Output | ++--------+---------+-------------+--------------+ +| Type | Int32 | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > i64 +raw expr : gt(n_u32::UInt32 NULL, i64::Int64) +checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | i64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Int64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| i64 | Int64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = i64 +raw expr : eq(n_u32::UInt32 NULL, i64::Int64) +checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | i64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Int64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| i64 | Int64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > u32 +raw expr : gt(n_u32::UInt32 NULL, u32::UInt32) +checked expr : gt(n_u32, CAST(u32 AS UInt32 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | u32 | n_u32 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt32 | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = u32 +raw expr : eq(n_u32::UInt32 NULL, u32::UInt32) +checked expr : eq(n_u32, CAST(u32 AS UInt32 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | u32 | n_u32 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt32 | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > u64 +raw expr : gt(n_u32::UInt32 NULL, u64::UInt64) +checked expr : gt(CAST(n_u32 AS UInt64 NULL), CAST(u64 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | u64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = u64 +raw expr : eq(n_u32::UInt32 NULL, u64::UInt64) +checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST(u64 AS UInt64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | u64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > n_i32 +raw expr : gt(n_u32::UInt32 NULL, n_i32::Int32 NULL) +checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+-------------+--------------+ +| | n_i32 | n_u32 | Output | ++--------+------------+-------------+--------------+ +| Type | Int32 NULL | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = n_i32 +raw expr : eq(n_u32::UInt32 NULL, n_i32::Int32 NULL) +checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+-------------+--------------+ +| | n_i32 | n_u32 | Output | ++--------+------------+-------------+--------------+ +| Type | Int32 NULL | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > n_i64 +raw expr : gt(n_u32::UInt32 NULL, n_i64::Int64 NULL) +checked expr : gt(CAST(n_u32 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+-------------+------------+--------------+ +| | n_u32 | n_i64 | Output | ++--------+-------------+------------+--------------+ +| Type | UInt32 NULL | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = n_i64 +raw expr : eq(n_u32::UInt32 NULL, n_i64::Int64 NULL) +checked expr : eq(CAST(n_u32 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+-------------+------------+--------------+ +| | n_u32 | n_i64 | Output | ++--------+-------------+------------+--------------+ +| Type | UInt32 NULL | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > n_u32 +raw expr : gt(n_u32::UInt32 NULL, n_u32::UInt32 NULL) +checked expr : gt(n_u32, n_u32) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = n_u32 +raw expr : eq(n_u32::UInt32 NULL, n_u32::UInt32 NULL) +checked expr : eq(n_u32, n_u32) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > n_u64 +raw expr : gt(n_u32::UInt32 NULL, n_u64::UInt64 NULL) +checked expr : gt(CAST(n_u32 AS UInt64 NULL), n_u64) +optimized expr : false +evaluation: ++--------+-------------+-------------+--------------+ +| | n_u32 | n_u64 | Output | ++--------+-------------+-------------+--------------+ +| Type | UInt32 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = n_u64 +raw expr : eq(n_u32::UInt32 NULL, n_u64::UInt64 NULL) +checked expr : eq(CAST(n_u32 AS UInt64 NULL), n_u64) +optimized expr : true +evaluation: ++--------+-------------+-------------+--------------+ +| | n_u32 | n_u64 | Output | ++--------+-------------+-------------+--------------+ +| Type | UInt32 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > f32 +raw expr : gt(n_u32::UInt32 NULL, f32::Float32) +checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | f32 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = f32 +raw expr : eq(n_u32::UInt32 NULL, f32::Float32) +checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | f32 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > n_f32 +raw expr : gt(n_u32::UInt32 NULL, n_f32::Float32 NULL) +checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u32 | n_f32 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt32 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = n_f32 +raw expr : eq(n_u32::UInt32 NULL, n_f32::Float32 NULL) +checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u32 | n_f32 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt32 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > f64 +raw expr : gt(n_u32::UInt32 NULL, f64::Float64) +checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | f64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = f64 +raw expr : eq(n_u32::UInt32 NULL, f64::Float64) +checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | f64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > n_f64 +raw expr : gt(n_u32::UInt32 NULL, n_f64::Float64 NULL) +checked expr : gt(CAST(n_u32 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u32 | n_f64 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = n_f64 +raw expr : eq(n_u32::UInt32 NULL, n_f64::Float64 NULL) +checked expr : eq(CAST(n_u32 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u32 | n_f64 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt32 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > d128 +raw expr : gt(n_u32::UInt32 NULL, d128::Decimal(38, 0)) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u32 | d128 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = d128 +raw expr : eq(n_u32::UInt32 NULL, d128::Decimal(38, 0)) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u32 | d128 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt32 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > n_d128 +raw expr : gt(n_u32::UInt32 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u32 | n_d128 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = n_d128 +raw expr : eq(n_u32::UInt32 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u32 | n_d128 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt32 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > d256 +raw expr : gt(n_u32::UInt32 NULL, d256::Decimal(76, 0)) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u32 | d256 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = d256 +raw expr : eq(n_u32::UInt32 NULL, d256::Decimal(76, 0)) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u32 | d256 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt32 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > n_d256 +raw expr : gt(n_u32::UInt32 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u32 | n_d256 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = n_d256 +raw expr : eq(n_u32::UInt32 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u32 | n_d256 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt32 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > i32 +raw expr : gt(n_u64::UInt64 NULL, i32::Int32) +checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | i32 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | Int32 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = i32 +raw expr : eq(n_u64::UInt64 NULL, i32::Int32) +checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | i32 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | Int32 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > i64 +raw expr : gt(n_u64::UInt64 NULL, i64::Int64) +checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | i64 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | Int64 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = i64 +raw expr : eq(n_u64::UInt64 NULL, i64::Int64) +checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | i64 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | Int64 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > u32 +raw expr : gt(n_u64::UInt64 NULL, u32::UInt32) +checked expr : gt(n_u64, CAST(u32 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | u32 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt32 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = u32 +raw expr : eq(n_u64::UInt64 NULL, u32::UInt32) +checked expr : eq(n_u64, CAST(u32 AS UInt64 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | u32 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt32 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > u64 +raw expr : gt(n_u64::UInt64 NULL, u64::UInt64) +checked expr : gt(n_u64, CAST(u64 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | u64 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt64 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = u64 +raw expr : eq(n_u64::UInt64 NULL, u64::UInt64) +checked expr : eq(n_u64, CAST(u64 AS UInt64 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | u64 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt64 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > n_i32 +raw expr : gt(n_u64::UInt64 NULL, n_i32::Int32 NULL) +checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+-------------+--------------+ +| | n_i32 | n_u64 | Output | ++--------+------------+-------------+--------------+ +| Type | Int32 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = n_i32 +raw expr : eq(n_u64::UInt64 NULL, n_i32::Int32 NULL) +checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+-------------+--------------+ +| | n_i32 | n_u64 | Output | ++--------+------------+-------------+--------------+ +| Type | Int32 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > n_i64 +raw expr : gt(n_u64::UInt64 NULL, n_i64::Int64 NULL) +checked expr : gt(CAST(n_u64 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+------------+-------------+--------------+ +| | n_i64 | n_u64 | Output | ++--------+------------+-------------+--------------+ +| Type | Int64 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = n_i64 +raw expr : eq(n_u64::UInt64 NULL, n_i64::Int64 NULL) +checked expr : eq(CAST(n_u64 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+------------+-------------+--------------+ +| | n_i64 | n_u64 | Output | ++--------+------------+-------------+--------------+ +| Type | Int64 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > n_u32 +raw expr : gt(n_u64::UInt64 NULL, n_u32::UInt32 NULL) +checked expr : gt(n_u64, CAST(n_u32 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+-------------+--------------+ +| | n_u32 | n_u64 | Output | ++--------+-------------+-------------+--------------+ +| Type | UInt32 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = n_u32 +raw expr : eq(n_u64::UInt64 NULL, n_u32::UInt32 NULL) +checked expr : eq(n_u64, CAST(n_u32 AS UInt64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+-------------+--------------+ +| | n_u32 | n_u64 | Output | ++--------+-------------+-------------+--------------+ +| Type | UInt32 NULL | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > n_u64 +raw expr : gt(n_u64::UInt64 NULL, n_u64::UInt64 NULL) +checked expr : gt(n_u64, n_u64) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = n_u64 +raw expr : eq(n_u64::UInt64 NULL, n_u64::UInt64 NULL) +checked expr : eq(n_u64, n_u64) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > f32 +raw expr : gt(n_u64::UInt64 NULL, f32::Float32) +checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u64 | f32 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt64 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = f32 +raw expr : eq(n_u64::UInt64 NULL, f32::Float32) +checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u64 | f32 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt64 NULL | Float32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| f32 | Float32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > n_f32 +raw expr : gt(n_u64::UInt64 NULL, n_f32::Float32 NULL) +checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u64 | n_f32 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt64 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = n_f32 +raw expr : eq(n_u64::UInt64 NULL, n_f32::Float32 NULL) +checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u64 | n_f32 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt64 NULL | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > f64 +raw expr : gt(n_u64::UInt64 NULL, f64::Float64) +checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u64 | f64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt64 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = f64 +raw expr : eq(n_u64::UInt64 NULL, f64::Float64) +checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u64 | f64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt64 NULL | Float64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| f64 | Float64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > n_f64 +raw expr : gt(n_u64::UInt64 NULL, n_f64::Float64 NULL) +checked expr : gt(CAST(n_u64 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u64 | n_f64 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt64 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = n_f64 +raw expr : eq(n_u64::UInt64 NULL, n_f64::Float64 NULL) +checked expr : eq(CAST(n_u64 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+-------------+--------------+--------------+ +| | n_u64 | n_f64 | Output | ++--------+-------------+--------------+--------------+ +| Type | UInt64 NULL | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > d128 +raw expr : gt(n_u64::UInt64 NULL, d128::Decimal(38, 0)) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u64 | d128 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = d128 +raw expr : eq(n_u64::UInt64 NULL, d128::Decimal(38, 0)) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u64 | d128 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt64 NULL | Decimal(38, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| d128 | Decimal128([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > n_d128 +raw expr : gt(n_u64::UInt64 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u64 | n_d128 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = n_d128 +raw expr : eq(n_u64::UInt64 NULL, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u64 | n_d128 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt64 NULL | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > d256 +raw expr : gt(n_u64::UInt64 NULL, d256::Decimal(76, 0)) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u64 | d256 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = d256 +raw expr : eq(n_u64::UInt64 NULL, d256::Decimal(76, 0)) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+----------------+--------------+ +| | n_u64 | d256 | Output | ++--------+-------------+----------------+--------------+ +| Type | UInt64 NULL | Decimal(76, 0) | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+----------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| d256 | Decimal256([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > n_d256 +raw expr : gt(n_u64::UInt64 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u64 | n_d256 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = n_d256 +raw expr : eq(n_u64::UInt64 NULL, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+-------------+---------------------+--------------+ +| | n_u64 | n_d256 | Output | ++--------+-------------+---------------------+--------------+ +| Type | UInt64 NULL | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/signed.txt b/src/query/functions/tests/it/type_check/testdata/signed.txt new file mode 100644 index 0000000000000..7fc0a8dc9d13c --- /dev/null +++ b/src/query/functions/tests/it/type_check/testdata/signed.txt @@ -0,0 +1,1404 @@ +ast : i32 > i32 +raw expr : gt(i32::Int32, i32::Int32) +checked expr : gt(i32, i32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = i32 +raw expr : eq(i32::Int32, i32::Int32) +checked expr : eq(i32, i32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i32 > i64 +raw expr : gt(i32::Int32, i64::Int64) +checked expr : gt(to_int64(i32), i64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | i64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Int64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = i64 +raw expr : eq(i32::Int32, i64::Int64) +checked expr : eq(to_int64(i32), i64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | i64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Int64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i32 > u32 +raw expr : gt(i32::Int32, u32::UInt32) +checked expr : gt(to_int64(i32), to_int64(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | u32 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | UInt32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = u32 +raw expr : eq(i32::Int32, u32::UInt32) +checked expr : eq(to_int64(i32), to_int64(u32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | u32 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | UInt32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| u32 | UInt32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i32 > u64 +raw expr : gt(i32::Int32, u64::UInt64) +checked expr : gt(to_int64(i32), to_int64(u64)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | u64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = u64 +raw expr : eq(i32::Int32, u64::UInt64) +checked expr : eq(to_int64(i32), to_int64(u64)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | u64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i32 > n_i32 +raw expr : gt(i32::Int32, n_i32::Int32 NULL) +checked expr : gt(CAST(i32 AS Int32 NULL), n_i32) +optimized expr : false +evaluation: ++--------+---------+------------+--------------+ +| | i32 | n_i32 | Output | ++--------+---------+------------+--------------+ +| Type | Int32 | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 = n_i32 +raw expr : eq(i32::Int32, n_i32::Int32 NULL) +checked expr : eq(CAST(i32 AS Int32 NULL), n_i32) +optimized expr : true +evaluation: ++--------+---------+------------+--------------+ +| | i32 | n_i32 | Output | ++--------+---------+------------+--------------+ +| Type | Int32 | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 > n_i64 +raw expr : gt(i32::Int32, n_i64::Int64 NULL) +checked expr : gt(CAST(i32 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+---------+------------+--------------+ +| | i32 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | Int32 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 = n_i64 +raw expr : eq(i32::Int32, n_i64::Int64 NULL) +checked expr : eq(CAST(i32 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+---------+------------+--------------+ +| | i32 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | Int32 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 > n_u32 +raw expr : gt(i32::Int32, n_u32::UInt32 NULL) +checked expr : gt(CAST(i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | i32 | n_u32 | Output | ++--------+---------+-------------+--------------+ +| Type | Int32 | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 = n_u32 +raw expr : eq(i32::Int32, n_u32::UInt32 NULL) +checked expr : eq(CAST(i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | i32 | n_u32 | Output | ++--------+---------+-------------+--------------+ +| Type | Int32 | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 > n_u64 +raw expr : gt(i32::Int32, n_u64::UInt64 NULL) +checked expr : gt(CAST(i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | i32 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | Int32 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 = n_u64 +raw expr : eq(i32::Int32, n_u64::UInt64 NULL) +checked expr : eq(CAST(i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | i32 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | Int32 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 > f32 +raw expr : gt(i32::Int32, f32::Float32) +checked expr : gt(to_float64(i32), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | f32 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = f32 +raw expr : eq(i32::Int32, f32::Float32) +checked expr : eq(to_float64(i32), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | f32 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i32 > n_f32 +raw expr : gt(i32::Int32, n_f32::Float32 NULL) +checked expr : gt(CAST(i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | i32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Int32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 = n_f32 +raw expr : eq(i32::Int32, n_f32::Float32 NULL) +checked expr : eq(CAST(i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | i32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Int32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 > f64 +raw expr : gt(i32::Int32, f64::Float64) +checked expr : gt(to_float64(i32), f64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = f64 +raw expr : eq(i32::Int32, f64::Float64) +checked expr : eq(to_float64(i32), f64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i32 > n_f64 +raw expr : gt(i32::Int32, n_f64::Float64 NULL) +checked expr : gt(CAST(i32 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | i32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Int32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 = n_f64 +raw expr : eq(i32::Int32, n_f64::Float64 NULL) +checked expr : eq(CAST(i32 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | i32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Int32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 > d128 +raw expr : gt(i32::Int32, d128::Decimal(38, 0)) +checked expr : gt(to_decimal(10, 0)(i32), d128) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | i32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Int32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = d128 +raw expr : eq(i32::Int32, d128::Decimal(38, 0)) +checked expr : eq(to_decimal(10, 0)(i32), d128) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | i32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Int32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i32 > n_d128 +raw expr : gt(i32::Int32, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(i32 AS Decimal(10, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | i32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 = n_d128 +raw expr : eq(i32::Int32, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(i32 AS Decimal(10, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | i32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 > d256 +raw expr : gt(i32::Int32, d256::Decimal(76, 0)) +checked expr : gt(to_decimal(10, 0)(i32), d256) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | i32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Int32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = d256 +raw expr : eq(i32::Int32, d256::Decimal(76, 0)) +checked expr : eq(to_decimal(10, 0)(i32), d256) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | i32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Int32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i32 > n_d256 +raw expr : gt(i32::Int32, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(i32 AS Decimal(10, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | i32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i32 = n_d256 +raw expr : eq(i32::Int32, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(i32 AS Decimal(10, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | i32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i32 | Int32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 > i32 +raw expr : gt(i64::Int64, i32::Int32) +checked expr : gt(i64, to_int64(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | i64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Int64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = i32 +raw expr : eq(i64::Int64, i32::Int32) +checked expr : eq(i64, to_int64(i32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | i64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | Int64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i64 > i64 +raw expr : gt(i64::Int64, i64::Int64) +checked expr : gt(i64, i64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = i64 +raw expr : eq(i64::Int64, i64::Int64) +checked expr : eq(i64, i64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i64 > u32 +raw expr : gt(i64::Int64, u32::UInt32) +checked expr : gt(i64, to_int64(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u32 | i64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Int64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = u32 +raw expr : eq(i64::Int64, u32::UInt32) +checked expr : eq(i64, to_int64(u32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u32 | i64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Int64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i64 > u64 +raw expr : gt(i64::Int64, u64::UInt64) +checked expr : gt(i64, to_int64(u64)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i64 | u64 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = u64 +raw expr : eq(i64::Int64, u64::UInt64) +checked expr : eq(i64, to_int64(u64)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i64 | u64 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i64 > n_i32 +raw expr : gt(i64::Int64, n_i32::Int32 NULL) +checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | i64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Int64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| i64 | Int64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 = n_i32 +raw expr : eq(i64::Int64, n_i32::Int32 NULL) +checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | i64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | Int64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| i64 | Int64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 > n_i64 +raw expr : gt(i64::Int64, n_i64::Int64 NULL) +checked expr : gt(CAST(i64 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+---------+------------+--------------+ +| | i64 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | Int64 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 = n_i64 +raw expr : eq(i64::Int64, n_i64::Int64 NULL) +checked expr : eq(CAST(i64 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+---------+------------+--------------+ +| | i64 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | Int64 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 > n_u32 +raw expr : gt(i64::Int64, n_u32::UInt32 NULL) +checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | i64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Int64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| i64 | Int64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 = n_u32 +raw expr : eq(i64::Int64, n_u32::UInt32 NULL) +checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | i64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | Int64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| i64 | Int64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 > n_u64 +raw expr : gt(i64::Int64, n_u64::UInt64 NULL) +checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | i64 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | Int64 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 = n_u64 +raw expr : eq(i64::Int64, n_u64::UInt64 NULL) +checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | i64 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | Int64 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 > f32 +raw expr : gt(i64::Int64, f32::Float32) +checked expr : gt(to_float64(i64), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i64 | f32 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = f32 +raw expr : eq(i64::Int64, f32::Float32) +checked expr : eq(to_float64(i64), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i64 | f32 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i64 > n_f32 +raw expr : gt(i64::Int64, n_f32::Float32 NULL) +checked expr : gt(CAST(i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | i64 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Int64 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 = n_f32 +raw expr : eq(i64::Int64, n_f32::Float32 NULL) +checked expr : eq(CAST(i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | i64 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | Int64 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 > f64 +raw expr : gt(i64::Int64, f64::Float64) +checked expr : gt(to_float64(i64), f64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i64 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = f64 +raw expr : eq(i64::Int64, f64::Float64) +checked expr : eq(to_float64(i64), f64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i64 | f64 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i64 > n_f64 +raw expr : gt(i64::Int64, n_f64::Float64 NULL) +checked expr : gt(CAST(i64 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | i64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Int64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 = n_f64 +raw expr : eq(i64::Int64, n_f64::Float64 NULL) +checked expr : eq(CAST(i64 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | i64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | Int64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 > d128 +raw expr : gt(i64::Int64, d128::Decimal(38, 0)) +checked expr : gt(to_decimal(19, 0)(i64), d128) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | i64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Int64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = d128 +raw expr : eq(i64::Int64, d128::Decimal(38, 0)) +checked expr : eq(to_decimal(19, 0)(i64), d128) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | i64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | Int64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i64 > n_d128 +raw expr : gt(i64::Int64, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(i64 AS Decimal(19, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | i64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 = n_d128 +raw expr : eq(i64::Int64, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(i64 AS Decimal(19, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | i64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 > d256 +raw expr : gt(i64::Int64, d256::Decimal(76, 0)) +checked expr : gt(to_decimal(19, 0)(i64), d256) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | i64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Int64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = d256 +raw expr : eq(i64::Int64, d256::Decimal(76, 0)) +checked expr : eq(to_decimal(19, 0)(i64), d256) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | i64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | Int64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : i64 > n_d256 +raw expr : gt(i64::Int64, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(i64 AS Decimal(19, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | i64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : i64 = n_d256 +raw expr : eq(i64::Int64, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(i64 AS Decimal(19, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | i64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | Int64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| i64 | Int64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/unsigned.txt b/src/query/functions/tests/it/type_check/testdata/unsigned.txt new file mode 100644 index 0000000000000..ae1fa6ad3e825 --- /dev/null +++ b/src/query/functions/tests/it/type_check/testdata/unsigned.txt @@ -0,0 +1,1404 @@ +ast : u32 > i32 +raw expr : gt(u32::UInt32, i32::Int32) +checked expr : gt(to_int64(u32), to_int64(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | u32 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | UInt32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = i32 +raw expr : eq(u32::UInt32, i32::Int32) +checked expr : eq(to_int64(u32), to_int64(i32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | u32 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | UInt32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| u32 | UInt32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u32 > i64 +raw expr : gt(u32::UInt32, i64::Int64) +checked expr : gt(to_int64(u32), i64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u32 | i64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Int64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = i64 +raw expr : eq(u32::UInt32, i64::Int64) +checked expr : eq(to_int64(u32), i64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u32 | i64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Int64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u32 > u32 +raw expr : gt(u32::UInt32, u32::UInt32) +checked expr : gt(u32, u32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = u32 +raw expr : eq(u32::UInt32, u32::UInt32) +checked expr : eq(u32, u32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u32 > u64 +raw expr : gt(u32::UInt32, u64::UInt64) +checked expr : gt(to_uint64(u32), u64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u32 | u64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = u64 +raw expr : eq(u32::UInt32, u64::UInt64) +checked expr : eq(to_uint64(u32), u64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u32 | u64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u32 > n_i32 +raw expr : gt(u32::UInt32, n_i32::Int32 NULL) +checked expr : gt(CAST(u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | u32 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | UInt32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| u32 | UInt32([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 = n_i32 +raw expr : eq(u32::UInt32, n_i32::Int32 NULL) +checked expr : eq(CAST(u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | u32 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | UInt32 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| u32 | UInt32([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 > n_i64 +raw expr : gt(u32::UInt32, n_i64::Int64 NULL) +checked expr : gt(CAST(u32 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+---------+------------+--------------+ +| | u32 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | UInt32 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 = n_i64 +raw expr : eq(u32::UInt32, n_i64::Int64 NULL) +checked expr : eq(CAST(u32 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+---------+------------+--------------+ +| | u32 | n_i64 | Output | ++--------+---------+------------+--------------+ +| Type | UInt32 | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 > n_u32 +raw expr : gt(u32::UInt32, n_u32::UInt32 NULL) +checked expr : gt(CAST(u32 AS UInt32 NULL), n_u32) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | u32 | n_u32 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt32 | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 = n_u32 +raw expr : eq(u32::UInt32, n_u32::UInt32 NULL) +checked expr : eq(CAST(u32 AS UInt32 NULL), n_u32) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | u32 | n_u32 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt32 | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 > n_u64 +raw expr : gt(u32::UInt32, n_u64::UInt64 NULL) +checked expr : gt(CAST(u32 AS UInt64 NULL), n_u64) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | u32 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt32 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 = n_u64 +raw expr : eq(u32::UInt32, n_u64::UInt64 NULL) +checked expr : eq(CAST(u32 AS UInt64 NULL), n_u64) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | u32 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt32 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 > f32 +raw expr : gt(u32::UInt32, f32::Float32) +checked expr : gt(to_float64(u32), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u32 | f32 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = f32 +raw expr : eq(u32::UInt32, f32::Float32) +checked expr : eq(to_float64(u32), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u32 | f32 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u32 > n_f32 +raw expr : gt(u32::UInt32, n_f32::Float32 NULL) +checked expr : gt(CAST(u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | u32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 = n_f32 +raw expr : eq(u32::UInt32, n_f32::Float32 NULL) +checked expr : eq(CAST(u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | u32 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt32 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 > f64 +raw expr : gt(u32::UInt32, f64::Float64) +checked expr : gt(to_float64(u32), f64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = f64 +raw expr : eq(u32::UInt32, f64::Float64) +checked expr : eq(to_float64(u32), f64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u32 | f64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u32 > n_f64 +raw expr : gt(u32::UInt32, n_f64::Float64 NULL) +checked expr : gt(CAST(u32 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | u32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 = n_f64 +raw expr : eq(u32::UInt32, n_f64::Float64 NULL) +checked expr : eq(CAST(u32 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | u32 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt32 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 > d128 +raw expr : gt(u32::UInt32, d128::Decimal(38, 0)) +checked expr : gt(to_decimal(10, 0)(u32), d128) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | u32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | UInt32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = d128 +raw expr : eq(u32::UInt32, d128::Decimal(38, 0)) +checked expr : eq(to_decimal(10, 0)(u32), d128) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | u32 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | UInt32 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u32 > n_d128 +raw expr : gt(u32::UInt32, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(u32 AS Decimal(10, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | u32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 = n_d128 +raw expr : eq(u32::UInt32, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(u32 AS Decimal(10, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | u32 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt32 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 > d256 +raw expr : gt(u32::UInt32, d256::Decimal(76, 0)) +checked expr : gt(to_decimal(10, 0)(u32), d256) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | u32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | UInt32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = d256 +raw expr : eq(u32::UInt32, d256::Decimal(76, 0)) +checked expr : eq(to_decimal(10, 0)(u32), d256) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | u32 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | UInt32 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u32 > n_d256 +raw expr : gt(u32::UInt32, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(u32 AS Decimal(10, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | u32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u32 = n_d256 +raw expr : eq(u32::UInt32, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(u32 AS Decimal(10, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | u32 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt32 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u32 | UInt32([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 > i32 +raw expr : gt(u64::UInt64, i32::Int32) +checked expr : gt(to_int64(u64), to_int64(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i32 | u64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = i32 +raw expr : eq(u64::UInt64, i32::Int32) +checked expr : eq(to_int64(u64), to_int64(i32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i32 | u64 | Output | ++--------+---------+---------+---------+ +| Type | Int32 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u64 > i64 +raw expr : gt(u64::UInt64, i64::Int64) +checked expr : gt(to_int64(u64), i64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | i64 | u64 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = i64 +raw expr : eq(u64::UInt64, i64::Int64) +checked expr : eq(to_int64(u64), i64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | i64 | u64 | Output | ++--------+---------+---------+---------+ +| Type | Int64 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u64 > u32 +raw expr : gt(u64::UInt64, u32::UInt32) +checked expr : gt(u64, to_uint64(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u32 | u64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = u32 +raw expr : eq(u64::UInt64, u32::UInt32) +checked expr : eq(u64, to_uint64(u32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u32 | u64 | Output | ++--------+---------+---------+---------+ +| Type | UInt32 | UInt64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u64 > u64 +raw expr : gt(u64::UInt64, u64::UInt64) +checked expr : gt(u64, u64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = u64 +raw expr : eq(u64::UInt64, u64::UInt64) +checked expr : eq(u64, u64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u64 > n_i32 +raw expr : gt(u64::UInt64, n_i32::Int32 NULL) +checked expr : gt(CAST(u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | u64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 = n_i32 +raw expr : eq(u64::UInt64, n_i32::Int32 NULL) +checked expr : eq(CAST(u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i32 | u64 | Output | ++--------+------------+---------+--------------+ +| Type | Int32 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 > n_i64 +raw expr : gt(u64::UInt64, n_i64::Int64 NULL) +checked expr : gt(CAST(u64 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | u64 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 = n_i64 +raw expr : eq(u64::UInt64, n_i64::Int64 NULL) +checked expr : eq(CAST(u64 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+------------+---------+--------------+ +| | n_i64 | u64 | Output | ++--------+------------+---------+--------------+ +| Type | Int64 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 > n_u32 +raw expr : gt(u64::UInt64, n_u32::UInt32 NULL) +checked expr : gt(CAST(u64 AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | u64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 = n_u32 +raw expr : eq(u64::UInt64, n_u32::UInt32 NULL) +checked expr : eq(CAST(u64 AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+---------+--------------+ +| | n_u32 | u64 | Output | ++--------+-------------+---------+--------------+ +| Type | UInt32 NULL | UInt64 | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+-------------+---------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| u64 | UInt64([0]) | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 > n_u64 +raw expr : gt(u64::UInt64, n_u64::UInt64 NULL) +checked expr : gt(CAST(u64 AS UInt64 NULL), n_u64) +optimized expr : false +evaluation: ++--------+---------+-------------+--------------+ +| | u64 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt64 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 = n_u64 +raw expr : eq(u64::UInt64, n_u64::UInt64 NULL) +checked expr : eq(CAST(u64 AS UInt64 NULL), n_u64) +optimized expr : true +evaluation: ++--------+---------+-------------+--------------+ +| | u64 | n_u64 | Output | ++--------+---------+-------------+--------------+ +| Type | UInt64 | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 > f32 +raw expr : gt(u64::UInt64, f32::Float32) +checked expr : gt(to_float64(u64), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u64 | f32 | Output | ++--------+---------+---------+---------+ +| Type | UInt64 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = f32 +raw expr : eq(u64::UInt64, f32::Float32) +checked expr : eq(to_float64(u64), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u64 | f32 | Output | ++--------+---------+---------+---------+ +| Type | UInt64 | Float32 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u64 > n_f32 +raw expr : gt(u64::UInt64, n_f32::Float32 NULL) +checked expr : gt(CAST(u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | u64 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt64 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 = n_f32 +raw expr : eq(u64::UInt64, n_f32::Float32 NULL) +checked expr : eq(CAST(u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | u64 | n_f32 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt64 | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 > f64 +raw expr : gt(u64::UInt64, f64::Float64) +checked expr : gt(to_float64(u64), f64) +optimized expr : false +evaluation: ++--------+---------+---------+---------+ +| | u64 | f64 | Output | ++--------+---------+---------+---------+ +| Type | UInt64 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = f64 +raw expr : eq(u64::UInt64, f64::Float64) +checked expr : eq(to_float64(u64), f64) +optimized expr : true +evaluation: ++--------+---------+---------+---------+ +| | u64 | f64 | Output | ++--------+---------+---------+---------+ +| Type | UInt64 | Float64 | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u64 > n_f64 +raw expr : gt(u64::UInt64, n_f64::Float64 NULL) +checked expr : gt(CAST(u64 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+---------+--------------+--------------+ +| | u64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 = n_f64 +raw expr : eq(u64::UInt64, n_f64::Float64 NULL) +checked expr : eq(CAST(u64 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+---------+--------------+--------------+ +| | u64 | n_f64 | Output | ++--------+---------+--------------+--------------+ +| Type | UInt64 | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 > d128 +raw expr : gt(u64::UInt64, d128::Decimal(38, 0)) +checked expr : gt(to_decimal(20, 0)(u64), d128) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | u64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | UInt64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = d128 +raw expr : eq(u64::UInt64, d128::Decimal(38, 0)) +checked expr : eq(to_decimal(20, 0)(u64), d128) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | u64 | d128 | Output | ++--------+---------+----------------+---------+ +| Type | UInt64 | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u64 > n_d128 +raw expr : gt(u64::UInt64, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(u64 AS Decimal(20, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | u64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 = n_d128 +raw expr : eq(u64::UInt64, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(u64 AS Decimal(20, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | u64 | n_d128 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt64 | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 > d256 +raw expr : gt(u64::UInt64, d256::Decimal(76, 0)) +checked expr : gt(to_decimal(20, 0)(u64), d256) +optimized expr : false +evaluation: ++--------+---------+----------------+---------+ +| | u64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | UInt64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = d256 +raw expr : eq(u64::UInt64, d256::Decimal(76, 0)) +checked expr : eq(to_decimal(20, 0)(u64), d256) +optimized expr : true +evaluation: ++--------+---------+----------------+---------+ +| | u64 | d256 | Output | ++--------+---------+----------------+---------+ +| Type | UInt64 | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : u64 > n_d256 +raw expr : gt(u64::UInt64, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(u64 AS Decimal(20, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------+---------------------+--------------+ +| | u64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {FALSE} | +| Row 0 | 0 | 0 | false | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : u64 = n_d256 +raw expr : eq(u64::UInt64, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(u64 AS Decimal(20, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------+---------------------+--------------+ +| | u64 | n_d256 | Output | ++--------+---------+---------------------+--------------+ +| Type | UInt64 | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {0..=0} | {TRUE} | +| Row 0 | 0 | 0 | true | ++--------+---------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| u64 | UInt64([0]) | +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + From 117f80368e7ec794bd3261a084aabd18ce2d88b5 Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 1 Apr 2025 14:26:12 +0800 Subject: [PATCH 11/23] update Signed-off-by: coldWater --- src/query/functions/tests/it/type_check.rs | 34 +- .../tests/it/type_check/testdata/constant.txt | 3808 ----------------- .../tests/it/type_check/testdata/decimal.txt | 1288 ++++++ .../tests/it/type_check/testdata/float.txt | 1288 ++++++ .../type_check/testdata/nullable_signed.txt | 644 +++ .../type_check/testdata/nullable_unsigned.txt | 644 +++ .../tests/it/type_check/testdata/signed.txt | 644 +++ .../tests/it/type_check/testdata/unsigned.txt | 644 +++ 8 files changed, 5170 insertions(+), 3824 deletions(-) delete mode 100644 src/query/functions/tests/it/type_check/testdata/constant.txt diff --git a/src/query/functions/tests/it/type_check.rs b/src/query/functions/tests/it/type_check.rs index b0198e15f829a..4121d741dd7ff 100644 --- a/src/query/functions/tests/it/type_check.rs +++ b/src/query/functions/tests/it/type_check.rs @@ -123,25 +123,27 @@ fn test_type_check() { run_ast(file, &format!("{lhs} > {rhs}"), &columns); run_ast(file, &format!("{lhs} = {rhs}"), &columns); } - } - { - let file = &mut mint.new_goldenfile(format!("constant.txt")).unwrap(); - for int in &all_num { - run_ast(file, &format!("{int} > 1"), &columns); - run_ast(file, &format!("{int} = 1"), &columns); - run_ast(file, &format!("1 > {int}"), &columns); - run_ast(file, &format!("1 = {int}"), &columns); + for ty in types { + run_ast(file, &format!("{ty} > 1"), &columns); + run_ast(file, &format!("{ty} = 1"), &columns); + run_ast(file, &format!("1 > {ty}"), &columns); + run_ast(file, &format!("1 = {ty}"), &columns); + + run_ast(file, &format!("{ty} > 1.0"), &columns); + run_ast(file, &format!("{ty} = 1.0"), &columns); + run_ast(file, &format!("1.0 > {ty}"), &columns); + run_ast(file, &format!("1.0 = {ty}"), &columns); - run_ast(file, &format!("{int} > 1.0"), &columns); - run_ast(file, &format!("{int} = 1.0"), &columns); - run_ast(file, &format!("1.0 > {int}"), &columns); - run_ast(file, &format!("1.0 = {int}"), &columns); + run_ast(file, &format!("{ty} > '1'"), &columns); + run_ast(file, &format!("{ty} = '1'"), &columns); + run_ast(file, &format!("'1' > {ty}"), &columns); + run_ast(file, &format!("'1' = {ty}"), &columns); - run_ast(file, &format!("{int} > '1'"), &columns); - run_ast(file, &format!("{int} = '1'"), &columns); - run_ast(file, &format!("'1' > {int}"), &columns); - run_ast(file, &format!("'1' = {int}"), &columns); + run_ast(file, &format!("{ty} > 1::uint64"), &columns); + run_ast(file, &format!("{ty} = 1::uint64"), &columns); + run_ast(file, &format!("1::uint64 > {ty}"), &columns); + run_ast(file, &format!("1::uint64 = {ty}"), &columns); } } } diff --git a/src/query/functions/tests/it/type_check/testdata/constant.txt b/src/query/functions/tests/it/type_check/testdata/constant.txt deleted file mode 100644 index f64d019d2421e..0000000000000 --- a/src/query/functions/tests/it/type_check/testdata/constant.txt +++ /dev/null @@ -1,3808 +0,0 @@ -ast : i32 > 1 -raw expr : gt(i32::Int32, 1) -checked expr : gt(i32, to_int32(1_u8)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : i32 = 1 -raw expr : eq(i32::Int32, 1) -checked expr : eq(i32, 1_i32) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1 > i32 -raw expr : gt(1, i32::Int32) -checked expr : gt(to_int32(1_u8), i32) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1 = i32 -raw expr : eq(1, i32::Int32) -checked expr : eq(1_i32, i32) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : i32 > 1.0 -raw expr : gt(i32::Int32, 1.0) -checked expr : gt(to_decimal(10, 0)(i32), 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : i32 = 1.0 -raw expr : eq(i32::Int32, 1.0) -checked expr : eq(to_decimal(10, 0)(i32), 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1.0 > i32 -raw expr : gt(1.0, i32::Int32) -checked expr : gt(1.0_d128(2,1), to_decimal(10, 0)(i32)) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1.0 = i32 -raw expr : eq(1.0, i32::Int32) -checked expr : eq(1.0_d128(2,1), to_decimal(10, 0)(i32)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | i32 > '1' - | ^ no function matches signature `gt(Int32, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Int32` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int32` with `Variant` - gt(String, String) :: Boolean : unable to unify `Int32` with `String` -... and 33 more - - - -ast : i32 = '1' -raw expr : eq(i32::Int32, '1') -checked expr : eq(to_int64(i32), to_int64("1")) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > i32 - | ^ no function matches signature `gt(String, Int32)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Int32` with `String` -... and 33 more - - - -ast : '1' = i32 -raw expr : eq('1', i32::Int32) -checked expr : eq(to_int64("1"), to_int64(i32)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i32 | Output | -+--------+---------+---------+ -| Type | Int32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i32 | Int32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : i64 > 1 -raw expr : gt(i64::Int64, 1) -checked expr : gt(i64, to_int64(1_u8)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : i64 = 1 -raw expr : eq(i64::Int64, 1) -checked expr : eq(i64, 1_i64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1 > i64 -raw expr : gt(1, i64::Int64) -checked expr : gt(to_int64(1_u8), i64) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1 = i64 -raw expr : eq(1, i64::Int64) -checked expr : eq(1_i64, i64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : i64 > 1.0 -raw expr : gt(i64::Int64, 1.0) -checked expr : gt(to_decimal(19, 0)(i64), 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : i64 = 1.0 -raw expr : eq(i64::Int64, 1.0) -checked expr : eq(to_decimal(19, 0)(i64), 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1.0 > i64 -raw expr : gt(1.0, i64::Int64) -checked expr : gt(1.0_d128(2,1), to_decimal(19, 0)(i64)) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1.0 = i64 -raw expr : eq(1.0, i64::Int64) -checked expr : eq(1.0_d128(2,1), to_decimal(19, 0)(i64)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | i64 > '1' - | ^ no function matches signature `gt(Int64, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Int64` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int64` with `Variant` - gt(String, String) :: Boolean : unable to unify `Int64` with `String` -... and 33 more - - - -ast : i64 = '1' -raw expr : eq(i64::Int64, '1') -checked expr : eq(i64, to_int64("1")) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > i64 - | ^ no function matches signature `gt(String, Int64)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Int64` with `String` -... and 33 more - - - -ast : '1' = i64 -raw expr : eq('1', i64::Int64) -checked expr : eq(to_int64("1"), i64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | i64 | Output | -+--------+---------+---------+ -| Type | Int64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| i64 | Int64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : u32 > 1 -raw expr : gt(u32::UInt32, 1) -checked expr : gt(u32, to_uint32(1_u8)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : u32 = 1 -raw expr : eq(u32::UInt32, 1) -checked expr : eq(u32, 1_u32) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1 > u32 -raw expr : gt(1, u32::UInt32) -checked expr : gt(to_uint32(1_u8), u32) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1 = u32 -raw expr : eq(1, u32::UInt32) -checked expr : eq(1_u32, u32) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : u32 > 1.0 -raw expr : gt(u32::UInt32, 1.0) -checked expr : gt(to_decimal(10, 0)(u32), 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : u32 = 1.0 -raw expr : eq(u32::UInt32, 1.0) -checked expr : eq(to_decimal(10, 0)(u32), 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1.0 > u32 -raw expr : gt(1.0, u32::UInt32) -checked expr : gt(1.0_d128(2,1), to_decimal(10, 0)(u32)) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1.0 = u32 -raw expr : eq(1.0, u32::UInt32) -checked expr : eq(1.0_d128(2,1), to_decimal(10, 0)(u32)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | u32 > '1' - | ^ no function matches signature `gt(UInt32, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `UInt32` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt32` with `Variant` - gt(String, String) :: Boolean : unable to unify `UInt32` with `String` -... and 33 more - - - -ast : u32 = '1' -raw expr : eq(u32::UInt32, '1') -checked expr : eq(to_uint64(u32), to_uint64("1")) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > u32 - | ^ no function matches signature `gt(String, UInt32)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `UInt32` with `String` -... and 33 more - - - -ast : '1' = u32 -raw expr : eq('1', u32::UInt32) -checked expr : eq(to_uint64("1"), to_uint64(u32)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u32 | Output | -+--------+---------+---------+ -| Type | UInt32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u32 | UInt32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : u64 > 1 -raw expr : gt(u64::UInt64, 1) -checked expr : gt(u64, to_uint64(1_u8)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : u64 = 1 -raw expr : eq(u64::UInt64, 1) -checked expr : eq(u64, 1_u64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1 > u64 -raw expr : gt(1, u64::UInt64) -checked expr : gt(to_uint64(1_u8), u64) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1 = u64 -raw expr : eq(1, u64::UInt64) -checked expr : eq(1_u64, u64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : u64 > 1.0 -raw expr : gt(u64::UInt64, 1.0) -checked expr : gt(to_decimal(20, 0)(u64), 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : u64 = 1.0 -raw expr : eq(u64::UInt64, 1.0) -checked expr : eq(to_decimal(20, 0)(u64), 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1.0 > u64 -raw expr : gt(1.0, u64::UInt64) -checked expr : gt(1.0_d128(2,1), to_decimal(20, 0)(u64)) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1.0 = u64 -raw expr : eq(1.0, u64::UInt64) -checked expr : eq(1.0_d128(2,1), to_decimal(20, 0)(u64)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | u64 > '1' - | ^ no function matches signature `gt(UInt64, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `UInt64` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt64` with `Variant` - gt(String, String) :: Boolean : unable to unify `UInt64` with `String` -... and 33 more - - - -ast : u64 = '1' -raw expr : eq(u64::UInt64, '1') -checked expr : eq(u64, to_uint64("1")) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > u64 - | ^ no function matches signature `gt(String, UInt64)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `UInt64` with `String` -... and 33 more - - - -ast : '1' = u64 -raw expr : eq('1', u64::UInt64) -checked expr : eq(to_uint64("1"), u64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | u64 | Output | -+--------+---------+---------+ -| Type | UInt64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| u64 | UInt64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : n_i32 > 1 -raw expr : gt(n_i32::Int32 NULL, 1) -checked expr : gt(n_i32, CAST(1_u8 AS Int32 NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_i32 = 1 -raw expr : eq(n_i32::Int32 NULL, 1) -checked expr : eq(n_i32, CAST(1_i32 AS Int32 NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 > n_i32 -raw expr : gt(1, n_i32::Int32 NULL) -checked expr : gt(CAST(1_u8 AS Int32 NULL), n_i32) -optimized expr : true -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 = n_i32 -raw expr : eq(1, n_i32::Int32 NULL) -checked expr : eq(CAST(1_i32 AS Int32 NULL), n_i32) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_i32 > 1.0 -raw expr : gt(n_i32::Int32 NULL, 1.0) -checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_i32 = 1.0 -raw expr : eq(n_i32::Int32 NULL, 1.0) -checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 > n_i32 -raw expr : gt(1.0, n_i32::Int32 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) -optimized expr : true -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 = n_i32 -raw expr : eq(1.0, n_i32::Int32 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:7 - | -1 | n_i32 > '1' - | ^ no function matches signature `gt(Int32 NULL, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Int32 NULL` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int32` with `Variant` - gt(String, String) :: Boolean : unable to unify `Int32 NULL` with `String` -... and 33 more - - - -ast : n_i32 = '1' -raw expr : eq(n_i32::Int32 NULL, '1') -checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST("1" AS Int64 NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > n_i32 - | ^ no function matches signature `gt(String, Int32 NULL)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Int32 NULL` with `String` -... and 33 more - - - -ast : '1' = n_i32 -raw expr : eq('1', n_i32::Int32 NULL) -checked expr : eq(CAST("1" AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i32 | Output | -+--------+------------+--------------+ -| Type | Int32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_i64 > 1 -raw expr : gt(n_i64::Int64 NULL, 1) -checked expr : gt(n_i64, CAST(1_u8 AS Int64 NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_i64 = 1 -raw expr : eq(n_i64::Int64 NULL, 1) -checked expr : eq(n_i64, CAST(1_i64 AS Int64 NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 > n_i64 -raw expr : gt(1, n_i64::Int64 NULL) -checked expr : gt(CAST(1_u8 AS Int64 NULL), n_i64) -optimized expr : true -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 = n_i64 -raw expr : eq(1, n_i64::Int64 NULL) -checked expr : eq(CAST(1_i64 AS Int64 NULL), n_i64) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_i64 > 1.0 -raw expr : gt(n_i64::Int64 NULL, 1.0) -checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_i64 = 1.0 -raw expr : eq(n_i64::Int64 NULL, 1.0) -checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 > n_i64 -raw expr : gt(1.0, n_i64::Int64 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) -optimized expr : true -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 = n_i64 -raw expr : eq(1.0, n_i64::Int64 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:7 - | -1 | n_i64 > '1' - | ^ no function matches signature `gt(Int64 NULL, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Int64 NULL` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int64` with `Variant` - gt(String, String) :: Boolean : unable to unify `Int64 NULL` with `String` -... and 33 more - - - -ast : n_i64 = '1' -raw expr : eq(n_i64::Int64 NULL, '1') -checked expr : eq(n_i64, CAST("1" AS Int64 NULL)) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > n_i64 - | ^ no function matches signature `gt(String, Int64 NULL)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Int64 NULL` with `String` -... and 33 more - - - -ast : '1' = n_i64 -raw expr : eq('1', n_i64::Int64 NULL) -checked expr : eq(CAST("1" AS Int64 NULL), n_i64) -optimized expr : false -evaluation: -+--------+------------+--------------+ -| | n_i64 | Output | -+--------+------------+--------------+ -| Type | Int64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_u32 > 1 -raw expr : gt(n_u32::UInt32 NULL, 1) -checked expr : gt(n_u32, CAST(1_u8 AS UInt32 NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_u32 = 1 -raw expr : eq(n_u32::UInt32 NULL, 1) -checked expr : eq(n_u32, CAST(1_u32 AS UInt32 NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 > n_u32 -raw expr : gt(1, n_u32::UInt32 NULL) -checked expr : gt(CAST(1_u8 AS UInt32 NULL), n_u32) -optimized expr : true -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 = n_u32 -raw expr : eq(1, n_u32::UInt32 NULL) -checked expr : eq(CAST(1_u32 AS UInt32 NULL), n_u32) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_u32 > 1.0 -raw expr : gt(n_u32::UInt32 NULL, 1.0) -checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_u32 = 1.0 -raw expr : eq(n_u32::UInt32 NULL, 1.0) -checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 > n_u32 -raw expr : gt(1.0, n_u32::UInt32 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) -optimized expr : true -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 = n_u32 -raw expr : eq(1.0, n_u32::UInt32 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:7 - | -1 | n_u32 > '1' - | ^ no function matches signature `gt(UInt32 NULL, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `UInt32 NULL` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt32` with `Variant` - gt(String, String) :: Boolean : unable to unify `UInt32 NULL` with `String` -... and 33 more - - - -ast : n_u32 = '1' -raw expr : eq(n_u32::UInt32 NULL, '1') -checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST("1" AS UInt64 NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > n_u32 - | ^ no function matches signature `gt(String, UInt32 NULL)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `UInt32 NULL` with `String` -... and 33 more - - - -ast : '1' = n_u32 -raw expr : eq('1', n_u32::UInt32 NULL) -checked expr : eq(CAST("1" AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u32 | Output | -+--------+-------------+--------------+ -| Type | UInt32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_u64 > 1 -raw expr : gt(n_u64::UInt64 NULL, 1) -checked expr : gt(n_u64, CAST(1_u8 AS UInt64 NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_u64 = 1 -raw expr : eq(n_u64::UInt64 NULL, 1) -checked expr : eq(n_u64, CAST(1_u64 AS UInt64 NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 > n_u64 -raw expr : gt(1, n_u64::UInt64 NULL) -checked expr : gt(CAST(1_u8 AS UInt64 NULL), n_u64) -optimized expr : true -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 = n_u64 -raw expr : eq(1, n_u64::UInt64 NULL) -checked expr : eq(CAST(1_u64 AS UInt64 NULL), n_u64) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_u64 > 1.0 -raw expr : gt(n_u64::UInt64 NULL, 1.0) -checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_u64 = 1.0 -raw expr : eq(n_u64::UInt64 NULL, 1.0) -checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 > n_u64 -raw expr : gt(1.0, n_u64::UInt64 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) -optimized expr : true -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 = n_u64 -raw expr : eq(1.0, n_u64::UInt64 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:7 - | -1 | n_u64 > '1' - | ^ no function matches signature `gt(UInt64 NULL, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `UInt64 NULL` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt64` with `Variant` - gt(String, String) :: Boolean : unable to unify `UInt64 NULL` with `String` -... and 33 more - - - -ast : n_u64 = '1' -raw expr : eq(n_u64::UInt64 NULL, '1') -checked expr : eq(n_u64, CAST("1" AS UInt64 NULL)) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > n_u64 - | ^ no function matches signature `gt(String, UInt64 NULL)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `UInt64 NULL` with `String` -... and 33 more - - - -ast : '1' = n_u64 -raw expr : eq('1', n_u64::UInt64 NULL) -checked expr : eq(CAST("1" AS UInt64 NULL), n_u64) -optimized expr : false -evaluation: -+--------+-------------+--------------+ -| | n_u64 | Output | -+--------+-------------+--------------+ -| Type | UInt64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+-------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : f32 > 1 -raw expr : gt(f32::Float32, 1) -checked expr : gt(f32, to_float32(1_u8)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : f32 = 1 -raw expr : eq(f32::Float32, 1) -checked expr : eq(f32, to_float32(1_u8)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1 > f32 -raw expr : gt(1, f32::Float32) -checked expr : gt(to_float32(1_u8), f32) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1 = f32 -raw expr : eq(1, f32::Float32) -checked expr : eq(to_float32(1_u8), f32) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : f32 > 1.0 -raw expr : gt(f32::Float32, 1.0) -checked expr : gt(to_float64(f32), to_float64(1.0_d128(2,1))) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : f32 = 1.0 -raw expr : eq(f32::Float32, 1.0) -checked expr : eq(to_float64(f32), to_float64(1.0_d128(2,1))) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1.0 > f32 -raw expr : gt(1.0, f32::Float32) -checked expr : gt(to_float64(1.0_d128(2,1)), to_float64(f32)) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1.0 = f32 -raw expr : eq(1.0, f32::Float32) -checked expr : eq(to_float64(1.0_d128(2,1)), to_float64(f32)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | f32 > '1' - | ^ no function matches signature `gt(Float32, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Float32` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float32` with `Variant` - gt(String, String) :: Boolean : unable to unify `Float32` with `String` -... and 33 more - - - -ast : f32 = '1' -raw expr : eq(f32::Float32, '1') -checked expr : eq(f32, to_float32("1")) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > f32 - | ^ no function matches signature `gt(String, Float32)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Float32` with `String` -... and 33 more - - - -ast : '1' = f32 -raw expr : eq('1', f32::Float32) -checked expr : eq(to_float32("1"), f32) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f32 | Output | -+--------+---------+---------+ -| Type | Float32 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f32 | Float32([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : n_f32 > 1 -raw expr : gt(n_f32::Float32 NULL, 1) -checked expr : gt(n_f32, CAST(1_u8 AS Float32 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_f32 = 1 -raw expr : eq(n_f32::Float32 NULL, 1) -checked expr : eq(n_f32, CAST(1_u8 AS Float32 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 > n_f32 -raw expr : gt(1, n_f32::Float32 NULL) -checked expr : gt(CAST(1_u8 AS Float32 NULL), n_f32) -optimized expr : true -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 = n_f32 -raw expr : eq(1, n_f32::Float32 NULL) -checked expr : eq(CAST(1_u8 AS Float32 NULL), n_f32) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_f32 > 1.0 -raw expr : gt(n_f32::Float32 NULL, 1.0) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_f32 = 1.0 -raw expr : eq(n_f32::Float32 NULL, 1.0) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 > n_f32 -raw expr : gt(1.0, n_f32::Float32 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) -optimized expr : true -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 = n_f32 -raw expr : eq(1.0, n_f32::Float32 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:7 - | -1 | n_f32 > '1' - | ^ no function matches signature `gt(Float32 NULL, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Float32 NULL` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float32` with `Variant` - gt(String, String) :: Boolean : unable to unify `Float32 NULL` with `String` -... and 33 more - - - -ast : n_f32 = '1' -raw expr : eq(n_f32::Float32 NULL, '1') -checked expr : eq(n_f32, CAST("1" AS Float32 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > n_f32 - | ^ no function matches signature `gt(String, Float32 NULL)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Float32 NULL` with `String` -... and 33 more - - - -ast : '1' = n_f32 -raw expr : eq('1', n_f32::Float32 NULL) -checked expr : eq(CAST("1" AS Float32 NULL), n_f32) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f32 | Output | -+--------+--------------+--------------+ -| Type | Float32 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : f64 > 1 -raw expr : gt(f64::Float64, 1) -checked expr : gt(f64, to_float64(1_u8)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : f64 = 1 -raw expr : eq(f64::Float64, 1) -checked expr : eq(f64, to_float64(1_u8)) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1 > f64 -raw expr : gt(1, f64::Float64) -checked expr : gt(to_float64(1_u8), f64) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1 = f64 -raw expr : eq(1, f64::Float64) -checked expr : eq(to_float64(1_u8), f64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : f64 > 1.0 -raw expr : gt(f64::Float64, 1.0) -checked expr : gt(f64, to_float64(1.0_d128(2,1))) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : f64 = 1.0 -raw expr : eq(f64::Float64, 1.0) -checked expr : eq(f64, to_float64(1.0_d128(2,1))) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1.0 > f64 -raw expr : gt(1.0, f64::Float64) -checked expr : gt(to_float64(1.0_d128(2,1)), f64) -optimized expr : true -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1.0 = f64 -raw expr : eq(1.0, f64::Float64) -checked expr : eq(to_float64(1.0_d128(2,1)), f64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | f64 > '1' - | ^ no function matches signature `gt(Float64, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Float64` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float64` with `Variant` - gt(String, String) :: Boolean : unable to unify `Float64` with `String` -... and 33 more - - - -ast : f64 = '1' -raw expr : eq(f64::Float64, '1') -checked expr : eq(f64, to_float64("1")) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > f64 - | ^ no function matches signature `gt(String, Float64)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Float64` with `String` -... and 33 more - - - -ast : '1' = f64 -raw expr : eq('1', f64::Float64) -checked expr : eq(to_float64("1"), f64) -optimized expr : false -evaluation: -+--------+---------+---------+ -| | f64 | Output | -+--------+---------+---------+ -| Type | Float64 | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| f64 | Float64([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : n_f64 > 1 -raw expr : gt(n_f64::Float64 NULL, 1) -checked expr : gt(n_f64, CAST(1_u8 AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_f64 = 1 -raw expr : eq(n_f64::Float64 NULL, 1) -checked expr : eq(n_f64, CAST(1_u8 AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 > n_f64 -raw expr : gt(1, n_f64::Float64 NULL) -checked expr : gt(CAST(1_u8 AS Float64 NULL), n_f64) -optimized expr : true -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 = n_f64 -raw expr : eq(1, n_f64::Float64 NULL) -checked expr : eq(CAST(1_u8 AS Float64 NULL), n_f64) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_f64 > 1.0 -raw expr : gt(n_f64::Float64 NULL, 1.0) -checked expr : gt(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_f64 = 1.0 -raw expr : eq(n_f64::Float64 NULL, 1.0) -checked expr : eq(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 > n_f64 -raw expr : gt(1.0, n_f64::Float64 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) -optimized expr : true -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 = n_f64 -raw expr : eq(1.0, n_f64::Float64 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:7 - | -1 | n_f64 > '1' - | ^ no function matches signature `gt(Float64 NULL, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Float64 NULL` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float64` with `Variant` - gt(String, String) :: Boolean : unable to unify `Float64 NULL` with `String` -... and 33 more - - - -ast : n_f64 = '1' -raw expr : eq(n_f64::Float64 NULL, '1') -checked expr : eq(n_f64, CAST("1" AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > n_f64 - | ^ no function matches signature `gt(String, Float64 NULL)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Float64 NULL` with `String` -... and 33 more - - - -ast : '1' = n_f64 -raw expr : eq('1', n_f64::Float64 NULL) -checked expr : eq(CAST("1" AS Float64 NULL), n_f64) -optimized expr : false -evaluation: -+--------+--------------+--------------+ -| | n_f64 | Output | -+--------+--------------+--------------+ -| Type | Float64 NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+--------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : d128 > 1 -raw expr : gt(d128::Decimal(38, 0), 1) -checked expr : gt(d128, to_decimal(3, 0)(1_u8)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : d128 = 1 -raw expr : eq(d128::Decimal(38, 0), 1) -checked expr : eq(d128, to_decimal(3, 0)(1_u8)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1 > d128 -raw expr : gt(1, d128::Decimal(38, 0)) -checked expr : gt(to_decimal(3, 0)(1_u8), d128) -optimized expr : true -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1 = d128 -raw expr : eq(1, d128::Decimal(38, 0)) -checked expr : eq(to_decimal(3, 0)(1_u8), d128) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : d128 > 1.0 -raw expr : gt(d128::Decimal(38, 0), 1.0) -checked expr : gt(d128, 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : d128 = 1.0 -raw expr : eq(d128::Decimal(38, 0), 1.0) -checked expr : eq(d128, 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1.0 > d128 -raw expr : gt(1.0, d128::Decimal(38, 0)) -checked expr : gt(1.0_d128(2,1), d128) -optimized expr : true -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1.0 = d128 -raw expr : eq(1.0, d128::Decimal(38, 0)) -checked expr : eq(1.0_d128(2,1), d128) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:6 - | -1 | d128 > '1' - | ^ no function matches signature `gt(Decimal(38, 0), String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Decimal(38, 0)` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(38, 0)` with `Variant` - gt(String, String) :: Boolean : unable to unify `Decimal(38, 0)` with `String` -... and 33 more - - - -ast : d128 = '1' -raw expr : eq(d128::Decimal(38, 0), '1') -checked expr : eq(to_float64(d128), to_float64("1")) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > d128 - | ^ no function matches signature `gt(String, Decimal(38, 0))`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Decimal(38, 0)` with `String` -... and 33 more - - - -ast : '1' = d128 -raw expr : eq('1', d128::Decimal(38, 0)) -checked expr : eq(to_float64("1"), to_float64(d128)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d128 | Output | -+--------+----------------+---------+ -| Type | Decimal(38, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d128 | Decimal128([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : n_d128 > 1 -raw expr : gt(n_d128::Decimal(38, 0) NULL, 1) -checked expr : gt(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_d128 = 1 -raw expr : eq(n_d128::Decimal(38, 0) NULL, 1) -checked expr : eq(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 > n_d128 -raw expr : gt(1, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) -optimized expr : true -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 = n_d128 -raw expr : eq(1, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_d128 > 1.0 -raw expr : gt(n_d128::Decimal(38, 0) NULL, 1.0) -checked expr : gt(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_d128 = 1.0 -raw expr : eq(n_d128::Decimal(38, 0) NULL, 1.0) -checked expr : eq(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 > n_d128 -raw expr : gt(1.0, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) -optimized expr : true -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 = n_d128 -raw expr : eq(1.0, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:8 - | -1 | n_d128 > '1' - | ^ no function matches signature `gt(Decimal(38, 0) NULL, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(38, 0)` with `Variant` - gt(String, String) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `String` -... and 33 more - - - -ast : n_d128 = '1' -raw expr : eq(n_d128::Decimal(38, 0) NULL, '1') -checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST("1" AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > n_d128 - | ^ no function matches signature `gt(String, Decimal(38, 0) NULL)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `String` -... and 33 more - - - -ast : '1' = n_d128 -raw expr : eq('1', n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d128 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(38, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : d256 > 1 -raw expr : gt(d256::Decimal(76, 0), 1) -checked expr : gt(d256, to_decimal(3, 0)(1_u8)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : d256 = 1 -raw expr : eq(d256::Decimal(76, 0), 1) -checked expr : eq(d256, to_decimal(3, 0)(1_u8)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1 > d256 -raw expr : gt(1, d256::Decimal(76, 0)) -checked expr : gt(to_decimal(3, 0)(1_u8), d256) -optimized expr : true -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1 = d256 -raw expr : eq(1, d256::Decimal(76, 0)) -checked expr : eq(to_decimal(3, 0)(1_u8), d256) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : d256 > 1.0 -raw expr : gt(d256::Decimal(76, 0), 1.0) -checked expr : gt(d256, 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : d256 = 1.0 -raw expr : eq(d256::Decimal(76, 0), 1.0) -checked expr : eq(d256, 1.0_d128(2,1)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : 1.0 > d256 -raw expr : gt(1.0, d256::Decimal(76, 0)) -checked expr : gt(1.0_d128(2,1), d256) -optimized expr : true -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______1]) | -+--------+-----------------------+ - - -ast : 1.0 = d256 -raw expr : eq(1.0, d256::Decimal(76, 0)) -checked expr : eq(1.0_d128(2,1), d256) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:6 - | -1 | d256 > '1' - | ^ no function matches signature `gt(Decimal(76, 0), String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Decimal(76, 0)` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(76, 0)` with `Variant` - gt(String, String) :: Boolean : unable to unify `Decimal(76, 0)` with `String` -... and 33 more - - - -ast : d256 = '1' -raw expr : eq(d256::Decimal(76, 0), '1') -checked expr : eq(to_float64(d256), to_float64("1")) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > d256 - | ^ no function matches signature `gt(String, Decimal(76, 0))`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Decimal(76, 0)` with `String` -... and 33 more - - - -ast : '1' = d256 -raw expr : eq('1', d256::Decimal(76, 0)) -checked expr : eq(to_float64("1"), to_float64(d256)) -optimized expr : false -evaluation: -+--------+----------------+---------+ -| | d256 | Output | -+--------+----------------+---------+ -| Type | Decimal(76, 0) | Boolean | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+----------------+---------+ -evaluation (internal): -+--------+-----------------------+ -| Column | Data | -+--------+-----------------------+ -| d256 | Decimal256([0]) | -| Output | Boolean([0b_______0]) | -+--------+-----------------------+ - - -ast : n_d256 > 1 -raw expr : gt(n_d256::Decimal(76, 0) NULL, 1) -checked expr : gt(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_d256 = 1 -raw expr : eq(n_d256::Decimal(76, 0) NULL, 1) -checked expr : eq(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 > n_d256 -raw expr : gt(1, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) -optimized expr : true -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1 = n_d256 -raw expr : eq(1, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_d256 > 1.0 -raw expr : gt(n_d256::Decimal(76, 0) NULL, 1.0) -checked expr : gt(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : n_d256 = 1.0 -raw expr : eq(n_d256::Decimal(76, 0) NULL, 1.0) -checked expr : eq(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 > n_d256 -raw expr : gt(1.0, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) -optimized expr : true -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {TRUE} | -| Row 0 | 0 | true | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -ast : 1.0 = n_d256 -raw expr : eq(1.0, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:8 - | -1 | n_d256 > '1' - | ^ no function matches signature `gt(Decimal(76, 0) NULL, String)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(76, 0)` with `Variant` - gt(String, String) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `String` -... and 33 more - - - -ast : n_d256 = '1' -raw expr : eq(n_d256::Decimal(76, 0) NULL, '1') -checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST("1" AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - -error: - --> SQL:1:5 - | -1 | '1' > n_d256 - | ^ no function matches signature `gt(String, Decimal(76, 0) NULL)`, you might need to add explicit type casts. - -candidate functions: - gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` - gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` - gt(String, String) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `String` -... and 33 more - - - -ast : '1' = n_d256 -raw expr : eq('1', n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) -optimized expr : false -evaluation: -+--------+---------------------+--------------+ -| | n_d256 | Output | -+--------+---------------------+--------------+ -| Type | Decimal(76, 0) NULL | Boolean NULL | -| Domain | {0..=0} | {FALSE} | -| Row 0 | 0 | false | -+--------+---------------------+--------------+ -evaluation (internal): -+--------+--------------------------------------------------------------------------+ -| Column | Data | -+--------+--------------------------------------------------------------------------+ -| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | -| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | -+--------+--------------------------------------------------------------------------+ - - diff --git a/src/query/functions/tests/it/type_check/testdata/decimal.txt b/src/query/functions/tests/it/type_check/testdata/decimal.txt index 66527ecee38da..05426aef3c2cd 100644 --- a/src/query/functions/tests/it/type_check/testdata/decimal.txt +++ b/src/query/functions/tests/it/type_check/testdata/decimal.txt @@ -2806,3 +2806,1291 @@ evaluation (internal): +--------+--------------------------------------------------------------------------+ +ast : d128 > 1 +raw expr : gt(d128::Decimal(38, 0), 1) +checked expr : gt(d128, to_decimal(3, 0)(1_u8)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = 1 +raw expr : eq(d128::Decimal(38, 0), 1) +checked expr : eq(d128, to_decimal(3, 0)(1_u8)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > d128 +raw expr : gt(1, d128::Decimal(38, 0)) +checked expr : gt(to_decimal(3, 0)(1_u8), d128) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = d128 +raw expr : eq(1, d128::Decimal(38, 0)) +checked expr : eq(to_decimal(3, 0)(1_u8), d128) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 > 1.0 +raw expr : gt(d128::Decimal(38, 0), 1.0) +checked expr : gt(d128, 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = 1.0 +raw expr : eq(d128::Decimal(38, 0), 1.0) +checked expr : eq(d128, 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > d128 +raw expr : gt(1.0, d128::Decimal(38, 0)) +checked expr : gt(1.0_d128(2,1), d128) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = d128 +raw expr : eq(1.0, d128::Decimal(38, 0)) +checked expr : eq(1.0_d128(2,1), d128) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:6 + | +1 | d128 > '1' + | ^ no function matches signature `gt(Decimal(38, 0), String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Decimal(38, 0)` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(38, 0)` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(38, 0)` with `String` +... and 33 more + + + +ast : d128 = '1' +raw expr : eq(d128::Decimal(38, 0), '1') +checked expr : eq(to_float64(d128), to_float64("1")) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > d128 + | ^ no function matches signature `gt(String, Decimal(38, 0))`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(38, 0)` with `String` +... and 33 more + + + +ast : '1' = d128 +raw expr : eq('1', d128::Decimal(38, 0)) +checked expr : eq(to_float64("1"), to_float64(d128)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 > 1::uint64 +raw expr : gt(d128::Decimal(38, 0), CAST(1 AS UInt64)) +checked expr : gt(d128, to_decimal(20, 0)(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d128 = 1::uint64 +raw expr : eq(d128::Decimal(38, 0), CAST(1 AS UInt64)) +checked expr : eq(d128, to_decimal(20, 0)(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1::uint64 > d128 +raw expr : gt(CAST(1 AS UInt64), d128::Decimal(38, 0)) +checked expr : gt(to_decimal(20, 0)(to_uint64(1_u8)), d128) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1::uint64 = d128 +raw expr : eq(CAST(1 AS UInt64), d128::Decimal(38, 0)) +checked expr : eq(to_decimal(20, 0)(to_uint64(1_u8)), d128) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d128 | Output | ++--------+----------------+---------+ +| Type | Decimal(38, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d128 | Decimal128([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_d128 > 1 +raw expr : gt(n_d128::Decimal(38, 0) NULL, 1) +checked expr : gt(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = 1 +raw expr : eq(n_d128::Decimal(38, 0) NULL, 1) +checked expr : eq(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_d128 +raw expr : gt(1, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_d128 +raw expr : eq(1, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > 1.0 +raw expr : gt(n_d128::Decimal(38, 0) NULL, 1.0) +checked expr : gt(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = 1.0 +raw expr : eq(n_d128::Decimal(38, 0) NULL, 1.0) +checked expr : eq(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_d128 +raw expr : gt(1.0, n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_d128 +raw expr : eq(1.0, n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:8 + | +1 | n_d128 > '1' + | ^ no function matches signature `gt(Decimal(38, 0) NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(38, 0)` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `String` +... and 33 more + + + +ast : n_d128 = '1' +raw expr : eq(n_d128::Decimal(38, 0) NULL, '1') +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST("1" AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_d128 + | ^ no function matches signature `gt(String, Decimal(38, 0) NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(38, 0) NULL` with `String` +... and 33 more + + + +ast : '1' = n_d128 +raw expr : eq('1', n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 > 1::uint64 +raw expr : gt(n_d128::Decimal(38, 0) NULL, CAST(1 AS UInt64)) +checked expr : gt(n_d128, CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d128 = 1::uint64 +raw expr : eq(n_d128::Decimal(38, 0) NULL, CAST(1 AS UInt64)) +checked expr : eq(n_d128, CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 > n_d128 +raw expr : gt(CAST(1 AS UInt64), n_d128::Decimal(38, 0) NULL) +checked expr : gt(CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL), n_d128) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 = n_d128 +raw expr : eq(CAST(1 AS UInt64), n_d128::Decimal(38, 0) NULL) +checked expr : eq(CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL), n_d128) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d128 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(38, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d128 | NullableColumn { column: Decimal128([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : d256 > 1 +raw expr : gt(d256::Decimal(76, 0), 1) +checked expr : gt(d256, to_decimal(3, 0)(1_u8)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = 1 +raw expr : eq(d256::Decimal(76, 0), 1) +checked expr : eq(d256, to_decimal(3, 0)(1_u8)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > d256 +raw expr : gt(1, d256::Decimal(76, 0)) +checked expr : gt(to_decimal(3, 0)(1_u8), d256) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = d256 +raw expr : eq(1, d256::Decimal(76, 0)) +checked expr : eq(to_decimal(3, 0)(1_u8), d256) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 > 1.0 +raw expr : gt(d256::Decimal(76, 0), 1.0) +checked expr : gt(d256, 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = 1.0 +raw expr : eq(d256::Decimal(76, 0), 1.0) +checked expr : eq(d256, 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > d256 +raw expr : gt(1.0, d256::Decimal(76, 0)) +checked expr : gt(1.0_d128(2,1), d256) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = d256 +raw expr : eq(1.0, d256::Decimal(76, 0)) +checked expr : eq(1.0_d128(2,1), d256) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:6 + | +1 | d256 > '1' + | ^ no function matches signature `gt(Decimal(76, 0), String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Decimal(76, 0)` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(76, 0)` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(76, 0)` with `String` +... and 33 more + + + +ast : d256 = '1' +raw expr : eq(d256::Decimal(76, 0), '1') +checked expr : eq(to_float64(d256), to_float64("1")) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > d256 + | ^ no function matches signature `gt(String, Decimal(76, 0))`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(76, 0)` with `String` +... and 33 more + + + +ast : '1' = d256 +raw expr : eq('1', d256::Decimal(76, 0)) +checked expr : eq(to_float64("1"), to_float64(d256)) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 > 1::uint64 +raw expr : gt(d256::Decimal(76, 0), CAST(1 AS UInt64)) +checked expr : gt(d256, to_decimal(20, 0)(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : d256 = 1::uint64 +raw expr : eq(d256::Decimal(76, 0), CAST(1 AS UInt64)) +checked expr : eq(d256, to_decimal(20, 0)(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1::uint64 > d256 +raw expr : gt(CAST(1 AS UInt64), d256::Decimal(76, 0)) +checked expr : gt(to_decimal(20, 0)(to_uint64(1_u8)), d256) +optimized expr : true +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1::uint64 = d256 +raw expr : eq(CAST(1 AS UInt64), d256::Decimal(76, 0)) +checked expr : eq(to_decimal(20, 0)(to_uint64(1_u8)), d256) +optimized expr : false +evaluation: ++--------+----------------+---------+ +| | d256 | Output | ++--------+----------------+---------+ +| Type | Decimal(76, 0) | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+----------------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| d256 | Decimal256([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_d256 > 1 +raw expr : gt(n_d256::Decimal(76, 0) NULL, 1) +checked expr : gt(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = 1 +raw expr : eq(n_d256::Decimal(76, 0) NULL, 1) +checked expr : eq(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_d256 +raw expr : gt(1, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_d256 +raw expr : eq(1, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > 1.0 +raw expr : gt(n_d256::Decimal(76, 0) NULL, 1.0) +checked expr : gt(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = 1.0 +raw expr : eq(n_d256::Decimal(76, 0) NULL, 1.0) +checked expr : eq(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_d256 +raw expr : gt(1.0, n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_d256 +raw expr : eq(1.0, n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:8 + | +1 | n_d256 > '1' + | ^ no function matches signature `gt(Decimal(76, 0) NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Decimal(76, 0)` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `String` +... and 33 more + + + +ast : n_d256 = '1' +raw expr : eq(n_d256::Decimal(76, 0) NULL, '1') +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST("1" AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_d256 + | ^ no function matches signature `gt(String, Decimal(76, 0) NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Decimal(76, 0) NULL` with `String` +... and 33 more + + + +ast : '1' = n_d256 +raw expr : eq('1', n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 > 1::uint64 +raw expr : gt(n_d256::Decimal(76, 0) NULL, CAST(1 AS UInt64)) +checked expr : gt(n_d256, CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_d256 = 1::uint64 +raw expr : eq(n_d256::Decimal(76, 0) NULL, CAST(1 AS UInt64)) +checked expr : eq(n_d256, CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 > n_d256 +raw expr : gt(CAST(1 AS UInt64), n_d256::Decimal(76, 0) NULL) +checked expr : gt(CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL), n_d256) +optimized expr : true +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 = n_d256 +raw expr : eq(CAST(1 AS UInt64), n_d256::Decimal(76, 0) NULL) +checked expr : eq(CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL), n_d256) +optimized expr : false +evaluation: ++--------+---------------------+--------------+ +| | n_d256 | Output | ++--------+---------------------+--------------+ +| Type | Decimal(76, 0) NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_d256 | NullableColumn { column: Decimal256([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/float.txt b/src/query/functions/tests/it/type_check/testdata/float.txt index d1daff8024292..8be0305992ceb 100644 --- a/src/query/functions/tests/it/type_check/testdata/float.txt +++ b/src/query/functions/tests/it/type_check/testdata/float.txt @@ -2806,3 +2806,1291 @@ evaluation (internal): +--------+--------------------------------------------------------------------------+ +ast : f32 > 1 +raw expr : gt(f32::Float32, 1) +checked expr : gt(f32, to_float32(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = 1 +raw expr : eq(f32::Float32, 1) +checked expr : eq(f32, to_float32(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > f32 +raw expr : gt(1, f32::Float32) +checked expr : gt(to_float32(1_u8), f32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = f32 +raw expr : eq(1, f32::Float32) +checked expr : eq(to_float32(1_u8), f32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 > 1.0 +raw expr : gt(f32::Float32, 1.0) +checked expr : gt(to_float64(f32), to_float64(1.0_d128(2,1))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = 1.0 +raw expr : eq(f32::Float32, 1.0) +checked expr : eq(to_float64(f32), to_float64(1.0_d128(2,1))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > f32 +raw expr : gt(1.0, f32::Float32) +checked expr : gt(to_float64(1.0_d128(2,1)), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = f32 +raw expr : eq(1.0, f32::Float32) +checked expr : eq(to_float64(1.0_d128(2,1)), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | f32 > '1' + | ^ no function matches signature `gt(Float32, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Float32` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float32` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float32` with `String` +... and 33 more + + + +ast : f32 = '1' +raw expr : eq(f32::Float32, '1') +checked expr : eq(f32, to_float32("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > f32 + | ^ no function matches signature `gt(String, Float32)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float32` with `String` +... and 33 more + + + +ast : '1' = f32 +raw expr : eq('1', f32::Float32) +checked expr : eq(to_float32("1"), f32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 > 1::uint64 +raw expr : gt(f32::Float32, CAST(1 AS UInt64)) +checked expr : gt(to_float64(f32), to_float64(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f32 = 1::uint64 +raw expr : eq(f32::Float32, CAST(1 AS UInt64)) +checked expr : eq(to_float64(f32), to_float64(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1::uint64 > f32 +raw expr : gt(CAST(1 AS UInt64), f32::Float32) +checked expr : gt(to_float64(to_uint64(1_u8)), to_float64(f32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1::uint64 = f32 +raw expr : eq(CAST(1 AS UInt64), f32::Float32) +checked expr : eq(to_float64(to_uint64(1_u8)), to_float64(f32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f32 | Output | ++--------+---------+---------+ +| Type | Float32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f32 | Float32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_f32 > 1 +raw expr : gt(n_f32::Float32 NULL, 1) +checked expr : gt(n_f32, CAST(1_u8 AS Float32 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = 1 +raw expr : eq(n_f32::Float32 NULL, 1) +checked expr : eq(n_f32, CAST(1_u8 AS Float32 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_f32 +raw expr : gt(1, n_f32::Float32 NULL) +checked expr : gt(CAST(1_u8 AS Float32 NULL), n_f32) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_f32 +raw expr : eq(1, n_f32::Float32 NULL) +checked expr : eq(CAST(1_u8 AS Float32 NULL), n_f32) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > 1.0 +raw expr : gt(n_f32::Float32 NULL, 1.0) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = 1.0 +raw expr : eq(n_f32::Float32 NULL, 1.0) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_f32 +raw expr : gt(1.0, n_f32::Float32 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_f32 +raw expr : eq(1.0, n_f32::Float32 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_f32 > '1' + | ^ no function matches signature `gt(Float32 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Float32 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float32` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float32 NULL` with `String` +... and 33 more + + + +ast : n_f32 = '1' +raw expr : eq(n_f32::Float32 NULL, '1') +checked expr : eq(n_f32, CAST("1" AS Float32 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_f32 + | ^ no function matches signature `gt(String, Float32 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float32 NULL` with `String` +... and 33 more + + + +ast : '1' = n_f32 +raw expr : eq('1', n_f32::Float32 NULL) +checked expr : eq(CAST("1" AS Float32 NULL), n_f32) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 > 1::uint64 +raw expr : gt(n_f32::Float32 NULL, CAST(1 AS UInt64)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(to_uint64(1_u8) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f32 = 1::uint64 +raw expr : eq(n_f32::Float32 NULL, CAST(1 AS UInt64)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(to_uint64(1_u8) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 > n_f32 +raw expr : gt(CAST(1 AS UInt64), n_f32::Float32 NULL) +checked expr : gt(CAST(to_uint64(1_u8) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 = n_f32 +raw expr : eq(CAST(1 AS UInt64), n_f32::Float32 NULL) +checked expr : eq(CAST(to_uint64(1_u8) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f32 | Output | ++--------+--------------+--------------+ +| Type | Float32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f32 | NullableColumn { column: Float32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : f64 > 1 +raw expr : gt(f64::Float64, 1) +checked expr : gt(f64, to_float64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = 1 +raw expr : eq(f64::Float64, 1) +checked expr : eq(f64, to_float64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > f64 +raw expr : gt(1, f64::Float64) +checked expr : gt(to_float64(1_u8), f64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = f64 +raw expr : eq(1, f64::Float64) +checked expr : eq(to_float64(1_u8), f64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 > 1.0 +raw expr : gt(f64::Float64, 1.0) +checked expr : gt(f64, to_float64(1.0_d128(2,1))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = 1.0 +raw expr : eq(f64::Float64, 1.0) +checked expr : eq(f64, to_float64(1.0_d128(2,1))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > f64 +raw expr : gt(1.0, f64::Float64) +checked expr : gt(to_float64(1.0_d128(2,1)), f64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = f64 +raw expr : eq(1.0, f64::Float64) +checked expr : eq(to_float64(1.0_d128(2,1)), f64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | f64 > '1' + | ^ no function matches signature `gt(Float64, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Float64` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float64` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float64` with `String` +... and 33 more + + + +ast : f64 = '1' +raw expr : eq(f64::Float64, '1') +checked expr : eq(f64, to_float64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > f64 + | ^ no function matches signature `gt(String, Float64)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float64` with `String` +... and 33 more + + + +ast : '1' = f64 +raw expr : eq('1', f64::Float64) +checked expr : eq(to_float64("1"), f64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 > 1::uint64 +raw expr : gt(f64::Float64, CAST(1 AS UInt64)) +checked expr : gt(f64, to_float64(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : f64 = 1::uint64 +raw expr : eq(f64::Float64, CAST(1 AS UInt64)) +checked expr : eq(f64, to_float64(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1::uint64 > f64 +raw expr : gt(CAST(1 AS UInt64), f64::Float64) +checked expr : gt(to_float64(to_uint64(1_u8)), f64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1::uint64 = f64 +raw expr : eq(CAST(1 AS UInt64), f64::Float64) +checked expr : eq(to_float64(to_uint64(1_u8)), f64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | f64 | Output | ++--------+---------+---------+ +| Type | Float64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| f64 | Float64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : n_f64 > 1 +raw expr : gt(n_f64::Float64 NULL, 1) +checked expr : gt(n_f64, CAST(1_u8 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = 1 +raw expr : eq(n_f64::Float64 NULL, 1) +checked expr : eq(n_f64, CAST(1_u8 AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_f64 +raw expr : gt(1, n_f64::Float64 NULL) +checked expr : gt(CAST(1_u8 AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_f64 +raw expr : eq(1, n_f64::Float64 NULL) +checked expr : eq(CAST(1_u8 AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > 1.0 +raw expr : gt(n_f64::Float64 NULL, 1.0) +checked expr : gt(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = 1.0 +raw expr : eq(n_f64::Float64 NULL, 1.0) +checked expr : eq(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_f64 +raw expr : gt(1.0, n_f64::Float64 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_f64 +raw expr : eq(1.0, n_f64::Float64 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_f64 > '1' + | ^ no function matches signature `gt(Float64 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Float64 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Float64` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float64 NULL` with `String` +... and 33 more + + + +ast : n_f64 = '1' +raw expr : eq(n_f64::Float64 NULL, '1') +checked expr : eq(n_f64, CAST("1" AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_f64 + | ^ no function matches signature `gt(String, Float64 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Float64 NULL` with `String` +... and 33 more + + + +ast : '1' = n_f64 +raw expr : eq('1', n_f64::Float64 NULL) +checked expr : eq(CAST("1" AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 > 1::uint64 +raw expr : gt(n_f64::Float64 NULL, CAST(1 AS UInt64)) +checked expr : gt(n_f64, CAST(to_uint64(1_u8) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_f64 = 1::uint64 +raw expr : eq(n_f64::Float64 NULL, CAST(1 AS UInt64)) +checked expr : eq(n_f64, CAST(to_uint64(1_u8) AS Float64 NULL)) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 > n_f64 +raw expr : gt(CAST(1 AS UInt64), n_f64::Float64 NULL) +checked expr : gt(CAST(to_uint64(1_u8) AS Float64 NULL), n_f64) +optimized expr : true +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 = n_f64 +raw expr : eq(CAST(1 AS UInt64), n_f64::Float64 NULL) +checked expr : eq(CAST(to_uint64(1_u8) AS Float64 NULL), n_f64) +optimized expr : false +evaluation: ++--------+--------------+--------------+ +| | n_f64 | Output | ++--------+--------------+--------------+ +| Type | Float64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+--------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_f64 | NullableColumn { column: Float64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt b/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt index 7df25a1ff020a..822f2023f65eb 100644 --- a/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt +++ b/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt @@ -1402,3 +1402,647 @@ evaluation (internal): +--------+--------------------------------------------------------------------------+ +ast : n_i32 > 1 +raw expr : gt(n_i32::Int32 NULL, 1) +checked expr : gt(n_i32, CAST(1_u8 AS Int32 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = 1 +raw expr : eq(n_i32::Int32 NULL, 1) +checked expr : eq(n_i32, CAST(1_i32 AS Int32 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_i32 +raw expr : gt(1, n_i32::Int32 NULL) +checked expr : gt(CAST(1_u8 AS Int32 NULL), n_i32) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_i32 +raw expr : eq(1, n_i32::Int32 NULL) +checked expr : eq(CAST(1_i32 AS Int32 NULL), n_i32) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > 1.0 +raw expr : gt(n_i32::Int32 NULL, 1.0) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = 1.0 +raw expr : eq(n_i32::Int32 NULL, 1.0) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_i32 +raw expr : gt(1.0, n_i32::Int32 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_i32 +raw expr : eq(1.0, n_i32::Int32 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_i32 > '1' + | ^ no function matches signature `gt(Int32 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Int32 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int32` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int32 NULL` with `String` +... and 33 more + + + +ast : n_i32 = '1' +raw expr : eq(n_i32::Int32 NULL, '1') +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST("1" AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_i32 + | ^ no function matches signature `gt(String, Int32 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int32 NULL` with `String` +... and 33 more + + + +ast : '1' = n_i32 +raw expr : eq('1', n_i32::Int32 NULL) +checked expr : eq(CAST("1" AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 > 1::uint64 +raw expr : gt(n_i32::Int32 NULL, CAST(1 AS UInt64)) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(to_uint64(1_u8) AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i32 = 1::uint64 +raw expr : eq(n_i32::Int32 NULL, CAST(1 AS UInt64)) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(to_uint64(1_u8) AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 > n_i32 +raw expr : gt(CAST(1 AS UInt64), n_i32::Int32 NULL) +checked expr : gt(CAST(to_uint64(1_u8) AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 = n_i32 +raw expr : eq(CAST(1 AS UInt64), n_i32::Int32 NULL) +checked expr : eq(CAST(to_uint64(1_u8) AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i32 | Output | ++--------+------------+--------------+ +| Type | Int32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i32 | NullableColumn { column: Int32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > 1 +raw expr : gt(n_i64::Int64 NULL, 1) +checked expr : gt(n_i64, CAST(1_u8 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = 1 +raw expr : eq(n_i64::Int64 NULL, 1) +checked expr : eq(n_i64, CAST(1_i64 AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_i64 +raw expr : gt(1, n_i64::Int64 NULL) +checked expr : gt(CAST(1_u8 AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_i64 +raw expr : eq(1, n_i64::Int64 NULL) +checked expr : eq(CAST(1_i64 AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > 1.0 +raw expr : gt(n_i64::Int64 NULL, 1.0) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = 1.0 +raw expr : eq(n_i64::Int64 NULL, 1.0) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_i64 +raw expr : gt(1.0, n_i64::Int64 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_i64 +raw expr : eq(1.0, n_i64::Int64 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_i64 > '1' + | ^ no function matches signature `gt(Int64 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Int64 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int64` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int64 NULL` with `String` +... and 33 more + + + +ast : n_i64 = '1' +raw expr : eq(n_i64::Int64 NULL, '1') +checked expr : eq(n_i64, CAST("1" AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_i64 + | ^ no function matches signature `gt(String, Int64 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int64 NULL` with `String` +... and 33 more + + + +ast : '1' = n_i64 +raw expr : eq('1', n_i64::Int64 NULL) +checked expr : eq(CAST("1" AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 > 1::uint64 +raw expr : gt(n_i64::Int64 NULL, CAST(1 AS UInt64)) +checked expr : gt(n_i64, CAST(to_uint64(1_u8) AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_i64 = 1::uint64 +raw expr : eq(n_i64::Int64 NULL, CAST(1 AS UInt64)) +checked expr : eq(n_i64, CAST(to_uint64(1_u8) AS Int64 NULL)) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 > n_i64 +raw expr : gt(CAST(1 AS UInt64), n_i64::Int64 NULL) +checked expr : gt(CAST(to_uint64(1_u8) AS Int64 NULL), n_i64) +optimized expr : true +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 = n_i64 +raw expr : eq(CAST(1 AS UInt64), n_i64::Int64 NULL) +checked expr : eq(CAST(to_uint64(1_u8) AS Int64 NULL), n_i64) +optimized expr : false +evaluation: ++--------+------------+--------------+ +| | n_i64 | Output | ++--------+------------+--------------+ +| Type | Int64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_i64 | NullableColumn { column: Int64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt b/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt index 708c20088c773..a10112507cee2 100644 --- a/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt +++ b/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt @@ -1402,3 +1402,647 @@ evaluation (internal): +--------+--------------------------------------------------------------------------+ +ast : n_u32 > 1 +raw expr : gt(n_u32::UInt32 NULL, 1) +checked expr : gt(n_u32, CAST(1_u8 AS UInt32 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = 1 +raw expr : eq(n_u32::UInt32 NULL, 1) +checked expr : eq(n_u32, CAST(1_u32 AS UInt32 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_u32 +raw expr : gt(1, n_u32::UInt32 NULL) +checked expr : gt(CAST(1_u8 AS UInt32 NULL), n_u32) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_u32 +raw expr : eq(1, n_u32::UInt32 NULL) +checked expr : eq(CAST(1_u32 AS UInt32 NULL), n_u32) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > 1.0 +raw expr : gt(n_u32::UInt32 NULL, 1.0) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = 1.0 +raw expr : eq(n_u32::UInt32 NULL, 1.0) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_u32 +raw expr : gt(1.0, n_u32::UInt32 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_u32 +raw expr : eq(1.0, n_u32::UInt32 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_u32 > '1' + | ^ no function matches signature `gt(UInt32 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `UInt32 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt32` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt32 NULL` with `String` +... and 33 more + + + +ast : n_u32 = '1' +raw expr : eq(n_u32::UInt32 NULL, '1') +checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST("1" AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_u32 + | ^ no function matches signature `gt(String, UInt32 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt32 NULL` with `String` +... and 33 more + + + +ast : '1' = n_u32 +raw expr : eq('1', n_u32::UInt32 NULL) +checked expr : eq(CAST("1" AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 > 1::uint64 +raw expr : gt(n_u32::UInt32 NULL, CAST(1 AS UInt64)) +checked expr : gt(CAST(n_u32 AS UInt64 NULL), CAST(to_uint64(1_u8) AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u32 = 1::uint64 +raw expr : eq(n_u32::UInt32 NULL, CAST(1 AS UInt64)) +checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST(to_uint64(1_u8) AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 > n_u32 +raw expr : gt(CAST(1 AS UInt64), n_u32::UInt32 NULL) +checked expr : gt(CAST(to_uint64(1_u8) AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 = n_u32 +raw expr : eq(CAST(1 AS UInt64), n_u32::UInt32 NULL) +checked expr : eq(CAST(to_uint64(1_u8) AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u32 | Output | ++--------+-------------+--------------+ +| Type | UInt32 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u32 | NullableColumn { column: UInt32([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > 1 +raw expr : gt(n_u64::UInt64 NULL, 1) +checked expr : gt(n_u64, CAST(1_u8 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = 1 +raw expr : eq(n_u64::UInt64 NULL, 1) +checked expr : eq(n_u64, CAST(1_u64 AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 > n_u64 +raw expr : gt(1, n_u64::UInt64 NULL) +checked expr : gt(CAST(1_u8 AS UInt64 NULL), n_u64) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1 = n_u64 +raw expr : eq(1, n_u64::UInt64 NULL) +checked expr : eq(CAST(1_u64 AS UInt64 NULL), n_u64) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > 1.0 +raw expr : gt(n_u64::UInt64 NULL, 1.0) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = 1.0 +raw expr : eq(n_u64::UInt64 NULL, 1.0) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 > n_u64 +raw expr : gt(1.0, n_u64::UInt64 NULL) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1.0 = n_u64 +raw expr : eq(1.0, n_u64::UInt64 NULL) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:7 + | +1 | n_u64 > '1' + | ^ no function matches signature `gt(UInt64 NULL, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `UInt64 NULL` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt64` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt64 NULL` with `String` +... and 33 more + + + +ast : n_u64 = '1' +raw expr : eq(n_u64::UInt64 NULL, '1') +checked expr : eq(n_u64, CAST("1" AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > n_u64 + | ^ no function matches signature `gt(String, UInt64 NULL)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt64 NULL` with `String` +... and 33 more + + + +ast : '1' = n_u64 +raw expr : eq('1', n_u64::UInt64 NULL) +checked expr : eq(CAST("1" AS UInt64 NULL), n_u64) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 > 1::uint64 +raw expr : gt(n_u64::UInt64 NULL, CAST(1 AS UInt64)) +checked expr : gt(n_u64, CAST(to_uint64(1_u8) AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : n_u64 = 1::uint64 +raw expr : eq(n_u64::UInt64 NULL, CAST(1 AS UInt64)) +checked expr : eq(n_u64, CAST(to_uint64(1_u8) AS UInt64 NULL)) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 > n_u64 +raw expr : gt(CAST(1 AS UInt64), n_u64::UInt64 NULL) +checked expr : gt(CAST(to_uint64(1_u8) AS UInt64 NULL), n_u64) +optimized expr : true +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______1]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + +ast : 1::uint64 = n_u64 +raw expr : eq(CAST(1 AS UInt64), n_u64::UInt64 NULL) +checked expr : eq(CAST(to_uint64(1_u8) AS UInt64 NULL), n_u64) +optimized expr : false +evaluation: ++--------+-------------+--------------+ +| | n_u64 | Output | ++--------+-------------+--------------+ +| Type | UInt64 NULL | Boolean NULL | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+-------------+--------------+ +evaluation (internal): ++--------+--------------------------------------------------------------------------+ +| Column | Data | ++--------+--------------------------------------------------------------------------+ +| n_u64 | NullableColumn { column: UInt64([0]), validity: [0b_______1] } | +| Output | NullableColumn { column: Boolean([0b_______0]), validity: [0b_______1] } | ++--------+--------------------------------------------------------------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/signed.txt b/src/query/functions/tests/it/type_check/testdata/signed.txt index 7fc0a8dc9d13c..1e4dd413b7492 100644 --- a/src/query/functions/tests/it/type_check/testdata/signed.txt +++ b/src/query/functions/tests/it/type_check/testdata/signed.txt @@ -1402,3 +1402,647 @@ evaluation (internal): +--------+--------------------------------------------------------------------------+ +ast : i32 > 1 +raw expr : gt(i32::Int32, 1) +checked expr : gt(i32, to_int32(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = 1 +raw expr : eq(i32::Int32, 1) +checked expr : eq(i32, 1_i32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > i32 +raw expr : gt(1, i32::Int32) +checked expr : gt(to_int32(1_u8), i32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = i32 +raw expr : eq(1, i32::Int32) +checked expr : eq(1_i32, i32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 > 1.0 +raw expr : gt(i32::Int32, 1.0) +checked expr : gt(to_decimal(10, 0)(i32), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = 1.0 +raw expr : eq(i32::Int32, 1.0) +checked expr : eq(to_decimal(10, 0)(i32), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > i32 +raw expr : gt(1.0, i32::Int32) +checked expr : gt(1.0_d128(2,1), to_decimal(10, 0)(i32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = i32 +raw expr : eq(1.0, i32::Int32) +checked expr : eq(1.0_d128(2,1), to_decimal(10, 0)(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | i32 > '1' + | ^ no function matches signature `gt(Int32, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Int32` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int32` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int32` with `String` +... and 33 more + + + +ast : i32 = '1' +raw expr : eq(i32::Int32, '1') +checked expr : eq(to_int64(i32), to_int64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > i32 + | ^ no function matches signature `gt(String, Int32)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int32` with `String` +... and 33 more + + + +ast : '1' = i32 +raw expr : eq('1', i32::Int32) +checked expr : eq(to_int64("1"), to_int64(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 > 1::uint64 +raw expr : gt(i32::Int32, CAST(1 AS UInt64)) +checked expr : gt(to_int64(i32), to_int64(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i32 = 1::uint64 +raw expr : eq(i32::Int32, CAST(1 AS UInt64)) +checked expr : eq(to_int64(i32), to_int64(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1::uint64 > i32 +raw expr : gt(CAST(1 AS UInt64), i32::Int32) +checked expr : gt(to_int64(to_uint64(1_u8)), to_int64(i32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1::uint64 = i32 +raw expr : eq(CAST(1 AS UInt64), i32::Int32) +checked expr : eq(to_int64(to_uint64(1_u8)), to_int64(i32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i32 | Output | ++--------+---------+---------+ +| Type | Int32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i32 | Int32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 > 1 +raw expr : gt(i64::Int64, 1) +checked expr : gt(i64, to_int64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = 1 +raw expr : eq(i64::Int64, 1) +checked expr : eq(i64, 1_i64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > i64 +raw expr : gt(1, i64::Int64) +checked expr : gt(to_int64(1_u8), i64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = i64 +raw expr : eq(1, i64::Int64) +checked expr : eq(1_i64, i64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 > 1.0 +raw expr : gt(i64::Int64, 1.0) +checked expr : gt(to_decimal(19, 0)(i64), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = 1.0 +raw expr : eq(i64::Int64, 1.0) +checked expr : eq(to_decimal(19, 0)(i64), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > i64 +raw expr : gt(1.0, i64::Int64) +checked expr : gt(1.0_d128(2,1), to_decimal(19, 0)(i64)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = i64 +raw expr : eq(1.0, i64::Int64) +checked expr : eq(1.0_d128(2,1), to_decimal(19, 0)(i64)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | i64 > '1' + | ^ no function matches signature `gt(Int64, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `Int64` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `Int64` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int64` with `String` +... and 33 more + + + +ast : i64 = '1' +raw expr : eq(i64::Int64, '1') +checked expr : eq(i64, to_int64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > i64 + | ^ no function matches signature `gt(String, Int64)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `Int64` with `String` +... and 33 more + + + +ast : '1' = i64 +raw expr : eq('1', i64::Int64) +checked expr : eq(to_int64("1"), i64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 > 1::uint64 +raw expr : gt(i64::Int64, CAST(1 AS UInt64)) +checked expr : gt(i64, to_int64(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : i64 = 1::uint64 +raw expr : eq(i64::Int64, CAST(1 AS UInt64)) +checked expr : eq(i64, to_int64(to_uint64(1_u8))) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1::uint64 > i64 +raw expr : gt(CAST(1 AS UInt64), i64::Int64) +checked expr : gt(to_int64(to_uint64(1_u8)), i64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1::uint64 = i64 +raw expr : eq(CAST(1 AS UInt64), i64::Int64) +checked expr : eq(to_int64(to_uint64(1_u8)), i64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | i64 | Output | ++--------+---------+---------+ +| Type | Int64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| i64 | Int64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + diff --git a/src/query/functions/tests/it/type_check/testdata/unsigned.txt b/src/query/functions/tests/it/type_check/testdata/unsigned.txt index ae1fa6ad3e825..bc1077c16ccca 100644 --- a/src/query/functions/tests/it/type_check/testdata/unsigned.txt +++ b/src/query/functions/tests/it/type_check/testdata/unsigned.txt @@ -1402,3 +1402,647 @@ evaluation (internal): +--------+--------------------------------------------------------------------------+ +ast : u32 > 1 +raw expr : gt(u32::UInt32, 1) +checked expr : gt(u32, to_uint32(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = 1 +raw expr : eq(u32::UInt32, 1) +checked expr : eq(u32, 1_u32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > u32 +raw expr : gt(1, u32::UInt32) +checked expr : gt(to_uint32(1_u8), u32) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = u32 +raw expr : eq(1, u32::UInt32) +checked expr : eq(1_u32, u32) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 > 1.0 +raw expr : gt(u32::UInt32, 1.0) +checked expr : gt(to_decimal(10, 0)(u32), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = 1.0 +raw expr : eq(u32::UInt32, 1.0) +checked expr : eq(to_decimal(10, 0)(u32), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > u32 +raw expr : gt(1.0, u32::UInt32) +checked expr : gt(1.0_d128(2,1), to_decimal(10, 0)(u32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = u32 +raw expr : eq(1.0, u32::UInt32) +checked expr : eq(1.0_d128(2,1), to_decimal(10, 0)(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | u32 > '1' + | ^ no function matches signature `gt(UInt32, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `UInt32` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt32` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt32` with `String` +... and 33 more + + + +ast : u32 = '1' +raw expr : eq(u32::UInt32, '1') +checked expr : eq(to_uint64(u32), to_uint64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > u32 + | ^ no function matches signature `gt(String, UInt32)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt32` with `String` +... and 33 more + + + +ast : '1' = u32 +raw expr : eq('1', u32::UInt32) +checked expr : eq(to_uint64("1"), to_uint64(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 > 1::uint64 +raw expr : gt(u32::UInt32, CAST(1 AS UInt64)) +checked expr : gt(to_uint64(u32), to_uint64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u32 = 1::uint64 +raw expr : eq(u32::UInt32, CAST(1 AS UInt64)) +checked expr : eq(to_uint64(u32), to_uint64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1::uint64 > u32 +raw expr : gt(CAST(1 AS UInt64), u32::UInt32) +checked expr : gt(to_uint64(1_u8), to_uint64(u32)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1::uint64 = u32 +raw expr : eq(CAST(1 AS UInt64), u32::UInt32) +checked expr : eq(to_uint64(1_u8), to_uint64(u32)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u32 | Output | ++--------+---------+---------+ +| Type | UInt32 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u32 | UInt32([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 > 1 +raw expr : gt(u64::UInt64, 1) +checked expr : gt(u64, to_uint64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = 1 +raw expr : eq(u64::UInt64, 1) +checked expr : eq(u64, 1_u64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1 > u64 +raw expr : gt(1, u64::UInt64) +checked expr : gt(to_uint64(1_u8), u64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1 = u64 +raw expr : eq(1, u64::UInt64) +checked expr : eq(1_u64, u64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 > 1.0 +raw expr : gt(u64::UInt64, 1.0) +checked expr : gt(to_decimal(20, 0)(u64), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = 1.0 +raw expr : eq(u64::UInt64, 1.0) +checked expr : eq(to_decimal(20, 0)(u64), 1.0_d128(2,1)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1.0 > u64 +raw expr : gt(1.0, u64::UInt64) +checked expr : gt(1.0_d128(2,1), to_decimal(20, 0)(u64)) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1.0 = u64 +raw expr : eq(1.0, u64::UInt64) +checked expr : eq(1.0_d128(2,1), to_decimal(20, 0)(u64)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | u64 > '1' + | ^ no function matches signature `gt(UInt64, String)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `UInt64` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `UInt64` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt64` with `String` +... and 33 more + + + +ast : u64 = '1' +raw expr : eq(u64::UInt64, '1') +checked expr : eq(u64, to_uint64("1")) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +error: + --> SQL:1:5 + | +1 | '1' > u64 + | ^ no function matches signature `gt(String, UInt64)`, you might need to add explicit type casts. + +candidate functions: + gt(Variant, Variant) :: Boolean : unable to unify `String` with `Variant` + gt(Variant NULL, Variant NULL) :: Boolean NULL : unable to unify `String` with `Variant` + gt(String, String) :: Boolean : unable to unify `UInt64` with `String` +... and 33 more + + + +ast : '1' = u64 +raw expr : eq('1', u64::UInt64) +checked expr : eq(to_uint64("1"), u64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 > 1::uint64 +raw expr : gt(u64::UInt64, CAST(1 AS UInt64)) +checked expr : gt(u64, to_uint64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : u64 = 1::uint64 +raw expr : eq(u64::UInt64, CAST(1 AS UInt64)) +checked expr : eq(u64, to_uint64(1_u8)) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + +ast : 1::uint64 > u64 +raw expr : gt(CAST(1 AS UInt64), u64::UInt64) +checked expr : gt(to_uint64(1_u8), u64) +optimized expr : true +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {TRUE} | +| Row 0 | 0 | true | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______1]) | ++--------+-----------------------+ + + +ast : 1::uint64 = u64 +raw expr : eq(CAST(1 AS UInt64), u64::UInt64) +checked expr : eq(to_uint64(1_u8), u64) +optimized expr : false +evaluation: ++--------+---------+---------+ +| | u64 | Output | ++--------+---------+---------+ +| Type | UInt64 | Boolean | +| Domain | {0..=0} | {FALSE} | +| Row 0 | 0 | false | ++--------+---------+---------+ +evaluation (internal): ++--------+-----------------------+ +| Column | Data | ++--------+-----------------------+ +| u64 | UInt64([0]) | +| Output | Boolean([0b_______0]) | ++--------+-----------------------+ + + From 7299472ca4716f15a2922a4f9023cf4f81978c54 Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 1 Apr 2025 14:58:00 +0800 Subject: [PATCH 12/23] fix Signed-off-by: coldWater --- src/query/functions/tests/it/type_check.rs | 38 +++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/query/functions/tests/it/type_check.rs b/src/query/functions/tests/it/type_check.rs index 4121d741dd7ff..9273972561791 100644 --- a/src/query/functions/tests/it/type_check.rs +++ b/src/query/functions/tests/it/type_check.rs @@ -82,7 +82,7 @@ fn test_type_check() { ]; // 8 and 16 are just smaller 32. - let size = vec!["32", "64"]; + let size = ["32", "64"]; let signed = size.iter().map(|s| format!("i{}", s)).collect::>(); let unsigned = size.iter().map(|s| format!("u{}", s)).collect::>(); @@ -120,30 +120,30 @@ fn test_type_check() { .flat_map(|lhs| all_num.iter().map(move |rhs| (lhs, *rhs))) .collect::>(); for (lhs, rhs) in pair { - run_ast(file, &format!("{lhs} > {rhs}"), &columns); - run_ast(file, &format!("{lhs} = {rhs}"), &columns); + run_ast(file, format!("{lhs} > {rhs}"), &columns); + run_ast(file, format!("{lhs} = {rhs}"), &columns); } for ty in types { - run_ast(file, &format!("{ty} > 1"), &columns); - run_ast(file, &format!("{ty} = 1"), &columns); - run_ast(file, &format!("1 > {ty}"), &columns); - run_ast(file, &format!("1 = {ty}"), &columns); + run_ast(file, format!("{ty} > 1"), &columns); + run_ast(file, format!("{ty} = 1"), &columns); + run_ast(file, format!("1 > {ty}"), &columns); + run_ast(file, format!("1 = {ty}"), &columns); - run_ast(file, &format!("{ty} > 1.0"), &columns); - run_ast(file, &format!("{ty} = 1.0"), &columns); - run_ast(file, &format!("1.0 > {ty}"), &columns); - run_ast(file, &format!("1.0 = {ty}"), &columns); + run_ast(file, format!("{ty} > 1.0"), &columns); + run_ast(file, format!("{ty} = 1.0"), &columns); + run_ast(file, format!("1.0 > {ty}"), &columns); + run_ast(file, format!("1.0 = {ty}"), &columns); - run_ast(file, &format!("{ty} > '1'"), &columns); - run_ast(file, &format!("{ty} = '1'"), &columns); - run_ast(file, &format!("'1' > {ty}"), &columns); - run_ast(file, &format!("'1' = {ty}"), &columns); + run_ast(file, format!("{ty} > '1'"), &columns); + run_ast(file, format!("{ty} = '1'"), &columns); + run_ast(file, format!("'1' > {ty}"), &columns); + run_ast(file, format!("'1' = {ty}"), &columns); - run_ast(file, &format!("{ty} > 1::uint64"), &columns); - run_ast(file, &format!("{ty} = 1::uint64"), &columns); - run_ast(file, &format!("1::uint64 > {ty}"), &columns); - run_ast(file, &format!("1::uint64 = {ty}"), &columns); + run_ast(file, format!("{ty} > 1::uint64"), &columns); + run_ast(file, format!("{ty} = 1::uint64"), &columns); + run_ast(file, format!("1::uint64 > {ty}"), &columns); + run_ast(file, format!("1::uint64 = {ty}"), &columns); } } } From a7992202b07cd9bbbb50eb6697914af8a30f3453 Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 1 Apr 2025 15:26:11 +0800 Subject: [PATCH 13/23] fix Signed-off-by: coldWater --- src/query/expression/src/type_check.rs | 1 - .../tests/it/type_check/testdata/decimal.txt | 320 ++++++++-------- .../tests/it/type_check/testdata/float.txt | 352 +++++++++--------- .../type_check/testdata/nullable_signed.txt | 176 ++++----- .../type_check/testdata/nullable_unsigned.txt | 176 ++++----- .../tests/it/type_check/testdata/signed.txt | 168 ++++----- .../tests/it/type_check/testdata/unsigned.txt | 168 ++++----- .../mode/standalone/explain/explain.test | 4 +- .../mode/standalone/explain/filter.test | 4 +- .../mode/standalone/explain/select.test | 4 +- .../mode/standalone/explain/subquery.test | 2 +- 11 files changed, 687 insertions(+), 688 deletions(-) diff --git a/src/query/expression/src/type_check.rs b/src/query/expression/src/type_check.rs index e653a72b9b8ff..2df0593c259cc 100755 --- a/src/query/expression/src/type_check.rs +++ b/src/query/expression/src/type_check.rs @@ -337,7 +337,6 @@ pub fn check_function( if !checked_candidates.is_empty() { checked_candidates.sort_by_key(|(_, score, seq)| std::cmp::Reverse((*score, *seq))); - println!("checked_candidates {:#?}", checked_candidates); return Ok(checked_candidates.pop().unwrap().0); } diff --git a/src/query/functions/tests/it/type_check/testdata/decimal.txt b/src/query/functions/tests/it/type_check/testdata/decimal.txt index 05426aef3c2cd..3ca1e86e2894d 100644 --- a/src/query/functions/tests/it/type_check/testdata/decimal.txt +++ b/src/query/functions/tests/it/type_check/testdata/decimal.txt @@ -1,6 +1,6 @@ ast : d128 > i32 raw expr : gt(d128::Decimal(38, 0), i32::Int32) -checked expr : gt(d128, to_decimal(10, 0)(i32)) +checked expr : gt(d128, CAST(i32 AS Decimal(10, 0))) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -22,7 +22,7 @@ evaluation (internal): ast : d128 = i32 raw expr : eq(d128::Decimal(38, 0), i32::Int32) -checked expr : eq(d128, to_decimal(10, 0)(i32)) +checked expr : eq(d128, CAST(i32 AS Decimal(10, 0))) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -44,7 +44,7 @@ evaluation (internal): ast : d128 > i64 raw expr : gt(d128::Decimal(38, 0), i64::Int64) -checked expr : gt(d128, to_decimal(19, 0)(i64)) +checked expr : gt(d128, CAST(i64 AS Decimal(19, 0))) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -66,7 +66,7 @@ evaluation (internal): ast : d128 = i64 raw expr : eq(d128::Decimal(38, 0), i64::Int64) -checked expr : eq(d128, to_decimal(19, 0)(i64)) +checked expr : eq(d128, CAST(i64 AS Decimal(19, 0))) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -88,7 +88,7 @@ evaluation (internal): ast : d128 > u32 raw expr : gt(d128::Decimal(38, 0), u32::UInt32) -checked expr : gt(d128, to_decimal(10, 0)(u32)) +checked expr : gt(d128, CAST(u32 AS Decimal(10, 0))) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -110,7 +110,7 @@ evaluation (internal): ast : d128 = u32 raw expr : eq(d128::Decimal(38, 0), u32::UInt32) -checked expr : eq(d128, to_decimal(10, 0)(u32)) +checked expr : eq(d128, CAST(u32 AS Decimal(10, 0))) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -132,7 +132,7 @@ evaluation (internal): ast : d128 > u64 raw expr : gt(d128::Decimal(38, 0), u64::UInt64) -checked expr : gt(d128, to_decimal(20, 0)(u64)) +checked expr : gt(d128, CAST(u64 AS Decimal(20, 0))) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -154,7 +154,7 @@ evaluation (internal): ast : d128 = u64 raw expr : eq(d128::Decimal(38, 0), u64::UInt64) -checked expr : eq(d128, to_decimal(20, 0)(u64)) +checked expr : eq(d128, CAST(u64 AS Decimal(20, 0))) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -176,7 +176,7 @@ evaluation (internal): ast : d128 > n_i32 raw expr : gt(d128::Decimal(38, 0), n_i32::Int32 NULL) -checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+------------+----------------+--------------+ @@ -198,7 +198,7 @@ evaluation (internal): ast : d128 = n_i32 raw expr : eq(d128::Decimal(38, 0), n_i32::Int32 NULL) -checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+------------+----------------+--------------+ @@ -220,7 +220,7 @@ evaluation (internal): ast : d128 > n_i64 raw expr : gt(d128::Decimal(38, 0), n_i64::Int64 NULL) -checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : false evaluation: +--------+------------+----------------+--------------+ @@ -242,7 +242,7 @@ evaluation (internal): ast : d128 = n_i64 raw expr : eq(d128::Decimal(38, 0), n_i64::Int64 NULL) -checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : true evaluation: +--------+------------+----------------+--------------+ @@ -264,7 +264,7 @@ evaluation (internal): ast : d128 > n_u32 raw expr : gt(d128::Decimal(38, 0), n_u32::UInt32 NULL) -checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+-------------+----------------+--------------+ @@ -286,7 +286,7 @@ evaluation (internal): ast : d128 = n_u32 raw expr : eq(d128::Decimal(38, 0), n_u32::UInt32 NULL) -checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+-------------+----------------+--------------+ @@ -308,7 +308,7 @@ evaluation (internal): ast : d128 > n_u64 raw expr : gt(d128::Decimal(38, 0), n_u64::UInt64 NULL) -checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+-------------+----------------+--------------+ @@ -330,7 +330,7 @@ evaluation (internal): ast : d128 = n_u64 raw expr : eq(d128::Decimal(38, 0), n_u64::UInt64 NULL) -checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : true evaluation: +--------+-------------+----------------+--------------+ @@ -352,7 +352,7 @@ evaluation (internal): ast : d128 > f32 raw expr : gt(d128::Decimal(38, 0), f32::Float32) -checked expr : gt(to_float64(d128), to_float64(f32)) +checked expr : gt(CAST(d128 AS Float64), CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -374,7 +374,7 @@ evaluation (internal): ast : d128 = f32 raw expr : eq(d128::Decimal(38, 0), f32::Float32) -checked expr : eq(to_float64(d128), to_float64(f32)) +checked expr : eq(CAST(d128 AS Float64), CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -396,7 +396,7 @@ evaluation (internal): ast : d128 > n_f32 raw expr : gt(d128::Decimal(38, 0), n_f32::Float32 NULL) -checked expr : gt(CAST(d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+----------------+--------------+ @@ -418,7 +418,7 @@ evaluation (internal): ast : d128 = n_f32 raw expr : eq(d128::Decimal(38, 0), n_f32::Float32 NULL) -checked expr : eq(CAST(d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+----------------+--------------+ @@ -440,7 +440,7 @@ evaluation (internal): ast : d128 > f64 raw expr : gt(d128::Decimal(38, 0), f64::Float64) -checked expr : gt(to_float64(d128), f64) +checked expr : gt(CAST(d128 AS Float64), f64) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -462,7 +462,7 @@ evaluation (internal): ast : d128 = f64 raw expr : eq(d128::Decimal(38, 0), f64::Float64) -checked expr : eq(to_float64(d128), f64) +checked expr : eq(CAST(d128 AS Float64), f64) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -484,7 +484,7 @@ evaluation (internal): ast : d128 > n_f64 raw expr : gt(d128::Decimal(38, 0), n_f64::Float64 NULL) -checked expr : gt(CAST(d128 AS Float64 NULL), n_f64) +checked expr : gt(CAST(d128 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+----------------+--------------+ @@ -506,7 +506,7 @@ evaluation (internal): ast : d128 = n_f64 raw expr : eq(d128::Decimal(38, 0), n_f64::Float64 NULL) -checked expr : eq(CAST(d128 AS Float64 NULL), n_f64) +checked expr : eq(CAST(d128 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+--------------+----------------+--------------+ @@ -570,7 +570,7 @@ evaluation (internal): ast : d128 > n_d128 raw expr : gt(d128::Decimal(38, 0), n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), n_d128) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), n_d128) optimized expr : false evaluation: +--------+----------------+---------------------+--------------+ @@ -592,7 +592,7 @@ evaluation (internal): ast : d128 = n_d128 raw expr : eq(d128::Decimal(38, 0), n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), n_d128) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), n_d128) optimized expr : true evaluation: +--------+----------------+---------------------+--------------+ @@ -658,7 +658,7 @@ evaluation (internal): ast : d128 > n_d256 raw expr : gt(d128::Decimal(38, 0), n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), n_d256) +checked expr : gt(CAST(d128 AS Decimal(38, 0) NULL), n_d256) optimized expr : false evaluation: +--------+----------------+---------------------+--------------+ @@ -680,7 +680,7 @@ evaluation (internal): ast : d128 = n_d256 raw expr : eq(d128::Decimal(38, 0), n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), n_d256) +checked expr : eq(CAST(d128 AS Decimal(38, 0) NULL), n_d256) optimized expr : true evaluation: +--------+----------------+---------------------+--------------+ @@ -702,7 +702,7 @@ evaluation (internal): ast : n_d128 > i32 raw expr : gt(n_d128::Decimal(38, 0) NULL, i32::Int32) -checked expr : gt(n_d128, CAST(i32 AS Decimal(10, 0) NULL)) +checked expr : gt(n_d128, CAST(i32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -724,7 +724,7 @@ evaluation (internal): ast : n_d128 = i32 raw expr : eq(n_d128::Decimal(38, 0) NULL, i32::Int32) -checked expr : eq(n_d128, CAST(i32 AS Decimal(10, 0) NULL)) +checked expr : eq(n_d128, CAST(i32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -746,7 +746,7 @@ evaluation (internal): ast : n_d128 > i64 raw expr : gt(n_d128::Decimal(38, 0) NULL, i64::Int64) -checked expr : gt(n_d128, CAST(i64 AS Decimal(19, 0) NULL)) +checked expr : gt(n_d128, CAST(i64 AS Decimal(19, 0) NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -768,7 +768,7 @@ evaluation (internal): ast : n_d128 = i64 raw expr : eq(n_d128::Decimal(38, 0) NULL, i64::Int64) -checked expr : eq(n_d128, CAST(i64 AS Decimal(19, 0) NULL)) +checked expr : eq(n_d128, CAST(i64 AS Decimal(19, 0) NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -790,7 +790,7 @@ evaluation (internal): ast : n_d128 > u32 raw expr : gt(n_d128::Decimal(38, 0) NULL, u32::UInt32) -checked expr : gt(n_d128, CAST(u32 AS Decimal(10, 0) NULL)) +checked expr : gt(n_d128, CAST(u32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -812,7 +812,7 @@ evaluation (internal): ast : n_d128 = u32 raw expr : eq(n_d128::Decimal(38, 0) NULL, u32::UInt32) -checked expr : eq(n_d128, CAST(u32 AS Decimal(10, 0) NULL)) +checked expr : eq(n_d128, CAST(u32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -834,7 +834,7 @@ evaluation (internal): ast : n_d128 > u64 raw expr : gt(n_d128::Decimal(38, 0) NULL, u64::UInt64) -checked expr : gt(n_d128, CAST(u64 AS Decimal(20, 0) NULL)) +checked expr : gt(n_d128, CAST(u64 AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -856,7 +856,7 @@ evaluation (internal): ast : n_d128 = u64 raw expr : eq(n_d128::Decimal(38, 0) NULL, u64::UInt64) -checked expr : eq(n_d128, CAST(u64 AS Decimal(20, 0) NULL)) +checked expr : eq(n_d128, CAST(u64 AS Decimal(20, 0) NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -878,7 +878,7 @@ evaluation (internal): ast : n_d128 > n_i32 raw expr : gt(n_d128::Decimal(38, 0) NULL, n_i32::Int32 NULL) -checked expr : gt(n_d128, CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : gt(n_d128, CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+------------+---------------------+--------------+ @@ -900,7 +900,7 @@ evaluation (internal): ast : n_d128 = n_i32 raw expr : eq(n_d128::Decimal(38, 0) NULL, n_i32::Int32 NULL) -checked expr : eq(n_d128, CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : eq(n_d128, CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+------------+---------------------+--------------+ @@ -922,7 +922,7 @@ evaluation (internal): ast : n_d128 > n_i64 raw expr : gt(n_d128::Decimal(38, 0) NULL, n_i64::Int64 NULL) -checked expr : gt(n_d128, CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : gt(n_d128, CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : false evaluation: +--------+------------+---------------------+--------------+ @@ -944,7 +944,7 @@ evaluation (internal): ast : n_d128 = n_i64 raw expr : eq(n_d128::Decimal(38, 0) NULL, n_i64::Int64 NULL) -checked expr : eq(n_d128, CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : eq(n_d128, CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : true evaluation: +--------+------------+---------------------+--------------+ @@ -966,7 +966,7 @@ evaluation (internal): ast : n_d128 > n_u32 raw expr : gt(n_d128::Decimal(38, 0) NULL, n_u32::UInt32 NULL) -checked expr : gt(n_d128, CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : gt(n_d128, CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+-------------+---------------------+--------------+ @@ -988,7 +988,7 @@ evaluation (internal): ast : n_d128 = n_u32 raw expr : eq(n_d128::Decimal(38, 0) NULL, n_u32::UInt32 NULL) -checked expr : eq(n_d128, CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : eq(n_d128, CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+-------------+---------------------+--------------+ @@ -1010,7 +1010,7 @@ evaluation (internal): ast : n_d128 > n_u64 raw expr : gt(n_d128::Decimal(38, 0) NULL, n_u64::UInt64 NULL) -checked expr : gt(n_d128, CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : gt(n_d128, CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+-------------+---------------------+--------------+ @@ -1032,7 +1032,7 @@ evaluation (internal): ast : n_d128 = n_u64 raw expr : eq(n_d128::Decimal(38, 0) NULL, n_u64::UInt64 NULL) -checked expr : eq(n_d128, CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : eq(n_d128, CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : true evaluation: +--------+-------------+---------------------+--------------+ @@ -1054,7 +1054,7 @@ evaluation (internal): ast : n_d128 > f32 raw expr : gt(n_d128::Decimal(38, 0) NULL, f32::Float32) -checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -1076,7 +1076,7 @@ evaluation (internal): ast : n_d128 = f32 raw expr : eq(n_d128::Decimal(38, 0) NULL, f32::Float32) -checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -1098,7 +1098,7 @@ evaluation (internal): ast : n_d128 > n_f32 raw expr : gt(n_d128::Decimal(38, 0) NULL, n_f32::Float32 NULL) -checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+---------------------+--------------+ @@ -1120,7 +1120,7 @@ evaluation (internal): ast : n_d128 = n_f32 raw expr : eq(n_d128::Decimal(38, 0) NULL, n_f32::Float32 NULL) -checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+---------------------+--------------+ @@ -1142,7 +1142,7 @@ evaluation (internal): ast : n_d128 > f64 raw expr : gt(n_d128::Decimal(38, 0) NULL, f64::Float64) -checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : gt(CAST(n_d128 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -1164,7 +1164,7 @@ evaluation (internal): ast : n_d128 = f64 raw expr : eq(n_d128::Decimal(38, 0) NULL, f64::Float64) -checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -1186,7 +1186,7 @@ evaluation (internal): ast : n_d128 > n_f64 raw expr : gt(n_d128::Decimal(38, 0) NULL, n_f64::Float64 NULL) -checked expr : gt(CAST(n_d128 AS Float64 NULL), n_f64) +checked expr : gt(CAST(n_d128 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+---------------------+--------------+ @@ -1208,7 +1208,7 @@ evaluation (internal): ast : n_d128 = n_f64 raw expr : eq(n_d128::Decimal(38, 0) NULL, n_f64::Float64 NULL) -checked expr : eq(CAST(n_d128 AS Float64 NULL), n_f64) +checked expr : eq(CAST(n_d128 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+--------------+---------------------+--------------+ @@ -1230,7 +1230,7 @@ evaluation (internal): ast : n_d128 > d128 raw expr : gt(n_d128::Decimal(38, 0) NULL, d128::Decimal(38, 0)) -checked expr : gt(n_d128, CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : gt(n_d128, CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : false evaluation: +--------+----------------+---------------------+--------------+ @@ -1252,7 +1252,7 @@ evaluation (internal): ast : n_d128 = d128 raw expr : eq(n_d128::Decimal(38, 0) NULL, d128::Decimal(38, 0)) -checked expr : eq(n_d128, CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : eq(n_d128, CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : true evaluation: +--------+----------------+---------------------+--------------+ @@ -1316,7 +1316,7 @@ evaluation (internal): ast : n_d128 > d256 raw expr : gt(n_d128::Decimal(38, 0) NULL, d256::Decimal(76, 0)) -checked expr : gt(n_d128, CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : gt(n_d128, CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+----------------+--------------+ @@ -1338,7 +1338,7 @@ evaluation (internal): ast : n_d128 = d256 raw expr : eq(n_d128::Decimal(38, 0) NULL, d256::Decimal(76, 0)) -checked expr : eq(n_d128, CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : eq(n_d128, CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : true evaluation: +--------+---------------------+----------------+--------------+ @@ -1404,7 +1404,7 @@ evaluation (internal): ast : d256 > i32 raw expr : gt(d256::Decimal(76, 0), i32::Int32) -checked expr : gt(d256, to_decimal(10, 0)(i32)) +checked expr : gt(d256, CAST(i32 AS Decimal(10, 0))) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1426,7 +1426,7 @@ evaluation (internal): ast : d256 = i32 raw expr : eq(d256::Decimal(76, 0), i32::Int32) -checked expr : eq(d256, to_decimal(10, 0)(i32)) +checked expr : eq(d256, CAST(i32 AS Decimal(10, 0))) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1448,7 +1448,7 @@ evaluation (internal): ast : d256 > i64 raw expr : gt(d256::Decimal(76, 0), i64::Int64) -checked expr : gt(d256, to_decimal(19, 0)(i64)) +checked expr : gt(d256, CAST(i64 AS Decimal(19, 0))) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1470,7 +1470,7 @@ evaluation (internal): ast : d256 = i64 raw expr : eq(d256::Decimal(76, 0), i64::Int64) -checked expr : eq(d256, to_decimal(19, 0)(i64)) +checked expr : eq(d256, CAST(i64 AS Decimal(19, 0))) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1492,7 +1492,7 @@ evaluation (internal): ast : d256 > u32 raw expr : gt(d256::Decimal(76, 0), u32::UInt32) -checked expr : gt(d256, to_decimal(10, 0)(u32)) +checked expr : gt(d256, CAST(u32 AS Decimal(10, 0))) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1514,7 +1514,7 @@ evaluation (internal): ast : d256 = u32 raw expr : eq(d256::Decimal(76, 0), u32::UInt32) -checked expr : eq(d256, to_decimal(10, 0)(u32)) +checked expr : eq(d256, CAST(u32 AS Decimal(10, 0))) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1536,7 +1536,7 @@ evaluation (internal): ast : d256 > u64 raw expr : gt(d256::Decimal(76, 0), u64::UInt64) -checked expr : gt(d256, to_decimal(20, 0)(u64)) +checked expr : gt(d256, CAST(u64 AS Decimal(20, 0))) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1558,7 +1558,7 @@ evaluation (internal): ast : d256 = u64 raw expr : eq(d256::Decimal(76, 0), u64::UInt64) -checked expr : eq(d256, to_decimal(20, 0)(u64)) +checked expr : eq(d256, CAST(u64 AS Decimal(20, 0))) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1580,7 +1580,7 @@ evaluation (internal): ast : d256 > n_i32 raw expr : gt(d256::Decimal(76, 0), n_i32::Int32 NULL) -checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+------------+----------------+--------------+ @@ -1602,7 +1602,7 @@ evaluation (internal): ast : d256 = n_i32 raw expr : eq(d256::Decimal(76, 0), n_i32::Int32 NULL) -checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+------------+----------------+--------------+ @@ -1624,7 +1624,7 @@ evaluation (internal): ast : d256 > n_i64 raw expr : gt(d256::Decimal(76, 0), n_i64::Int64 NULL) -checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : false evaluation: +--------+------------+----------------+--------------+ @@ -1646,7 +1646,7 @@ evaluation (internal): ast : d256 = n_i64 raw expr : eq(d256::Decimal(76, 0), n_i64::Int64 NULL) -checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : true evaluation: +--------+------------+----------------+--------------+ @@ -1668,7 +1668,7 @@ evaluation (internal): ast : d256 > n_u32 raw expr : gt(d256::Decimal(76, 0), n_u32::UInt32 NULL) -checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+-------------+----------------+--------------+ @@ -1690,7 +1690,7 @@ evaluation (internal): ast : d256 = n_u32 raw expr : eq(d256::Decimal(76, 0), n_u32::UInt32 NULL) -checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+-------------+----------------+--------------+ @@ -1712,7 +1712,7 @@ evaluation (internal): ast : d256 > n_u64 raw expr : gt(d256::Decimal(76, 0), n_u64::UInt64 NULL) -checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+-------------+----------------+--------------+ @@ -1734,7 +1734,7 @@ evaluation (internal): ast : d256 = n_u64 raw expr : eq(d256::Decimal(76, 0), n_u64::UInt64 NULL) -checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : true evaluation: +--------+-------------+----------------+--------------+ @@ -1756,7 +1756,7 @@ evaluation (internal): ast : d256 > f32 raw expr : gt(d256::Decimal(76, 0), f32::Float32) -checked expr : gt(to_float64(d256), to_float64(f32)) +checked expr : gt(CAST(d256 AS Float64), CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1778,7 +1778,7 @@ evaluation (internal): ast : d256 = f32 raw expr : eq(d256::Decimal(76, 0), f32::Float32) -checked expr : eq(to_float64(d256), to_float64(f32)) +checked expr : eq(CAST(d256 AS Float64), CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1800,7 +1800,7 @@ evaluation (internal): ast : d256 > n_f32 raw expr : gt(d256::Decimal(76, 0), n_f32::Float32 NULL) -checked expr : gt(CAST(d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+----------------+--------------+ @@ -1822,7 +1822,7 @@ evaluation (internal): ast : d256 = n_f32 raw expr : eq(d256::Decimal(76, 0), n_f32::Float32 NULL) -checked expr : eq(CAST(d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+----------------+--------------+ @@ -1844,7 +1844,7 @@ evaluation (internal): ast : d256 > f64 raw expr : gt(d256::Decimal(76, 0), f64::Float64) -checked expr : gt(to_float64(d256), f64) +checked expr : gt(CAST(d256 AS Float64), f64) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1866,7 +1866,7 @@ evaluation (internal): ast : d256 = f64 raw expr : eq(d256::Decimal(76, 0), f64::Float64) -checked expr : eq(to_float64(d256), f64) +checked expr : eq(CAST(d256 AS Float64), f64) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1888,7 +1888,7 @@ evaluation (internal): ast : d256 > n_f64 raw expr : gt(d256::Decimal(76, 0), n_f64::Float64 NULL) -checked expr : gt(CAST(d256 AS Float64 NULL), n_f64) +checked expr : gt(CAST(d256 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+----------------+--------------+ @@ -1910,7 +1910,7 @@ evaluation (internal): ast : d256 = n_f64 raw expr : eq(d256::Decimal(76, 0), n_f64::Float64 NULL) -checked expr : eq(CAST(d256 AS Float64 NULL), n_f64) +checked expr : eq(CAST(d256 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+--------------+----------------+--------------+ @@ -1976,7 +1976,7 @@ evaluation (internal): ast : d256 > n_d128 raw expr : gt(d256::Decimal(76, 0), n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), n_d128) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), n_d128) optimized expr : false evaluation: +--------+---------------------+----------------+--------------+ @@ -1998,7 +1998,7 @@ evaluation (internal): ast : d256 = n_d128 raw expr : eq(d256::Decimal(76, 0), n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), n_d128) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), n_d128) optimized expr : true evaluation: +--------+---------------------+----------------+--------------+ @@ -2062,7 +2062,7 @@ evaluation (internal): ast : d256 > n_d256 raw expr : gt(d256::Decimal(76, 0), n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), n_d256) +checked expr : gt(CAST(d256 AS Decimal(76, 0) NULL), n_d256) optimized expr : false evaluation: +--------+----------------+---------------------+--------------+ @@ -2084,7 +2084,7 @@ evaluation (internal): ast : d256 = n_d256 raw expr : eq(d256::Decimal(76, 0), n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), n_d256) +checked expr : eq(CAST(d256 AS Decimal(76, 0) NULL), n_d256) optimized expr : true evaluation: +--------+----------------+---------------------+--------------+ @@ -2106,7 +2106,7 @@ evaluation (internal): ast : n_d256 > i32 raw expr : gt(n_d256::Decimal(76, 0) NULL, i32::Int32) -checked expr : gt(n_d256, CAST(i32 AS Decimal(10, 0) NULL)) +checked expr : gt(n_d256, CAST(i32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -2128,7 +2128,7 @@ evaluation (internal): ast : n_d256 = i32 raw expr : eq(n_d256::Decimal(76, 0) NULL, i32::Int32) -checked expr : eq(n_d256, CAST(i32 AS Decimal(10, 0) NULL)) +checked expr : eq(n_d256, CAST(i32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -2150,7 +2150,7 @@ evaluation (internal): ast : n_d256 > i64 raw expr : gt(n_d256::Decimal(76, 0) NULL, i64::Int64) -checked expr : gt(n_d256, CAST(i64 AS Decimal(19, 0) NULL)) +checked expr : gt(n_d256, CAST(i64 AS Decimal(19, 0) NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -2172,7 +2172,7 @@ evaluation (internal): ast : n_d256 = i64 raw expr : eq(n_d256::Decimal(76, 0) NULL, i64::Int64) -checked expr : eq(n_d256, CAST(i64 AS Decimal(19, 0) NULL)) +checked expr : eq(n_d256, CAST(i64 AS Decimal(19, 0) NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -2194,7 +2194,7 @@ evaluation (internal): ast : n_d256 > u32 raw expr : gt(n_d256::Decimal(76, 0) NULL, u32::UInt32) -checked expr : gt(n_d256, CAST(u32 AS Decimal(10, 0) NULL)) +checked expr : gt(n_d256, CAST(u32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -2216,7 +2216,7 @@ evaluation (internal): ast : n_d256 = u32 raw expr : eq(n_d256::Decimal(76, 0) NULL, u32::UInt32) -checked expr : eq(n_d256, CAST(u32 AS Decimal(10, 0) NULL)) +checked expr : eq(n_d256, CAST(u32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -2238,7 +2238,7 @@ evaluation (internal): ast : n_d256 > u64 raw expr : gt(n_d256::Decimal(76, 0) NULL, u64::UInt64) -checked expr : gt(n_d256, CAST(u64 AS Decimal(20, 0) NULL)) +checked expr : gt(n_d256, CAST(u64 AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -2260,7 +2260,7 @@ evaluation (internal): ast : n_d256 = u64 raw expr : eq(n_d256::Decimal(76, 0) NULL, u64::UInt64) -checked expr : eq(n_d256, CAST(u64 AS Decimal(20, 0) NULL)) +checked expr : eq(n_d256, CAST(u64 AS Decimal(20, 0) NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -2282,7 +2282,7 @@ evaluation (internal): ast : n_d256 > n_i32 raw expr : gt(n_d256::Decimal(76, 0) NULL, n_i32::Int32 NULL) -checked expr : gt(n_d256, CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : gt(n_d256, CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+------------+---------------------+--------------+ @@ -2304,7 +2304,7 @@ evaluation (internal): ast : n_d256 = n_i32 raw expr : eq(n_d256::Decimal(76, 0) NULL, n_i32::Int32 NULL) -checked expr : eq(n_d256, CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : eq(n_d256, CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+------------+---------------------+--------------+ @@ -2326,7 +2326,7 @@ evaluation (internal): ast : n_d256 > n_i64 raw expr : gt(n_d256::Decimal(76, 0) NULL, n_i64::Int64 NULL) -checked expr : gt(n_d256, CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : gt(n_d256, CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : false evaluation: +--------+------------+---------------------+--------------+ @@ -2348,7 +2348,7 @@ evaluation (internal): ast : n_d256 = n_i64 raw expr : eq(n_d256::Decimal(76, 0) NULL, n_i64::Int64 NULL) -checked expr : eq(n_d256, CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : eq(n_d256, CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : true evaluation: +--------+------------+---------------------+--------------+ @@ -2370,7 +2370,7 @@ evaluation (internal): ast : n_d256 > n_u32 raw expr : gt(n_d256::Decimal(76, 0) NULL, n_u32::UInt32 NULL) -checked expr : gt(n_d256, CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : gt(n_d256, CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+-------------+---------------------+--------------+ @@ -2392,7 +2392,7 @@ evaluation (internal): ast : n_d256 = n_u32 raw expr : eq(n_d256::Decimal(76, 0) NULL, n_u32::UInt32 NULL) -checked expr : eq(n_d256, CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : eq(n_d256, CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+-------------+---------------------+--------------+ @@ -2414,7 +2414,7 @@ evaluation (internal): ast : n_d256 > n_u64 raw expr : gt(n_d256::Decimal(76, 0) NULL, n_u64::UInt64 NULL) -checked expr : gt(n_d256, CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : gt(n_d256, CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+-------------+---------------------+--------------+ @@ -2436,7 +2436,7 @@ evaluation (internal): ast : n_d256 = n_u64 raw expr : eq(n_d256::Decimal(76, 0) NULL, n_u64::UInt64 NULL) -checked expr : eq(n_d256, CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : eq(n_d256, CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : true evaluation: +--------+-------------+---------------------+--------------+ @@ -2458,7 +2458,7 @@ evaluation (internal): ast : n_d256 > f32 raw expr : gt(n_d256::Decimal(76, 0) NULL, f32::Float32) -checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -2480,7 +2480,7 @@ evaluation (internal): ast : n_d256 = f32 raw expr : eq(n_d256::Decimal(76, 0) NULL, f32::Float32) -checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -2502,7 +2502,7 @@ evaluation (internal): ast : n_d256 > n_f32 raw expr : gt(n_d256::Decimal(76, 0) NULL, n_f32::Float32 NULL) -checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+---------------------+--------------+ @@ -2524,7 +2524,7 @@ evaluation (internal): ast : n_d256 = n_f32 raw expr : eq(n_d256::Decimal(76, 0) NULL, n_f32::Float32 NULL) -checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+---------------------+--------------+ @@ -2546,7 +2546,7 @@ evaluation (internal): ast : n_d256 > f64 raw expr : gt(n_d256::Decimal(76, 0) NULL, f64::Float64) -checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : gt(CAST(n_d256 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -2568,7 +2568,7 @@ evaluation (internal): ast : n_d256 = f64 raw expr : eq(n_d256::Decimal(76, 0) NULL, f64::Float64) -checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -2590,7 +2590,7 @@ evaluation (internal): ast : n_d256 > n_f64 raw expr : gt(n_d256::Decimal(76, 0) NULL, n_f64::Float64 NULL) -checked expr : gt(CAST(n_d256 AS Float64 NULL), n_f64) +checked expr : gt(CAST(n_d256 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+---------------------+--------------+ @@ -2612,7 +2612,7 @@ evaluation (internal): ast : n_d256 = n_f64 raw expr : eq(n_d256::Decimal(76, 0) NULL, n_f64::Float64 NULL) -checked expr : eq(CAST(n_d256 AS Float64 NULL), n_f64) +checked expr : eq(CAST(n_d256 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+--------------+---------------------+--------------+ @@ -2634,7 +2634,7 @@ evaluation (internal): ast : n_d256 > d128 raw expr : gt(n_d256::Decimal(76, 0) NULL, d128::Decimal(38, 0)) -checked expr : gt(n_d256, CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : gt(n_d256, CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : false evaluation: +--------+----------------+---------------------+--------------+ @@ -2656,7 +2656,7 @@ evaluation (internal): ast : n_d256 = d128 raw expr : eq(n_d256::Decimal(76, 0) NULL, d128::Decimal(38, 0)) -checked expr : eq(n_d256, CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : eq(n_d256, CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : true evaluation: +--------+----------------+---------------------+--------------+ @@ -2722,7 +2722,7 @@ evaluation (internal): ast : n_d256 > d256 raw expr : gt(n_d256::Decimal(76, 0) NULL, d256::Decimal(76, 0)) -checked expr : gt(n_d256, CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : gt(n_d256, CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : false evaluation: +--------+----------------+---------------------+--------------+ @@ -2744,7 +2744,7 @@ evaluation (internal): ast : n_d256 = d256 raw expr : eq(n_d256::Decimal(76, 0) NULL, d256::Decimal(76, 0)) -checked expr : eq(n_d256, CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : eq(n_d256, CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : true evaluation: +--------+----------------+---------------------+--------------+ @@ -2808,7 +2808,7 @@ evaluation (internal): ast : d128 > 1 raw expr : gt(d128::Decimal(38, 0), 1) -checked expr : gt(d128, to_decimal(3, 0)(1_u8)) +checked expr : gt(d128, CAST(1_u8 AS Decimal(3, 0))) optimized expr : false evaluation: +--------+----------------+---------+ @@ -2829,7 +2829,7 @@ evaluation (internal): ast : d128 = 1 raw expr : eq(d128::Decimal(38, 0), 1) -checked expr : eq(d128, to_decimal(3, 0)(1_u8)) +checked expr : eq(d128, CAST(1_u8 AS Decimal(3, 0))) optimized expr : false evaluation: +--------+----------------+---------+ @@ -2850,7 +2850,7 @@ evaluation (internal): ast : 1 > d128 raw expr : gt(1, d128::Decimal(38, 0)) -checked expr : gt(to_decimal(3, 0)(1_u8), d128) +checked expr : gt(CAST(1_u8 AS Decimal(3, 0)), d128) optimized expr : true evaluation: +--------+----------------+---------+ @@ -2871,7 +2871,7 @@ evaluation (internal): ast : 1 = d128 raw expr : eq(1, d128::Decimal(38, 0)) -checked expr : eq(to_decimal(3, 0)(1_u8), d128) +checked expr : eq(CAST(1_u8 AS Decimal(3, 0)), d128) optimized expr : false evaluation: +--------+----------------+---------+ @@ -2990,7 +2990,7 @@ candidate functions: ast : d128 = '1' raw expr : eq(d128::Decimal(38, 0), '1') -checked expr : eq(to_float64(d128), to_float64("1")) +checked expr : eq(CAST(d128 AS Float64), CAST("1" AS Float64)) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3025,7 +3025,7 @@ candidate functions: ast : '1' = d128 raw expr : eq('1', d128::Decimal(38, 0)) -checked expr : eq(to_float64("1"), to_float64(d128)) +checked expr : eq(CAST("1" AS Float64), CAST(d128 AS Float64)) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3046,7 +3046,7 @@ evaluation (internal): ast : d128 > 1::uint64 raw expr : gt(d128::Decimal(38, 0), CAST(1 AS UInt64)) -checked expr : gt(d128, to_decimal(20, 0)(to_uint64(1_u8))) +checked expr : gt(d128, CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0))) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3067,7 +3067,7 @@ evaluation (internal): ast : d128 = 1::uint64 raw expr : eq(d128::Decimal(38, 0), CAST(1 AS UInt64)) -checked expr : eq(d128, to_decimal(20, 0)(to_uint64(1_u8))) +checked expr : eq(d128, CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0))) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3088,7 +3088,7 @@ evaluation (internal): ast : 1::uint64 > d128 raw expr : gt(CAST(1 AS UInt64), d128::Decimal(38, 0)) -checked expr : gt(to_decimal(20, 0)(to_uint64(1_u8)), d128) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0)), d128) optimized expr : true evaluation: +--------+----------------+---------+ @@ -3109,7 +3109,7 @@ evaluation (internal): ast : 1::uint64 = d128 raw expr : eq(CAST(1 AS UInt64), d128::Decimal(38, 0)) -checked expr : eq(to_decimal(20, 0)(to_uint64(1_u8)), d128) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0)), d128) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3130,7 +3130,7 @@ evaluation (internal): ast : n_d128 > 1 raw expr : gt(n_d128::Decimal(38, 0) NULL, 1) -checked expr : gt(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) +checked expr : gt(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3151,7 +3151,7 @@ evaluation (internal): ast : n_d128 = 1 raw expr : eq(n_d128::Decimal(38, 0) NULL, 1) -checked expr : eq(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) +checked expr : eq(n_d128, CAST(1_u8 AS Decimal(3, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3172,7 +3172,7 @@ evaluation (internal): ast : 1 > n_d128 raw expr : gt(1, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) +checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) optimized expr : true evaluation: +--------+---------------------+--------------+ @@ -3193,7 +3193,7 @@ evaluation (internal): ast : 1 = n_d128 raw expr : eq(1, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) +checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d128) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3214,7 +3214,7 @@ evaluation (internal): ast : n_d128 > 1.0 raw expr : gt(n_d128::Decimal(38, 0) NULL, 1.0) -checked expr : gt(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : gt(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3235,7 +3235,7 @@ evaluation (internal): ast : n_d128 = 1.0 raw expr : eq(n_d128::Decimal(38, 0) NULL, 1.0) -checked expr : eq(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : eq(n_d128, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3256,7 +3256,7 @@ evaluation (internal): ast : 1.0 > n_d128 raw expr : gt(1.0, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) optimized expr : true evaluation: +--------+---------------------+--------------+ @@ -3277,7 +3277,7 @@ evaluation (internal): ast : 1.0 = n_d128 raw expr : eq(1.0, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d128) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3312,7 +3312,7 @@ candidate functions: ast : n_d128 = '1' raw expr : eq(n_d128::Decimal(38, 0) NULL, '1') -checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST("1" AS Float64 NULL)) +checked expr : eq(CAST(n_d128 AS Float64 NULL), CAST("1" AS Float64 NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3347,7 +3347,7 @@ candidate functions: ast : '1' = n_d128 raw expr : eq('1', n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3368,7 +3368,7 @@ evaluation (internal): ast : n_d128 > 1::uint64 raw expr : gt(n_d128::Decimal(38, 0) NULL, CAST(1 AS UInt64)) -checked expr : gt(n_d128, CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL)) +checked expr : gt(n_d128, CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3389,7 +3389,7 @@ evaluation (internal): ast : n_d128 = 1::uint64 raw expr : eq(n_d128::Decimal(38, 0) NULL, CAST(1 AS UInt64)) -checked expr : eq(n_d128, CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL)) +checked expr : eq(n_d128, CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3410,7 +3410,7 @@ evaluation (internal): ast : 1::uint64 > n_d128 raw expr : gt(CAST(1 AS UInt64), n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL), n_d128) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0) NULL), n_d128) optimized expr : true evaluation: +--------+---------------------+--------------+ @@ -3431,7 +3431,7 @@ evaluation (internal): ast : 1::uint64 = n_d128 raw expr : eq(CAST(1 AS UInt64), n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL), n_d128) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0) NULL), n_d128) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3452,7 +3452,7 @@ evaluation (internal): ast : d256 > 1 raw expr : gt(d256::Decimal(76, 0), 1) -checked expr : gt(d256, to_decimal(3, 0)(1_u8)) +checked expr : gt(d256, CAST(1_u8 AS Decimal(3, 0))) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3473,7 +3473,7 @@ evaluation (internal): ast : d256 = 1 raw expr : eq(d256::Decimal(76, 0), 1) -checked expr : eq(d256, to_decimal(3, 0)(1_u8)) +checked expr : eq(d256, CAST(1_u8 AS Decimal(3, 0))) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3494,7 +3494,7 @@ evaluation (internal): ast : 1 > d256 raw expr : gt(1, d256::Decimal(76, 0)) -checked expr : gt(to_decimal(3, 0)(1_u8), d256) +checked expr : gt(CAST(1_u8 AS Decimal(3, 0)), d256) optimized expr : true evaluation: +--------+----------------+---------+ @@ -3515,7 +3515,7 @@ evaluation (internal): ast : 1 = d256 raw expr : eq(1, d256::Decimal(76, 0)) -checked expr : eq(to_decimal(3, 0)(1_u8), d256) +checked expr : eq(CAST(1_u8 AS Decimal(3, 0)), d256) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3634,7 +3634,7 @@ candidate functions: ast : d256 = '1' raw expr : eq(d256::Decimal(76, 0), '1') -checked expr : eq(to_float64(d256), to_float64("1")) +checked expr : eq(CAST(d256 AS Float64), CAST("1" AS Float64)) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3669,7 +3669,7 @@ candidate functions: ast : '1' = d256 raw expr : eq('1', d256::Decimal(76, 0)) -checked expr : eq(to_float64("1"), to_float64(d256)) +checked expr : eq(CAST("1" AS Float64), CAST(d256 AS Float64)) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3690,7 +3690,7 @@ evaluation (internal): ast : d256 > 1::uint64 raw expr : gt(d256::Decimal(76, 0), CAST(1 AS UInt64)) -checked expr : gt(d256, to_decimal(20, 0)(to_uint64(1_u8))) +checked expr : gt(d256, CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0))) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3711,7 +3711,7 @@ evaluation (internal): ast : d256 = 1::uint64 raw expr : eq(d256::Decimal(76, 0), CAST(1 AS UInt64)) -checked expr : eq(d256, to_decimal(20, 0)(to_uint64(1_u8))) +checked expr : eq(d256, CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0))) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3732,7 +3732,7 @@ evaluation (internal): ast : 1::uint64 > d256 raw expr : gt(CAST(1 AS UInt64), d256::Decimal(76, 0)) -checked expr : gt(to_decimal(20, 0)(to_uint64(1_u8)), d256) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0)), d256) optimized expr : true evaluation: +--------+----------------+---------+ @@ -3753,7 +3753,7 @@ evaluation (internal): ast : 1::uint64 = d256 raw expr : eq(CAST(1 AS UInt64), d256::Decimal(76, 0)) -checked expr : eq(to_decimal(20, 0)(to_uint64(1_u8)), d256) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0)), d256) optimized expr : false evaluation: +--------+----------------+---------+ @@ -3774,7 +3774,7 @@ evaluation (internal): ast : n_d256 > 1 raw expr : gt(n_d256::Decimal(76, 0) NULL, 1) -checked expr : gt(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) +checked expr : gt(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3795,7 +3795,7 @@ evaluation (internal): ast : n_d256 = 1 raw expr : eq(n_d256::Decimal(76, 0) NULL, 1) -checked expr : eq(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) +checked expr : eq(n_d256, CAST(1_u8 AS Decimal(3, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3816,7 +3816,7 @@ evaluation (internal): ast : 1 > n_d256 raw expr : gt(1, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) +checked expr : gt(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) optimized expr : true evaluation: +--------+---------------------+--------------+ @@ -3837,7 +3837,7 @@ evaluation (internal): ast : 1 = n_d256 raw expr : eq(1, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) +checked expr : eq(CAST(1_u8 AS Decimal(3, 0) NULL), n_d256) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3858,7 +3858,7 @@ evaluation (internal): ast : n_d256 > 1.0 raw expr : gt(n_d256::Decimal(76, 0) NULL, 1.0) -checked expr : gt(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : gt(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3879,7 +3879,7 @@ evaluation (internal): ast : n_d256 = 1.0 raw expr : eq(n_d256::Decimal(76, 0) NULL, 1.0) -checked expr : eq(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : eq(n_d256, CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3900,7 +3900,7 @@ evaluation (internal): ast : 1.0 > n_d256 raw expr : gt(1.0, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) optimized expr : true evaluation: +--------+---------------------+--------------+ @@ -3921,7 +3921,7 @@ evaluation (internal): ast : 1.0 = n_d256 raw expr : eq(1.0, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), n_d256) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3956,7 +3956,7 @@ candidate functions: ast : n_d256 = '1' raw expr : eq(n_d256::Decimal(76, 0) NULL, '1') -checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST("1" AS Float64 NULL)) +checked expr : eq(CAST(n_d256 AS Float64 NULL), CAST("1" AS Float64 NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -3991,7 +3991,7 @@ candidate functions: ast : '1' = n_d256 raw expr : eq('1', n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +checked expr : eq(CAST("1" AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -4012,7 +4012,7 @@ evaluation (internal): ast : n_d256 > 1::uint64 raw expr : gt(n_d256::Decimal(76, 0) NULL, CAST(1 AS UInt64)) -checked expr : gt(n_d256, CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL)) +checked expr : gt(n_d256, CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -4033,7 +4033,7 @@ evaluation (internal): ast : n_d256 = 1::uint64 raw expr : eq(n_d256::Decimal(76, 0) NULL, CAST(1 AS UInt64)) -checked expr : eq(n_d256, CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL)) +checked expr : eq(n_d256, CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+---------------------+--------------+ @@ -4054,7 +4054,7 @@ evaluation (internal): ast : 1::uint64 > n_d256 raw expr : gt(CAST(1 AS UInt64), n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL), n_d256) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0) NULL), n_d256) optimized expr : true evaluation: +--------+---------------------+--------------+ @@ -4075,7 +4075,7 @@ evaluation (internal): ast : 1::uint64 = n_d256 raw expr : eq(CAST(1 AS UInt64), n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(to_uint64(1_u8) AS Decimal(20, 0) NULL), n_d256) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Decimal(20, 0) NULL), n_d256) optimized expr : false evaluation: +--------+---------------------+--------------+ diff --git a/src/query/functions/tests/it/type_check/testdata/float.txt b/src/query/functions/tests/it/type_check/testdata/float.txt index 8be0305992ceb..ea7457ede0197 100644 --- a/src/query/functions/tests/it/type_check/testdata/float.txt +++ b/src/query/functions/tests/it/type_check/testdata/float.txt @@ -1,6 +1,6 @@ ast : f32 > i32 raw expr : gt(f32::Float32, i32::Int32) -checked expr : gt(to_float64(f32), to_float64(i32)) +checked expr : gt(CAST(f32 AS Float64), CAST(i32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -22,7 +22,7 @@ evaluation (internal): ast : f32 = i32 raw expr : eq(f32::Float32, i32::Int32) -checked expr : eq(to_float64(f32), to_float64(i32)) +checked expr : eq(CAST(f32 AS Float64), CAST(i32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -44,7 +44,7 @@ evaluation (internal): ast : f32 > i64 raw expr : gt(f32::Float32, i64::Int64) -checked expr : gt(to_float64(f32), to_float64(i64)) +checked expr : gt(CAST(f32 AS Float64), CAST(i64 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -66,7 +66,7 @@ evaluation (internal): ast : f32 = i64 raw expr : eq(f32::Float32, i64::Int64) -checked expr : eq(to_float64(f32), to_float64(i64)) +checked expr : eq(CAST(f32 AS Float64), CAST(i64 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -88,7 +88,7 @@ evaluation (internal): ast : f32 > u32 raw expr : gt(f32::Float32, u32::UInt32) -checked expr : gt(to_float64(f32), to_float64(u32)) +checked expr : gt(CAST(f32 AS Float64), CAST(u32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -110,7 +110,7 @@ evaluation (internal): ast : f32 = u32 raw expr : eq(f32::Float32, u32::UInt32) -checked expr : eq(to_float64(f32), to_float64(u32)) +checked expr : eq(CAST(f32 AS Float64), CAST(u32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -132,7 +132,7 @@ evaluation (internal): ast : f32 > u64 raw expr : gt(f32::Float32, u64::UInt64) -checked expr : gt(to_float64(f32), to_float64(u64)) +checked expr : gt(CAST(f32 AS Float64), CAST(u64 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -154,7 +154,7 @@ evaluation (internal): ast : f32 = u64 raw expr : eq(f32::Float32, u64::UInt64) -checked expr : eq(to_float64(f32), to_float64(u64)) +checked expr : eq(CAST(f32 AS Float64), CAST(u64 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -176,7 +176,7 @@ evaluation (internal): ast : f32 > n_i32 raw expr : gt(f32::Float32, n_i32::Int32 NULL) -checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -198,7 +198,7 @@ evaluation (internal): ast : f32 = n_i32 raw expr : eq(f32::Float32, n_i32::Int32 NULL) -checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -220,7 +220,7 @@ evaluation (internal): ast : f32 > n_i64 raw expr : gt(f32::Float32, n_i64::Int64 NULL) -checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -242,7 +242,7 @@ evaluation (internal): ast : f32 = n_i64 raw expr : eq(f32::Float32, n_i64::Int64 NULL) -checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -264,7 +264,7 @@ evaluation (internal): ast : f32 > n_u32 raw expr : gt(f32::Float32, n_u32::UInt32 NULL) -checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -286,7 +286,7 @@ evaluation (internal): ast : f32 = n_u32 raw expr : eq(f32::Float32, n_u32::UInt32 NULL) -checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -308,7 +308,7 @@ evaluation (internal): ast : f32 > n_u64 raw expr : gt(f32::Float32, n_u64::UInt64 NULL) -checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -330,7 +330,7 @@ evaluation (internal): ast : f32 = n_u64 raw expr : eq(f32::Float32, n_u64::UInt64 NULL) -checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -394,7 +394,7 @@ evaluation (internal): ast : f32 > n_f32 raw expr : gt(f32::Float32, n_f32::Float32 NULL) -checked expr : gt(CAST(f32 AS Float32 NULL), n_f32) +checked expr : gt(CAST(f32 AS Float32 NULL), n_f32) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -416,7 +416,7 @@ evaluation (internal): ast : f32 = n_f32 raw expr : eq(f32::Float32, n_f32::Float32 NULL) -checked expr : eq(CAST(f32 AS Float32 NULL), n_f32) +checked expr : eq(CAST(f32 AS Float32 NULL), n_f32) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -438,7 +438,7 @@ evaluation (internal): ast : f32 > f64 raw expr : gt(f32::Float32, f64::Float64) -checked expr : gt(to_float64(f32), f64) +checked expr : gt(CAST(f32 AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -460,7 +460,7 @@ evaluation (internal): ast : f32 = f64 raw expr : eq(f32::Float32, f64::Float64) -checked expr : eq(to_float64(f32), f64) +checked expr : eq(CAST(f32 AS Float64), f64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -482,7 +482,7 @@ evaluation (internal): ast : f32 > n_f64 raw expr : gt(f32::Float32, n_f64::Float64 NULL) -checked expr : gt(CAST(f32 AS Float64 NULL), n_f64) +checked expr : gt(CAST(f32 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -504,7 +504,7 @@ evaluation (internal): ast : f32 = n_f64 raw expr : eq(f32::Float32, n_f64::Float64 NULL) -checked expr : eq(CAST(f32 AS Float64 NULL), n_f64) +checked expr : eq(CAST(f32 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -526,7 +526,7 @@ evaluation (internal): ast : f32 > d128 raw expr : gt(f32::Float32, d128::Decimal(38, 0)) -checked expr : gt(to_float64(f32), to_float64(d128)) +checked expr : gt(CAST(f32 AS Float64), CAST(d128 AS Float64)) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -548,7 +548,7 @@ evaluation (internal): ast : f32 = d128 raw expr : eq(f32::Float32, d128::Decimal(38, 0)) -checked expr : eq(to_float64(f32), to_float64(d128)) +checked expr : eq(CAST(f32 AS Float64), CAST(d128 AS Float64)) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -570,7 +570,7 @@ evaluation (internal): ast : f32 > n_d128 raw expr : gt(f32::Float32, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -592,7 +592,7 @@ evaluation (internal): ast : f32 = n_d128 raw expr : eq(f32::Float32, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -614,7 +614,7 @@ evaluation (internal): ast : f32 > d256 raw expr : gt(f32::Float32, d256::Decimal(76, 0)) -checked expr : gt(to_float64(f32), to_float64(d256)) +checked expr : gt(CAST(f32 AS Float64), CAST(d256 AS Float64)) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -636,7 +636,7 @@ evaluation (internal): ast : f32 = d256 raw expr : eq(f32::Float32, d256::Decimal(76, 0)) -checked expr : eq(to_float64(f32), to_float64(d256)) +checked expr : eq(CAST(f32 AS Float64), CAST(d256 AS Float64)) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -658,7 +658,7 @@ evaluation (internal): ast : f32 > n_d256 raw expr : gt(f32::Float32, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +checked expr : gt(CAST(f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -680,7 +680,7 @@ evaluation (internal): ast : f32 = n_d256 raw expr : eq(f32::Float32, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +checked expr : eq(CAST(f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -702,7 +702,7 @@ evaluation (internal): ast : n_f32 > i32 raw expr : gt(n_f32::Float32 NULL, i32::Int32) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(i32 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(i32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -724,7 +724,7 @@ evaluation (internal): ast : n_f32 = i32 raw expr : eq(n_f32::Float32 NULL, i32::Int32) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(i32 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(i32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -746,7 +746,7 @@ evaluation (internal): ast : n_f32 > i64 raw expr : gt(n_f32::Float32 NULL, i64::Int64) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(i64 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(i64 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -768,7 +768,7 @@ evaluation (internal): ast : n_f32 = i64 raw expr : eq(n_f32::Float32 NULL, i64::Int64) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(i64 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(i64 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -790,7 +790,7 @@ evaluation (internal): ast : n_f32 > u32 raw expr : gt(n_f32::Float32 NULL, u32::UInt32) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(u32 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(u32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -812,7 +812,7 @@ evaluation (internal): ast : n_f32 = u32 raw expr : eq(n_f32::Float32 NULL, u32::UInt32) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(u32 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(u32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -834,7 +834,7 @@ evaluation (internal): ast : n_f32 > u64 raw expr : gt(n_f32::Float32 NULL, u64::UInt64) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(u64 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(u64 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -856,7 +856,7 @@ evaluation (internal): ast : n_f32 = u64 raw expr : eq(n_f32::Float32 NULL, u64::UInt64) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(u64 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(u64 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -878,7 +878,7 @@ evaluation (internal): ast : n_f32 > n_i32 raw expr : gt(n_f32::Float32 NULL, n_i32::Int32 NULL) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+--------------+ @@ -900,7 +900,7 @@ evaluation (internal): ast : n_f32 = n_i32 raw expr : eq(n_f32::Float32 NULL, n_i32::Int32 NULL) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+--------------+--------------+ @@ -922,7 +922,7 @@ evaluation (internal): ast : n_f32 > n_i64 raw expr : gt(n_f32::Float32 NULL, n_i64::Int64 NULL) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+--------------+ @@ -944,7 +944,7 @@ evaluation (internal): ast : n_f32 = n_i64 raw expr : eq(n_f32::Float32 NULL, n_i64::Int64 NULL) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+--------------+--------------+ @@ -966,7 +966,7 @@ evaluation (internal): ast : n_f32 > n_u32 raw expr : gt(n_f32::Float32 NULL, n_u32::UInt32 NULL) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+--------------+ @@ -988,7 +988,7 @@ evaluation (internal): ast : n_f32 = n_u32 raw expr : eq(n_f32::Float32 NULL, n_u32::UInt32 NULL) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+--------------+--------------+ @@ -1010,7 +1010,7 @@ evaluation (internal): ast : n_f32 > n_u64 raw expr : gt(n_f32::Float32 NULL, n_u64::UInt64 NULL) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+--------------+ @@ -1032,7 +1032,7 @@ evaluation (internal): ast : n_f32 = n_u64 raw expr : eq(n_f32::Float32 NULL, n_u64::UInt64 NULL) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+--------------+--------------+ @@ -1054,7 +1054,7 @@ evaluation (internal): ast : n_f32 > f32 raw expr : gt(n_f32::Float32 NULL, f32::Float32) -checked expr : gt(n_f32, CAST(f32 AS Float32 NULL)) +checked expr : gt(n_f32, CAST(f32 AS Float32 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -1076,7 +1076,7 @@ evaluation (internal): ast : n_f32 = f32 raw expr : eq(n_f32::Float32 NULL, f32::Float32) -checked expr : eq(n_f32, CAST(f32 AS Float32 NULL)) +checked expr : eq(n_f32, CAST(f32 AS Float32 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -1140,7 +1140,7 @@ evaluation (internal): ast : n_f32 > f64 raw expr : gt(n_f32::Float32 NULL, f64::Float64) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+---------+--------------+ @@ -1162,7 +1162,7 @@ evaluation (internal): ast : n_f32 = f64 raw expr : eq(n_f32::Float32 NULL, f64::Float64) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+---------+--------------+ @@ -1184,7 +1184,7 @@ evaluation (internal): ast : n_f32 > n_f64 raw expr : gt(n_f32::Float32 NULL, n_f64::Float64 NULL) -checked expr : gt(CAST(n_f32 AS Float64 NULL), n_f64) +checked expr : gt(CAST(n_f32 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+--------------+--------------+ @@ -1206,7 +1206,7 @@ evaluation (internal): ast : n_f32 = n_f64 raw expr : eq(n_f32::Float32 NULL, n_f64::Float64 NULL) -checked expr : eq(CAST(n_f32 AS Float64 NULL), n_f64) +checked expr : eq(CAST(n_f32 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+--------------+--------------+--------------+ @@ -1228,7 +1228,7 @@ evaluation (internal): ast : n_f32 > d128 raw expr : gt(n_f32::Float32 NULL, d128::Decimal(38, 0)) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(d128 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(d128 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+----------------+--------------+ @@ -1250,7 +1250,7 @@ evaluation (internal): ast : n_f32 = d128 raw expr : eq(n_f32::Float32 NULL, d128::Decimal(38, 0)) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(d128 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(d128 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+----------------+--------------+ @@ -1272,7 +1272,7 @@ evaluation (internal): ast : n_f32 > n_d128 raw expr : gt(n_f32::Float32 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+---------------------+--------------+ @@ -1294,7 +1294,7 @@ evaluation (internal): ast : n_f32 = n_d128 raw expr : eq(n_f32::Float32 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+---------------------+--------------+ @@ -1316,7 +1316,7 @@ evaluation (internal): ast : n_f32 > d256 raw expr : gt(n_f32::Float32 NULL, d256::Decimal(76, 0)) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(d256 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(d256 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+----------------+--------------+ @@ -1338,7 +1338,7 @@ evaluation (internal): ast : n_f32 = d256 raw expr : eq(n_f32::Float32 NULL, d256::Decimal(76, 0)) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(d256 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(d256 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+----------------+--------------+ @@ -1360,7 +1360,7 @@ evaluation (internal): ast : n_f32 > n_d256 raw expr : gt(n_f32::Float32 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+---------------------+--------------+ @@ -1382,7 +1382,7 @@ evaluation (internal): ast : n_f32 = n_d256 raw expr : eq(n_f32::Float32 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+---------------------+--------------+ @@ -1404,7 +1404,7 @@ evaluation (internal): ast : f64 > i32 raw expr : gt(f64::Float64, i32::Int32) -checked expr : gt(f64, to_float64(i32)) +checked expr : gt(f64, CAST(i32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1426,7 +1426,7 @@ evaluation (internal): ast : f64 = i32 raw expr : eq(f64::Float64, i32::Int32) -checked expr : eq(f64, to_float64(i32)) +checked expr : eq(f64, CAST(i32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1448,7 +1448,7 @@ evaluation (internal): ast : f64 > i64 raw expr : gt(f64::Float64, i64::Int64) -checked expr : gt(f64, to_float64(i64)) +checked expr : gt(f64, CAST(i64 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1470,7 +1470,7 @@ evaluation (internal): ast : f64 = i64 raw expr : eq(f64::Float64, i64::Int64) -checked expr : eq(f64, to_float64(i64)) +checked expr : eq(f64, CAST(i64 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1492,7 +1492,7 @@ evaluation (internal): ast : f64 > u32 raw expr : gt(f64::Float64, u32::UInt32) -checked expr : gt(f64, to_float64(u32)) +checked expr : gt(f64, CAST(u32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1514,7 +1514,7 @@ evaluation (internal): ast : f64 = u32 raw expr : eq(f64::Float64, u32::UInt32) -checked expr : eq(f64, to_float64(u32)) +checked expr : eq(f64, CAST(u32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1536,7 +1536,7 @@ evaluation (internal): ast : f64 > u64 raw expr : gt(f64::Float64, u64::UInt64) -checked expr : gt(f64, to_float64(u64)) +checked expr : gt(f64, CAST(u64 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1558,7 +1558,7 @@ evaluation (internal): ast : f64 = u64 raw expr : eq(f64::Float64, u64::UInt64) -checked expr : eq(f64, to_float64(u64)) +checked expr : eq(f64, CAST(u64 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1580,7 +1580,7 @@ evaluation (internal): ast : f64 > n_i32 raw expr : gt(f64::Float64, n_i32::Int32 NULL) -checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -1602,7 +1602,7 @@ evaluation (internal): ast : f64 = n_i32 raw expr : eq(f64::Float64, n_i32::Int32 NULL) -checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_i32 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -1624,7 +1624,7 @@ evaluation (internal): ast : f64 > n_i64 raw expr : gt(f64::Float64, n_i64::Int64 NULL) -checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -1646,7 +1646,7 @@ evaluation (internal): ast : f64 = n_i64 raw expr : eq(f64::Float64, n_i64::Int64 NULL) -checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_i64 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -1668,7 +1668,7 @@ evaluation (internal): ast : f64 > n_u32 raw expr : gt(f64::Float64, n_u32::UInt32 NULL) -checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -1690,7 +1690,7 @@ evaluation (internal): ast : f64 = n_u32 raw expr : eq(f64::Float64, n_u32::UInt32 NULL) -checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_u32 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -1712,7 +1712,7 @@ evaluation (internal): ast : f64 > n_u64 raw expr : gt(f64::Float64, n_u64::UInt64 NULL) -checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -1734,7 +1734,7 @@ evaluation (internal): ast : f64 = n_u64 raw expr : eq(f64::Float64, n_u64::UInt64 NULL) -checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_u64 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -1756,7 +1756,7 @@ evaluation (internal): ast : f64 > f32 raw expr : gt(f64::Float64, f32::Float32) -checked expr : gt(f64, to_float64(f32)) +checked expr : gt(f64, CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1778,7 +1778,7 @@ evaluation (internal): ast : f64 = f32 raw expr : eq(f64::Float64, f32::Float32) -checked expr : eq(f64, to_float64(f32)) +checked expr : eq(f64, CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1800,7 +1800,7 @@ evaluation (internal): ast : f64 > n_f32 raw expr : gt(f64::Float64, n_f32::Float32 NULL) -checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+---------+--------------+ @@ -1822,7 +1822,7 @@ evaluation (internal): ast : f64 = n_f32 raw expr : eq(f64::Float64, n_f32::Float32 NULL) -checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+---------+--------------+ @@ -1886,7 +1886,7 @@ evaluation (internal): ast : f64 > n_f64 raw expr : gt(f64::Float64, n_f64::Float64 NULL) -checked expr : gt(CAST(f64 AS Float64 NULL), n_f64) +checked expr : gt(CAST(f64 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -1908,7 +1908,7 @@ evaluation (internal): ast : f64 = n_f64 raw expr : eq(f64::Float64, n_f64::Float64 NULL) -checked expr : eq(CAST(f64 AS Float64 NULL), n_f64) +checked expr : eq(CAST(f64 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -1930,7 +1930,7 @@ evaluation (internal): ast : f64 > d128 raw expr : gt(f64::Float64, d128::Decimal(38, 0)) -checked expr : gt(f64, to_float64(d128)) +checked expr : gt(f64, CAST(d128 AS Float64)) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1952,7 +1952,7 @@ evaluation (internal): ast : f64 = d128 raw expr : eq(f64::Float64, d128::Decimal(38, 0)) -checked expr : eq(f64, to_float64(d128)) +checked expr : eq(f64, CAST(d128 AS Float64)) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1974,7 +1974,7 @@ evaluation (internal): ast : f64 > n_d128 raw expr : gt(f64::Float64, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -1996,7 +1996,7 @@ evaluation (internal): ast : f64 = n_d128 raw expr : eq(f64::Float64, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_d128 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -2018,7 +2018,7 @@ evaluation (internal): ast : f64 > d256 raw expr : gt(f64::Float64, d256::Decimal(76, 0)) -checked expr : gt(f64, to_float64(d256)) +checked expr : gt(f64, CAST(d256 AS Float64)) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -2040,7 +2040,7 @@ evaluation (internal): ast : f64 = d256 raw expr : eq(f64::Float64, d256::Decimal(76, 0)) -checked expr : eq(f64, to_float64(d256)) +checked expr : eq(f64, CAST(d256 AS Float64)) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -2062,7 +2062,7 @@ evaluation (internal): ast : f64 > n_d256 raw expr : gt(f64::Float64, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +checked expr : gt(CAST(f64 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -2084,7 +2084,7 @@ evaluation (internal): ast : f64 = n_d256 raw expr : eq(f64::Float64, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) +checked expr : eq(CAST(f64 AS Float64 NULL), CAST(n_d256 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -2106,7 +2106,7 @@ evaluation (internal): ast : n_f64 > i32 raw expr : gt(n_f64::Float64 NULL, i32::Int32) -checked expr : gt(n_f64, CAST(i32 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(i32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -2128,7 +2128,7 @@ evaluation (internal): ast : n_f64 = i32 raw expr : eq(n_f64::Float64 NULL, i32::Int32) -checked expr : eq(n_f64, CAST(i32 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(i32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -2150,7 +2150,7 @@ evaluation (internal): ast : n_f64 > i64 raw expr : gt(n_f64::Float64 NULL, i64::Int64) -checked expr : gt(n_f64, CAST(i64 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(i64 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -2172,7 +2172,7 @@ evaluation (internal): ast : n_f64 = i64 raw expr : eq(n_f64::Float64 NULL, i64::Int64) -checked expr : eq(n_f64, CAST(i64 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(i64 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -2194,7 +2194,7 @@ evaluation (internal): ast : n_f64 > u32 raw expr : gt(n_f64::Float64 NULL, u32::UInt32) -checked expr : gt(n_f64, CAST(u32 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(u32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -2216,7 +2216,7 @@ evaluation (internal): ast : n_f64 = u32 raw expr : eq(n_f64::Float64 NULL, u32::UInt32) -checked expr : eq(n_f64, CAST(u32 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(u32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -2238,7 +2238,7 @@ evaluation (internal): ast : n_f64 > u64 raw expr : gt(n_f64::Float64 NULL, u64::UInt64) -checked expr : gt(n_f64, CAST(u64 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(u64 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -2260,7 +2260,7 @@ evaluation (internal): ast : n_f64 = u64 raw expr : eq(n_f64::Float64 NULL, u64::UInt64) -checked expr : eq(n_f64, CAST(u64 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(u64 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -2282,7 +2282,7 @@ evaluation (internal): ast : n_f64 > n_i32 raw expr : gt(n_f64::Float64 NULL, n_i32::Int32 NULL) -checked expr : gt(n_f64, CAST(n_i32 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(n_i32 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+--------------+ @@ -2304,7 +2304,7 @@ evaluation (internal): ast : n_f64 = n_i32 raw expr : eq(n_f64::Float64 NULL, n_i32::Int32 NULL) -checked expr : eq(n_f64, CAST(n_i32 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(n_i32 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+--------------+--------------+ @@ -2326,7 +2326,7 @@ evaluation (internal): ast : n_f64 > n_i64 raw expr : gt(n_f64::Float64 NULL, n_i64::Int64 NULL) -checked expr : gt(n_f64, CAST(n_i64 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(n_i64 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+--------------+ @@ -2348,7 +2348,7 @@ evaluation (internal): ast : n_f64 = n_i64 raw expr : eq(n_f64::Float64 NULL, n_i64::Int64 NULL) -checked expr : eq(n_f64, CAST(n_i64 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(n_i64 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+--------------+--------------+ @@ -2370,7 +2370,7 @@ evaluation (internal): ast : n_f64 > n_u32 raw expr : gt(n_f64::Float64 NULL, n_u32::UInt32 NULL) -checked expr : gt(n_f64, CAST(n_u32 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(n_u32 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+--------------+ @@ -2392,7 +2392,7 @@ evaluation (internal): ast : n_f64 = n_u32 raw expr : eq(n_f64::Float64 NULL, n_u32::UInt32 NULL) -checked expr : eq(n_f64, CAST(n_u32 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(n_u32 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+--------------+--------------+ @@ -2414,7 +2414,7 @@ evaluation (internal): ast : n_f64 > n_u64 raw expr : gt(n_f64::Float64 NULL, n_u64::UInt64 NULL) -checked expr : gt(n_f64, CAST(n_u64 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(n_u64 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+--------------+ @@ -2436,7 +2436,7 @@ evaluation (internal): ast : n_f64 = n_u64 raw expr : eq(n_f64::Float64 NULL, n_u64::UInt64 NULL) -checked expr : eq(n_f64, CAST(n_u64 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(n_u64 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+--------------+--------------+ @@ -2458,7 +2458,7 @@ evaluation (internal): ast : n_f64 > f32 raw expr : gt(n_f64::Float64 NULL, f32::Float32) -checked expr : gt(n_f64, CAST(f32 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -2480,7 +2480,7 @@ evaluation (internal): ast : n_f64 = f32 raw expr : eq(n_f64::Float64 NULL, f32::Float32) -checked expr : eq(n_f64, CAST(f32 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -2502,7 +2502,7 @@ evaluation (internal): ast : n_f64 > n_f32 raw expr : gt(n_f64::Float64 NULL, n_f32::Float32 NULL) -checked expr : gt(n_f64, CAST(n_f32 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+--------------+ @@ -2524,7 +2524,7 @@ evaluation (internal): ast : n_f64 = n_f32 raw expr : eq(n_f64::Float64 NULL, n_f32::Float32 NULL) -checked expr : eq(n_f64, CAST(n_f32 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+--------------+--------------+ @@ -2546,7 +2546,7 @@ evaluation (internal): ast : n_f64 > f64 raw expr : gt(n_f64::Float64 NULL, f64::Float64) -checked expr : gt(n_f64, CAST(f64 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(f64 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -2568,7 +2568,7 @@ evaluation (internal): ast : n_f64 = f64 raw expr : eq(n_f64::Float64 NULL, f64::Float64) -checked expr : eq(n_f64, CAST(f64 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(f64 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -2632,7 +2632,7 @@ evaluation (internal): ast : n_f64 > d128 raw expr : gt(n_f64::Float64 NULL, d128::Decimal(38, 0)) -checked expr : gt(n_f64, CAST(d128 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(d128 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+----------------+--------------+ @@ -2654,7 +2654,7 @@ evaluation (internal): ast : n_f64 = d128 raw expr : eq(n_f64::Float64 NULL, d128::Decimal(38, 0)) -checked expr : eq(n_f64, CAST(d128 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(d128 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+----------------+--------------+ @@ -2676,7 +2676,7 @@ evaluation (internal): ast : n_f64 > n_d128 raw expr : gt(n_f64::Float64 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : gt(n_f64, CAST(n_d128 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(n_d128 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+---------------------+--------------+ @@ -2698,7 +2698,7 @@ evaluation (internal): ast : n_f64 = n_d128 raw expr : eq(n_f64::Float64 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : eq(n_f64, CAST(n_d128 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(n_d128 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+---------------------+--------------+ @@ -2720,7 +2720,7 @@ evaluation (internal): ast : n_f64 > d256 raw expr : gt(n_f64::Float64 NULL, d256::Decimal(76, 0)) -checked expr : gt(n_f64, CAST(d256 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(d256 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+----------------+--------------+ @@ -2742,7 +2742,7 @@ evaluation (internal): ast : n_f64 = d256 raw expr : eq(n_f64::Float64 NULL, d256::Decimal(76, 0)) -checked expr : eq(n_f64, CAST(d256 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(d256 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+----------------+--------------+ @@ -2764,7 +2764,7 @@ evaluation (internal): ast : n_f64 > n_d256 raw expr : gt(n_f64::Float64 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : gt(n_f64, CAST(n_d256 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(n_d256 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+---------------------+--------------+ @@ -2786,7 +2786,7 @@ evaluation (internal): ast : n_f64 = n_d256 raw expr : eq(n_f64::Float64 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : eq(n_f64, CAST(n_d256 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(n_d256 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+---------------------+--------------+ @@ -2808,7 +2808,7 @@ evaluation (internal): ast : f32 > 1 raw expr : gt(f32::Float32, 1) -checked expr : gt(f32, to_float32(1_u8)) +checked expr : gt(f32, CAST(1_u8 AS Float32)) optimized expr : false evaluation: +--------+---------+---------+ @@ -2829,7 +2829,7 @@ evaluation (internal): ast : f32 = 1 raw expr : eq(f32::Float32, 1) -checked expr : eq(f32, to_float32(1_u8)) +checked expr : eq(f32, CAST(1_u8 AS Float32)) optimized expr : false evaluation: +--------+---------+---------+ @@ -2850,7 +2850,7 @@ evaluation (internal): ast : 1 > f32 raw expr : gt(1, f32::Float32) -checked expr : gt(to_float32(1_u8), f32) +checked expr : gt(CAST(1_u8 AS Float32), f32) optimized expr : true evaluation: +--------+---------+---------+ @@ -2871,7 +2871,7 @@ evaluation (internal): ast : 1 = f32 raw expr : eq(1, f32::Float32) -checked expr : eq(to_float32(1_u8), f32) +checked expr : eq(CAST(1_u8 AS Float32), f32) optimized expr : false evaluation: +--------+---------+---------+ @@ -2892,7 +2892,7 @@ evaluation (internal): ast : f32 > 1.0 raw expr : gt(f32::Float32, 1.0) -checked expr : gt(to_float64(f32), to_float64(1.0_d128(2,1))) +checked expr : gt(CAST(f32 AS Float64), CAST(1.0_d128(2,1) AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -2913,7 +2913,7 @@ evaluation (internal): ast : f32 = 1.0 raw expr : eq(f32::Float32, 1.0) -checked expr : eq(to_float64(f32), to_float64(1.0_d128(2,1))) +checked expr : eq(CAST(f32 AS Float64), CAST(1.0_d128(2,1) AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -2934,7 +2934,7 @@ evaluation (internal): ast : 1.0 > f32 raw expr : gt(1.0, f32::Float32) -checked expr : gt(to_float64(1.0_d128(2,1)), to_float64(f32)) +checked expr : gt(CAST(1.0_d128(2,1) AS Float64), CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+ @@ -2955,7 +2955,7 @@ evaluation (internal): ast : 1.0 = f32 raw expr : eq(1.0, f32::Float32) -checked expr : eq(to_float64(1.0_d128(2,1)), to_float64(f32)) +checked expr : eq(CAST(1.0_d128(2,1) AS Float64), CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -2990,7 +2990,7 @@ candidate functions: ast : f32 = '1' raw expr : eq(f32::Float32, '1') -checked expr : eq(f32, to_float32("1")) +checked expr : eq(f32, CAST("1" AS Float32)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3025,7 +3025,7 @@ candidate functions: ast : '1' = f32 raw expr : eq('1', f32::Float32) -checked expr : eq(to_float32("1"), f32) +checked expr : eq(CAST("1" AS Float32), f32) optimized expr : false evaluation: +--------+---------+---------+ @@ -3046,7 +3046,7 @@ evaluation (internal): ast : f32 > 1::uint64 raw expr : gt(f32::Float32, CAST(1 AS UInt64)) -checked expr : gt(to_float64(f32), to_float64(to_uint64(1_u8))) +checked expr : gt(CAST(f32 AS Float64), CAST(CAST(1_u8 AS UInt64) AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3067,7 +3067,7 @@ evaluation (internal): ast : f32 = 1::uint64 raw expr : eq(f32::Float32, CAST(1 AS UInt64)) -checked expr : eq(to_float64(f32), to_float64(to_uint64(1_u8))) +checked expr : eq(CAST(f32 AS Float64), CAST(CAST(1_u8 AS UInt64) AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3088,7 +3088,7 @@ evaluation (internal): ast : 1::uint64 > f32 raw expr : gt(CAST(1 AS UInt64), f32::Float32) -checked expr : gt(to_float64(to_uint64(1_u8)), to_float64(f32)) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Float64), CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+ @@ -3109,7 +3109,7 @@ evaluation (internal): ast : 1::uint64 = f32 raw expr : eq(CAST(1 AS UInt64), f32::Float32) -checked expr : eq(to_float64(to_uint64(1_u8)), to_float64(f32)) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Float64), CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3130,7 +3130,7 @@ evaluation (internal): ast : n_f32 > 1 raw expr : gt(n_f32::Float32 NULL, 1) -checked expr : gt(n_f32, CAST(1_u8 AS Float32 NULL)) +checked expr : gt(n_f32, CAST(1_u8 AS Float32 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3151,7 +3151,7 @@ evaluation (internal): ast : n_f32 = 1 raw expr : eq(n_f32::Float32 NULL, 1) -checked expr : eq(n_f32, CAST(1_u8 AS Float32 NULL)) +checked expr : eq(n_f32, CAST(1_u8 AS Float32 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3172,7 +3172,7 @@ evaluation (internal): ast : 1 > n_f32 raw expr : gt(1, n_f32::Float32 NULL) -checked expr : gt(CAST(1_u8 AS Float32 NULL), n_f32) +checked expr : gt(CAST(1_u8 AS Float32 NULL), n_f32) optimized expr : true evaluation: +--------+--------------+--------------+ @@ -3193,7 +3193,7 @@ evaluation (internal): ast : 1 = n_f32 raw expr : eq(1, n_f32::Float32 NULL) -checked expr : eq(CAST(1_u8 AS Float32 NULL), n_f32) +checked expr : eq(CAST(1_u8 AS Float32 NULL), n_f32) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3214,7 +3214,7 @@ evaluation (internal): ast : n_f32 > 1.0 raw expr : gt(n_f32::Float32 NULL, 1.0) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3235,7 +3235,7 @@ evaluation (internal): ast : n_f32 = 1.0 raw expr : eq(n_f32::Float32 NULL, 1.0) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(1.0_d128(2,1) AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3256,7 +3256,7 @@ evaluation (internal): ast : 1.0 > n_f32 raw expr : gt(1.0, n_f32::Float32 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+--------------+ @@ -3277,7 +3277,7 @@ evaluation (internal): ast : 1.0 = n_f32 raw expr : eq(1.0, n_f32::Float32 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3312,7 +3312,7 @@ candidate functions: ast : n_f32 = '1' raw expr : eq(n_f32::Float32 NULL, '1') -checked expr : eq(n_f32, CAST("1" AS Float32 NULL)) +checked expr : eq(n_f32, CAST("1" AS Float32 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3347,7 +3347,7 @@ candidate functions: ast : '1' = n_f32 raw expr : eq('1', n_f32::Float32 NULL) -checked expr : eq(CAST("1" AS Float32 NULL), n_f32) +checked expr : eq(CAST("1" AS Float32 NULL), n_f32) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3368,7 +3368,7 @@ evaluation (internal): ast : n_f32 > 1::uint64 raw expr : gt(n_f32::Float32 NULL, CAST(1 AS UInt64)) -checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(to_uint64(1_u8) AS Float64 NULL)) +checked expr : gt(CAST(n_f32 AS Float64 NULL), CAST(CAST(1_u8 AS UInt64) AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3389,7 +3389,7 @@ evaluation (internal): ast : n_f32 = 1::uint64 raw expr : eq(n_f32::Float32 NULL, CAST(1 AS UInt64)) -checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(to_uint64(1_u8) AS Float64 NULL)) +checked expr : eq(CAST(n_f32 AS Float64 NULL), CAST(CAST(1_u8 AS UInt64) AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3410,7 +3410,7 @@ evaluation (internal): ast : 1::uint64 > n_f32 raw expr : gt(CAST(1 AS UInt64), n_f32::Float32 NULL) -checked expr : gt(CAST(to_uint64(1_u8) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+--------------+--------------+ @@ -3431,7 +3431,7 @@ evaluation (internal): ast : 1::uint64 = n_f32 raw expr : eq(CAST(1 AS UInt64), n_f32::Float32 NULL) -checked expr : eq(CAST(to_uint64(1_u8) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3452,7 +3452,7 @@ evaluation (internal): ast : f64 > 1 raw expr : gt(f64::Float64, 1) -checked expr : gt(f64, to_float64(1_u8)) +checked expr : gt(f64, CAST(1_u8 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3473,7 +3473,7 @@ evaluation (internal): ast : f64 = 1 raw expr : eq(f64::Float64, 1) -checked expr : eq(f64, to_float64(1_u8)) +checked expr : eq(f64, CAST(1_u8 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3494,7 +3494,7 @@ evaluation (internal): ast : 1 > f64 raw expr : gt(1, f64::Float64) -checked expr : gt(to_float64(1_u8), f64) +checked expr : gt(CAST(1_u8 AS Float64), f64) optimized expr : true evaluation: +--------+---------+---------+ @@ -3515,7 +3515,7 @@ evaluation (internal): ast : 1 = f64 raw expr : eq(1, f64::Float64) -checked expr : eq(to_float64(1_u8), f64) +checked expr : eq(CAST(1_u8 AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+ @@ -3536,7 +3536,7 @@ evaluation (internal): ast : f64 > 1.0 raw expr : gt(f64::Float64, 1.0) -checked expr : gt(f64, to_float64(1.0_d128(2,1))) +checked expr : gt(f64, CAST(1.0_d128(2,1) AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3557,7 +3557,7 @@ evaluation (internal): ast : f64 = 1.0 raw expr : eq(f64::Float64, 1.0) -checked expr : eq(f64, to_float64(1.0_d128(2,1))) +checked expr : eq(f64, CAST(1.0_d128(2,1) AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3578,7 +3578,7 @@ evaluation (internal): ast : 1.0 > f64 raw expr : gt(1.0, f64::Float64) -checked expr : gt(to_float64(1.0_d128(2,1)), f64) +checked expr : gt(CAST(1.0_d128(2,1) AS Float64), f64) optimized expr : true evaluation: +--------+---------+---------+ @@ -3599,7 +3599,7 @@ evaluation (internal): ast : 1.0 = f64 raw expr : eq(1.0, f64::Float64) -checked expr : eq(to_float64(1.0_d128(2,1)), f64) +checked expr : eq(CAST(1.0_d128(2,1) AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+ @@ -3634,7 +3634,7 @@ candidate functions: ast : f64 = '1' raw expr : eq(f64::Float64, '1') -checked expr : eq(f64, to_float64("1")) +checked expr : eq(f64, CAST("1" AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3669,7 +3669,7 @@ candidate functions: ast : '1' = f64 raw expr : eq('1', f64::Float64) -checked expr : eq(to_float64("1"), f64) +checked expr : eq(CAST("1" AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+ @@ -3690,7 +3690,7 @@ evaluation (internal): ast : f64 > 1::uint64 raw expr : gt(f64::Float64, CAST(1 AS UInt64)) -checked expr : gt(f64, to_float64(to_uint64(1_u8))) +checked expr : gt(f64, CAST(CAST(1_u8 AS UInt64) AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3711,7 +3711,7 @@ evaluation (internal): ast : f64 = 1::uint64 raw expr : eq(f64::Float64, CAST(1 AS UInt64)) -checked expr : eq(f64, to_float64(to_uint64(1_u8))) +checked expr : eq(f64, CAST(CAST(1_u8 AS UInt64) AS Float64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -3732,7 +3732,7 @@ evaluation (internal): ast : 1::uint64 > f64 raw expr : gt(CAST(1 AS UInt64), f64::Float64) -checked expr : gt(to_float64(to_uint64(1_u8)), f64) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Float64), f64) optimized expr : true evaluation: +--------+---------+---------+ @@ -3753,7 +3753,7 @@ evaluation (internal): ast : 1::uint64 = f64 raw expr : eq(CAST(1 AS UInt64), f64::Float64) -checked expr : eq(to_float64(to_uint64(1_u8)), f64) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+ @@ -3774,7 +3774,7 @@ evaluation (internal): ast : n_f64 > 1 raw expr : gt(n_f64::Float64 NULL, 1) -checked expr : gt(n_f64, CAST(1_u8 AS Float64 NULL)) +checked expr : gt(n_f64, CAST(1_u8 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3795,7 +3795,7 @@ evaluation (internal): ast : n_f64 = 1 raw expr : eq(n_f64::Float64 NULL, 1) -checked expr : eq(n_f64, CAST(1_u8 AS Float64 NULL)) +checked expr : eq(n_f64, CAST(1_u8 AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3816,7 +3816,7 @@ evaluation (internal): ast : 1 > n_f64 raw expr : gt(1, n_f64::Float64 NULL) -checked expr : gt(CAST(1_u8 AS Float64 NULL), n_f64) +checked expr : gt(CAST(1_u8 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+--------------+--------------+ @@ -3837,7 +3837,7 @@ evaluation (internal): ast : 1 = n_f64 raw expr : eq(1, n_f64::Float64 NULL) -checked expr : eq(CAST(1_u8 AS Float64 NULL), n_f64) +checked expr : eq(CAST(1_u8 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3858,7 +3858,7 @@ evaluation (internal): ast : n_f64 > 1.0 raw expr : gt(n_f64::Float64 NULL, 1.0) -checked expr : gt(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) +checked expr : gt(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3879,7 +3879,7 @@ evaluation (internal): ast : n_f64 = 1.0 raw expr : eq(n_f64::Float64 NULL, 1.0) -checked expr : eq(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) +checked expr : eq(n_f64, CAST(1.0_d128(2,1) AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3900,7 +3900,7 @@ evaluation (internal): ast : 1.0 > n_f64 raw expr : gt(1.0, n_f64::Float64 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) +checked expr : gt(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+--------------+--------------+ @@ -3921,7 +3921,7 @@ evaluation (internal): ast : 1.0 = n_f64 raw expr : eq(1.0, n_f64::Float64 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) +checked expr : eq(CAST(1.0_d128(2,1) AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3956,7 +3956,7 @@ candidate functions: ast : n_f64 = '1' raw expr : eq(n_f64::Float64 NULL, '1') -checked expr : eq(n_f64, CAST("1" AS Float64 NULL)) +checked expr : eq(n_f64, CAST("1" AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -3991,7 +3991,7 @@ candidate functions: ast : '1' = n_f64 raw expr : eq('1', n_f64::Float64 NULL) -checked expr : eq(CAST("1" AS Float64 NULL), n_f64) +checked expr : eq(CAST("1" AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -4012,7 +4012,7 @@ evaluation (internal): ast : n_f64 > 1::uint64 raw expr : gt(n_f64::Float64 NULL, CAST(1 AS UInt64)) -checked expr : gt(n_f64, CAST(to_uint64(1_u8) AS Float64 NULL)) +checked expr : gt(n_f64, CAST(CAST(1_u8 AS UInt64) AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -4033,7 +4033,7 @@ evaluation (internal): ast : n_f64 = 1::uint64 raw expr : eq(n_f64::Float64 NULL, CAST(1 AS UInt64)) -checked expr : eq(n_f64, CAST(to_uint64(1_u8) AS Float64 NULL)) +checked expr : eq(n_f64, CAST(CAST(1_u8 AS UInt64) AS Float64 NULL)) optimized expr : false evaluation: +--------+--------------+--------------+ @@ -4054,7 +4054,7 @@ evaluation (internal): ast : 1::uint64 > n_f64 raw expr : gt(CAST(1 AS UInt64), n_f64::Float64 NULL) -checked expr : gt(CAST(to_uint64(1_u8) AS Float64 NULL), n_f64) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+--------------+--------------+ @@ -4075,7 +4075,7 @@ evaluation (internal): ast : 1::uint64 = n_f64 raw expr : eq(CAST(1 AS UInt64), n_f64::Float64 NULL) -checked expr : eq(CAST(to_uint64(1_u8) AS Float64 NULL), n_f64) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+--------------+--------------+ diff --git a/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt b/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt index 822f2023f65eb..6dec580056fcf 100644 --- a/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt +++ b/src/query/functions/tests/it/type_check/testdata/nullable_signed.txt @@ -1,6 +1,6 @@ ast : n_i32 > i32 raw expr : gt(n_i32::Int32 NULL, i32::Int32) -checked expr : gt(n_i32, CAST(i32 AS Int32 NULL)) +checked expr : gt(n_i32, CAST(i32 AS Int32 NULL)) optimized expr : false evaluation: +--------+---------+------------+--------------+ @@ -22,7 +22,7 @@ evaluation (internal): ast : n_i32 = i32 raw expr : eq(n_i32::Int32 NULL, i32::Int32) -checked expr : eq(n_i32, CAST(i32 AS Int32 NULL)) +checked expr : eq(n_i32, CAST(i32 AS Int32 NULL)) optimized expr : true evaluation: +--------+---------+------------+--------------+ @@ -44,7 +44,7 @@ evaluation (internal): ast : n_i32 > i64 raw expr : gt(n_i32::Int32 NULL, i64::Int64) -checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -66,7 +66,7 @@ evaluation (internal): ast : n_i32 = i64 raw expr : eq(n_i32::Int32 NULL, i64::Int64) -checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -88,7 +88,7 @@ evaluation (internal): ast : n_i32 > u32 raw expr : gt(n_i32::Int32 NULL, u32::UInt32) -checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(u32 AS Int64 NULL)) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(u32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -110,7 +110,7 @@ evaluation (internal): ast : n_i32 = u32 raw expr : eq(n_i32::Int32 NULL, u32::UInt32) -checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(u32 AS Int64 NULL)) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(u32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -132,7 +132,7 @@ evaluation (internal): ast : n_i32 > u64 raw expr : gt(n_i32::Int32 NULL, u64::UInt64) -checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(u64 AS Int64 NULL)) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(u64 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -154,7 +154,7 @@ evaluation (internal): ast : n_i32 = u64 raw expr : eq(n_i32::Int32 NULL, u64::UInt64) -checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(u64 AS Int64 NULL)) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(u64 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -218,7 +218,7 @@ evaluation (internal): ast : n_i32 > n_i64 raw expr : gt(n_i32::Int32 NULL, n_i64::Int64 NULL) -checked expr : gt(CAST(n_i32 AS Int64 NULL), n_i64) +checked expr : gt(CAST(n_i32 AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+------------+------------+--------------+ @@ -240,7 +240,7 @@ evaluation (internal): ast : n_i32 = n_i64 raw expr : eq(n_i32::Int32 NULL, n_i64::Int64 NULL) -checked expr : eq(CAST(n_i32 AS Int64 NULL), n_i64) +checked expr : eq(CAST(n_i32 AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+------------+------------+--------------+ @@ -262,7 +262,7 @@ evaluation (internal): ast : n_i32 > n_u32 raw expr : gt(n_i32::Int32 NULL, n_u32::UInt32 NULL) -checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+-------------+--------------+ @@ -284,7 +284,7 @@ evaluation (internal): ast : n_i32 = n_u32 raw expr : eq(n_i32::Int32 NULL, n_u32::UInt32 NULL) -checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+-------------+--------------+ @@ -306,7 +306,7 @@ evaluation (internal): ast : n_i32 > n_u64 raw expr : gt(n_i32::Int32 NULL, n_u64::UInt64 NULL) -checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+-------------+--------------+ @@ -328,7 +328,7 @@ evaluation (internal): ast : n_i32 = n_u64 raw expr : eq(n_i32::Int32 NULL, n_u64::UInt64 NULL) -checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+-------------+--------------+ @@ -350,7 +350,7 @@ evaluation (internal): ast : n_i32 > f32 raw expr : gt(n_i32::Int32 NULL, f32::Float32) -checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -372,7 +372,7 @@ evaluation (internal): ast : n_i32 = f32 raw expr : eq(n_i32::Int32 NULL, f32::Float32) -checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -394,7 +394,7 @@ evaluation (internal): ast : n_i32 > n_f32 raw expr : gt(n_i32::Int32 NULL, n_f32::Float32 NULL) -checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+--------------+ @@ -416,7 +416,7 @@ evaluation (internal): ast : n_i32 = n_f32 raw expr : eq(n_i32::Int32 NULL, n_f32::Float32 NULL) -checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+--------------+--------------+ @@ -438,7 +438,7 @@ evaluation (internal): ast : n_i32 > f64 raw expr : gt(n_i32::Int32 NULL, f64::Float64) -checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : gt(CAST(n_i32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -460,7 +460,7 @@ evaluation (internal): ast : n_i32 = f64 raw expr : eq(n_i32::Int32 NULL, f64::Float64) -checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : eq(CAST(n_i32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -482,7 +482,7 @@ evaluation (internal): ast : n_i32 > n_f64 raw expr : gt(n_i32::Int32 NULL, n_f64::Float64 NULL) -checked expr : gt(CAST(n_i32 AS Float64 NULL), n_f64) +checked expr : gt(CAST(n_i32 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+------------+--------------+--------------+ @@ -504,7 +504,7 @@ evaluation (internal): ast : n_i32 = n_f64 raw expr : eq(n_i32::Int32 NULL, n_f64::Float64 NULL) -checked expr : eq(CAST(n_i32 AS Float64 NULL), n_f64) +checked expr : eq(CAST(n_i32 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+------------+--------------+--------------+ @@ -526,7 +526,7 @@ evaluation (internal): ast : n_i32 > d128 raw expr : gt(n_i32::Int32 NULL, d128::Decimal(38, 0)) -checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : false evaluation: +--------+------------+----------------+--------------+ @@ -548,7 +548,7 @@ evaluation (internal): ast : n_i32 = d128 raw expr : eq(n_i32::Int32 NULL, d128::Decimal(38, 0)) -checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : true evaluation: +--------+------------+----------------+--------------+ @@ -570,7 +570,7 @@ evaluation (internal): ast : n_i32 > n_d128 raw expr : gt(n_i32::Int32 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), n_d128) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), n_d128) optimized expr : false evaluation: +--------+------------+---------------------+--------------+ @@ -592,7 +592,7 @@ evaluation (internal): ast : n_i32 = n_d128 raw expr : eq(n_i32::Int32 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), n_d128) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), n_d128) optimized expr : true evaluation: +--------+------------+---------------------+--------------+ @@ -614,7 +614,7 @@ evaluation (internal): ast : n_i32 > d256 raw expr : gt(n_i32::Int32 NULL, d256::Decimal(76, 0)) -checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : false evaluation: +--------+------------+----------------+--------------+ @@ -636,7 +636,7 @@ evaluation (internal): ast : n_i32 = d256 raw expr : eq(n_i32::Int32 NULL, d256::Decimal(76, 0)) -checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : true evaluation: +--------+------------+----------------+--------------+ @@ -658,7 +658,7 @@ evaluation (internal): ast : n_i32 > n_d256 raw expr : gt(n_i32::Int32 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), n_d256) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), n_d256) optimized expr : false evaluation: +--------+------------+---------------------+--------------+ @@ -680,7 +680,7 @@ evaluation (internal): ast : n_i32 = n_d256 raw expr : eq(n_i32::Int32 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), n_d256) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), n_d256) optimized expr : true evaluation: +--------+------------+---------------------+--------------+ @@ -702,7 +702,7 @@ evaluation (internal): ast : n_i64 > i32 raw expr : gt(n_i64::Int64 NULL, i32::Int32) -checked expr : gt(n_i64, CAST(i32 AS Int64 NULL)) +checked expr : gt(n_i64, CAST(i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+------------+--------------+ @@ -724,7 +724,7 @@ evaluation (internal): ast : n_i64 = i32 raw expr : eq(n_i64::Int64 NULL, i32::Int32) -checked expr : eq(n_i64, CAST(i32 AS Int64 NULL)) +checked expr : eq(n_i64, CAST(i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+------------+--------------+ @@ -746,7 +746,7 @@ evaluation (internal): ast : n_i64 > i64 raw expr : gt(n_i64::Int64 NULL, i64::Int64) -checked expr : gt(n_i64, CAST(i64 AS Int64 NULL)) +checked expr : gt(n_i64, CAST(i64 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+------------+--------------+ @@ -768,7 +768,7 @@ evaluation (internal): ast : n_i64 = i64 raw expr : eq(n_i64::Int64 NULL, i64::Int64) -checked expr : eq(n_i64, CAST(i64 AS Int64 NULL)) +checked expr : eq(n_i64, CAST(i64 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+------------+--------------+ @@ -790,7 +790,7 @@ evaluation (internal): ast : n_i64 > u32 raw expr : gt(n_i64::Int64 NULL, u32::UInt32) -checked expr : gt(n_i64, CAST(u32 AS Int64 NULL)) +checked expr : gt(n_i64, CAST(u32 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+------------+--------------+ @@ -812,7 +812,7 @@ evaluation (internal): ast : n_i64 = u32 raw expr : eq(n_i64::Int64 NULL, u32::UInt32) -checked expr : eq(n_i64, CAST(u32 AS Int64 NULL)) +checked expr : eq(n_i64, CAST(u32 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+------------+--------------+ @@ -834,7 +834,7 @@ evaluation (internal): ast : n_i64 > u64 raw expr : gt(n_i64::Int64 NULL, u64::UInt64) -checked expr : gt(n_i64, CAST(u64 AS Int64 NULL)) +checked expr : gt(n_i64, CAST(u64 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -856,7 +856,7 @@ evaluation (internal): ast : n_i64 = u64 raw expr : eq(n_i64::Int64 NULL, u64::UInt64) -checked expr : eq(n_i64, CAST(u64 AS Int64 NULL)) +checked expr : eq(n_i64, CAST(u64 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -878,7 +878,7 @@ evaluation (internal): ast : n_i64 > n_i32 raw expr : gt(n_i64::Int64 NULL, n_i32::Int32 NULL) -checked expr : gt(n_i64, CAST(n_i32 AS Int64 NULL)) +checked expr : gt(n_i64, CAST(n_i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+------------+--------------+ @@ -900,7 +900,7 @@ evaluation (internal): ast : n_i64 = n_i32 raw expr : eq(n_i64::Int64 NULL, n_i32::Int32 NULL) -checked expr : eq(n_i64, CAST(n_i32 AS Int64 NULL)) +checked expr : eq(n_i64, CAST(n_i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+------------+--------------+ @@ -964,7 +964,7 @@ evaluation (internal): ast : n_i64 > n_u32 raw expr : gt(n_i64::Int64 NULL, n_u32::UInt32 NULL) -checked expr : gt(n_i64, CAST(n_u32 AS Int64 NULL)) +checked expr : gt(n_i64, CAST(n_u32 AS Int64 NULL)) optimized expr : false evaluation: +--------+-------------+------------+--------------+ @@ -986,7 +986,7 @@ evaluation (internal): ast : n_i64 = n_u32 raw expr : eq(n_i64::Int64 NULL, n_u32::UInt32 NULL) -checked expr : eq(n_i64, CAST(n_u32 AS Int64 NULL)) +checked expr : eq(n_i64, CAST(n_u32 AS Int64 NULL)) optimized expr : true evaluation: +--------+-------------+------------+--------------+ @@ -1008,7 +1008,7 @@ evaluation (internal): ast : n_i64 > n_u64 raw expr : gt(n_i64::Int64 NULL, n_u64::UInt64 NULL) -checked expr : gt(n_i64, CAST(n_u64 AS Int64 NULL)) +checked expr : gt(n_i64, CAST(n_u64 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+-------------+--------------+ @@ -1030,7 +1030,7 @@ evaluation (internal): ast : n_i64 = n_u64 raw expr : eq(n_i64::Int64 NULL, n_u64::UInt64 NULL) -checked expr : eq(n_i64, CAST(n_u64 AS Int64 NULL)) +checked expr : eq(n_i64, CAST(n_u64 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+-------------+--------------+ @@ -1052,7 +1052,7 @@ evaluation (internal): ast : n_i64 > f32 raw expr : gt(n_i64::Int64 NULL, f32::Float32) -checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -1074,7 +1074,7 @@ evaluation (internal): ast : n_i64 = f32 raw expr : eq(n_i64::Int64 NULL, f32::Float32) -checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -1096,7 +1096,7 @@ evaluation (internal): ast : n_i64 > n_f32 raw expr : gt(n_i64::Int64 NULL, n_f32::Float32 NULL) -checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+--------------+ @@ -1118,7 +1118,7 @@ evaluation (internal): ast : n_i64 = n_f32 raw expr : eq(n_i64::Int64 NULL, n_f32::Float32 NULL) -checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+--------------+--------------+ @@ -1140,7 +1140,7 @@ evaluation (internal): ast : n_i64 > f64 raw expr : gt(n_i64::Int64 NULL, f64::Float64) -checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : gt(CAST(n_i64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -1162,7 +1162,7 @@ evaluation (internal): ast : n_i64 = f64 raw expr : eq(n_i64::Int64 NULL, f64::Float64) -checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : eq(CAST(n_i64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -1184,7 +1184,7 @@ evaluation (internal): ast : n_i64 > n_f64 raw expr : gt(n_i64::Int64 NULL, n_f64::Float64 NULL) -checked expr : gt(CAST(n_i64 AS Float64 NULL), n_f64) +checked expr : gt(CAST(n_i64 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+------------+--------------+--------------+ @@ -1206,7 +1206,7 @@ evaluation (internal): ast : n_i64 = n_f64 raw expr : eq(n_i64::Int64 NULL, n_f64::Float64 NULL) -checked expr : eq(CAST(n_i64 AS Float64 NULL), n_f64) +checked expr : eq(CAST(n_i64 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+------------+--------------+--------------+ @@ -1228,7 +1228,7 @@ evaluation (internal): ast : n_i64 > d128 raw expr : gt(n_i64::Int64 NULL, d128::Decimal(38, 0)) -checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : false evaluation: +--------+------------+----------------+--------------+ @@ -1250,7 +1250,7 @@ evaluation (internal): ast : n_i64 = d128 raw expr : eq(n_i64::Int64 NULL, d128::Decimal(38, 0)) -checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : true evaluation: +--------+------------+----------------+--------------+ @@ -1272,7 +1272,7 @@ evaluation (internal): ast : n_i64 > n_d128 raw expr : gt(n_i64::Int64 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), n_d128) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), n_d128) optimized expr : false evaluation: +--------+------------+---------------------+--------------+ @@ -1294,7 +1294,7 @@ evaluation (internal): ast : n_i64 = n_d128 raw expr : eq(n_i64::Int64 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), n_d128) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), n_d128) optimized expr : true evaluation: +--------+------------+---------------------+--------------+ @@ -1316,7 +1316,7 @@ evaluation (internal): ast : n_i64 > d256 raw expr : gt(n_i64::Int64 NULL, d256::Decimal(76, 0)) -checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : false evaluation: +--------+------------+----------------+--------------+ @@ -1338,7 +1338,7 @@ evaluation (internal): ast : n_i64 = d256 raw expr : eq(n_i64::Int64 NULL, d256::Decimal(76, 0)) -checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : true evaluation: +--------+------------+----------------+--------------+ @@ -1360,7 +1360,7 @@ evaluation (internal): ast : n_i64 > n_d256 raw expr : gt(n_i64::Int64 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), n_d256) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), n_d256) optimized expr : false evaluation: +--------+------------+---------------------+--------------+ @@ -1382,7 +1382,7 @@ evaluation (internal): ast : n_i64 = n_d256 raw expr : eq(n_i64::Int64 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), n_d256) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), n_d256) optimized expr : true evaluation: +--------+------------+---------------------+--------------+ @@ -1404,7 +1404,7 @@ evaluation (internal): ast : n_i32 > 1 raw expr : gt(n_i32::Int32 NULL, 1) -checked expr : gt(n_i32, CAST(1_u8 AS Int32 NULL)) +checked expr : gt(n_i32, CAST(1_u8 AS Int32 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1425,7 +1425,7 @@ evaluation (internal): ast : n_i32 = 1 raw expr : eq(n_i32::Int32 NULL, 1) -checked expr : eq(n_i32, CAST(1_i32 AS Int32 NULL)) +checked expr : eq(n_i32, CAST(1_i32 AS Int32 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1446,7 +1446,7 @@ evaluation (internal): ast : 1 > n_i32 raw expr : gt(1, n_i32::Int32 NULL) -checked expr : gt(CAST(1_u8 AS Int32 NULL), n_i32) +checked expr : gt(CAST(1_u8 AS Int32 NULL), n_i32) optimized expr : true evaluation: +--------+------------+--------------+ @@ -1467,7 +1467,7 @@ evaluation (internal): ast : 1 = n_i32 raw expr : eq(1, n_i32::Int32 NULL) -checked expr : eq(CAST(1_i32 AS Int32 NULL), n_i32) +checked expr : eq(CAST(1_i32 AS Int32 NULL), n_i32) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1488,7 +1488,7 @@ evaluation (internal): ast : n_i32 > 1.0 raw expr : gt(n_i32::Int32 NULL, 1.0) -checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : gt(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1509,7 +1509,7 @@ evaluation (internal): ast : n_i32 = 1.0 raw expr : eq(n_i32::Int32 NULL, 1.0) -checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : eq(CAST(n_i32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1530,7 +1530,7 @@ evaluation (internal): ast : 1.0 > n_i32 raw expr : gt(1.0, n_i32::Int32 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+------------+--------------+ @@ -1551,7 +1551,7 @@ evaluation (internal): ast : 1.0 = n_i32 raw expr : eq(1.0, n_i32::Int32 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1586,7 +1586,7 @@ candidate functions: ast : n_i32 = '1' raw expr : eq(n_i32::Int32 NULL, '1') -checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST("1" AS Int64 NULL)) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST("1" AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1621,7 +1621,7 @@ candidate functions: ast : '1' = n_i32 raw expr : eq('1', n_i32::Int32 NULL) -checked expr : eq(CAST("1" AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : eq(CAST("1" AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1642,7 +1642,7 @@ evaluation (internal): ast : n_i32 > 1::uint64 raw expr : gt(n_i32::Int32 NULL, CAST(1 AS UInt64)) -checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(to_uint64(1_u8) AS Int64 NULL)) +checked expr : gt(CAST(n_i32 AS Int64 NULL), CAST(CAST(1_u8 AS UInt64) AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1663,7 +1663,7 @@ evaluation (internal): ast : n_i32 = 1::uint64 raw expr : eq(n_i32::Int32 NULL, CAST(1 AS UInt64)) -checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(to_uint64(1_u8) AS Int64 NULL)) +checked expr : eq(CAST(n_i32 AS Int64 NULL), CAST(CAST(1_u8 AS UInt64) AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1684,7 +1684,7 @@ evaluation (internal): ast : 1::uint64 > n_i32 raw expr : gt(CAST(1 AS UInt64), n_i32::Int32 NULL) -checked expr : gt(CAST(to_uint64(1_u8) AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+--------------+ @@ -1705,7 +1705,7 @@ evaluation (internal): ast : 1::uint64 = n_i32 raw expr : eq(CAST(1 AS UInt64), n_i32::Int32 NULL) -checked expr : eq(CAST(to_uint64(1_u8) AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1726,7 +1726,7 @@ evaluation (internal): ast : n_i64 > 1 raw expr : gt(n_i64::Int64 NULL, 1) -checked expr : gt(n_i64, CAST(1_u8 AS Int64 NULL)) +checked expr : gt(n_i64, CAST(1_u8 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1747,7 +1747,7 @@ evaluation (internal): ast : n_i64 = 1 raw expr : eq(n_i64::Int64 NULL, 1) -checked expr : eq(n_i64, CAST(1_i64 AS Int64 NULL)) +checked expr : eq(n_i64, CAST(1_i64 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1768,7 +1768,7 @@ evaluation (internal): ast : 1 > n_i64 raw expr : gt(1, n_i64::Int64 NULL) -checked expr : gt(CAST(1_u8 AS Int64 NULL), n_i64) +checked expr : gt(CAST(1_u8 AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+------------+--------------+ @@ -1789,7 +1789,7 @@ evaluation (internal): ast : 1 = n_i64 raw expr : eq(1, n_i64::Int64 NULL) -checked expr : eq(CAST(1_i64 AS Int64 NULL), n_i64) +checked expr : eq(CAST(1_i64 AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1810,7 +1810,7 @@ evaluation (internal): ast : n_i64 > 1.0 raw expr : gt(n_i64::Int64 NULL, 1.0) -checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : gt(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1831,7 +1831,7 @@ evaluation (internal): ast : n_i64 = 1.0 raw expr : eq(n_i64::Int64 NULL, 1.0) -checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : eq(CAST(n_i64 AS Decimal(19, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1852,7 +1852,7 @@ evaluation (internal): ast : 1.0 > n_i64 raw expr : gt(1.0, n_i64::Int64 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : true evaluation: +--------+------------+--------------+ @@ -1873,7 +1873,7 @@ evaluation (internal): ast : 1.0 = n_i64 raw expr : eq(1.0, n_i64::Int64 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_i64 AS Decimal(19, 0) NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1908,7 +1908,7 @@ candidate functions: ast : n_i64 = '1' raw expr : eq(n_i64::Int64 NULL, '1') -checked expr : eq(n_i64, CAST("1" AS Int64 NULL)) +checked expr : eq(n_i64, CAST("1" AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1943,7 +1943,7 @@ candidate functions: ast : '1' = n_i64 raw expr : eq('1', n_i64::Int64 NULL) -checked expr : eq(CAST("1" AS Int64 NULL), n_i64) +checked expr : eq(CAST("1" AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1964,7 +1964,7 @@ evaluation (internal): ast : n_i64 > 1::uint64 raw expr : gt(n_i64::Int64 NULL, CAST(1 AS UInt64)) -checked expr : gt(n_i64, CAST(to_uint64(1_u8) AS Int64 NULL)) +checked expr : gt(n_i64, CAST(CAST(1_u8 AS UInt64) AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -1985,7 +1985,7 @@ evaluation (internal): ast : n_i64 = 1::uint64 raw expr : eq(n_i64::Int64 NULL, CAST(1 AS UInt64)) -checked expr : eq(n_i64, CAST(to_uint64(1_u8) AS Int64 NULL)) +checked expr : eq(n_i64, CAST(CAST(1_u8 AS UInt64) AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+--------------+ @@ -2006,7 +2006,7 @@ evaluation (internal): ast : 1::uint64 > n_i64 raw expr : gt(CAST(1 AS UInt64), n_i64::Int64 NULL) -checked expr : gt(CAST(to_uint64(1_u8) AS Int64 NULL), n_i64) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+------------+--------------+ @@ -2027,7 +2027,7 @@ evaluation (internal): ast : 1::uint64 = n_i64 raw expr : eq(CAST(1 AS UInt64), n_i64::Int64 NULL) -checked expr : eq(CAST(to_uint64(1_u8) AS Int64 NULL), n_i64) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+------------+--------------+ diff --git a/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt b/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt index a10112507cee2..6b53b4c6f6adc 100644 --- a/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt +++ b/src/query/functions/tests/it/type_check/testdata/nullable_unsigned.txt @@ -1,6 +1,6 @@ ast : n_u32 > i32 raw expr : gt(n_u32::UInt32 NULL, i32::Int32) -checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(i32 AS Int64 NULL)) +checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -22,7 +22,7 @@ evaluation (internal): ast : n_u32 = i32 raw expr : eq(n_u32::UInt32 NULL, i32::Int32) -checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(i32 AS Int64 NULL)) +checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -44,7 +44,7 @@ evaluation (internal): ast : n_u32 > i64 raw expr : gt(n_u32::UInt32 NULL, i64::Int64) -checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -66,7 +66,7 @@ evaluation (internal): ast : n_u32 = i64 raw expr : eq(n_u32::UInt32 NULL, i64::Int64) -checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(i64 AS Int64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -88,7 +88,7 @@ evaluation (internal): ast : n_u32 > u32 raw expr : gt(n_u32::UInt32 NULL, u32::UInt32) -checked expr : gt(n_u32, CAST(u32 AS UInt32 NULL)) +checked expr : gt(n_u32, CAST(u32 AS UInt32 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -110,7 +110,7 @@ evaluation (internal): ast : n_u32 = u32 raw expr : eq(n_u32::UInt32 NULL, u32::UInt32) -checked expr : eq(n_u32, CAST(u32 AS UInt32 NULL)) +checked expr : eq(n_u32, CAST(u32 AS UInt32 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -132,7 +132,7 @@ evaluation (internal): ast : n_u32 > u64 raw expr : gt(n_u32::UInt32 NULL, u64::UInt64) -checked expr : gt(CAST(n_u32 AS UInt64 NULL), CAST(u64 AS UInt64 NULL)) +checked expr : gt(CAST(n_u32 AS UInt64 NULL), CAST(u64 AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -154,7 +154,7 @@ evaluation (internal): ast : n_u32 = u64 raw expr : eq(n_u32::UInt32 NULL, u64::UInt64) -checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST(u64 AS UInt64 NULL)) +checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST(u64 AS UInt64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -176,7 +176,7 @@ evaluation (internal): ast : n_u32 > n_i32 raw expr : gt(n_u32::UInt32 NULL, n_i32::Int32 NULL) -checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : gt(CAST(n_u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+-------------+--------------+ @@ -198,7 +198,7 @@ evaluation (internal): ast : n_u32 = n_i32 raw expr : eq(n_u32::UInt32 NULL, n_i32::Int32 NULL) -checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : eq(CAST(n_u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+-------------+--------------+ @@ -220,7 +220,7 @@ evaluation (internal): ast : n_u32 > n_i64 raw expr : gt(n_u32::UInt32 NULL, n_i64::Int64 NULL) -checked expr : gt(CAST(n_u32 AS Int64 NULL), n_i64) +checked expr : gt(CAST(n_u32 AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+-------------+------------+--------------+ @@ -242,7 +242,7 @@ evaluation (internal): ast : n_u32 = n_i64 raw expr : eq(n_u32::UInt32 NULL, n_i64::Int64 NULL) -checked expr : eq(CAST(n_u32 AS Int64 NULL), n_i64) +checked expr : eq(CAST(n_u32 AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+-------------+------------+--------------+ @@ -306,7 +306,7 @@ evaluation (internal): ast : n_u32 > n_u64 raw expr : gt(n_u32::UInt32 NULL, n_u64::UInt64 NULL) -checked expr : gt(CAST(n_u32 AS UInt64 NULL), n_u64) +checked expr : gt(CAST(n_u32 AS UInt64 NULL), n_u64) optimized expr : false evaluation: +--------+-------------+-------------+--------------+ @@ -328,7 +328,7 @@ evaluation (internal): ast : n_u32 = n_u64 raw expr : eq(n_u32::UInt32 NULL, n_u64::UInt64 NULL) -checked expr : eq(CAST(n_u32 AS UInt64 NULL), n_u64) +checked expr : eq(CAST(n_u32 AS UInt64 NULL), n_u64) optimized expr : true evaluation: +--------+-------------+-------------+--------------+ @@ -350,7 +350,7 @@ evaluation (internal): ast : n_u32 > f32 raw expr : gt(n_u32::UInt32 NULL, f32::Float32) -checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -372,7 +372,7 @@ evaluation (internal): ast : n_u32 = f32 raw expr : eq(n_u32::UInt32 NULL, f32::Float32) -checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -394,7 +394,7 @@ evaluation (internal): ast : n_u32 > n_f32 raw expr : gt(n_u32::UInt32 NULL, n_f32::Float32 NULL) -checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+--------------+ @@ -416,7 +416,7 @@ evaluation (internal): ast : n_u32 = n_f32 raw expr : eq(n_u32::UInt32 NULL, n_f32::Float32 NULL) -checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+--------------+--------------+ @@ -438,7 +438,7 @@ evaluation (internal): ast : n_u32 > f64 raw expr : gt(n_u32::UInt32 NULL, f64::Float64) -checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : gt(CAST(n_u32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -460,7 +460,7 @@ evaluation (internal): ast : n_u32 = f64 raw expr : eq(n_u32::UInt32 NULL, f64::Float64) -checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : eq(CAST(n_u32 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -482,7 +482,7 @@ evaluation (internal): ast : n_u32 > n_f64 raw expr : gt(n_u32::UInt32 NULL, n_f64::Float64 NULL) -checked expr : gt(CAST(n_u32 AS Float64 NULL), n_f64) +checked expr : gt(CAST(n_u32 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+-------------+--------------+--------------+ @@ -504,7 +504,7 @@ evaluation (internal): ast : n_u32 = n_f64 raw expr : eq(n_u32::UInt32 NULL, n_f64::Float64 NULL) -checked expr : eq(CAST(n_u32 AS Float64 NULL), n_f64) +checked expr : eq(CAST(n_u32 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+-------------+--------------+--------------+ @@ -526,7 +526,7 @@ evaluation (internal): ast : n_u32 > d128 raw expr : gt(n_u32::UInt32 NULL, d128::Decimal(38, 0)) -checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : false evaluation: +--------+-------------+----------------+--------------+ @@ -548,7 +548,7 @@ evaluation (internal): ast : n_u32 = d128 raw expr : eq(n_u32::UInt32 NULL, d128::Decimal(38, 0)) -checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : true evaluation: +--------+-------------+----------------+--------------+ @@ -570,7 +570,7 @@ evaluation (internal): ast : n_u32 > n_d128 raw expr : gt(n_u32::UInt32 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), n_d128) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), n_d128) optimized expr : false evaluation: +--------+-------------+---------------------+--------------+ @@ -592,7 +592,7 @@ evaluation (internal): ast : n_u32 = n_d128 raw expr : eq(n_u32::UInt32 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), n_d128) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), n_d128) optimized expr : true evaluation: +--------+-------------+---------------------+--------------+ @@ -614,7 +614,7 @@ evaluation (internal): ast : n_u32 > d256 raw expr : gt(n_u32::UInt32 NULL, d256::Decimal(76, 0)) -checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : false evaluation: +--------+-------------+----------------+--------------+ @@ -636,7 +636,7 @@ evaluation (internal): ast : n_u32 = d256 raw expr : eq(n_u32::UInt32 NULL, d256::Decimal(76, 0)) -checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : true evaluation: +--------+-------------+----------------+--------------+ @@ -658,7 +658,7 @@ evaluation (internal): ast : n_u32 > n_d256 raw expr : gt(n_u32::UInt32 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), n_d256) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), n_d256) optimized expr : false evaluation: +--------+-------------+---------------------+--------------+ @@ -680,7 +680,7 @@ evaluation (internal): ast : n_u32 = n_d256 raw expr : eq(n_u32::UInt32 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), n_d256) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), n_d256) optimized expr : true evaluation: +--------+-------------+---------------------+--------------+ @@ -702,7 +702,7 @@ evaluation (internal): ast : n_u64 > i32 raw expr : gt(n_u64::UInt64 NULL, i32::Int32) -checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(i32 AS Int64 NULL)) +checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -724,7 +724,7 @@ evaluation (internal): ast : n_u64 = i32 raw expr : eq(n_u64::UInt64 NULL, i32::Int32) -checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(i32 AS Int64 NULL)) +checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -746,7 +746,7 @@ evaluation (internal): ast : n_u64 > i64 raw expr : gt(n_u64::UInt64 NULL, i64::Int64) -checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(i64 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -768,7 +768,7 @@ evaluation (internal): ast : n_u64 = i64 raw expr : eq(n_u64::UInt64 NULL, i64::Int64) -checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(i64 AS Int64 NULL)) +checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(i64 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -790,7 +790,7 @@ evaluation (internal): ast : n_u64 > u32 raw expr : gt(n_u64::UInt64 NULL, u32::UInt32) -checked expr : gt(n_u64, CAST(u32 AS UInt64 NULL)) +checked expr : gt(n_u64, CAST(u32 AS UInt64 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -812,7 +812,7 @@ evaluation (internal): ast : n_u64 = u32 raw expr : eq(n_u64::UInt64 NULL, u32::UInt32) -checked expr : eq(n_u64, CAST(u32 AS UInt64 NULL)) +checked expr : eq(n_u64, CAST(u32 AS UInt64 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -834,7 +834,7 @@ evaluation (internal): ast : n_u64 > u64 raw expr : gt(n_u64::UInt64 NULL, u64::UInt64) -checked expr : gt(n_u64, CAST(u64 AS UInt64 NULL)) +checked expr : gt(n_u64, CAST(u64 AS UInt64 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -856,7 +856,7 @@ evaluation (internal): ast : n_u64 = u64 raw expr : eq(n_u64::UInt64 NULL, u64::UInt64) -checked expr : eq(n_u64, CAST(u64 AS UInt64 NULL)) +checked expr : eq(n_u64, CAST(u64 AS UInt64 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -878,7 +878,7 @@ evaluation (internal): ast : n_u64 > n_i32 raw expr : gt(n_u64::UInt64 NULL, n_i32::Int32 NULL) -checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : gt(CAST(n_u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+-------------+--------------+ @@ -900,7 +900,7 @@ evaluation (internal): ast : n_u64 = n_i32 raw expr : eq(n_u64::UInt64 NULL, n_i32::Int32 NULL) -checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : eq(CAST(n_u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+-------------+--------------+ @@ -922,7 +922,7 @@ evaluation (internal): ast : n_u64 > n_i64 raw expr : gt(n_u64::UInt64 NULL, n_i64::Int64 NULL) -checked expr : gt(CAST(n_u64 AS Int64 NULL), n_i64) +checked expr : gt(CAST(n_u64 AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+------------+-------------+--------------+ @@ -944,7 +944,7 @@ evaluation (internal): ast : n_u64 = n_i64 raw expr : eq(n_u64::UInt64 NULL, n_i64::Int64 NULL) -checked expr : eq(CAST(n_u64 AS Int64 NULL), n_i64) +checked expr : eq(CAST(n_u64 AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+------------+-------------+--------------+ @@ -966,7 +966,7 @@ evaluation (internal): ast : n_u64 > n_u32 raw expr : gt(n_u64::UInt64 NULL, n_u32::UInt32 NULL) -checked expr : gt(n_u64, CAST(n_u32 AS UInt64 NULL)) +checked expr : gt(n_u64, CAST(n_u32 AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+-------------+--------------+ @@ -988,7 +988,7 @@ evaluation (internal): ast : n_u64 = n_u32 raw expr : eq(n_u64::UInt64 NULL, n_u32::UInt32 NULL) -checked expr : eq(n_u64, CAST(n_u32 AS UInt64 NULL)) +checked expr : eq(n_u64, CAST(n_u32 AS UInt64 NULL)) optimized expr : true evaluation: +--------+-------------+-------------+--------------+ @@ -1052,7 +1052,7 @@ evaluation (internal): ast : n_u64 > f32 raw expr : gt(n_u64::UInt64 NULL, f32::Float32) -checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -1074,7 +1074,7 @@ evaluation (internal): ast : n_u64 = f32 raw expr : eq(n_u64::UInt64 NULL, f32::Float32) -checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) +checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -1096,7 +1096,7 @@ evaluation (internal): ast : n_u64 > n_f32 raw expr : gt(n_u64::UInt64 NULL, n_f32::Float32 NULL) -checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+--------------+ @@ -1118,7 +1118,7 @@ evaluation (internal): ast : n_u64 = n_f32 raw expr : eq(n_u64::UInt64 NULL, n_f32::Float32 NULL) -checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+--------------+--------------+ @@ -1140,7 +1140,7 @@ evaluation (internal): ast : n_u64 > f64 raw expr : gt(n_u64::UInt64 NULL, f64::Float64) -checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : gt(CAST(n_u64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -1162,7 +1162,7 @@ evaluation (internal): ast : n_u64 = f64 raw expr : eq(n_u64::UInt64 NULL, f64::Float64) -checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) +checked expr : eq(CAST(n_u64 AS Float64 NULL), CAST(f64 AS Float64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -1184,7 +1184,7 @@ evaluation (internal): ast : n_u64 > n_f64 raw expr : gt(n_u64::UInt64 NULL, n_f64::Float64 NULL) -checked expr : gt(CAST(n_u64 AS Float64 NULL), n_f64) +checked expr : gt(CAST(n_u64 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+-------------+--------------+--------------+ @@ -1206,7 +1206,7 @@ evaluation (internal): ast : n_u64 = n_f64 raw expr : eq(n_u64::UInt64 NULL, n_f64::Float64 NULL) -checked expr : eq(CAST(n_u64 AS Float64 NULL), n_f64) +checked expr : eq(CAST(n_u64 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+-------------+--------------+--------------+ @@ -1228,7 +1228,7 @@ evaluation (internal): ast : n_u64 > d128 raw expr : gt(n_u64::UInt64 NULL, d128::Decimal(38, 0)) -checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : false evaluation: +--------+-------------+----------------+--------------+ @@ -1250,7 +1250,7 @@ evaluation (internal): ast : n_u64 = d128 raw expr : eq(n_u64::UInt64 NULL, d128::Decimal(38, 0)) -checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d128 AS Decimal(38, 0) NULL)) optimized expr : true evaluation: +--------+-------------+----------------+--------------+ @@ -1272,7 +1272,7 @@ evaluation (internal): ast : n_u64 > n_d128 raw expr : gt(n_u64::UInt64 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), n_d128) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), n_d128) optimized expr : false evaluation: +--------+-------------+---------------------+--------------+ @@ -1294,7 +1294,7 @@ evaluation (internal): ast : n_u64 = n_d128 raw expr : eq(n_u64::UInt64 NULL, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), n_d128) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), n_d128) optimized expr : true evaluation: +--------+-------------+---------------------+--------------+ @@ -1316,7 +1316,7 @@ evaluation (internal): ast : n_u64 > d256 raw expr : gt(n_u64::UInt64 NULL, d256::Decimal(76, 0)) -checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : false evaluation: +--------+-------------+----------------+--------------+ @@ -1338,7 +1338,7 @@ evaluation (internal): ast : n_u64 = d256 raw expr : eq(n_u64::UInt64 NULL, d256::Decimal(76, 0)) -checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(d256 AS Decimal(76, 0) NULL)) optimized expr : true evaluation: +--------+-------------+----------------+--------------+ @@ -1360,7 +1360,7 @@ evaluation (internal): ast : n_u64 > n_d256 raw expr : gt(n_u64::UInt64 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), n_d256) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), n_d256) optimized expr : false evaluation: +--------+-------------+---------------------+--------------+ @@ -1382,7 +1382,7 @@ evaluation (internal): ast : n_u64 = n_d256 raw expr : eq(n_u64::UInt64 NULL, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), n_d256) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), n_d256) optimized expr : true evaluation: +--------+-------------+---------------------+--------------+ @@ -1404,7 +1404,7 @@ evaluation (internal): ast : n_u32 > 1 raw expr : gt(n_u32::UInt32 NULL, 1) -checked expr : gt(n_u32, CAST(1_u8 AS UInt32 NULL)) +checked expr : gt(n_u32, CAST(1_u8 AS UInt32 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1425,7 +1425,7 @@ evaluation (internal): ast : n_u32 = 1 raw expr : eq(n_u32::UInt32 NULL, 1) -checked expr : eq(n_u32, CAST(1_u32 AS UInt32 NULL)) +checked expr : eq(n_u32, CAST(1_u32 AS UInt32 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1446,7 +1446,7 @@ evaluation (internal): ast : 1 > n_u32 raw expr : gt(1, n_u32::UInt32 NULL) -checked expr : gt(CAST(1_u8 AS UInt32 NULL), n_u32) +checked expr : gt(CAST(1_u8 AS UInt32 NULL), n_u32) optimized expr : true evaluation: +--------+-------------+--------------+ @@ -1467,7 +1467,7 @@ evaluation (internal): ast : 1 = n_u32 raw expr : eq(1, n_u32::UInt32 NULL) -checked expr : eq(CAST(1_u32 AS UInt32 NULL), n_u32) +checked expr : eq(CAST(1_u32 AS UInt32 NULL), n_u32) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1488,7 +1488,7 @@ evaluation (internal): ast : n_u32 > 1.0 raw expr : gt(n_u32::UInt32 NULL, 1.0) -checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : gt(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1509,7 +1509,7 @@ evaluation (internal): ast : n_u32 = 1.0 raw expr : eq(n_u32::UInt32 NULL, 1.0) -checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : eq(CAST(n_u32 AS Decimal(10, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1530,7 +1530,7 @@ evaluation (internal): ast : 1.0 > n_u32 raw expr : gt(1.0, n_u32::UInt32 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : true evaluation: +--------+-------------+--------------+ @@ -1551,7 +1551,7 @@ evaluation (internal): ast : 1.0 = n_u32 raw expr : eq(1.0, n_u32::UInt32 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u32 AS Decimal(10, 0) NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1586,7 +1586,7 @@ candidate functions: ast : n_u32 = '1' raw expr : eq(n_u32::UInt32 NULL, '1') -checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST("1" AS UInt64 NULL)) +checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST("1" AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1621,7 +1621,7 @@ candidate functions: ast : '1' = n_u32 raw expr : eq('1', n_u32::UInt32 NULL) -checked expr : eq(CAST("1" AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +checked expr : eq(CAST("1" AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1642,7 +1642,7 @@ evaluation (internal): ast : n_u32 > 1::uint64 raw expr : gt(n_u32::UInt32 NULL, CAST(1 AS UInt64)) -checked expr : gt(CAST(n_u32 AS UInt64 NULL), CAST(to_uint64(1_u8) AS UInt64 NULL)) +checked expr : gt(CAST(n_u32 AS UInt64 NULL), CAST(CAST(1_u8 AS UInt64) AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1663,7 +1663,7 @@ evaluation (internal): ast : n_u32 = 1::uint64 raw expr : eq(n_u32::UInt32 NULL, CAST(1 AS UInt64)) -checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST(to_uint64(1_u8) AS UInt64 NULL)) +checked expr : eq(CAST(n_u32 AS UInt64 NULL), CAST(CAST(1_u8 AS UInt64) AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1684,7 +1684,7 @@ evaluation (internal): ast : 1::uint64 > n_u32 raw expr : gt(CAST(1 AS UInt64), n_u32::UInt32 NULL) -checked expr : gt(CAST(to_uint64(1_u8) AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) optimized expr : true evaluation: +--------+-------------+--------------+ @@ -1705,7 +1705,7 @@ evaluation (internal): ast : 1::uint64 = n_u32 raw expr : eq(CAST(1 AS UInt64), n_u32::UInt32 NULL) -checked expr : eq(CAST(to_uint64(1_u8) AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1726,7 +1726,7 @@ evaluation (internal): ast : n_u64 > 1 raw expr : gt(n_u64::UInt64 NULL, 1) -checked expr : gt(n_u64, CAST(1_u8 AS UInt64 NULL)) +checked expr : gt(n_u64, CAST(1_u8 AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1747,7 +1747,7 @@ evaluation (internal): ast : n_u64 = 1 raw expr : eq(n_u64::UInt64 NULL, 1) -checked expr : eq(n_u64, CAST(1_u64 AS UInt64 NULL)) +checked expr : eq(n_u64, CAST(1_u64 AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1768,7 +1768,7 @@ evaluation (internal): ast : 1 > n_u64 raw expr : gt(1, n_u64::UInt64 NULL) -checked expr : gt(CAST(1_u8 AS UInt64 NULL), n_u64) +checked expr : gt(CAST(1_u8 AS UInt64 NULL), n_u64) optimized expr : true evaluation: +--------+-------------+--------------+ @@ -1789,7 +1789,7 @@ evaluation (internal): ast : 1 = n_u64 raw expr : eq(1, n_u64::UInt64 NULL) -checked expr : eq(CAST(1_u64 AS UInt64 NULL), n_u64) +checked expr : eq(CAST(1_u64 AS UInt64 NULL), n_u64) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1810,7 +1810,7 @@ evaluation (internal): ast : n_u64 > 1.0 raw expr : gt(n_u64::UInt64 NULL, 1.0) -checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : gt(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1831,7 +1831,7 @@ evaluation (internal): ast : n_u64 = 1.0 raw expr : eq(n_u64::UInt64 NULL, 1.0) -checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) +checked expr : eq(CAST(n_u64 AS Decimal(20, 0) NULL), CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1852,7 +1852,7 @@ evaluation (internal): ast : 1.0 > n_u64 raw expr : gt(1.0, n_u64::UInt64 NULL) -checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : gt(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : true evaluation: +--------+-------------+--------------+ @@ -1873,7 +1873,7 @@ evaluation (internal): ast : 1.0 = n_u64 raw expr : eq(1.0, n_u64::UInt64 NULL) -checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) +checked expr : eq(CAST(1.0_d128(2,1) AS Decimal(2, 1) NULL), CAST(n_u64 AS Decimal(20, 0) NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1908,7 +1908,7 @@ candidate functions: ast : n_u64 = '1' raw expr : eq(n_u64::UInt64 NULL, '1') -checked expr : eq(n_u64, CAST("1" AS UInt64 NULL)) +checked expr : eq(n_u64, CAST("1" AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1943,7 +1943,7 @@ candidate functions: ast : '1' = n_u64 raw expr : eq('1', n_u64::UInt64 NULL) -checked expr : eq(CAST("1" AS UInt64 NULL), n_u64) +checked expr : eq(CAST("1" AS UInt64 NULL), n_u64) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1964,7 +1964,7 @@ evaluation (internal): ast : n_u64 > 1::uint64 raw expr : gt(n_u64::UInt64 NULL, CAST(1 AS UInt64)) -checked expr : gt(n_u64, CAST(to_uint64(1_u8) AS UInt64 NULL)) +checked expr : gt(n_u64, CAST(CAST(1_u8 AS UInt64) AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -1985,7 +1985,7 @@ evaluation (internal): ast : n_u64 = 1::uint64 raw expr : eq(n_u64::UInt64 NULL, CAST(1 AS UInt64)) -checked expr : eq(n_u64, CAST(to_uint64(1_u8) AS UInt64 NULL)) +checked expr : eq(n_u64, CAST(CAST(1_u8 AS UInt64) AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+--------------+ @@ -2006,7 +2006,7 @@ evaluation (internal): ast : 1::uint64 > n_u64 raw expr : gt(CAST(1 AS UInt64), n_u64::UInt64 NULL) -checked expr : gt(CAST(to_uint64(1_u8) AS UInt64 NULL), n_u64) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS UInt64 NULL), n_u64) optimized expr : true evaluation: +--------+-------------+--------------+ @@ -2027,7 +2027,7 @@ evaluation (internal): ast : 1::uint64 = n_u64 raw expr : eq(CAST(1 AS UInt64), n_u64::UInt64 NULL) -checked expr : eq(CAST(to_uint64(1_u8) AS UInt64 NULL), n_u64) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS UInt64 NULL), n_u64) optimized expr : false evaluation: +--------+-------------+--------------+ diff --git a/src/query/functions/tests/it/type_check/testdata/signed.txt b/src/query/functions/tests/it/type_check/testdata/signed.txt index 1e4dd413b7492..aaaf4f3e89ef5 100644 --- a/src/query/functions/tests/it/type_check/testdata/signed.txt +++ b/src/query/functions/tests/it/type_check/testdata/signed.txt @@ -42,7 +42,7 @@ evaluation (internal): ast : i32 > i64 raw expr : gt(i32::Int32, i64::Int64) -checked expr : gt(to_int64(i32), i64) +checked expr : gt(CAST(i32 AS Int64), i64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -64,7 +64,7 @@ evaluation (internal): ast : i32 = i64 raw expr : eq(i32::Int32, i64::Int64) -checked expr : eq(to_int64(i32), i64) +checked expr : eq(CAST(i32 AS Int64), i64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -86,7 +86,7 @@ evaluation (internal): ast : i32 > u32 raw expr : gt(i32::Int32, u32::UInt32) -checked expr : gt(to_int64(i32), to_int64(u32)) +checked expr : gt(CAST(i32 AS Int64), CAST(u32 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -108,7 +108,7 @@ evaluation (internal): ast : i32 = u32 raw expr : eq(i32::Int32, u32::UInt32) -checked expr : eq(to_int64(i32), to_int64(u32)) +checked expr : eq(CAST(i32 AS Int64), CAST(u32 AS Int64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -130,7 +130,7 @@ evaluation (internal): ast : i32 > u64 raw expr : gt(i32::Int32, u64::UInt64) -checked expr : gt(to_int64(i32), to_int64(u64)) +checked expr : gt(CAST(i32 AS Int64), CAST(u64 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -152,7 +152,7 @@ evaluation (internal): ast : i32 = u64 raw expr : eq(i32::Int32, u64::UInt64) -checked expr : eq(to_int64(i32), to_int64(u64)) +checked expr : eq(CAST(i32 AS Int64), CAST(u64 AS Int64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -174,7 +174,7 @@ evaluation (internal): ast : i32 > n_i32 raw expr : gt(i32::Int32, n_i32::Int32 NULL) -checked expr : gt(CAST(i32 AS Int32 NULL), n_i32) +checked expr : gt(CAST(i32 AS Int32 NULL), n_i32) optimized expr : false evaluation: +--------+---------+------------+--------------+ @@ -196,7 +196,7 @@ evaluation (internal): ast : i32 = n_i32 raw expr : eq(i32::Int32, n_i32::Int32 NULL) -checked expr : eq(CAST(i32 AS Int32 NULL), n_i32) +checked expr : eq(CAST(i32 AS Int32 NULL), n_i32) optimized expr : true evaluation: +--------+---------+------------+--------------+ @@ -218,7 +218,7 @@ evaluation (internal): ast : i32 > n_i64 raw expr : gt(i32::Int32, n_i64::Int64 NULL) -checked expr : gt(CAST(i32 AS Int64 NULL), n_i64) +checked expr : gt(CAST(i32 AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+---------+------------+--------------+ @@ -240,7 +240,7 @@ evaluation (internal): ast : i32 = n_i64 raw expr : eq(i32::Int32, n_i64::Int64 NULL) -checked expr : eq(CAST(i32 AS Int64 NULL), n_i64) +checked expr : eq(CAST(i32 AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+---------+------------+--------------+ @@ -262,7 +262,7 @@ evaluation (internal): ast : i32 > n_u32 raw expr : gt(i32::Int32, n_u32::UInt32 NULL) -checked expr : gt(CAST(i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +checked expr : gt(CAST(i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -284,7 +284,7 @@ evaluation (internal): ast : i32 = n_u32 raw expr : eq(i32::Int32, n_u32::UInt32 NULL) -checked expr : eq(CAST(i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +checked expr : eq(CAST(i32 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -306,7 +306,7 @@ evaluation (internal): ast : i32 > n_u64 raw expr : gt(i32::Int32, n_u64::UInt64 NULL) -checked expr : gt(CAST(i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +checked expr : gt(CAST(i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -328,7 +328,7 @@ evaluation (internal): ast : i32 = n_u64 raw expr : eq(i32::Int32, n_u64::UInt64 NULL) -checked expr : eq(CAST(i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +checked expr : eq(CAST(i32 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -350,7 +350,7 @@ evaluation (internal): ast : i32 > f32 raw expr : gt(i32::Int32, f32::Float32) -checked expr : gt(to_float64(i32), to_float64(f32)) +checked expr : gt(CAST(i32 AS Float64), CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -372,7 +372,7 @@ evaluation (internal): ast : i32 = f32 raw expr : eq(i32::Int32, f32::Float32) -checked expr : eq(to_float64(i32), to_float64(f32)) +checked expr : eq(CAST(i32 AS Float64), CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -394,7 +394,7 @@ evaluation (internal): ast : i32 > n_f32 raw expr : gt(i32::Int32, n_f32::Float32 NULL) -checked expr : gt(CAST(i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -416,7 +416,7 @@ evaluation (internal): ast : i32 = n_f32 raw expr : eq(i32::Int32, n_f32::Float32 NULL) -checked expr : eq(CAST(i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(i32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -438,7 +438,7 @@ evaluation (internal): ast : i32 > f64 raw expr : gt(i32::Int32, f64::Float64) -checked expr : gt(to_float64(i32), f64) +checked expr : gt(CAST(i32 AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -460,7 +460,7 @@ evaluation (internal): ast : i32 = f64 raw expr : eq(i32::Int32, f64::Float64) -checked expr : eq(to_float64(i32), f64) +checked expr : eq(CAST(i32 AS Float64), f64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -482,7 +482,7 @@ evaluation (internal): ast : i32 > n_f64 raw expr : gt(i32::Int32, n_f64::Float64 NULL) -checked expr : gt(CAST(i32 AS Float64 NULL), n_f64) +checked expr : gt(CAST(i32 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -504,7 +504,7 @@ evaluation (internal): ast : i32 = n_f64 raw expr : eq(i32::Int32, n_f64::Float64 NULL) -checked expr : eq(CAST(i32 AS Float64 NULL), n_f64) +checked expr : eq(CAST(i32 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -526,7 +526,7 @@ evaluation (internal): ast : i32 > d128 raw expr : gt(i32::Int32, d128::Decimal(38, 0)) -checked expr : gt(to_decimal(10, 0)(i32), d128) +checked expr : gt(CAST(i32 AS Decimal(10, 0)), d128) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -548,7 +548,7 @@ evaluation (internal): ast : i32 = d128 raw expr : eq(i32::Int32, d128::Decimal(38, 0)) -checked expr : eq(to_decimal(10, 0)(i32), d128) +checked expr : eq(CAST(i32 AS Decimal(10, 0)), d128) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -570,7 +570,7 @@ evaluation (internal): ast : i32 > n_d128 raw expr : gt(i32::Int32, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(i32 AS Decimal(10, 0) NULL), n_d128) +checked expr : gt(CAST(i32 AS Decimal(10, 0) NULL), n_d128) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -592,7 +592,7 @@ evaluation (internal): ast : i32 = n_d128 raw expr : eq(i32::Int32, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(i32 AS Decimal(10, 0) NULL), n_d128) +checked expr : eq(CAST(i32 AS Decimal(10, 0) NULL), n_d128) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -614,7 +614,7 @@ evaluation (internal): ast : i32 > d256 raw expr : gt(i32::Int32, d256::Decimal(76, 0)) -checked expr : gt(to_decimal(10, 0)(i32), d256) +checked expr : gt(CAST(i32 AS Decimal(10, 0)), d256) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -636,7 +636,7 @@ evaluation (internal): ast : i32 = d256 raw expr : eq(i32::Int32, d256::Decimal(76, 0)) -checked expr : eq(to_decimal(10, 0)(i32), d256) +checked expr : eq(CAST(i32 AS Decimal(10, 0)), d256) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -658,7 +658,7 @@ evaluation (internal): ast : i32 > n_d256 raw expr : gt(i32::Int32, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(i32 AS Decimal(10, 0) NULL), n_d256) +checked expr : gt(CAST(i32 AS Decimal(10, 0) NULL), n_d256) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -680,7 +680,7 @@ evaluation (internal): ast : i32 = n_d256 raw expr : eq(i32::Int32, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(i32 AS Decimal(10, 0) NULL), n_d256) +checked expr : eq(CAST(i32 AS Decimal(10, 0) NULL), n_d256) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -702,7 +702,7 @@ evaluation (internal): ast : i64 > i32 raw expr : gt(i64::Int64, i32::Int32) -checked expr : gt(i64, to_int64(i32)) +checked expr : gt(i64, CAST(i32 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -724,7 +724,7 @@ evaluation (internal): ast : i64 = i32 raw expr : eq(i64::Int64, i32::Int32) -checked expr : eq(i64, to_int64(i32)) +checked expr : eq(i64, CAST(i32 AS Int64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -788,7 +788,7 @@ evaluation (internal): ast : i64 > u32 raw expr : gt(i64::Int64, u32::UInt32) -checked expr : gt(i64, to_int64(u32)) +checked expr : gt(i64, CAST(u32 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -810,7 +810,7 @@ evaluation (internal): ast : i64 = u32 raw expr : eq(i64::Int64, u32::UInt32) -checked expr : eq(i64, to_int64(u32)) +checked expr : eq(i64, CAST(u32 AS Int64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -832,7 +832,7 @@ evaluation (internal): ast : i64 > u64 raw expr : gt(i64::Int64, u64::UInt64) -checked expr : gt(i64, to_int64(u64)) +checked expr : gt(i64, CAST(u64 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -854,7 +854,7 @@ evaluation (internal): ast : i64 = u64 raw expr : eq(i64::Int64, u64::UInt64) -checked expr : eq(i64, to_int64(u64)) +checked expr : eq(i64, CAST(u64 AS Int64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -876,7 +876,7 @@ evaluation (internal): ast : i64 > n_i32 raw expr : gt(i64::Int64, n_i32::Int32 NULL) -checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -898,7 +898,7 @@ evaluation (internal): ast : i64 = n_i32 raw expr : eq(i64::Int64, n_i32::Int32 NULL) -checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -920,7 +920,7 @@ evaluation (internal): ast : i64 > n_i64 raw expr : gt(i64::Int64, n_i64::Int64 NULL) -checked expr : gt(CAST(i64 AS Int64 NULL), n_i64) +checked expr : gt(CAST(i64 AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+---------+------------+--------------+ @@ -942,7 +942,7 @@ evaluation (internal): ast : i64 = n_i64 raw expr : eq(i64::Int64, n_i64::Int64 NULL) -checked expr : eq(CAST(i64 AS Int64 NULL), n_i64) +checked expr : eq(CAST(i64 AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+---------+------------+--------------+ @@ -964,7 +964,7 @@ evaluation (internal): ast : i64 > n_u32 raw expr : gt(i64::Int64, n_u32::UInt32 NULL) -checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -986,7 +986,7 @@ evaluation (internal): ast : i64 = n_u32 raw expr : eq(i64::Int64, n_u32::UInt32 NULL) -checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) +checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_u32 AS Int64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -1008,7 +1008,7 @@ evaluation (internal): ast : i64 > n_u64 raw expr : gt(i64::Int64, n_u64::UInt64 NULL) -checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +checked expr : gt(CAST(i64 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -1030,7 +1030,7 @@ evaluation (internal): ast : i64 = n_u64 raw expr : eq(i64::Int64, n_u64::UInt64 NULL) -checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) +checked expr : eq(CAST(i64 AS Int64 NULL), CAST(n_u64 AS Int64 NULL)) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -1052,7 +1052,7 @@ evaluation (internal): ast : i64 > f32 raw expr : gt(i64::Int64, f32::Float32) -checked expr : gt(to_float64(i64), to_float64(f32)) +checked expr : gt(CAST(i64 AS Float64), CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1074,7 +1074,7 @@ evaluation (internal): ast : i64 = f32 raw expr : eq(i64::Int64, f32::Float32) -checked expr : eq(to_float64(i64), to_float64(f32)) +checked expr : eq(CAST(i64 AS Float64), CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1096,7 +1096,7 @@ evaluation (internal): ast : i64 > n_f32 raw expr : gt(i64::Int64, n_f32::Float32 NULL) -checked expr : gt(CAST(i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -1118,7 +1118,7 @@ evaluation (internal): ast : i64 = n_f32 raw expr : eq(i64::Int64, n_f32::Float32 NULL) -checked expr : eq(CAST(i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(i64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -1140,7 +1140,7 @@ evaluation (internal): ast : i64 > f64 raw expr : gt(i64::Int64, f64::Float64) -checked expr : gt(to_float64(i64), f64) +checked expr : gt(CAST(i64 AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1162,7 +1162,7 @@ evaluation (internal): ast : i64 = f64 raw expr : eq(i64::Int64, f64::Float64) -checked expr : eq(to_float64(i64), f64) +checked expr : eq(CAST(i64 AS Float64), f64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1184,7 +1184,7 @@ evaluation (internal): ast : i64 > n_f64 raw expr : gt(i64::Int64, n_f64::Float64 NULL) -checked expr : gt(CAST(i64 AS Float64 NULL), n_f64) +checked expr : gt(CAST(i64 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -1206,7 +1206,7 @@ evaluation (internal): ast : i64 = n_f64 raw expr : eq(i64::Int64, n_f64::Float64 NULL) -checked expr : eq(CAST(i64 AS Float64 NULL), n_f64) +checked expr : eq(CAST(i64 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -1228,7 +1228,7 @@ evaluation (internal): ast : i64 > d128 raw expr : gt(i64::Int64, d128::Decimal(38, 0)) -checked expr : gt(to_decimal(19, 0)(i64), d128) +checked expr : gt(CAST(i64 AS Decimal(19, 0)), d128) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1250,7 +1250,7 @@ evaluation (internal): ast : i64 = d128 raw expr : eq(i64::Int64, d128::Decimal(38, 0)) -checked expr : eq(to_decimal(19, 0)(i64), d128) +checked expr : eq(CAST(i64 AS Decimal(19, 0)), d128) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1272,7 +1272,7 @@ evaluation (internal): ast : i64 > n_d128 raw expr : gt(i64::Int64, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(i64 AS Decimal(19, 0) NULL), n_d128) +checked expr : gt(CAST(i64 AS Decimal(19, 0) NULL), n_d128) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -1294,7 +1294,7 @@ evaluation (internal): ast : i64 = n_d128 raw expr : eq(i64::Int64, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(i64 AS Decimal(19, 0) NULL), n_d128) +checked expr : eq(CAST(i64 AS Decimal(19, 0) NULL), n_d128) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -1316,7 +1316,7 @@ evaluation (internal): ast : i64 > d256 raw expr : gt(i64::Int64, d256::Decimal(76, 0)) -checked expr : gt(to_decimal(19, 0)(i64), d256) +checked expr : gt(CAST(i64 AS Decimal(19, 0)), d256) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1338,7 +1338,7 @@ evaluation (internal): ast : i64 = d256 raw expr : eq(i64::Int64, d256::Decimal(76, 0)) -checked expr : eq(to_decimal(19, 0)(i64), d256) +checked expr : eq(CAST(i64 AS Decimal(19, 0)), d256) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1360,7 +1360,7 @@ evaluation (internal): ast : i64 > n_d256 raw expr : gt(i64::Int64, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(i64 AS Decimal(19, 0) NULL), n_d256) +checked expr : gt(CAST(i64 AS Decimal(19, 0) NULL), n_d256) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -1382,7 +1382,7 @@ evaluation (internal): ast : i64 = n_d256 raw expr : eq(i64::Int64, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(i64 AS Decimal(19, 0) NULL), n_d256) +checked expr : eq(CAST(i64 AS Decimal(19, 0) NULL), n_d256) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -1404,7 +1404,7 @@ evaluation (internal): ast : i32 > 1 raw expr : gt(i32::Int32, 1) -checked expr : gt(i32, to_int32(1_u8)) +checked expr : gt(i32, CAST(1_u8 AS Int32)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1446,7 +1446,7 @@ evaluation (internal): ast : 1 > i32 raw expr : gt(1, i32::Int32) -checked expr : gt(to_int32(1_u8), i32) +checked expr : gt(CAST(1_u8 AS Int32), i32) optimized expr : true evaluation: +--------+---------+---------+ @@ -1488,7 +1488,7 @@ evaluation (internal): ast : i32 > 1.0 raw expr : gt(i32::Int32, 1.0) -checked expr : gt(to_decimal(10, 0)(i32), 1.0_d128(2,1)) +checked expr : gt(CAST(i32 AS Decimal(10, 0)), 1.0_d128(2,1)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1509,7 +1509,7 @@ evaluation (internal): ast : i32 = 1.0 raw expr : eq(i32::Int32, 1.0) -checked expr : eq(to_decimal(10, 0)(i32), 1.0_d128(2,1)) +checked expr : eq(CAST(i32 AS Decimal(10, 0)), 1.0_d128(2,1)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1530,7 +1530,7 @@ evaluation (internal): ast : 1.0 > i32 raw expr : gt(1.0, i32::Int32) -checked expr : gt(1.0_d128(2,1), to_decimal(10, 0)(i32)) +checked expr : gt(1.0_d128(2,1), CAST(i32 AS Decimal(10, 0))) optimized expr : true evaluation: +--------+---------+---------+ @@ -1551,7 +1551,7 @@ evaluation (internal): ast : 1.0 = i32 raw expr : eq(1.0, i32::Int32) -checked expr : eq(1.0_d128(2,1), to_decimal(10, 0)(i32)) +checked expr : eq(1.0_d128(2,1), CAST(i32 AS Decimal(10, 0))) optimized expr : false evaluation: +--------+---------+---------+ @@ -1586,7 +1586,7 @@ candidate functions: ast : i32 = '1' raw expr : eq(i32::Int32, '1') -checked expr : eq(to_int64(i32), to_int64("1")) +checked expr : eq(CAST(i32 AS Int64), CAST("1" AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1621,7 +1621,7 @@ candidate functions: ast : '1' = i32 raw expr : eq('1', i32::Int32) -checked expr : eq(to_int64("1"), to_int64(i32)) +checked expr : eq(CAST("1" AS Int64), CAST(i32 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1642,7 +1642,7 @@ evaluation (internal): ast : i32 > 1::uint64 raw expr : gt(i32::Int32, CAST(1 AS UInt64)) -checked expr : gt(to_int64(i32), to_int64(to_uint64(1_u8))) +checked expr : gt(CAST(i32 AS Int64), CAST(CAST(1_u8 AS UInt64) AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1663,7 +1663,7 @@ evaluation (internal): ast : i32 = 1::uint64 raw expr : eq(i32::Int32, CAST(1 AS UInt64)) -checked expr : eq(to_int64(i32), to_int64(to_uint64(1_u8))) +checked expr : eq(CAST(i32 AS Int64), CAST(CAST(1_u8 AS UInt64) AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1684,7 +1684,7 @@ evaluation (internal): ast : 1::uint64 > i32 raw expr : gt(CAST(1 AS UInt64), i32::Int32) -checked expr : gt(to_int64(to_uint64(1_u8)), to_int64(i32)) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Int64), CAST(i32 AS Int64)) optimized expr : true evaluation: +--------+---------+---------+ @@ -1705,7 +1705,7 @@ evaluation (internal): ast : 1::uint64 = i32 raw expr : eq(CAST(1 AS UInt64), i32::Int32) -checked expr : eq(to_int64(to_uint64(1_u8)), to_int64(i32)) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Int64), CAST(i32 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1726,7 +1726,7 @@ evaluation (internal): ast : i64 > 1 raw expr : gt(i64::Int64, 1) -checked expr : gt(i64, to_int64(1_u8)) +checked expr : gt(i64, CAST(1_u8 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1768,7 +1768,7 @@ evaluation (internal): ast : 1 > i64 raw expr : gt(1, i64::Int64) -checked expr : gt(to_int64(1_u8), i64) +checked expr : gt(CAST(1_u8 AS Int64), i64) optimized expr : true evaluation: +--------+---------+---------+ @@ -1810,7 +1810,7 @@ evaluation (internal): ast : i64 > 1.0 raw expr : gt(i64::Int64, 1.0) -checked expr : gt(to_decimal(19, 0)(i64), 1.0_d128(2,1)) +checked expr : gt(CAST(i64 AS Decimal(19, 0)), 1.0_d128(2,1)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1831,7 +1831,7 @@ evaluation (internal): ast : i64 = 1.0 raw expr : eq(i64::Int64, 1.0) -checked expr : eq(to_decimal(19, 0)(i64), 1.0_d128(2,1)) +checked expr : eq(CAST(i64 AS Decimal(19, 0)), 1.0_d128(2,1)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1852,7 +1852,7 @@ evaluation (internal): ast : 1.0 > i64 raw expr : gt(1.0, i64::Int64) -checked expr : gt(1.0_d128(2,1), to_decimal(19, 0)(i64)) +checked expr : gt(1.0_d128(2,1), CAST(i64 AS Decimal(19, 0))) optimized expr : true evaluation: +--------+---------+---------+ @@ -1873,7 +1873,7 @@ evaluation (internal): ast : 1.0 = i64 raw expr : eq(1.0, i64::Int64) -checked expr : eq(1.0_d128(2,1), to_decimal(19, 0)(i64)) +checked expr : eq(1.0_d128(2,1), CAST(i64 AS Decimal(19, 0))) optimized expr : false evaluation: +--------+---------+---------+ @@ -1908,7 +1908,7 @@ candidate functions: ast : i64 = '1' raw expr : eq(i64::Int64, '1') -checked expr : eq(i64, to_int64("1")) +checked expr : eq(i64, CAST("1" AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1943,7 +1943,7 @@ candidate functions: ast : '1' = i64 raw expr : eq('1', i64::Int64) -checked expr : eq(to_int64("1"), i64) +checked expr : eq(CAST("1" AS Int64), i64) optimized expr : false evaluation: +--------+---------+---------+ @@ -1964,7 +1964,7 @@ evaluation (internal): ast : i64 > 1::uint64 raw expr : gt(i64::Int64, CAST(1 AS UInt64)) -checked expr : gt(i64, to_int64(to_uint64(1_u8))) +checked expr : gt(i64, CAST(CAST(1_u8 AS UInt64) AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1985,7 +1985,7 @@ evaluation (internal): ast : i64 = 1::uint64 raw expr : eq(i64::Int64, CAST(1 AS UInt64)) -checked expr : eq(i64, to_int64(to_uint64(1_u8))) +checked expr : eq(i64, CAST(CAST(1_u8 AS UInt64) AS Int64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -2006,7 +2006,7 @@ evaluation (internal): ast : 1::uint64 > i64 raw expr : gt(CAST(1 AS UInt64), i64::Int64) -checked expr : gt(to_int64(to_uint64(1_u8)), i64) +checked expr : gt(CAST(CAST(1_u8 AS UInt64) AS Int64), i64) optimized expr : true evaluation: +--------+---------+---------+ @@ -2027,7 +2027,7 @@ evaluation (internal): ast : 1::uint64 = i64 raw expr : eq(CAST(1 AS UInt64), i64::Int64) -checked expr : eq(to_int64(to_uint64(1_u8)), i64) +checked expr : eq(CAST(CAST(1_u8 AS UInt64) AS Int64), i64) optimized expr : false evaluation: +--------+---------+---------+ diff --git a/src/query/functions/tests/it/type_check/testdata/unsigned.txt b/src/query/functions/tests/it/type_check/testdata/unsigned.txt index bc1077c16ccca..467656176cde8 100644 --- a/src/query/functions/tests/it/type_check/testdata/unsigned.txt +++ b/src/query/functions/tests/it/type_check/testdata/unsigned.txt @@ -1,6 +1,6 @@ ast : u32 > i32 raw expr : gt(u32::UInt32, i32::Int32) -checked expr : gt(to_int64(u32), to_int64(i32)) +checked expr : gt(CAST(u32 AS Int64), CAST(i32 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -22,7 +22,7 @@ evaluation (internal): ast : u32 = i32 raw expr : eq(u32::UInt32, i32::Int32) -checked expr : eq(to_int64(u32), to_int64(i32)) +checked expr : eq(CAST(u32 AS Int64), CAST(i32 AS Int64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -44,7 +44,7 @@ evaluation (internal): ast : u32 > i64 raw expr : gt(u32::UInt32, i64::Int64) -checked expr : gt(to_int64(u32), i64) +checked expr : gt(CAST(u32 AS Int64), i64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -66,7 +66,7 @@ evaluation (internal): ast : u32 = i64 raw expr : eq(u32::UInt32, i64::Int64) -checked expr : eq(to_int64(u32), i64) +checked expr : eq(CAST(u32 AS Int64), i64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -130,7 +130,7 @@ evaluation (internal): ast : u32 > u64 raw expr : gt(u32::UInt32, u64::UInt64) -checked expr : gt(to_uint64(u32), u64) +checked expr : gt(CAST(u32 AS UInt64), u64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -152,7 +152,7 @@ evaluation (internal): ast : u32 = u64 raw expr : eq(u32::UInt32, u64::UInt64) -checked expr : eq(to_uint64(u32), u64) +checked expr : eq(CAST(u32 AS UInt64), u64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -174,7 +174,7 @@ evaluation (internal): ast : u32 > n_i32 raw expr : gt(u32::UInt32, n_i32::Int32 NULL) -checked expr : gt(CAST(u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : gt(CAST(u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -196,7 +196,7 @@ evaluation (internal): ast : u32 = n_i32 raw expr : eq(u32::UInt32, n_i32::Int32 NULL) -checked expr : eq(CAST(u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : eq(CAST(u32 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -218,7 +218,7 @@ evaluation (internal): ast : u32 > n_i64 raw expr : gt(u32::UInt32, n_i64::Int64 NULL) -checked expr : gt(CAST(u32 AS Int64 NULL), n_i64) +checked expr : gt(CAST(u32 AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+---------+------------+--------------+ @@ -240,7 +240,7 @@ evaluation (internal): ast : u32 = n_i64 raw expr : eq(u32::UInt32, n_i64::Int64 NULL) -checked expr : eq(CAST(u32 AS Int64 NULL), n_i64) +checked expr : eq(CAST(u32 AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+---------+------------+--------------+ @@ -262,7 +262,7 @@ evaluation (internal): ast : u32 > n_u32 raw expr : gt(u32::UInt32, n_u32::UInt32 NULL) -checked expr : gt(CAST(u32 AS UInt32 NULL), n_u32) +checked expr : gt(CAST(u32 AS UInt32 NULL), n_u32) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -284,7 +284,7 @@ evaluation (internal): ast : u32 = n_u32 raw expr : eq(u32::UInt32, n_u32::UInt32 NULL) -checked expr : eq(CAST(u32 AS UInt32 NULL), n_u32) +checked expr : eq(CAST(u32 AS UInt32 NULL), n_u32) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -306,7 +306,7 @@ evaluation (internal): ast : u32 > n_u64 raw expr : gt(u32::UInt32, n_u64::UInt64 NULL) -checked expr : gt(CAST(u32 AS UInt64 NULL), n_u64) +checked expr : gt(CAST(u32 AS UInt64 NULL), n_u64) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -328,7 +328,7 @@ evaluation (internal): ast : u32 = n_u64 raw expr : eq(u32::UInt32, n_u64::UInt64 NULL) -checked expr : eq(CAST(u32 AS UInt64 NULL), n_u64) +checked expr : eq(CAST(u32 AS UInt64 NULL), n_u64) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -350,7 +350,7 @@ evaluation (internal): ast : u32 > f32 raw expr : gt(u32::UInt32, f32::Float32) -checked expr : gt(to_float64(u32), to_float64(f32)) +checked expr : gt(CAST(u32 AS Float64), CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -372,7 +372,7 @@ evaluation (internal): ast : u32 = f32 raw expr : eq(u32::UInt32, f32::Float32) -checked expr : eq(to_float64(u32), to_float64(f32)) +checked expr : eq(CAST(u32 AS Float64), CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -394,7 +394,7 @@ evaluation (internal): ast : u32 > n_f32 raw expr : gt(u32::UInt32, n_f32::Float32 NULL) -checked expr : gt(CAST(u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -416,7 +416,7 @@ evaluation (internal): ast : u32 = n_f32 raw expr : eq(u32::UInt32, n_f32::Float32 NULL) -checked expr : eq(CAST(u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(u32 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -438,7 +438,7 @@ evaluation (internal): ast : u32 > f64 raw expr : gt(u32::UInt32, f64::Float64) -checked expr : gt(to_float64(u32), f64) +checked expr : gt(CAST(u32 AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -460,7 +460,7 @@ evaluation (internal): ast : u32 = f64 raw expr : eq(u32::UInt32, f64::Float64) -checked expr : eq(to_float64(u32), f64) +checked expr : eq(CAST(u32 AS Float64), f64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -482,7 +482,7 @@ evaluation (internal): ast : u32 > n_f64 raw expr : gt(u32::UInt32, n_f64::Float64 NULL) -checked expr : gt(CAST(u32 AS Float64 NULL), n_f64) +checked expr : gt(CAST(u32 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -504,7 +504,7 @@ evaluation (internal): ast : u32 = n_f64 raw expr : eq(u32::UInt32, n_f64::Float64 NULL) -checked expr : eq(CAST(u32 AS Float64 NULL), n_f64) +checked expr : eq(CAST(u32 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -526,7 +526,7 @@ evaluation (internal): ast : u32 > d128 raw expr : gt(u32::UInt32, d128::Decimal(38, 0)) -checked expr : gt(to_decimal(10, 0)(u32), d128) +checked expr : gt(CAST(u32 AS Decimal(10, 0)), d128) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -548,7 +548,7 @@ evaluation (internal): ast : u32 = d128 raw expr : eq(u32::UInt32, d128::Decimal(38, 0)) -checked expr : eq(to_decimal(10, 0)(u32), d128) +checked expr : eq(CAST(u32 AS Decimal(10, 0)), d128) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -570,7 +570,7 @@ evaluation (internal): ast : u32 > n_d128 raw expr : gt(u32::UInt32, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(u32 AS Decimal(10, 0) NULL), n_d128) +checked expr : gt(CAST(u32 AS Decimal(10, 0) NULL), n_d128) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -592,7 +592,7 @@ evaluation (internal): ast : u32 = n_d128 raw expr : eq(u32::UInt32, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(u32 AS Decimal(10, 0) NULL), n_d128) +checked expr : eq(CAST(u32 AS Decimal(10, 0) NULL), n_d128) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -614,7 +614,7 @@ evaluation (internal): ast : u32 > d256 raw expr : gt(u32::UInt32, d256::Decimal(76, 0)) -checked expr : gt(to_decimal(10, 0)(u32), d256) +checked expr : gt(CAST(u32 AS Decimal(10, 0)), d256) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -636,7 +636,7 @@ evaluation (internal): ast : u32 = d256 raw expr : eq(u32::UInt32, d256::Decimal(76, 0)) -checked expr : eq(to_decimal(10, 0)(u32), d256) +checked expr : eq(CAST(u32 AS Decimal(10, 0)), d256) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -658,7 +658,7 @@ evaluation (internal): ast : u32 > n_d256 raw expr : gt(u32::UInt32, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(u32 AS Decimal(10, 0) NULL), n_d256) +checked expr : gt(CAST(u32 AS Decimal(10, 0) NULL), n_d256) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -680,7 +680,7 @@ evaluation (internal): ast : u32 = n_d256 raw expr : eq(u32::UInt32, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(u32 AS Decimal(10, 0) NULL), n_d256) +checked expr : eq(CAST(u32 AS Decimal(10, 0) NULL), n_d256) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -702,7 +702,7 @@ evaluation (internal): ast : u64 > i32 raw expr : gt(u64::UInt64, i32::Int32) -checked expr : gt(to_int64(u64), to_int64(i32)) +checked expr : gt(CAST(u64 AS Int64), CAST(i32 AS Int64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -724,7 +724,7 @@ evaluation (internal): ast : u64 = i32 raw expr : eq(u64::UInt64, i32::Int32) -checked expr : eq(to_int64(u64), to_int64(i32)) +checked expr : eq(CAST(u64 AS Int64), CAST(i32 AS Int64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -746,7 +746,7 @@ evaluation (internal): ast : u64 > i64 raw expr : gt(u64::UInt64, i64::Int64) -checked expr : gt(to_int64(u64), i64) +checked expr : gt(CAST(u64 AS Int64), i64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -768,7 +768,7 @@ evaluation (internal): ast : u64 = i64 raw expr : eq(u64::UInt64, i64::Int64) -checked expr : eq(to_int64(u64), i64) +checked expr : eq(CAST(u64 AS Int64), i64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -790,7 +790,7 @@ evaluation (internal): ast : u64 > u32 raw expr : gt(u64::UInt64, u32::UInt32) -checked expr : gt(u64, to_uint64(u32)) +checked expr : gt(u64, CAST(u32 AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -812,7 +812,7 @@ evaluation (internal): ast : u64 = u32 raw expr : eq(u64::UInt64, u32::UInt32) -checked expr : eq(u64, to_uint64(u32)) +checked expr : eq(u64, CAST(u32 AS UInt64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -876,7 +876,7 @@ evaluation (internal): ast : u64 > n_i32 raw expr : gt(u64::UInt64, n_i32::Int32 NULL) -checked expr : gt(CAST(u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : gt(CAST(u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -898,7 +898,7 @@ evaluation (internal): ast : u64 = n_i32 raw expr : eq(u64::UInt64, n_i32::Int32 NULL) -checked expr : eq(CAST(u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) +checked expr : eq(CAST(u64 AS Int64 NULL), CAST(n_i32 AS Int64 NULL)) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -920,7 +920,7 @@ evaluation (internal): ast : u64 > n_i64 raw expr : gt(u64::UInt64, n_i64::Int64 NULL) -checked expr : gt(CAST(u64 AS Int64 NULL), n_i64) +checked expr : gt(CAST(u64 AS Int64 NULL), n_i64) optimized expr : false evaluation: +--------+------------+---------+--------------+ @@ -942,7 +942,7 @@ evaluation (internal): ast : u64 = n_i64 raw expr : eq(u64::UInt64, n_i64::Int64 NULL) -checked expr : eq(CAST(u64 AS Int64 NULL), n_i64) +checked expr : eq(CAST(u64 AS Int64 NULL), n_i64) optimized expr : true evaluation: +--------+------------+---------+--------------+ @@ -964,7 +964,7 @@ evaluation (internal): ast : u64 > n_u32 raw expr : gt(u64::UInt64, n_u32::UInt32 NULL) -checked expr : gt(CAST(u64 AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +checked expr : gt(CAST(u64 AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) optimized expr : false evaluation: +--------+-------------+---------+--------------+ @@ -986,7 +986,7 @@ evaluation (internal): ast : u64 = n_u32 raw expr : eq(u64::UInt64, n_u32::UInt32 NULL) -checked expr : eq(CAST(u64 AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) +checked expr : eq(CAST(u64 AS UInt64 NULL), CAST(n_u32 AS UInt64 NULL)) optimized expr : true evaluation: +--------+-------------+---------+--------------+ @@ -1008,7 +1008,7 @@ evaluation (internal): ast : u64 > n_u64 raw expr : gt(u64::UInt64, n_u64::UInt64 NULL) -checked expr : gt(CAST(u64 AS UInt64 NULL), n_u64) +checked expr : gt(CAST(u64 AS UInt64 NULL), n_u64) optimized expr : false evaluation: +--------+---------+-------------+--------------+ @@ -1030,7 +1030,7 @@ evaluation (internal): ast : u64 = n_u64 raw expr : eq(u64::UInt64, n_u64::UInt64 NULL) -checked expr : eq(CAST(u64 AS UInt64 NULL), n_u64) +checked expr : eq(CAST(u64 AS UInt64 NULL), n_u64) optimized expr : true evaluation: +--------+---------+-------------+--------------+ @@ -1052,7 +1052,7 @@ evaluation (internal): ast : u64 > f32 raw expr : gt(u64::UInt64, f32::Float32) -checked expr : gt(to_float64(u64), to_float64(f32)) +checked expr : gt(CAST(u64 AS Float64), CAST(f32 AS Float64)) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1074,7 +1074,7 @@ evaluation (internal): ast : u64 = f32 raw expr : eq(u64::UInt64, f32::Float32) -checked expr : eq(to_float64(u64), to_float64(f32)) +checked expr : eq(CAST(u64 AS Float64), CAST(f32 AS Float64)) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1096,7 +1096,7 @@ evaluation (internal): ast : u64 > n_f32 raw expr : gt(u64::UInt64, n_f32::Float32 NULL) -checked expr : gt(CAST(u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : gt(CAST(u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -1118,7 +1118,7 @@ evaluation (internal): ast : u64 = n_f32 raw expr : eq(u64::UInt64, n_f32::Float32 NULL) -checked expr : eq(CAST(u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) +checked expr : eq(CAST(u64 AS Float64 NULL), CAST(n_f32 AS Float64 NULL)) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -1140,7 +1140,7 @@ evaluation (internal): ast : u64 > f64 raw expr : gt(u64::UInt64, f64::Float64) -checked expr : gt(to_float64(u64), f64) +checked expr : gt(CAST(u64 AS Float64), f64) optimized expr : false evaluation: +--------+---------+---------+---------+ @@ -1162,7 +1162,7 @@ evaluation (internal): ast : u64 = f64 raw expr : eq(u64::UInt64, f64::Float64) -checked expr : eq(to_float64(u64), f64) +checked expr : eq(CAST(u64 AS Float64), f64) optimized expr : true evaluation: +--------+---------+---------+---------+ @@ -1184,7 +1184,7 @@ evaluation (internal): ast : u64 > n_f64 raw expr : gt(u64::UInt64, n_f64::Float64 NULL) -checked expr : gt(CAST(u64 AS Float64 NULL), n_f64) +checked expr : gt(CAST(u64 AS Float64 NULL), n_f64) optimized expr : false evaluation: +--------+---------+--------------+--------------+ @@ -1206,7 +1206,7 @@ evaluation (internal): ast : u64 = n_f64 raw expr : eq(u64::UInt64, n_f64::Float64 NULL) -checked expr : eq(CAST(u64 AS Float64 NULL), n_f64) +checked expr : eq(CAST(u64 AS Float64 NULL), n_f64) optimized expr : true evaluation: +--------+---------+--------------+--------------+ @@ -1228,7 +1228,7 @@ evaluation (internal): ast : u64 > d128 raw expr : gt(u64::UInt64, d128::Decimal(38, 0)) -checked expr : gt(to_decimal(20, 0)(u64), d128) +checked expr : gt(CAST(u64 AS Decimal(20, 0)), d128) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1250,7 +1250,7 @@ evaluation (internal): ast : u64 = d128 raw expr : eq(u64::UInt64, d128::Decimal(38, 0)) -checked expr : eq(to_decimal(20, 0)(u64), d128) +checked expr : eq(CAST(u64 AS Decimal(20, 0)), d128) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1272,7 +1272,7 @@ evaluation (internal): ast : u64 > n_d128 raw expr : gt(u64::UInt64, n_d128::Decimal(38, 0) NULL) -checked expr : gt(CAST(u64 AS Decimal(20, 0) NULL), n_d128) +checked expr : gt(CAST(u64 AS Decimal(20, 0) NULL), n_d128) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -1294,7 +1294,7 @@ evaluation (internal): ast : u64 = n_d128 raw expr : eq(u64::UInt64, n_d128::Decimal(38, 0) NULL) -checked expr : eq(CAST(u64 AS Decimal(20, 0) NULL), n_d128) +checked expr : eq(CAST(u64 AS Decimal(20, 0) NULL), n_d128) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -1316,7 +1316,7 @@ evaluation (internal): ast : u64 > d256 raw expr : gt(u64::UInt64, d256::Decimal(76, 0)) -checked expr : gt(to_decimal(20, 0)(u64), d256) +checked expr : gt(CAST(u64 AS Decimal(20, 0)), d256) optimized expr : false evaluation: +--------+---------+----------------+---------+ @@ -1338,7 +1338,7 @@ evaluation (internal): ast : u64 = d256 raw expr : eq(u64::UInt64, d256::Decimal(76, 0)) -checked expr : eq(to_decimal(20, 0)(u64), d256) +checked expr : eq(CAST(u64 AS Decimal(20, 0)), d256) optimized expr : true evaluation: +--------+---------+----------------+---------+ @@ -1360,7 +1360,7 @@ evaluation (internal): ast : u64 > n_d256 raw expr : gt(u64::UInt64, n_d256::Decimal(76, 0) NULL) -checked expr : gt(CAST(u64 AS Decimal(20, 0) NULL), n_d256) +checked expr : gt(CAST(u64 AS Decimal(20, 0) NULL), n_d256) optimized expr : false evaluation: +--------+---------+---------------------+--------------+ @@ -1382,7 +1382,7 @@ evaluation (internal): ast : u64 = n_d256 raw expr : eq(u64::UInt64, n_d256::Decimal(76, 0) NULL) -checked expr : eq(CAST(u64 AS Decimal(20, 0) NULL), n_d256) +checked expr : eq(CAST(u64 AS Decimal(20, 0) NULL), n_d256) optimized expr : true evaluation: +--------+---------+---------------------+--------------+ @@ -1404,7 +1404,7 @@ evaluation (internal): ast : u32 > 1 raw expr : gt(u32::UInt32, 1) -checked expr : gt(u32, to_uint32(1_u8)) +checked expr : gt(u32, CAST(1_u8 AS UInt32)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1446,7 +1446,7 @@ evaluation (internal): ast : 1 > u32 raw expr : gt(1, u32::UInt32) -checked expr : gt(to_uint32(1_u8), u32) +checked expr : gt(CAST(1_u8 AS UInt32), u32) optimized expr : true evaluation: +--------+---------+---------+ @@ -1488,7 +1488,7 @@ evaluation (internal): ast : u32 > 1.0 raw expr : gt(u32::UInt32, 1.0) -checked expr : gt(to_decimal(10, 0)(u32), 1.0_d128(2,1)) +checked expr : gt(CAST(u32 AS Decimal(10, 0)), 1.0_d128(2,1)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1509,7 +1509,7 @@ evaluation (internal): ast : u32 = 1.0 raw expr : eq(u32::UInt32, 1.0) -checked expr : eq(to_decimal(10, 0)(u32), 1.0_d128(2,1)) +checked expr : eq(CAST(u32 AS Decimal(10, 0)), 1.0_d128(2,1)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1530,7 +1530,7 @@ evaluation (internal): ast : 1.0 > u32 raw expr : gt(1.0, u32::UInt32) -checked expr : gt(1.0_d128(2,1), to_decimal(10, 0)(u32)) +checked expr : gt(1.0_d128(2,1), CAST(u32 AS Decimal(10, 0))) optimized expr : true evaluation: +--------+---------+---------+ @@ -1551,7 +1551,7 @@ evaluation (internal): ast : 1.0 = u32 raw expr : eq(1.0, u32::UInt32) -checked expr : eq(1.0_d128(2,1), to_decimal(10, 0)(u32)) +checked expr : eq(1.0_d128(2,1), CAST(u32 AS Decimal(10, 0))) optimized expr : false evaluation: +--------+---------+---------+ @@ -1586,7 +1586,7 @@ candidate functions: ast : u32 = '1' raw expr : eq(u32::UInt32, '1') -checked expr : eq(to_uint64(u32), to_uint64("1")) +checked expr : eq(CAST(u32 AS UInt64), CAST("1" AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1621,7 +1621,7 @@ candidate functions: ast : '1' = u32 raw expr : eq('1', u32::UInt32) -checked expr : eq(to_uint64("1"), to_uint64(u32)) +checked expr : eq(CAST("1" AS UInt64), CAST(u32 AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1642,7 +1642,7 @@ evaluation (internal): ast : u32 > 1::uint64 raw expr : gt(u32::UInt32, CAST(1 AS UInt64)) -checked expr : gt(to_uint64(u32), to_uint64(1_u8)) +checked expr : gt(CAST(u32 AS UInt64), CAST(1_u8 AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1663,7 +1663,7 @@ evaluation (internal): ast : u32 = 1::uint64 raw expr : eq(u32::UInt32, CAST(1 AS UInt64)) -checked expr : eq(to_uint64(u32), to_uint64(1_u8)) +checked expr : eq(CAST(u32 AS UInt64), CAST(1_u8 AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1684,7 +1684,7 @@ evaluation (internal): ast : 1::uint64 > u32 raw expr : gt(CAST(1 AS UInt64), u32::UInt32) -checked expr : gt(to_uint64(1_u8), to_uint64(u32)) +checked expr : gt(CAST(1_u8 AS UInt64), CAST(u32 AS UInt64)) optimized expr : true evaluation: +--------+---------+---------+ @@ -1705,7 +1705,7 @@ evaluation (internal): ast : 1::uint64 = u32 raw expr : eq(CAST(1 AS UInt64), u32::UInt32) -checked expr : eq(to_uint64(1_u8), to_uint64(u32)) +checked expr : eq(CAST(1_u8 AS UInt64), CAST(u32 AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1726,7 +1726,7 @@ evaluation (internal): ast : u64 > 1 raw expr : gt(u64::UInt64, 1) -checked expr : gt(u64, to_uint64(1_u8)) +checked expr : gt(u64, CAST(1_u8 AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1768,7 +1768,7 @@ evaluation (internal): ast : 1 > u64 raw expr : gt(1, u64::UInt64) -checked expr : gt(to_uint64(1_u8), u64) +checked expr : gt(CAST(1_u8 AS UInt64), u64) optimized expr : true evaluation: +--------+---------+---------+ @@ -1810,7 +1810,7 @@ evaluation (internal): ast : u64 > 1.0 raw expr : gt(u64::UInt64, 1.0) -checked expr : gt(to_decimal(20, 0)(u64), 1.0_d128(2,1)) +checked expr : gt(CAST(u64 AS Decimal(20, 0)), 1.0_d128(2,1)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1831,7 +1831,7 @@ evaluation (internal): ast : u64 = 1.0 raw expr : eq(u64::UInt64, 1.0) -checked expr : eq(to_decimal(20, 0)(u64), 1.0_d128(2,1)) +checked expr : eq(CAST(u64 AS Decimal(20, 0)), 1.0_d128(2,1)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1852,7 +1852,7 @@ evaluation (internal): ast : 1.0 > u64 raw expr : gt(1.0, u64::UInt64) -checked expr : gt(1.0_d128(2,1), to_decimal(20, 0)(u64)) +checked expr : gt(1.0_d128(2,1), CAST(u64 AS Decimal(20, 0))) optimized expr : true evaluation: +--------+---------+---------+ @@ -1873,7 +1873,7 @@ evaluation (internal): ast : 1.0 = u64 raw expr : eq(1.0, u64::UInt64) -checked expr : eq(1.0_d128(2,1), to_decimal(20, 0)(u64)) +checked expr : eq(1.0_d128(2,1), CAST(u64 AS Decimal(20, 0))) optimized expr : false evaluation: +--------+---------+---------+ @@ -1908,7 +1908,7 @@ candidate functions: ast : u64 = '1' raw expr : eq(u64::UInt64, '1') -checked expr : eq(u64, to_uint64("1")) +checked expr : eq(u64, CAST("1" AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1943,7 +1943,7 @@ candidate functions: ast : '1' = u64 raw expr : eq('1', u64::UInt64) -checked expr : eq(to_uint64("1"), u64) +checked expr : eq(CAST("1" AS UInt64), u64) optimized expr : false evaluation: +--------+---------+---------+ @@ -1964,7 +1964,7 @@ evaluation (internal): ast : u64 > 1::uint64 raw expr : gt(u64::UInt64, CAST(1 AS UInt64)) -checked expr : gt(u64, to_uint64(1_u8)) +checked expr : gt(u64, CAST(1_u8 AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -1985,7 +1985,7 @@ evaluation (internal): ast : u64 = 1::uint64 raw expr : eq(u64::UInt64, CAST(1 AS UInt64)) -checked expr : eq(u64, to_uint64(1_u8)) +checked expr : eq(u64, CAST(1_u8 AS UInt64)) optimized expr : false evaluation: +--------+---------+---------+ @@ -2006,7 +2006,7 @@ evaluation (internal): ast : 1::uint64 > u64 raw expr : gt(CAST(1 AS UInt64), u64::UInt64) -checked expr : gt(to_uint64(1_u8), u64) +checked expr : gt(CAST(1_u8 AS UInt64), u64) optimized expr : true evaluation: +--------+---------+---------+ @@ -2027,7 +2027,7 @@ evaluation (internal): ast : 1::uint64 = u64 raw expr : eq(CAST(1 AS UInt64), u64::UInt64) -checked expr : eq(to_uint64(1_u8), u64) +checked expr : eq(CAST(1_u8 AS UInt64), u64) optimized expr : false evaluation: +--------+---------+---------+ diff --git a/tests/sqllogictests/suites/mode/standalone/explain/explain.test b/tests/sqllogictests/suites/mode/standalone/explain/explain.test index f0eee39f14f54..33cd676156106 100644 --- a/tests/sqllogictests/suites/mode/standalone/explain/explain.test +++ b/tests/sqllogictests/suites/mode/standalone/explain/explain.test @@ -873,7 +873,7 @@ Sort ├── estimated rows: 0.00 ├── EvalScalar(Build) │ ├── output columns: [numbers.number (#2), register_at (#3)] - │ ├── expressions: [to_yyyymmdd(to_timestamp(to_int64(numbers.number (#2))))] + │ ├── expressions: [to_yyyymmdd(to_timestamp(CAST(numbers.number (#2) AS Int64)))] │ ├── estimated rows: 0.00 │ └── Filter │ ├── output columns: [numbers.number (#2)] @@ -890,7 +890,7 @@ Sort │ └── estimated rows: 10.00 └── EvalScalar(Probe) ├── output columns: [numbers.number (#0), pt (#1)] - ├── expressions: [to_yyyymmdd(to_timestamp(to_int64(numbers.number (#0))))] + ├── expressions: [to_yyyymmdd(to_timestamp(CAST(numbers.number (#0) AS Int64)))] ├── estimated rows: 0.00 └── Filter ├── output columns: [numbers.number (#0)] diff --git a/tests/sqllogictests/suites/mode/standalone/explain/filter.test b/tests/sqllogictests/suites/mode/standalone/explain/filter.test index c5af19a6fa17e..c1ce9f869a943 100644 --- a/tests/sqllogictests/suites/mode/standalone/explain/filter.test +++ b/tests/sqllogictests/suites/mode/standalone/explain/filter.test @@ -90,7 +90,7 @@ explain select * from t2 where d < a; ---- Filter ├── output columns: [t2.d (#0), t2.a (#1)] -├── filters: [t2.d (#0) < to_timestamp(t2.a (#1))] +├── filters: [t2.d (#0) < CAST(t2.a (#1) AS Timestamp)] ├── estimated rows: 40.00 └── TableScan ├── table: default.default.t2 @@ -100,5 +100,5 @@ Filter ├── partitions total: 2 ├── partitions scanned: 0 ├── pruning stats: [segments: ] - ├── push downs: [filters: [t2.d (#0) < to_timestamp(t2.a (#1))], limit: NONE] + ├── push downs: [filters: [t2.d (#0) < CAST(t2.a (#1) AS Timestamp)], limit: NONE] └── estimated rows: 200.00 diff --git a/tests/sqllogictests/suites/mode/standalone/explain/select.test b/tests/sqllogictests/suites/mode/standalone/explain/select.test index 5f59d84c59738..d229a0b9e0125 100644 --- a/tests/sqllogictests/suites/mode/standalone/explain/select.test +++ b/tests/sqllogictests/suites/mode/standalone/explain/select.test @@ -75,7 +75,7 @@ explain select * from numbers(1) where number = pow(1, 1 + 1) ---- Filter ├── output columns: [numbers.number (#0)] -├── filters: [to_float64(numbers.number (#0)) = 1] +├── filters: [CAST(numbers.number (#0) AS Float64) = 1] ├── estimated rows: 0.00 └── TableScan ├── table: default.system.numbers @@ -84,7 +84,7 @@ Filter ├── read size: < 1 KiB ├── partitions total: 1 ├── partitions scanned: 1 - ├── push downs: [filters: [to_float64(numbers.number (#0)) = 1], limit: NONE] + ├── push downs: [filters: [CAST(numbers.number (#0) AS Float64) = 1], limit: NONE] └── estimated rows: 1.00 query T diff --git a/tests/sqllogictests/suites/mode/standalone/explain/subquery.test b/tests/sqllogictests/suites/mode/standalone/explain/subquery.test index aa678d1f945eb..499aaaaa89046 100644 --- a/tests/sqllogictests/suites/mode/standalone/explain/subquery.test +++ b/tests/sqllogictests/suites/mode/standalone/explain/subquery.test @@ -404,7 +404,7 @@ HashJoin │ ├── estimated rows: 0.20 │ ├── Filter(Build) │ │ ├── output columns: [numbers.number (#2)] -│ │ ├── filters: [is_true(try_to_boolean(if(true, TRY_CAST(COUNT(*) (#3) = 1 AS UInt64 NULL), 0)))] +│ │ ├── filters: [is_true(TRY_CAST(if(true, TRY_CAST(COUNT(*) (#3) = 1 AS UInt64 NULL), 0) AS Boolean NULL))] │ │ ├── estimated rows: 0.20 │ │ └── AggregateFinal │ │ ├── output columns: [COUNT(*) (#3), numbers.number (#2)] From fdcab58a9c2316779cc817be654948ec591b4d20 Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 1 Apr 2025 17:21:37 +0800 Subject: [PATCH 14/23] fix Signed-off-by: coldWater --- src/query/expression/src/expression.rs | 1 + src/query/expression/src/utils/display.rs | 2 + .../tests/it/scalars/testdata/array.txt | 2 +- .../tests/it/scalars/testdata/misc.txt | 4 +- .../tests/it/testdata/test_bloom_filter.txt | 93 +++++++++---------- ...0005_alter_table_modify_column_type.result | 4 +- .../20+_others/20_0013_pretty_error.result | 2 +- 7 files changed, 55 insertions(+), 53 deletions(-) diff --git a/src/query/expression/src/expression.rs b/src/query/expression/src/expression.rs index cd5bcc0028918..393662523bdce 100644 --- a/src/query/expression/src/expression.rs +++ b/src/query/expression/src/expression.rs @@ -436,6 +436,7 @@ pub trait ExprVisitor: Sized { } } +#[recursive::recursive] pub fn visit_expr>( expr: &Expr, visitor: &mut V, diff --git a/src/query/expression/src/utils/display.rs b/src/query/expression/src/utils/display.rs index f77885d5e438b..97cd283be1f17 100755 --- a/src/query/expression/src/utils/display.rs +++ b/src/query/expression/src/utils/display.rs @@ -700,7 +700,9 @@ impl ExprVisitor for ExprFormatter<'_, '_> { }; self.write_str(display_name)?; if self.with_id { + self.write_str(" (#")?; id.unique_name(self)?; + self.write_char(')')?; } Ok(None) } diff --git a/src/query/functions/tests/it/scalars/testdata/array.txt b/src/query/functions/tests/it/scalars/testdata/array.txt index 3cb84c09e4466..cb247f9d5caa3 100644 --- a/src/query/functions/tests/it/scalars/testdata/array.txt +++ b/src/query/functions/tests/it/scalars/testdata/array.txt @@ -564,7 +564,7 @@ output : true ast : nullable_col in (null, 9, 10, 12) raw expr : or(or(eq(nullable_col::Int64 NULL, 9), eq(nullable_col::Int64 NULL, 10)), eq(nullable_col::Int64 NULL, 12)) -checked expr : or(or(eq(nullable_col, CAST(9_u8 AS Int64 NULL)), eq(nullable_col, CAST(10_u8 AS Int64 NULL))), eq(nullable_col, CAST(12_u8 AS Int64 NULL))) +checked expr : or(or(eq(nullable_col, CAST(9_i64 AS Int64 NULL)), eq(nullable_col, CAST(10_i64 AS Int64 NULL))), eq(nullable_col, CAST(12_i64 AS Int64 NULL))) optimized expr : or(or(eq(nullable_col, 9_i64), eq(nullable_col, 10_i64)), eq(nullable_col, 12_i64)) evaluation: +--------+-------------------+------------------------+ diff --git a/src/query/functions/tests/it/scalars/testdata/misc.txt b/src/query/functions/tests/it/scalars/testdata/misc.txt index 7c4f7afb9b8f6..62f1fb612cb61 100644 --- a/src/query/functions/tests/it/scalars/testdata/misc.txt +++ b/src/query/functions/tests/it/scalars/testdata/misc.txt @@ -8,7 +8,7 @@ error: ast : const_false AND CAST('1000' AS UINT32) = 1000 raw expr : and(const_false::Boolean, eq(CAST('1000' AS UInt32), 1000)) -checked expr : and(const_false, eq(CAST("1000" AS UInt32), CAST(1000_u16 AS UInt32))) +checked expr : and(const_false, eq(CAST("1000" AS UInt32), 1000_u32)) optimized expr : false evaluation: +--------+-------------+---------+ @@ -29,7 +29,7 @@ evaluation (internal): ast : false AND CAST(str AS UINT32) = 1000 raw expr : and(false, eq(CAST(str::String AS UInt32), 1000)) -checked expr : and(false, eq(CAST(str AS UInt32), CAST(1000_u16 AS UInt32))) +checked expr : and(false, eq(CAST(str AS UInt32), 1000_u32)) optimized expr : false output type : Boolean output domain : {FALSE} diff --git a/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt b/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt index f6863cc44c1b1..d7b328c654461 100644 --- a/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt +++ b/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt @@ -90,9 +90,9 @@ result : MustFalse | 2 | Map(UInt8, String) | Column(ArrayColumn { values: Tuple([UInt8([1, 2, 1, 2, 1, 2, 3]), StringColumn[a, b, a, b, b, c, d]]), offsets: [0, 2, 4, 6, 7] }) | | 3 | Map(String, Variant) | Column(ArrayColumn { values: Tuple([StringColumn[a, b, a, b, b, c, d], BinaryColumn { data: 0x20000000100000036162632000000020000002506420000000100000036162632000000020000002506420000000100000036465662000000040000000200000001000000378797a, offsets: [0, 11, 21, 32, 42, 53, 61, 72] }]), offsets: [0, 2, 4, 6, 7] }) | +-----------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -expr : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 1_u8), CAST("a" AS String NULL))) -fold_expr: is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 1_u8), "a")) -filter : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 1_u8), "a")) +expr : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 1_u8), CAST("a" AS String NULL))) +fold_expr: is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 1_u8), "a")) +filter : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 1_u8), "a")) domains : {"2": Map(Some(Tuple([Number(UInt8(SimpleDomain { min: 0, max: 255 })), String(StringDomain { min: "", max: None })])))} result : Uncertain @@ -105,9 +105,9 @@ result : Uncertain | 2 | Map(UInt8, String) | Column(ArrayColumn { values: Tuple([UInt8([1, 2, 1, 2, 1, 2, 3]), StringColumn[a, b, a, b, b, c, d]]), offsets: [0, 2, 4, 6, 7] }) | | 3 | Map(String, Variant) | Column(ArrayColumn { values: Tuple([StringColumn[a, b, a, b, b, c, d], BinaryColumn { data: 0x20000000100000036162632000000020000002506420000000100000036162632000000020000002506420000000100000036465662000000040000000200000001000000378797a, offsets: [0, 11, 21, 32, 42, 53, 61, 72] }]), offsets: [0, 2, 4, 6, 7] }) | +-----------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -expr : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 2_u8), CAST("b" AS String NULL))) -fold_expr: is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 2_u8), "b")) -filter : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 2_u8), "b")) +expr : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 2_u8), CAST("b" AS String NULL))) +fold_expr: is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 2_u8), "b")) +filter : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 2_u8), "b")) domains : {"2": Map(Some(Tuple([Number(UInt8(SimpleDomain { min: 0, max: 255 })), String(StringDomain { min: "", max: None })])))} result : Uncertain @@ -120,8 +120,8 @@ result : Uncertain | 2 | Map(UInt8, String) | Column(ArrayColumn { values: Tuple([UInt8([1, 2, 1, 2, 1, 2, 3]), StringColumn[a, b, a, b, b, c, d]]), offsets: [0, 2, 4, 6, 7] }) | | 3 | Map(String, Variant) | Column(ArrayColumn { values: Tuple([StringColumn[a, b, a, b, b, c, d], BinaryColumn { data: 0x20000000100000036162632000000020000002506420000000100000036162632000000020000002506420000000100000036465662000000040000000200000001000000378797a, offsets: [0, 11, 21, 32, 42, 53, 61, 72] }]), offsets: [0, 2, 4, 6, 7] }) | +-----------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -expr : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 3_u8), CAST("x" AS String NULL))) -fold_expr: is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 3_u8), "x")) +expr : is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 3_u8), CAST("x" AS String NULL))) +fold_expr: is_true(eq(get(CAST(2 AS Map(UInt8, String NULL)), 3_u8), "x")) filter : is_true(__bloom_column_2_1) domains : {"2": Map(Some(Tuple([Number(UInt8(SimpleDomain { min: 0, max: 255 })), String(StringDomain { min: "", max: None })]))), "__bloom_column_2_1": Nullable(NullableDomain { has_null: false, value: Some(Boolean(BooleanDomain { has_false: true, has_true: false })) })} result : MustFalse @@ -135,9 +135,9 @@ result : MustFalse | 2 | Map(UInt8, String) | Column(ArrayColumn { values: Tuple([UInt8([1, 2, 1, 2, 1, 2, 3]), StringColumn[a, b, a, b, b, c, d]]), offsets: [0, 2, 4, 6, 7] }) | | 3 | Map(String, Variant) | Column(ArrayColumn { values: Tuple([StringColumn[a, b, a, b, b, c, d], BinaryColumn { data: 0x20000000100000036162632000000020000002506420000000100000036162632000000020000002506420000000100000036465662000000040000000200000001000000378797a, offsets: [0, 11, 21, 32, 42, 53, 61, 72] }]), offsets: [0, 2, 4, 6, 7] }) | +-----------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -expr : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "b") AS String NULL), CAST("def" AS String NULL))) -fold_expr: is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "b") AS String NULL), "def")) -filter : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "b") AS String NULL), "def")) +expr : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "b") AS String NULL), CAST("def" AS String NULL))) +fold_expr: is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "b") AS String NULL), "def")) +filter : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "b") AS String NULL), "def")) domains : {"3": Map(Some(Tuple([String(StringDomain { min: "", max: None }), Undefined])))} result : Uncertain @@ -150,8 +150,8 @@ result : Uncertain | 2 | Map(UInt8, String) | Column(ArrayColumn { values: Tuple([UInt8([1, 2, 1, 2, 1, 2, 3]), StringColumn[a, b, a, b, b, c, d]]), offsets: [0, 2, 4, 6, 7] }) | | 3 | Map(String, Variant) | Column(ArrayColumn { values: Tuple([StringColumn[a, b, a, b, b, c, d], BinaryColumn { data: 0x20000000100000036162632000000020000002506420000000100000036162632000000020000002506420000000100000036465662000000040000000200000001000000378797a, offsets: [0, 11, 21, 32, 42, 53, 61, 72] }]), offsets: [0, 2, 4, 6, 7] }) | +-----------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -expr : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "d") AS String NULL), CAST("xxx" AS String NULL))) -fold_expr: is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "d") AS String NULL), "xxx")) +expr : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "d") AS String NULL), CAST("xxx" AS String NULL))) +fold_expr: is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "d") AS String NULL), "xxx")) filter : is_true(__bloom_column_3_1) domains : {"3": Map(Some(Tuple([String(StringDomain { min: "", max: None }), Undefined]))), "__bloom_column_3_1": Nullable(NullableDomain { has_null: false, value: Some(Boolean(BooleanDomain { has_false: true, has_true: false })) })} result : MustFalse @@ -165,9 +165,9 @@ result : MustFalse | 2 | Map(UInt8, String) | Column(ArrayColumn { values: Tuple([UInt8([1, 2, 1, 2, 1, 2, 3]), StringColumn[a, b, a, b, b, c, d]]), offsets: [0, 2, 4, 6, 7] }) | | 3 | Map(String, Variant) | Column(ArrayColumn { values: Tuple([StringColumn[a, b, a, b, b, c, d], BinaryColumn { data: 0x20000000100000036162632000000020000002506420000000100000036162632000000020000002506420000000100000036465662000000040000000200000001000000378797a, offsets: [0, 11, 21, 32, 42, 53, 61, 72] }]), offsets: [0, 2, 4, 6, 7] }) | +-----------+----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -expr : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "c") AS Boolean NULL), CAST(true AS Boolean NULL))) -fold_expr: is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "c") AS Boolean NULL), true)) -filter : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "c") AS Boolean NULL), true)) +expr : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "c") AS Boolean NULL), CAST(true AS Boolean NULL))) +fold_expr: is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "c") AS Boolean NULL), true)) +filter : is_true(eq(TRY_CAST(get(CAST(3 AS Map(String, Variant NULL)), "c") AS Boolean NULL), true)) domains : {"3": Map(Some(Tuple([String(StringDomain { min: "", max: None }), Undefined])))} result : Uncertain @@ -201,7 +201,7 @@ result : Uncertain +-----------+-------+-----------------------+ | 0 | UInt8 | Column(UInt8([1, 2])) | +-----------+-------+-----------------------+ -expr : eq(CAST(x AS String), "5") +expr : eq(CAST(x AS String), "5") filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Number(UInt8(SimpleDomain { min: 1, max: 2 }))} result : MustFalse @@ -212,8 +212,8 @@ result : MustFalse +-----------+------+-------------------------+ | 0 | Int8 | Column(Int8([0, 1, 2])) | +-----------+------+-------------------------+ -expr : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) -filter : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) +expr : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) +filter : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int8(SimpleDomain { min: 0, max: 2 }))} result : Uncertain @@ -223,7 +223,7 @@ result : Uncertain +-----------+------+----------------------+ | 0 | Int8 | Column(Int8([0, 1])) | +-----------+------+----------------------+ -expr : eq(CAST(x AS Decimal(5, 0)), 2.00_d128(3,2)) +expr : eq(CAST(x AS Decimal(5, 0)), 2.00_d128(3,2)) filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Number(Int8(SimpleDomain { min: 0, max: 1 }))} result : MustFalse @@ -234,8 +234,8 @@ result : MustFalse +-----------+-------+--------------------------+ | 0 | Int16 | Column(Int16([0, 1, 2])) | +-----------+-------+--------------------------+ -expr : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) -filter : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) +expr : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) +filter : eq(CAST(x AS Decimal(5, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int16(SimpleDomain { min: 0, max: 2 }))} result : Uncertain @@ -245,8 +245,8 @@ result : Uncertain +-----------+-------+----------------------------+ | 0 | Int16 | Column(Int16([1, 3, 100])) | +-----------+-------+----------------------------+ -expr : eq(CAST(x AS String), "+3") -filter : eq(CAST(x AS String), "+3") +expr : eq(CAST(x AS String), "+3") +filter : eq(CAST(x AS String), "+3") domains : {"x": Number(Int16(SimpleDomain { min: 1, max: 100 }))} result : Uncertain @@ -256,7 +256,7 @@ result : Uncertain +-----------+-------+---------------------------+ | 0 | Int16 | Column(Int16([100, 200])) | +-----------+-------+---------------------------+ -expr : eq(CAST(x AS String), "+3") +expr : eq(CAST(x AS String), "+3") filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Number(Int16(SimpleDomain { min: 100, max: 200 }))} result : MustFalse @@ -267,8 +267,8 @@ result : MustFalse +-----------+------+----------------------+ | 0 | Int8 | Column(Int8([0, 2])) | +-----------+------+----------------------+ -expr : eq(CAST(to_int32(to_int16(x)) AS Decimal(10, 0)), 1.2_d128(2,1)) -filter : eq(CAST(to_int32(to_int16(x)) AS Decimal(10, 0)), 1.2_d128(2,1)) +expr : eq(CAST(to_int32(to_int16(x)) AS Decimal(10, 0)), 1.2_d128(2,1)) +filter : eq(CAST(to_int32(to_int16(x)) AS Decimal(10, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int8(SimpleDomain { min: 0, max: 2 }))} result : Uncertain @@ -278,9 +278,8 @@ result : Uncertain +-----------+-------+--------------------------+ | 0 | Int32 | Column(Int32([0, 6000])) | +-----------+-------+--------------------------+ -expr : eq(CAST(CAST(x AS Int8) AS Int16), CAST(10_u8 AS Int16)) -fold_expr: eq(CAST(CAST(x AS Int8) AS Int16), 10_i16) -filter : eq(CAST(CAST(x AS Int8) AS Int16), 10_i16) +expr : eq(CAST(x AS Int8), 10_i8) +filter : eq(CAST(x AS Int8), 10_i8) domains : {"x": Number(Int32(SimpleDomain { min: 0, max: 6000 }))} result : Uncertain @@ -290,9 +289,9 @@ result : Uncertain +-----------+--------+----------------------------------------------------------------+ | 0 | String | Column(StringColumn[2021-03-05 01:01:01, 2021-03-05 01:01:02]) | +-----------+--------+----------------------------------------------------------------+ -expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 01:01:01" AS Timestamp)) -fold_expr: eq(CAST(x AS Timestamp), 1614906061000000) -filter : eq(CAST(x AS Timestamp), 1614906061000000) +expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 01:01:01" AS Timestamp)) +fold_expr: eq(CAST(x AS Timestamp), 1614906061000000) +filter : eq(CAST(x AS Timestamp), 1614906061000000) domains : {"x": String(StringDomain { min: "2021-03-05 01:01:01", max: Some("2021-03-05 01:01:02") })} result : Uncertain @@ -302,9 +301,9 @@ result : Uncertain +-----------+------+-------------------------------+ | 0 | Date | Column([18600, 18691, 19000]) | +-----------+------+-------------------------------+ -expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 01:01:03" AS Timestamp)) -fold_expr: eq(CAST(x AS Timestamp), 1614906063000000) -filter : eq(CAST(x AS Timestamp), 1614906063000000) +expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 01:01:03" AS Timestamp)) +fold_expr: eq(CAST(x AS Timestamp), 1614906063000000) +filter : eq(CAST(x AS Timestamp), 1614906063000000) domains : {"x": Date(SimpleDomain { min: 18600, max: 19000 })} result : Uncertain @@ -314,9 +313,9 @@ result : Uncertain +-----------+------+-------------------------------+ | 0 | Date | Column([18600, 18691, 19000]) | +-----------+------+-------------------------------+ -expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 00:00:00" AS Timestamp)) -fold_expr: eq(CAST(x AS Timestamp), 1614902400000000) -filter : eq(CAST(x AS Timestamp), 1614902400000000) +expr : eq(CAST(x AS Timestamp), CAST("2021-03-05 00:00:00" AS Timestamp)) +fold_expr: eq(CAST(x AS Timestamp), 1614902400000000) +filter : eq(CAST(x AS Timestamp), 1614902400000000) domains : {"x": Date(SimpleDomain { min: 18600, max: 19000 })} result : Uncertain @@ -326,8 +325,8 @@ result : Uncertain +-----------+------+-------------------------------+ | 0 | Date | Column([18600, 18691, 19000]) | +-----------+------+-------------------------------+ -expr : eq(CAST(x AS Timestamp), CAST("2030-03-05 00:00:00" AS Timestamp)) -fold_expr: eq(CAST(x AS Timestamp), 1898899200000000) +expr : eq(CAST(x AS Timestamp), CAST("2030-03-05 00:00:00" AS Timestamp)) +fold_expr: eq(CAST(x AS Timestamp), 1898899200000000) filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Date(SimpleDomain { min: 18600, max: 19000 })} result : MustFalse @@ -338,8 +337,8 @@ result : MustFalse +-----------+-------+-------------------------+ | 0 | Int16 | Column(Int16([0, 300])) | +-----------+-------+-------------------------+ -expr : eq(CAST(to_int8(x) AS Decimal(3, 0)), 1.2_d128(2,1)) -filter : eq(CAST(to_int8(x) AS Decimal(3, 0)), 1.2_d128(2,1)) +expr : eq(CAST(to_int8(x) AS Decimal(3, 0)), 1.2_d128(2,1)) +filter : eq(CAST(to_int8(x) AS Decimal(3, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int16(SimpleDomain { min: 0, max: 300 }))} result : Uncertain @@ -349,7 +348,7 @@ result : Uncertain +-----------+------------+----------------------------------------------------------------------------+ | 0 | Int16 NULL | Column(NullableColumn { column: Int16([0, 100]), validity: [0b______11] }) | +-----------+------------+----------------------------------------------------------------------------+ -expr : eq(x, CAST(CAST(1_u8 AS Int8) AS Int16)) +expr : eq(x, CAST(CAST(1_u8 AS Int8) AS Int16)) fold_expr: eq(x, 1_i16) filter : __bloom_column_x_1 domains : {"__bloom_column_x_1": Boolean(BooleanDomain { has_false: true, has_true: false }), "x": Number(Int16(SimpleDomain { min: 0, max: 100 }))} @@ -361,9 +360,9 @@ result : MustFalse +-----------+------------+----------------------------------------------------------------------------+ | 0 | Int16 NULL | Column(NullableColumn { column: Int16([0, 100]), validity: [0b______11] }) | +-----------+------------+----------------------------------------------------------------------------+ -expr : eq(CAST(x AS Int8 NULL), CAST(CAST(1_u8 AS Int8) AS Int8 NULL)) -fold_expr: eq(CAST(x AS Int8 NULL), 1_i8) -filter : eq(CAST(x AS Int8 NULL), 1_i8) +expr : eq(CAST(x AS Int8 NULL), CAST(CAST(1_u8 AS Int8) AS Int8 NULL)) +fold_expr: eq(CAST(x AS Int8 NULL), 1_i8) +filter : eq(CAST(x AS Int8 NULL), 1_i8) domains : {"x": Number(Int16(SimpleDomain { min: 0, max: 100 }))} result : Uncertain diff --git a/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result b/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result index a2c5af15ac8be..6481dd6173ce6 100644 --- a/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result +++ b/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result @@ -9,12 +9,12 @@ b VARCHAR NO '' c INT NO 0 1 Error: APIError: QueryFailed: [1006]fail to auto cast column a (String) to column a (Float32) -invalid float literal while evaluating function `to_float32('a')` in expr `to_float32(a)` +invalid float literal while evaluating function `to_float32('a')` in expr `to_float32(a), during run expr: `CAST(a AS Float32)` Error: APIError: QueryFailed: [1058]Cannot find column b Error: APIError: QueryFailed: [1006]null value in column `a` of table `c` violates not-null constraint 1 0 1 -Error: APIError: QueryFailed: [1006]invalid float literal while evaluating function `to_float32('a')` in expr `to_float32('a')` +Error: APIError: QueryFailed: [1006]invalid float literal while evaluating function `to_float32('a')` in expr `to_float32('a'), during run expr: `CAST('a' AS Float32)` 0 1 1 0 1 diff --git a/tests/suites/0_stateless/20+_others/20_0013_pretty_error.result b/tests/suites/0_stateless/20+_others/20_0013_pretty_error.result index 6230fc24760fa..7e694a8fd0d47 100644 --- a/tests/suites/0_stateless/20+_others/20_0013_pretty_error.result +++ b/tests/suites/0_stateless/20+_others/20_0013_pretty_error.result @@ -30,7 +30,7 @@ candidate functions: to_base64(Binary NULL) :: String NULL : unable to unify `UInt8` with `Binary` -Error: APIError: QueryFailed: [1006]invalid digit found in string while evaluating function `to_uint64('a')` in expr `to_uint64('a')`, during run expr: `1 + to_uint64('a')` +Error: APIError: QueryFailed: [1006]invalid digit found in string while evaluating function `to_uint64('a')` in expr `to_uint64()`, during run expr: `1 + CAST('a' AS UInt64)` Error: APIError: QueryFailed: [1025]error: --> SQL:1:20 | From 2f475af7fd33028052746254dabac42875b0c8e7 Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 1 Apr 2025 19:11:14 +0800 Subject: [PATCH 15/23] fix Signed-off-by: coldWater --- .../suites/mode/standalone/explain_native/select.test | 4 ++-- .../suites/mode/standalone/explain_native/subquery.test | 2 +- .../17_0005_alter_table_modify_column_type.result | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/sqllogictests/suites/mode/standalone/explain_native/select.test b/tests/sqllogictests/suites/mode/standalone/explain_native/select.test index dc7f6179c5852..47dc7cafd3cf2 100644 --- a/tests/sqllogictests/suites/mode/standalone/explain_native/select.test +++ b/tests/sqllogictests/suites/mode/standalone/explain_native/select.test @@ -75,7 +75,7 @@ explain select * from numbers(1) where number = pow(1, 1 + 1) ---- Filter ├── output columns: [numbers.number (#0)] -├── filters: [to_float64(numbers.number (#0)) = 1] +├── filters: [CAST(numbers.number (#0) AS Float64) = 1] ├── estimated rows: 0.00 └── TableScan ├── table: default.system.numbers @@ -84,7 +84,7 @@ Filter ├── read size: < 1 KiB ├── partitions total: 1 ├── partitions scanned: 1 - ├── push downs: [filters: [to_float64(numbers.number (#0)) = 1], limit: NONE] + ├── push downs: [filters: [CAST(numbers.number (#0) AS Float64) = 1], limit: NONE] └── estimated rows: 1.00 query T diff --git a/tests/sqllogictests/suites/mode/standalone/explain_native/subquery.test b/tests/sqllogictests/suites/mode/standalone/explain_native/subquery.test index 0936090ca5489..30d332b3f7a6d 100644 --- a/tests/sqllogictests/suites/mode/standalone/explain_native/subquery.test +++ b/tests/sqllogictests/suites/mode/standalone/explain_native/subquery.test @@ -404,7 +404,7 @@ HashJoin │ ├── estimated rows: 0.20 │ ├── Filter(Build) │ │ ├── output columns: [numbers.number (#2)] -│ │ ├── filters: [is_true(try_to_boolean(if(true, TRY_CAST(COUNT(*) (#3) = 1 AS UInt64 NULL), 0)))] +│ │ ├── filters: [is_true(TRY_CAST(if(true, TRY_CAST(COUNT(*) (#3) = 1 AS UInt64 NULL), 0) AS Boolean NULL))] │ │ ├── estimated rows: 0.20 │ │ └── AggregateFinal │ │ ├── output columns: [COUNT(*) (#3), numbers.number (#2)] diff --git a/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result b/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result index 6481dd6173ce6..65b6af1473df4 100644 --- a/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result +++ b/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result @@ -9,12 +9,12 @@ b VARCHAR NO '' c INT NO 0 1 Error: APIError: QueryFailed: [1006]fail to auto cast column a (String) to column a (Float32) -invalid float literal while evaluating function `to_float32('a')` in expr `to_float32(a), during run expr: `CAST(a AS Float32)` +invalid float literal while evaluating function `to_float32('a')` in expr `to_float32(), during run expr: `CAST(a AS Float32)` Error: APIError: QueryFailed: [1058]Cannot find column b Error: APIError: QueryFailed: [1006]null value in column `a` of table `c` violates not-null constraint 1 0 1 -Error: APIError: QueryFailed: [1006]invalid float literal while evaluating function `to_float32('a')` in expr `to_float32('a'), during run expr: `CAST('a' AS Float32)` +Error: APIError: QueryFailed: [1006]invalid float literal while evaluating function `to_float32()` in expr `to_float32('a'), during run expr: `CAST('a' AS Float32)` 0 1 1 0 1 From 25881279ca07ab21462adcdb9d7576df112cb20d Mon Sep 17 00:00:00 2001 From: coldWater Date: Tue, 1 Apr 2025 20:08:15 +0800 Subject: [PATCH 16/23] fix --- .../tests/it/scalars/testdata/regexp.txt | 24 +++++++++---------- ...0005_alter_table_modify_column_type.result | 4 ++-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/query/functions/tests/it/scalars/testdata/regexp.txt b/src/query/functions/tests/it/scalars/testdata/regexp.txt index 95aaa84f1eaac..291c382c9b409 100644 --- a/src/query/functions/tests/it/scalars/testdata/regexp.txt +++ b/src/query/functions/tests/it/scalars/testdata/regexp.txt @@ -985,7 +985,7 @@ output : 'abc' ast : regexp_extract('abc def ghi', '[a-z]+', 2) raw expr : regexp_extract('abc def ghi', '[a-z]+', 2) -checked expr : regexp_extract("abc def ghi", "[a-z]+", to_uint32(2_u8)) +checked expr : regexp_extract("abc def ghi", "[a-z]+", CAST(2_u8 AS UInt32)) optimized expr : "" output type : String output domain : {""..=""} @@ -994,7 +994,7 @@ output : '' ast : regexp_extract('abc def ghi', NULL) raw expr : regexp_extract('abc def ghi', NULL) -checked expr : regexp_extract(CAST("abc def ghi" AS String NULL), CAST(NULL AS String NULL)) +checked expr : regexp_extract(CAST("abc def ghi" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1030,7 +1030,7 @@ output : '' ast : regexp_extract('John Doe', '([A-Za-z]+) ([A-Za-z]+)', 1) raw expr : regexp_extract('John Doe', '([A-Za-z]+) ([A-Za-z]+)', 1) -checked expr : regexp_extract("John Doe", "([A-Za-z]+) ([A-Za-z]+)", to_uint32(1_u8)) +checked expr : regexp_extract("John Doe", "([A-Za-z]+) ([A-Za-z]+)", CAST(1_u8 AS UInt32)) optimized expr : "John" output type : String output domain : {"John"..="John"} @@ -1039,7 +1039,7 @@ output : 'John' ast : regexp_extract(s, '([A-Za-z]+) ([A-Za-z]+)', 1) raw expr : regexp_extract(s::String, '([A-Za-z]+) ([A-Za-z]+)', 1) -checked expr : regexp_extract(s, "([A-Za-z]+) ([A-Za-z]+)", to_uint32(1_u8)) +checked expr : regexp_extract(s, "([A-Za-z]+) ([A-Za-z]+)", CAST(1_u8 AS UInt32)) optimized expr : regexp_extract(s, "([A-Za-z]+) ([A-Za-z]+)", 1_u32) evaluation: +--------+---------------------------------+---------+ @@ -1080,7 +1080,7 @@ output : {'name':'John', 'age':'30'} ast : regexp_extract('name: John, age: 30', NULL, ['name', 'age']) raw expr : regexp_extract('name: John, age: 30', NULL, array('name', 'age')) -checked expr : regexp_extract(CAST("name: John, age: 30" AS String NULL), CAST(NULL AS String NULL), CAST(array("name", "age") AS Array(String) NULL)) +checked expr : regexp_extract(CAST("name: John, age: 30" AS String NULL), CAST(NULL AS String NULL), CAST(array("name", "age") AS Array(String) NULL)) optimized expr : NULL output type : Map(String, String) NULL output domain : {NULL} @@ -1089,7 +1089,7 @@ output : NULL ast : regexp_extract('name: John, age: 30', 'name: ([A-Za-z]+), age: ([0-9]+)', []) raw expr : regexp_extract('name: John, age: 30', 'name: ([A-Za-z]+), age: ([0-9]+)', array()) -checked expr : regexp_extract("name: John, age: 30", "name: ([A-Za-z]+), age: ([0-9]+)", CAST(array<>() AS Array(String))) +checked expr : regexp_extract("name: John, age: 30", "name: ([A-Za-z]+), age: ([0-9]+)", CAST(array<>() AS Array(String))) optimized expr : {} output type : Map(String, String) output domain : {} @@ -1139,7 +1139,7 @@ output : ['abc', 'def', 'ghi'] ast : regexp_extract_all('John Doe, Jane Smith', '([A-Za-z]+) ([A-Za-z]+)', 1) raw expr : regexp_extract_all('John Doe, Jane Smith', '([A-Za-z]+) ([A-Za-z]+)', 1) -checked expr : regexp_extract_all("John Doe, Jane Smith", "([A-Za-z]+) ([A-Za-z]+)", to_uint32(1_u8)) +checked expr : regexp_extract_all("John Doe, Jane Smith", "([A-Za-z]+) ([A-Za-z]+)", CAST(1_u8 AS UInt32)) optimized expr : ['John', 'Jane'] output type : Array(String) output domain : [{"Jane"..="John"}] @@ -1148,7 +1148,7 @@ output : ['John', 'Jane'] ast : regexp_extract_all('abc def ghi', NULL) raw expr : regexp_extract_all('abc def ghi', NULL) -checked expr : regexp_extract_all(CAST("abc def ghi" AS String NULL), CAST(NULL AS String NULL)) +checked expr : regexp_extract_all(CAST("abc def ghi" AS String NULL), CAST(NULL AS String NULL)) optimized expr : NULL output type : Array(String) NULL output domain : {NULL} @@ -1184,7 +1184,7 @@ output : ['name: John, age: 30', 'name: Jane, age: 25'] ast : regexp_extract_all(s, '([A-Za-z]+) ([A-Za-z]+)', 1) raw expr : regexp_extract_all(s::String, '([A-Za-z]+) ([A-Za-z]+)', 1) -checked expr : regexp_extract_all(s, "([A-Za-z]+) ([A-Za-z]+)", to_uint32(1_u8)) +checked expr : regexp_extract_all(s, "([A-Za-z]+) ([A-Za-z]+)", CAST(1_u8 AS UInt32)) optimized expr : regexp_extract_all(s, "([A-Za-z]+) ([A-Za-z]+)", 1_u32) evaluation: +--------+----------------------------------------------------------------+---------------------+ @@ -1207,7 +1207,7 @@ evaluation (internal): ast : regexp_extract(null, '(\d+)-(\d+)-(\d+)', ['y', 'm']) raw expr : regexp_extract(NULL, '(\d+)-(\d+)-(\d+)', array('y', 'm')) -checked expr : regexp_extract(CAST(NULL AS String NULL), CAST("(\\d+)-(\\d+)-(\\d+)" AS String NULL), CAST(array("y", "m") AS Array(String) NULL)) +checked expr : regexp_extract(CAST(NULL AS String NULL), CAST("(\\d+)-(\\d+)-(\\d+)" AS String NULL), CAST(array("y", "m") AS Array(String) NULL)) optimized expr : NULL output type : Map(String, String) NULL output domain : {NULL} @@ -1216,7 +1216,7 @@ output : NULL ast : regexp_extract_all(null, 'Order-(\d+)-(\d+)', 2) raw expr : regexp_extract_all(NULL, 'Order-(\d+)-(\d+)', 2) -checked expr : regexp_extract_all(CAST(NULL AS String NULL), CAST("Order-(\\d+)-(\\d+)" AS String NULL), CAST(2_u8 AS UInt32 NULL)) +checked expr : regexp_extract_all(CAST(NULL AS String NULL), CAST("Order-(\\d+)-(\\d+)" AS String NULL), CAST(2_u8 AS UInt32 NULL)) optimized expr : NULL output type : Array(String) NULL output domain : {NULL} @@ -1225,7 +1225,7 @@ output : NULL ast : regexp_extract(null, '([A-Za-z]+) ([A-Za-z]+), Age: (\d+)', 3) raw expr : regexp_extract(NULL, '([A-Za-z]+) ([A-Za-z]+), Age: (\d+)', 3) -checked expr : regexp_extract(CAST(NULL AS String NULL), CAST("([A-Za-z]+) ([A-Za-z]+), Age: (\\d+)" AS String NULL), CAST(3_u8 AS UInt32 NULL)) +checked expr : regexp_extract(CAST(NULL AS String NULL), CAST("([A-Za-z]+) ([A-Za-z]+), Age: (\\d+)" AS String NULL), CAST(3_u8 AS UInt32 NULL)) optimized expr : NULL output type : String NULL output domain : {NULL} diff --git a/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result b/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result index 65b6af1473df4..791003dec666b 100644 --- a/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result +++ b/tests/suites/0_stateless/17_altertable/17_0005_alter_table_modify_column_type.result @@ -9,12 +9,12 @@ b VARCHAR NO '' c INT NO 0 1 Error: APIError: QueryFailed: [1006]fail to auto cast column a (String) to column a (Float32) -invalid float literal while evaluating function `to_float32('a')` in expr `to_float32(), during run expr: `CAST(a AS Float32)` +invalid float literal while evaluating function `to_float32('a')` in expr `to_float32()`, during run expr: `CAST(a AS Float32)` Error: APIError: QueryFailed: [1058]Cannot find column b Error: APIError: QueryFailed: [1006]null value in column `a` of table `c` violates not-null constraint 1 0 1 -Error: APIError: QueryFailed: [1006]invalid float literal while evaluating function `to_float32()` in expr `to_float32('a'), during run expr: `CAST('a' AS Float32)` +Error: APIError: QueryFailed: [1006]invalid float literal while evaluating function `to_float32('a')` in expr `to_float32()`, during run expr: `CAST('a' AS Float32)` 0 1 1 0 1 From 0f8efe8bf7ce4d17004d56c0f68b83907f27ad8d Mon Sep 17 00:00:00 2001 From: coldWater Date: Wed, 2 Apr 2025 12:18:56 +0800 Subject: [PATCH 17/23] x --- src/query/functions/tests/it/type_check.rs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/query/functions/tests/it/type_check.rs b/src/query/functions/tests/it/type_check.rs index 9273972561791..ddd8d8aede3ab 100644 --- a/src/query/functions/tests/it/type_check.rs +++ b/src/query/functions/tests/it/type_check.rs @@ -63,12 +63,11 @@ fn test_type_check() { "n_ts", TimestampType::from_data(vec![0]).wrap_nullable(None), ), - // BinaryColumn != BinaryColumn - // ("j", VariantType::from_data(vec![b"{}".into()])), - // ( - // "n_j", - // VariantType::from_data(vec![b"{}".into()]).wrap_nullable(None), - // ), + ("j", VariantType::from_data(vec![b"1".into()])), + ( + "n_j", + VariantType::from_data(vec![b"1".into()]).wrap_nullable(None), + ), ("d128", Decimal128Type::from_data(vec![0_i128])), ( "n_d128", From 5871efe815bf780343a709e508c8eb979d8bcba4 Mon Sep 17 00:00:00 2001 From: coldWater Date: Wed, 2 Apr 2025 16:48:23 +0800 Subject: [PATCH 18/23] fix --- src/query/functions/tests/it/type_check.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/query/functions/tests/it/type_check.rs b/src/query/functions/tests/it/type_check.rs index ddd8d8aede3ab..fb6f7caf5114b 100644 --- a/src/query/functions/tests/it/type_check.rs +++ b/src/query/functions/tests/it/type_check.rs @@ -15,12 +15,14 @@ use databend_common_expression::types::*; use databend_common_expression::FromData; use goldenfile::Mint; +use jsonb::OwnedJsonb; use crate::scalars::run_ast; #[test] fn test_type_check() { let mut mint = Mint::new("tests/it/type_check/testdata"); + let json = "{}".parse::().unwrap().to_vec(); let columns = [ ("s", StringType::from_data(vec!["s"])), @@ -63,10 +65,10 @@ fn test_type_check() { "n_ts", TimestampType::from_data(vec![0]).wrap_nullable(None), ), - ("j", VariantType::from_data(vec![b"1".into()])), + ("j", VariantType::from_data(vec![json.clone()])), ( "n_j", - VariantType::from_data(vec![b"1".into()]).wrap_nullable(None), + VariantType::from_data(vec![json.clone()]).wrap_nullable(None), ), ("d128", Decimal128Type::from_data(vec![0_i128])), ( From 2f8ee594270485cdbebbb04b474ada991fbea02d Mon Sep 17 00:00:00 2001 From: coldWater Date: Wed, 2 Apr 2025 18:59:37 +0800 Subject: [PATCH 19/23] rewrite --- src/query/expression/src/expression.rs | 229 +++++++++++++------------ src/query/expression/src/lib.rs | 1 + 2 files changed, 116 insertions(+), 114 deletions(-) diff --git a/src/query/expression/src/expression.rs b/src/query/expression/src/expression.rs index 393662523bdce..523d7105f7e95 100644 --- a/src/query/expression/src/expression.rs +++ b/src/query/expression/src/expression.rs @@ -19,7 +19,6 @@ use std::hash::Hash; use std::sync::Arc; use databend_common_ast::Span; -use databend_common_exception::ErrorCode; use educe::Educe; use enum_as_inner::EnumAsInner; use serde::Deserialize; @@ -300,19 +299,15 @@ impl PartialEq for Expr { } pub trait ExprVisitor: Sized { - type Error = ErrorCode; + type Error = !; fn enter_constant(&mut self, expr: &Expr) -> Result>, Self::Error> { - let Expr::Constant { .. } = expr else { - unreachable!() - }; + debug_assert!(expr.is_constant()); Ok(None) } fn enter_column_ref(&mut self, expr: &Expr) -> Result>, Self::Error> { - let Expr::ColumnRef { .. } = expr else { - unreachable!() - }; + debug_assert!(expr.is_column_ref()); Ok(None) } @@ -614,24 +609,20 @@ impl Expr { } pub fn column_refs(&self) -> HashMap { - #[recursive::recursive] - fn walk(expr: &Expr, buf: &mut HashMap) { - match expr { - Expr::ColumnRef { id, data_type, .. } => { - buf.insert(id.clone(), data_type.clone()); - } - Expr::Cast { expr, .. } => walk(expr, buf), - Expr::Constant { .. } => (), - Expr::FunctionCall { args, .. } => args.iter().for_each(|expr| walk(expr, buf)), - Expr::LambdaFunctionCall { args, .. } => { - args.iter().for_each(|expr| walk(expr, buf)) - } + struct ColumnRef(HashMap); + impl ExprVisitor for ColumnRef { + fn enter_column_ref(&mut self, expr: &Expr) -> Result>, Self::Error> { + let Expr::ColumnRef { id, data_type, .. } = expr else { + unreachable!() + }; + self.0.insert(id.clone(), data_type.clone()); + Ok(None) } } - let mut buf = HashMap::new(); - walk(self, &mut buf); - buf + let mut visitor = ColumnRef(HashMap::new()); + visit_expr(self, &mut visitor).unwrap(); + visitor.0 } pub fn project_column_ref( @@ -704,84 +695,32 @@ impl Expr { } pub fn fill_const_column(&self, consts: &HashMap) -> Expr { - match self { - Expr::Constant { - span, - scalar, - data_type, - } => Expr::Constant { - span: *span, - scalar: scalar.clone(), - data_type: data_type.clone(), - }, - Expr::ColumnRef { - span, - id, - data_type, - display_name, - } => { - if let Some(v) = consts.get(id) { - Expr::Constant { - span: *span, - scalar: v.clone(), - data_type: data_type.clone(), - } - } else { - Expr::ColumnRef { - span: *span, - id: id.clone(), - data_type: data_type.clone(), - display_name: display_name.clone(), - } - } + struct FillConst<'a, Index>(&'a HashMap); + impl ExprVisitor for FillConst<'_, Index> { + fn enter_column_ref( + &mut self, + expr: &Expr, + ) -> Result>, Self::Error> { + let Expr::ColumnRef { + span, + id, + data_type, + .. + } = expr + else { + unreachable!() + }; + Ok(self.0.get(id).map(|v| Expr::Constant { + span: *span, + scalar: v.clone(), + data_type: data_type.clone(), + })) } - Expr::Cast { - span, - is_try, - expr, - dest_type, - } => Expr::Cast { - span: *span, - is_try: *is_try, - expr: Box::new(expr.fill_const_column(consts)), - dest_type: dest_type.clone(), - }, - Expr::FunctionCall { - span, - id, - function, - generics, - args, - return_type, - } => Expr::FunctionCall { - span: *span, - id: id.clone(), - function: function.clone(), - generics: generics.clone(), - args: args - .iter() - .map(|expr| expr.fill_const_column(consts)) - .collect(), - return_type: return_type.clone(), - }, - Expr::LambdaFunctionCall { - span, - name, - args, - lambda_expr, - lambda_display, - return_type, - } => Expr::LambdaFunctionCall { - span: *span, - name: name.clone(), - args: args - .iter() - .map(|expr| expr.fill_const_column(consts)) - .collect(), - lambda_expr: lambda_expr.clone(), - lambda_display: lambda_display.clone(), - return_type: return_type.clone(), - }, + } + + match visit_expr(self, &mut FillConst(consts)).unwrap() { + Some(expr) => expr, + None => self.clone(), } } @@ -851,30 +790,92 @@ impl Expr { } pub fn is_deterministic(&self, registry: &FunctionRegistry) -> bool { - match self { - Expr::Constant { .. } | Expr::ColumnRef { .. } => true, - Expr::Cast { expr, .. } => expr.is_deterministic(registry), - Expr::FunctionCall { function, args, .. } => { - !registry + struct Deterministic<'a> { + non_deterministic: bool, + registry: &'a FunctionRegistry, + } + + impl ExprVisitor for Deterministic<'_> { + fn enter_function_call( + &mut self, + expr: &Expr, + ) -> Result>, Self::Error> { + if self.non_deterministic { + return Ok(None); + } + + let Expr::FunctionCall { function, .. } = expr else { + unreachable!() + }; + + if self + .registry .get_property(&function.signature.name) .unwrap() .non_deterministic - && args.iter().all(|arg| arg.is_deterministic(registry)) + { + self.non_deterministic = true; + Ok(None) + } else { + Self::visit_function_call(expr, self) + } } - Expr::LambdaFunctionCall { args, .. } => { - args.iter().all(|arg| arg.is_deterministic(registry)) + + fn enter_lambda_function_call( + &mut self, + expr: &Expr, + ) -> Result>, Self::Error> { + if self.non_deterministic { + Ok(None) + } else { + Self::visit_lambda_function_call(expr, self) + } } } + + let mut visitor = Deterministic { + non_deterministic: false, + registry, + }; + visit_expr(self, &mut visitor).unwrap(); + !visitor.non_deterministic } pub fn contains_column_ref(&self) -> bool { - match self { - Expr::ColumnRef { .. } => true, - Expr::Constant { .. } => false, - Expr::Cast { expr, .. } => expr.contains_column_ref(), - Expr::FunctionCall { args, .. } => args.iter().any(Expr::contains_column_ref), - Expr::LambdaFunctionCall { args, .. } => args.iter().any(Expr::contains_column_ref), + struct AnyColumnRef(bool); + impl ExprVisitor for AnyColumnRef { + fn enter_column_ref(&mut self, expr: &Expr) -> Result>, Self::Error> { + debug_assert!(expr.is_column_ref()); + self.0 = true; + Ok(None) + } + + fn enter_function_call( + &mut self, + expr: &Expr, + ) -> Result>, Self::Error> { + if self.0 { + Ok(None) + } else { + Self::visit_function_call(expr, self) + } + } + + fn enter_lambda_function_call( + &mut self, + expr: &Expr, + ) -> Result>, Self::Error> { + if self.0 { + Ok(None) + } else { + Self::visit_lambda_function_call(expr, self) + } + } } + + let mut visitor = AnyColumnRef(false); + visit_expr(self, &mut visitor).unwrap(); + visitor.0 } } diff --git a/src/query/expression/src/lib.rs b/src/query/expression/src/lib.rs index ee04eaa6f6590..e402fe927d1a2 100755 --- a/src/query/expression/src/lib.rs +++ b/src/query/expression/src/lib.rs @@ -42,6 +42,7 @@ #![feature(trait_upcasting)] #![feature(alloc_layout_extra)] #![feature(debug_closure_helpers)] +#![feature(never_type)] #[allow(dead_code)] mod block; From 394032959240f593fc8eef24fa4ce45809a1539e Mon Sep 17 00:00:00 2001 From: coldWater Date: Wed, 2 Apr 2025 20:49:43 +0800 Subject: [PATCH 20/23] bloom --- .../storages/common/index/src/bloom_index.rs | 96 ++++++++++--------- .../index/tests/it/filters/bloom_filter.rs | 2 +- .../storages/fuse/src/pruning/bloom_pruner.rs | 3 +- 3 files changed, 51 insertions(+), 50 deletions(-) diff --git a/src/query/storages/common/index/src/bloom_index.rs b/src/query/storages/common/index/src/bloom_index.rs index 320732bb40d5a..a41507b9a0a1e 100644 --- a/src/query/storages/common/index/src/bloom_index.rs +++ b/src/query/storages/common/index/src/bloom_index.rs @@ -35,6 +35,7 @@ use databend_common_expression::types::Number; use databend_common_expression::types::NumberDataType; use databend_common_expression::types::UInt64Type; use databend_common_expression::types::ValueType; +use databend_common_expression::visit_expr; use databend_common_expression::BlockEntry; use databend_common_expression::Column; use databend_common_expression::ColumnBuilder; @@ -42,6 +43,7 @@ use databend_common_expression::ConstantFolder; use databend_common_expression::DataBlock; use databend_common_expression::Domain; use databend_common_expression::Expr; +use databend_common_expression::ExprVisitor; use databend_common_expression::FieldIndex; use databend_common_expression::FunctionContext; use databend_common_expression::Scalar; @@ -365,7 +367,7 @@ impl BloomIndex { pub fn rewrite_expr( &self, - mut expr: Expr, + expr: Expr, scalar_map: &HashMap, column_stats: &StatisticsOfColumns, data_schema: TableSchemaRef, @@ -407,7 +409,7 @@ impl BloomIndex { }) .collect::>(); - let mut visitor = RewriteVisitor { + let visitor = RewriteVisitor { new_col_id: 1, index: self, data_schema, @@ -415,9 +417,10 @@ impl BloomIndex { column_stats, domains: &mut domains, }; - - visit_expr_column_eq_constant(&mut expr, &mut visitor)?; - + let expr = match visit_expr(&expr, &mut Visitor(visitor))? { + Some(expr) => expr, + None => expr, + }; Ok((expr, domains)) } @@ -492,18 +495,18 @@ impl BloomIndex { /// Find all columns that can be use for index in the expression. #[expect(clippy::type_complexity)] pub fn filter_index_field( - mut expr: Expr, + expr: &Expr, fields: &[TableField], ) -> Result<(Vec, Vec<(Scalar, DataType)>)> { - let mut visitor = ShortListVisitor { + let mut visitor = Visitor(ShortListVisitor { fields: fields.to_vec(), founds: Vec::new(), scalars: Vec::new(), - }; - visit_expr_column_eq_constant(&mut expr, &mut visitor)?; - let ShortListVisitor { + }); + visit_expr(expr, &mut visitor)?; + let Visitor(ShortListVisitor { founds, scalars, .. - } = visitor; + }) = visitor; Ok((founds, scalars)) } @@ -574,18 +577,30 @@ impl BloomIndex { } } -fn visit_expr_column_eq_constant( - expr: &mut Expr, - visitor: &mut impl EqVisitor, -) -> Result<()> { - match match expr { - Expr::FunctionCall { +struct Visitor(T); + +impl ExprVisitor for Visitor +where T: EqVisitor +{ + type Error = ErrorCode; + + fn enter_function_call(&mut self, expr: &Expr) -> Result>> { + let Expr::FunctionCall { span, id, args, return_type, .. - } if id.name() == "eq" => match args.as_slice() { + } = expr + else { + unreachable!() + }; + + if id.name() != "eq" { + return Self::visit_function_call(expr, self); + } + + match match args.as_slice() { // patterns like `Column = `, ` = Column` [Expr::ColumnRef { id, @@ -609,7 +624,8 @@ fn visit_expr_column_eq_constant( // debug_assert_eq!(scalar_type, column_type); // If the visitor returns a new expression, then replace with the current expression. if scalar_type == column_type { - visitor.enter_target(*span, id, scalar, column_type, return_type)? + self.0 + .enter_target(*span, id, scalar, column_type, return_type)? } else { ControlFlow::Continue(None) } @@ -627,7 +643,8 @@ fn visit_expr_column_eq_constant( }, Expr::FunctionCall { id, args, .. }] if id.name() == "get" => { - visitor.enter_map_column(*span, args, scalar, scalar_type, return_type)? + self.0 + .enter_map_column(*span, args, scalar, scalar_type, return_type)? } // patterns like `CAST(MapColumn[] as X) = `, ` = CAST(MapColumn[] as X)` [Expr::Cast { @@ -666,7 +683,8 @@ fn visit_expr_column_eq_constant( { ControlFlow::Break(None) } else { - visitor.enter_map_column(*span, args, scalar, scalar_type, return_type)? + self.0 + .enter_map_column(*span, args, scalar, scalar_type, return_type)? } } [cast @ Expr::Cast { .. }, Expr::Constant { @@ -678,7 +696,7 @@ fn visit_expr_column_eq_constant( scalar, data_type: scalar_type, .. - }, cast @ Expr::Cast { .. }] => visitor.enter_cast(cast, scalar, scalar_type)?, + }, cast @ Expr::Cast { .. }] => self.0.enter_cast(cast, scalar, scalar_type)?, [func @ Expr::FunctionCall { id, @@ -700,7 +718,7 @@ fn visit_expr_column_eq_constant( return_type: dest_type, .. }] if id.name().starts_with("to_") && args.len() == 1 && func.contains_column_ref() => { - visitor.enter_cast( + self.0.enter_cast( &Expr::Cast { span: *span, is_try: false, @@ -712,32 +730,16 @@ fn visit_expr_column_eq_constant( )? } _ => ControlFlow::Continue(None), - }, - _ => ControlFlow::Continue(None), - } { - ControlFlow::Continue(new_expr) => { - if let Some(new_expr) = new_expr { - *expr = new_expr; - } - // Otherwise, rewrite sub expressions. - match expr { - Expr::Cast { expr, .. } => { - visit_expr_column_eq_constant(expr, visitor)?; - } - Expr::FunctionCall { args, .. } => { - for arg in args.iter_mut() { - visit_expr_column_eq_constant(arg, visitor)?; - } - } - _ => (), - } - } - ControlFlow::Break(Some(new_expr)) => { - *expr = new_expr; + } { + ControlFlow::Continue(Some(expr)) => visit_expr(&expr, self), + ControlFlow::Continue(None) => Self::visit_function_call(expr, self), + ControlFlow::Break(expr) => Ok(expr), } - ControlFlow::Break(None) => (), } - Ok(()) + + fn enter_lambda_function_call(&mut self, _: &Expr) -> Result>> { + Ok(None) + } } type ResultRewrite = Result>, Option>>>; diff --git a/src/query/storages/common/index/tests/it/filters/bloom_filter.rs b/src/query/storages/common/index/tests/it/filters/bloom_filter.rs index 786f22fd0fb2d..76e45567b2ac4 100644 --- a/src/query/storages/common/index/tests/it/filters/bloom_filter.rs +++ b/src/query/storages/common/index/tests/it/filters/bloom_filter.rs @@ -468,7 +468,7 @@ fn eval_index_expr( }; let fields = bloom_columns.values().cloned().collect::>(); - let (_, scalars) = BloomIndex::filter_index_field(expr.clone(), &fields).unwrap(); + let (_, scalars) = BloomIndex::filter_index_field(&expr, &fields).unwrap(); let mut scalar_map = HashMap::::new(); for (scalar, ty) in scalars.into_iter() { diff --git a/src/query/storages/fuse/src/pruning/bloom_pruner.rs b/src/query/storages/fuse/src/pruning/bloom_pruner.rs index 4967dbbd74016..160b98d95db98 100644 --- a/src/query/storages/fuse/src/pruning/bloom_pruner.rs +++ b/src/query/storages/fuse/src/pruning/bloom_pruner.rs @@ -91,8 +91,7 @@ impl BloomPrunerCreator { let bloom_columns_map = bloom_index_cols.bloom_index_fields(schema.clone(), BloomIndex::supported_type)?; let bloom_column_fields = bloom_columns_map.values().cloned().collect::>(); - let (index_fields, scalars) = - BloomIndex::filter_index_field(expr.clone(), &bloom_column_fields)?; + let (index_fields, scalars) = BloomIndex::filter_index_field(expr, &bloom_column_fields)?; if index_fields.is_empty() { return Ok(None); From 2aa4d11de0241bde59a25d2c03c083f1b48dbfd3 Mon Sep 17 00:00:00 2001 From: coldWater Date: Wed, 2 Apr 2025 22:45:03 +0800 Subject: [PATCH 21/23] expr size --- src/query/expression/src/expression.rs | 12 ++++++------ src/query/expression/src/filter/select_expr.rs | 4 ++-- src/query/expression/src/type_check.rs | 4 ++-- .../servers/flight/v1/scatter/flight_scatter_hash.rs | 4 ++-- src/query/sql/src/planner/semantic/lowering.rs | 2 +- .../fuse/src/table_functions/fuse_encoding.rs | 2 +- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/query/expression/src/expression.rs b/src/query/expression/src/expression.rs index 523d7105f7e95..609ac4f3f8e09 100644 --- a/src/query/expression/src/expression.rs +++ b/src/query/expression/src/expression.rs @@ -79,7 +79,7 @@ pub enum RawExpr { span: Span, name: String, args: Vec>, - lambda_expr: RemoteExpr, + lambda_expr: Box, lambda_display: String, return_type: DataType, }, @@ -115,7 +115,7 @@ pub enum Expr { FunctionCall { #[educe(Hash(ignore))] span: Span, - id: FunctionID, + id: Box, #[educe(Hash(ignore))] function: Arc, generics: Vec, @@ -127,7 +127,7 @@ pub enum Expr { span: Span, name: String, args: Vec>, - lambda_expr: RemoteExpr, + lambda_expr: Box, lambda_display: String, return_type: DataType, }, @@ -477,7 +477,7 @@ pub enum RemoteExpr { FunctionCall { #[educe(Hash(ignore), PartialEq(ignore))] span: Span, - id: FunctionID, + id: Box, generics: Vec, args: Vec>, return_type: DataType, @@ -782,7 +782,7 @@ impl Expr { span: *span, name: name.clone(), args: args.iter().map(Expr::as_remote_expr).collect(), - lambda_expr: Box::new(lambda_expr.clone()), + lambda_expr: lambda_expr.clone(), lambda_display: lambda_display.clone(), return_type: return_type.clone(), }, @@ -941,7 +941,7 @@ impl RemoteExpr { span: *span, name: name.clone(), args: args.iter().map(|arg| arg.as_expr(fn_registry)).collect(), - lambda_expr: *lambda_expr.clone(), + lambda_expr: lambda_expr.clone(), lambda_display: lambda_display.clone(), return_type: return_type.clone(), }, diff --git a/src/query/expression/src/filter/select_expr.rs b/src/query/expression/src/filter/select_expr.rs index 0d0321da5a050..66bcd4ba242ab 100644 --- a/src/query/expression/src/filter/select_expr.rs +++ b/src/query/expression/src/filter/select_expr.rs @@ -137,7 +137,7 @@ impl SelectExprBuilder { .can_reorder(can_reorder) } "not" => { - self.not_function = Some((id.clone(), function.clone())); + self.not_function = Some((*id.clone(), function.clone())); let result = self.build_select_expr(&args[0], not ^ true); if result.can_push_down_not { result @@ -255,7 +255,7 @@ impl SelectExprBuilder { let (id, function) = self.not_function.as_ref().unwrap(); Expr::FunctionCall { span: None, - id: id.clone(), + id: Box::new(id.clone()), function: function.clone(), generics: vec![], args: vec![expr.clone()], diff --git a/src/query/expression/src/type_check.rs b/src/query/expression/src/type_check.rs index 2df0593c259cc..c7ea2db2272c8 100755 --- a/src/query/expression/src/type_check.rs +++ b/src/query/expression/src/type_check.rs @@ -283,7 +283,7 @@ pub fn check_function( let return_type = function.signature.return_type.clone(); return Ok(Expr::FunctionCall { span, - id, + id: Box::new(id), function, generics: vec![], args: args.to_vec(), @@ -320,7 +320,7 @@ pub fn check_function( }; let expr = Expr::FunctionCall { span, - id: id.clone(), + id: Box::new(id.clone()), function: func.clone(), generics, args, diff --git a/src/query/service/src/servers/flight/v1/scatter/flight_scatter_hash.rs b/src/query/service/src/servers/flight/v1/scatter/flight_scatter_hash.rs index cc82de51e9dc1..118cf8b8519c7 100644 --- a/src/query/service/src/servers/flight/v1/scatter/flight_scatter_hash.rs +++ b/src/query/service/src/servers/flight/v1/scatter/flight_scatter_hash.rs @@ -203,14 +203,14 @@ impl HashFlightScatter { fn shuffle_by_block_id_in_merge_into(expr: &RemoteExpr) -> bool { if let RemoteExpr::FunctionCall { - id: FunctionID::Builtin { name, .. }, + id: box FunctionID::Builtin { name, .. }, args, .. } = expr { if name == "bit_and" { if let RemoteExpr::FunctionCall { - id: FunctionID::Builtin { name, .. }, + id: box FunctionID::Builtin { name, .. }, .. } = &args[0] { diff --git a/src/query/sql/src/planner/semantic/lowering.rs b/src/query/sql/src/planner/semantic/lowering.rs index 0fbf8b7e0b8f0..810d031b33668 100644 --- a/src/query/sql/src/planner/semantic/lowering.rs +++ b/src/query/sql/src/planner/semantic/lowering.rs @@ -224,7 +224,7 @@ impl ScalarExpr { span: None, name: func.func_name.clone(), args: func.args.iter().map(ScalarExpr::as_raw_expr).collect(), - lambda_expr: (*func.lambda_expr).clone(), + lambda_expr: func.lambda_expr.clone(), lambda_display: func.lambda_display.clone(), return_type: (*func.return_type).clone(), }, diff --git a/src/query/storages/fuse/src/table_functions/fuse_encoding.rs b/src/query/storages/fuse/src/table_functions/fuse_encoding.rs index f2879c81637b0..537d84189af69 100644 --- a/src/query/storages/fuse/src/table_functions/fuse_encoding.rs +++ b/src/query/storages/fuse/src/table_functions/fuse_encoding.rs @@ -425,7 +425,7 @@ pub fn as_expr( span: *span, name: name.clone(), args, - lambda_expr: *lambda_expr.clone(), + lambda_expr: lambda_expr.clone(), lambda_display: lambda_display.clone(), return_type: return_type.clone(), } From 208d6feede0a20caa185972b867c302afe9ebbdf Mon Sep 17 00:00:00 2001 From: coldWater Date: Thu, 3 Apr 2025 17:04:27 +0800 Subject: [PATCH 22/23] fix --- src/query/expression/src/type_check.rs | 13 +- src/query/functions/tests/it/scalars/mod.rs | 2 +- .../tests/it/scalars/testdata/arithmetic.txt | 16 +- .../tests/it/scalars/testdata/binary.txt | 44 +- .../tests/it/scalars/testdata/bitmap.txt | 4 +- .../tests/it/scalars/testdata/cast.txt | 208 +++++----- .../tests/it/scalars/testdata/comparison.txt | 30 +- .../tests/it/scalars/testdata/datetime.txt | 386 +++++++++--------- .../tests/it/scalars/testdata/geometry.txt | 194 ++++----- .../tests/it/scalars/testdata/hash.txt | 16 +- .../tests/it/scalars/testdata/other.txt | 4 +- .../tests/it/scalars/testdata/variant.txt | 126 +++--- .../sql/src/planner/semantic/type_check.rs | 36 +- .../index/tests/it/filters/bloom_filter.rs | 2 +- 14 files changed, 546 insertions(+), 535 deletions(-) diff --git a/src/query/expression/src/type_check.rs b/src/query/expression/src/type_check.rs index c7ea2db2272c8..171ee35e23836 100755 --- a/src/query/expression/src/type_check.rs +++ b/src/query/expression/src/type_check.rs @@ -799,17 +799,17 @@ fn is_simple_cast_function(name: &str) -> bool { ALL_SIMPLE_CAST_FUNCTIONS.contains(&name) } -pub fn rewrite_function_to_cast(expr: Expr) -> Result> { +pub fn rewrite_function_to_cast(expr: Expr) -> Expr { match visit_expr(&expr, &mut RewriteCast).unwrap() { - None => Ok(expr), - Some(expr) => Ok(expr), + None => expr, + Some(expr) => expr, } } struct RewriteCast; impl ExprVisitor for RewriteCast { - type Error = (); + type Error = !; fn enter_function_call( &mut self, @@ -844,7 +844,10 @@ impl ExprVisitor for RewriteCast { dest_type: return_type.clone(), })); } - let func_name = format!("to_{}", return_type.remove_nullable()); + let func_name = format!( + "to_{}", + return_type.remove_nullable().to_string().to_lowercase() + ); if function.signature.name == func_name { return Ok(Some(Expr::Cast { span: *span, diff --git a/src/query/functions/tests/it/scalars/mod.rs b/src/query/functions/tests/it/scalars/mod.rs index 282d7923a815e..0c8de0264f76e 100644 --- a/src/query/functions/tests/it/scalars/mod.rs +++ b/src/query/functions/tests/it/scalars/mod.rs @@ -71,7 +71,7 @@ pub fn run_ast(file: &mut impl Write, text: impl AsRef, columns: &[(&str, C ); let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS)?; - let expr = type_check::rewrite_function_to_cast(expr)?; + let expr = type_check::rewrite_function_to_cast(expr); let input_domains = columns .iter() diff --git a/src/query/functions/tests/it/scalars/testdata/arithmetic.txt b/src/query/functions/tests/it/scalars/testdata/arithmetic.txt index 57dbd0a45da46..b7f9fc2df3477 100644 --- a/src/query/functions/tests/it/scalars/testdata/arithmetic.txt +++ b/src/query/functions/tests/it/scalars/testdata/arithmetic.txt @@ -1605,7 +1605,7 @@ evaluation (internal): ast : to_string(a) raw expr : to_string(a::Int8) -checked expr : to_string(a) +checked expr : CAST(a AS String) evaluation: +--------+---------+--------+ | | a | Output | @@ -1627,7 +1627,7 @@ evaluation (internal): ast : to_string(a2) raw expr : to_string(a2::UInt8 NULL) -checked expr : to_string(a2) +checked expr : CAST(a2 AS String NULL) evaluation: +--------+------------------+-----------------+ | | a2 | Output | @@ -1649,7 +1649,7 @@ evaluation (internal): ast : to_string(b) raw expr : to_string(b::Int16) -checked expr : to_string(b) +checked expr : CAST(b AS String) evaluation: +--------+---------+--------+ | | b | Output | @@ -1671,7 +1671,7 @@ evaluation (internal): ast : to_string(c) raw expr : to_string(c::UInt32) -checked expr : to_string(c) +checked expr : CAST(c AS String) evaluation: +--------+-----------+--------+ | | c | Output | @@ -1693,7 +1693,7 @@ evaluation (internal): ast : to_string(d) raw expr : to_string(d::Float64) -checked expr : to_string(d) +checked expr : CAST(d AS String) evaluation: +--------+------------+--------+ | | d | Output | @@ -1715,7 +1715,7 @@ evaluation (internal): ast : to_string(d2) raw expr : to_string(d2::UInt8 NULL) -checked expr : to_string(d2) +checked expr : CAST(d2 AS String NULL) evaluation: +--------+------------------+-----------------+ | | d2 | Output | @@ -1737,7 +1737,7 @@ evaluation (internal): ast : to_string(e) raw expr : to_string(e::Decimal(10, 1)) -checked expr : to_string(e) +checked expr : CAST(e AS String) evaluation: +--------+----------------+---------+ | | e | Output | @@ -1759,7 +1759,7 @@ evaluation (internal): ast : to_string(f) raw expr : to_string(f::Decimal(76, 2)) -checked expr : to_string(f) +checked expr : CAST(f AS String) evaluation: +--------+----------------+---------+ | | f | Output | diff --git a/src/query/functions/tests/it/scalars/testdata/binary.txt b/src/query/functions/tests/it/scalars/testdata/binary.txt index b43e1ffb08ca1..0627fa30c0cb9 100644 --- a/src/query/functions/tests/it/scalars/testdata/binary.txt +++ b/src/query/functions/tests/it/scalars/testdata/binary.txt @@ -1,6 +1,6 @@ ast : length(to_binary('latin')) raw expr : length(to_binary('latin')) -checked expr : length(to_binary("latin")) +checked expr : length(CAST("latin" AS Binary)) optimized expr : 5_u64 output type : UInt64 output domain : {5..=5} @@ -9,7 +9,7 @@ output : 5 ast : length(to_binary(NULL)) raw expr : length(to_binary(NULL)) -checked expr : length(to_binary(CAST(NULL AS Variant NULL))) +checked expr : length(CAST(CAST(NULL AS Variant NULL) AS Binary NULL)) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -88,7 +88,7 @@ evaluation (internal): ast : to_hex(to_binary('abc')) raw expr : to_hex(to_binary('abc')) -checked expr : to_hex(to_binary("abc")) +checked expr : to_hex(CAST("abc" AS Binary)) optimized expr : "616263" output type : String output domain : {"616263"..="616263"} @@ -97,7 +97,7 @@ output : '616263' ast : to_hex(to_binary(a)) raw expr : to_hex(to_binary(a::String)) -checked expr : to_hex(to_binary(a)) +checked expr : to_hex(CAST(a AS Binary)) evaluation: +--------+-----------------+--------------------+ | | a | Output | @@ -205,7 +205,7 @@ evaluation (internal): ast : to_binary(parse_json('{"k1":"val","k2":100}')) raw expr : to_binary(parse_json('{"k1":"val","k2":100}')) -checked expr : to_binary(CAST("{\"k1\":\"val\",\"k2\":100}" AS Variant)) +checked expr : CAST(CAST("{\"k1\":\"val\",\"k2\":100}" AS Variant) AS Binary) optimized expr : 40000002100000021000000210000003200000026B316B3276616C5064 output type : Binary output domain : Undefined @@ -214,7 +214,7 @@ output : 40000002100000021000000210000003200000026B316B3276616C5064 ast : to_binary(parse_json('10')) raw expr : to_binary(parse_json('10')) -checked expr : to_binary(CAST("10" AS Variant)) +checked expr : CAST(CAST("10" AS Variant) AS Binary) optimized expr : 2000000020000002500A output type : Binary output domain : Undefined @@ -223,7 +223,7 @@ output : 2000000020000002500A ast : to_binary(parse_json('123456')) raw expr : to_binary(parse_json('123456')) -checked expr : to_binary(CAST("123456" AS Variant)) +checked expr : CAST(CAST("123456" AS Variant) AS Binary) optimized expr : 2000000020000005500001E240 output type : Binary output domain : Undefined @@ -232,7 +232,7 @@ output : 2000000020000005500001E240 ast : to_binary(parse_json('"abcd"')) raw expr : to_binary(parse_json('"abcd"')) -checked expr : to_binary(CAST("\"abcd\"" AS Variant)) +checked expr : CAST(CAST("\"abcd\"" AS Variant) AS Binary) optimized expr : 200000001000000461626364 output type : Binary output domain : Undefined @@ -241,7 +241,7 @@ output : 200000001000000461626364 ast : to_binary(to_bitmap('1,2,3')) raw expr : to_binary(to_bitmap('1,2,3')) -checked expr : to_binary(to_bitmap("1,2,3")) +checked expr : CAST(CAST("1,2,3" AS Bitmap) AS Binary) optimized expr : 0100000000000000000000003A300000010000000000020010000000010002000300 output type : Binary output domain : Undefined @@ -250,7 +250,7 @@ output : 0100000000000000000000003A3000000100000000000200100000000100020 ast : to_binary(to_bitmap('100,25,50,700')) raw expr : to_binary(to_bitmap('100,25,50,700')) -checked expr : to_binary(to_bitmap("100,25,50,700")) +checked expr : CAST(CAST("100,25,50,700" AS Bitmap) AS Binary) optimized expr : 0100000000000000000000003A300000010000000000030010000000190032006400BC02 output type : Binary output domain : Undefined @@ -259,7 +259,7 @@ output : 0100000000000000000000003A3000000100000000000300100000001900320 ast : to_binary(st_geometryfromwkt('SRID=4326;POINT(1.0 2.0)')) raw expr : to_binary(st_geometryfromwkt('SRID=4326;POINT(1.0 2.0)')) -checked expr : to_binary(st_geometryfromwkt("SRID=4326;POINT(1.0 2.0)")) +checked expr : CAST(st_geometryfromwkt("SRID=4326;POINT(1.0 2.0)") AS Binary) optimized expr : 0101000020E6100000000000000000F03F0000000000000040 output type : Binary output domain : Undefined @@ -268,7 +268,7 @@ output : 0101000020E6100000000000000000F03F0000000000000040 ast : to_binary(st_geometryfromwkb(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'))) raw expr : to_binary(st_geometryfromwkb(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'))) -checked expr : to_binary(st_geometryfromwkb(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641"))) +checked expr : CAST(st_geometryfromwkb(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641")) AS Binary) optimized expr : 0101000020797F000066666666A9CB17411F85EBC19E325641 output type : Binary output domain : Undefined @@ -277,7 +277,7 @@ output : 0101000020797F000066666666A9CB17411F85EBC19E325641 ast : to_binary(st_geographyfromewkt('SRID=4326;POINT(-122.35 37.55)')) raw expr : to_binary(st_geographyfromewkt('SRID=4326;POINT(-122.35 37.55)')) -checked expr : to_binary(st_geographyfromewkt("SRID=4326;POINT(-122.35 37.55)")) +checked expr : CAST(st_geographyfromewkt("SRID=4326;POINT(-122.35 37.55)") AS Binary) optimized expr : 0101000020E61000006666666666965EC06666666666C64240 output type : Binary output domain : Undefined @@ -374,7 +374,7 @@ evaluation (internal): ast : TRY_to_binary(parse_json('{"k1":"val","k2":100}')) raw expr : TRY_to_binary(parse_json('{"k1":"val","k2":100}')) -checked expr : try_to_binary(CAST("{\"k1\":\"val\",\"k2\":100}" AS Variant)) +checked expr : TRY_CAST(CAST("{\"k1\":\"val\",\"k2\":100}" AS Variant) AS Binary NULL) optimized expr : 40000002100000021000000210000003200000026B316B3276616C5064 output type : Binary NULL output domain : Undefined @@ -383,7 +383,7 @@ output : 40000002100000021000000210000003200000026B316B3276616C5064 ast : TRY_to_binary(parse_json('10')) raw expr : TRY_to_binary(parse_json('10')) -checked expr : try_to_binary(CAST("10" AS Variant)) +checked expr : TRY_CAST(CAST("10" AS Variant) AS Binary NULL) optimized expr : 2000000020000002500A output type : Binary NULL output domain : Undefined @@ -392,7 +392,7 @@ output : 2000000020000002500A ast : TRY_to_binary(parse_json('123456')) raw expr : TRY_to_binary(parse_json('123456')) -checked expr : try_to_binary(CAST("123456" AS Variant)) +checked expr : TRY_CAST(CAST("123456" AS Variant) AS Binary NULL) optimized expr : 2000000020000005500001E240 output type : Binary NULL output domain : Undefined @@ -401,7 +401,7 @@ output : 2000000020000005500001E240 ast : TRY_to_binary(parse_json('"abcd"')) raw expr : TRY_to_binary(parse_json('"abcd"')) -checked expr : try_to_binary(CAST("\"abcd\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"abcd\"" AS Variant) AS Binary NULL) optimized expr : 200000001000000461626364 output type : Binary NULL output domain : Undefined @@ -410,7 +410,7 @@ output : 200000001000000461626364 ast : TRY_to_binary(to_bitmap('1,2,3')) raw expr : TRY_to_binary(to_bitmap('1,2,3')) -checked expr : try_to_binary(to_bitmap("1,2,3")) +checked expr : TRY_CAST(CAST("1,2,3" AS Bitmap) AS Binary NULL) optimized expr : 0100000000000000000000003A300000010000000000020010000000010002000300 output type : Binary NULL output domain : Undefined @@ -419,7 +419,7 @@ output : 0100000000000000000000003A3000000100000000000200100000000100020 ast : TRY_to_binary(to_bitmap('100,25,50,700')) raw expr : TRY_to_binary(to_bitmap('100,25,50,700')) -checked expr : try_to_binary(to_bitmap("100,25,50,700")) +checked expr : TRY_CAST(CAST("100,25,50,700" AS Bitmap) AS Binary NULL) optimized expr : 0100000000000000000000003A300000010000000000030010000000190032006400BC02 output type : Binary NULL output domain : Undefined @@ -428,7 +428,7 @@ output : 0100000000000000000000003A3000000100000000000300100000001900320 ast : TRY_to_binary(st_geometryfromwkt('SRID=4326;POINT(1.0 2.0)')) raw expr : TRY_to_binary(st_geometryfromwkt('SRID=4326;POINT(1.0 2.0)')) -checked expr : try_to_binary(st_geometryfromwkt("SRID=4326;POINT(1.0 2.0)")) +checked expr : TRY_CAST(st_geometryfromwkt("SRID=4326;POINT(1.0 2.0)") AS Binary NULL) optimized expr : 0101000020E6100000000000000000F03F0000000000000040 output type : Binary NULL output domain : Undefined @@ -437,7 +437,7 @@ output : 0101000020E6100000000000000000F03F0000000000000040 ast : TRY_to_binary(st_geometryfromwkb(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'))) raw expr : TRY_to_binary(st_geometryfromwkb(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641'))) -checked expr : try_to_binary(st_geometryfromwkb(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641"))) +checked expr : TRY_CAST(st_geometryfromwkb(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641")) AS Binary NULL) optimized expr : 0101000020797F000066666666A9CB17411F85EBC19E325641 output type : Binary NULL output domain : Undefined @@ -446,7 +446,7 @@ output : 0101000020797F000066666666A9CB17411F85EBC19E325641 ast : TRY_to_binary(st_geographyfromewkt('SRID=4326;POINT(-122.35 37.55)')) raw expr : TRY_to_binary(st_geographyfromewkt('SRID=4326;POINT(-122.35 37.55)')) -checked expr : try_to_binary(st_geographyfromewkt("SRID=4326;POINT(-122.35 37.55)")) +checked expr : TRY_CAST(st_geographyfromewkt("SRID=4326;POINT(-122.35 37.55)") AS Binary NULL) optimized expr : 0101000020E61000006666666666965EC06666666666C64240 output type : Binary NULL output domain : Undefined diff --git a/src/query/functions/tests/it/scalars/testdata/bitmap.txt b/src/query/functions/tests/it/scalars/testdata/bitmap.txt index bb31e237d8756..2d2e698555a0f 100644 --- a/src/query/functions/tests/it/scalars/testdata/bitmap.txt +++ b/src/query/functions/tests/it/scalars/testdata/bitmap.txt @@ -49,7 +49,7 @@ evaluation (internal): ast : to_bitmap('0, 1, 2') raw expr : to_bitmap('0, 1, 2') -checked expr : to_bitmap("0, 1, 2") +checked expr : CAST("0, 1, 2" AS Bitmap) optimized expr : RoaringTreemap<[0, 1, 2]> output type : Bitmap output domain : Undefined @@ -58,7 +58,7 @@ output : '0,1,2' ast : to_bitmap(1024) raw expr : to_bitmap(1024) -checked expr : to_bitmap(CAST(1024_u16 AS UInt64)) +checked expr : CAST(CAST(1024_u16 AS UInt64) AS Bitmap) optimized expr : RoaringTreemap<[1024]> output type : Bitmap output domain : Undefined diff --git a/src/query/functions/tests/it/scalars/testdata/cast.txt b/src/query/functions/tests/it/scalars/testdata/cast.txt index 788ed85ddd8db..b1be230c31f15 100644 --- a/src/query/functions/tests/it/scalars/testdata/cast.txt +++ b/src/query/functions/tests/it/scalars/testdata/cast.txt @@ -265,7 +265,7 @@ output : '[0,"a"]' ast : CAST(to_timestamp(1000000) AS VARIANT) raw expr : CAST(to_timestamp(1000000) AS Variant) -checked expr : CAST(to_timestamp(CAST(1000000_u32 AS Int64)) AS Variant) +checked expr : CAST(CAST(CAST(1000000_u32 AS Int64) AS Timestamp) AS Variant) optimized expr : 0x200000001000001a313937302d30312d31322031333a34363a34302e303030303030 output type : Variant output domain : Undefined @@ -493,7 +493,7 @@ evaluation (internal): ast : CAST(TO_TIMESTAMP(-315360000000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(315360000000000)) AS Int64) -checked expr : CAST(to_timestamp(minus(315360000000000_u64)) AS Int64) +checked expr : CAST(CAST(minus(315360000000000_u64) AS Timestamp) AS Int64) optimized expr : -315360000000000_i64 output type : Int64 output domain : {-315360000000000..=-315360000000000} @@ -502,7 +502,7 @@ output : -315360000000000 ast : CAST(TO_TIMESTAMP(-315360000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(315360000000)) AS Int64) -checked expr : CAST(to_timestamp(minus(315360000000_u64)) AS Int64) +checked expr : CAST(CAST(minus(315360000000_u64) AS Timestamp) AS Int64) optimized expr : -315360000000000_i64 output type : Int64 output domain : {-315360000000000..=-315360000000000} @@ -511,7 +511,7 @@ output : -315360000000000 ast : CAST(TO_TIMESTAMP(-100) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(100)) AS Int64) -checked expr : CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(minus(100_u8) AS Int64) AS Timestamp) AS Int64) optimized expr : -100000000_i64 output type : Int64 output domain : {-100000000..=-100000000} @@ -520,7 +520,7 @@ output : -100000000 ast : CAST(TO_TIMESTAMP(-0) AS INT64) raw expr : CAST(TO_TIMESTAMP(minus(0)) AS Int64) -checked expr : CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(minus(0_u8) AS Int64) AS Timestamp) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -529,7 +529,7 @@ output : 0 ast : CAST(TO_TIMESTAMP(0) AS INT64) raw expr : CAST(TO_TIMESTAMP(0) AS Int64) -checked expr : CAST(to_timestamp(CAST(0_u8 AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(0_u8 AS Int64) AS Timestamp) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -538,7 +538,7 @@ output : 0 ast : CAST(TO_TIMESTAMP(100) AS INT64) raw expr : CAST(TO_TIMESTAMP(100) AS Int64) -checked expr : CAST(to_timestamp(CAST(100_u8 AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(100_u8 AS Int64) AS Timestamp) AS Int64) optimized expr : 100000000_i64 output type : Int64 output domain : {100000000..=100000000} @@ -547,7 +547,7 @@ output : 100000000 ast : CAST(TO_TIMESTAMP(315360000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(315360000000) AS Int64) -checked expr : CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(315360000000_u64 AS Int64) AS Timestamp) AS Int64) optimized expr : 315360000000000_i64 output type : Int64 output domain : {315360000000000..=315360000000000} @@ -556,7 +556,7 @@ output : 315360000000000 ast : CAST(TO_TIMESTAMP(315360000000000) AS INT64) raw expr : CAST(TO_TIMESTAMP(315360000000000) AS Int64) -checked expr : CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(315360000000000_u64 AS Int64) AS Timestamp) AS Int64) optimized expr : 315360000000000_i64 output type : Int64 output domain : {315360000000000..=315360000000000} @@ -687,7 +687,7 @@ evaluation (internal): ast : CAST(TO_DATE(-354285) AS INT64) raw expr : CAST(TO_DATE(minus(354285)) AS Int64) -checked expr : CAST(to_date(minus(354285_u32)) AS Int64) +checked expr : CAST(CAST(minus(354285_u32) AS Date) AS Int64) optimized expr : -354285_i64 output type : Int64 output domain : {-354285..=-354285} @@ -696,7 +696,7 @@ output : -354285 ast : CAST(TO_DATE(-100) AS INT64) raw expr : CAST(TO_DATE(minus(100)) AS Int64) -checked expr : CAST(to_date(CAST(minus(100_u8) AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(minus(100_u8) AS Int64) AS Date) AS Int64) optimized expr : -100_i64 output type : Int64 output domain : {-100..=-100} @@ -705,7 +705,7 @@ output : -100 ast : CAST(TO_DATE(-0) AS INT64) raw expr : CAST(TO_DATE(minus(0)) AS Int64) -checked expr : CAST(to_date(CAST(minus(0_u8) AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(minus(0_u8) AS Int64) AS Date) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -714,7 +714,7 @@ output : 0 ast : CAST(TO_DATE(0) AS INT64) raw expr : CAST(TO_DATE(0) AS Int64) -checked expr : CAST(to_date(CAST(0_u8 AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(0_u8 AS Int64) AS Date) AS Int64) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -723,7 +723,7 @@ output : 0 ast : CAST(TO_DATE(100) AS INT64) raw expr : CAST(TO_DATE(100) AS Int64) -checked expr : CAST(to_date(CAST(100_u8 AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(100_u8 AS Int64) AS Date) AS Int64) optimized expr : 100_i64 output type : Int64 output domain : {100..=100} @@ -732,7 +732,7 @@ output : 100 ast : CAST(TO_DATE(2932896) AS INT64) raw expr : CAST(TO_DATE(2932896) AS Int64) -checked expr : CAST(to_date(CAST(2932896_u32 AS Int64)) AS Int64) +checked expr : CAST(CAST(CAST(2932896_u32 AS Int64) AS Date) AS Int64) optimized expr : 2932896_i64 output type : Int64 output domain : {2932896..=2932896} @@ -1256,7 +1256,7 @@ evaluation (internal): ast : CAST(TO_DATE(1) AS TIMESTAMP) raw expr : CAST(TO_DATE(1) AS Timestamp) -checked expr : CAST(to_date(CAST(1_u8 AS Int64)) AS Timestamp) +checked expr : CAST(CAST(CAST(1_u8 AS Int64) AS Date) AS Timestamp) optimized expr : 86400000000 output type : Timestamp output domain : {86400000000..=86400000000} @@ -1265,7 +1265,7 @@ output : '1970-01-02 00:00:00.000000' ast : CAST(TO_TIMESTAMP(1) AS DATE) raw expr : CAST(TO_TIMESTAMP(1) AS Date) -checked expr : CAST(to_timestamp(CAST(1_u8 AS Int64)) AS Date) +checked expr : CAST(CAST(CAST(1_u8 AS Int64) AS Timestamp) AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -1324,7 +1324,7 @@ evaluation (internal): ast : CAST(TO_DATE(a) AS TIMESTAMP) raw expr : CAST(TO_DATE(a::Int32) AS Timestamp) -checked expr : CAST(to_date(CAST(a AS Int64)) AS Timestamp) +checked expr : CAST(CAST(CAST(a AS Int64) AS Date) AS Timestamp) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -1392,7 +1392,7 @@ error: --> SQL:1:1 | 1 | TO_TIMESTAMP('2022') - | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `TIMESTAMP`. BadArguments. Code: 1006, Text = unexpected argument. while evaluating function `to_timestamp('2022')` in expr `to_timestamp('2022')` + | ^^^^^^^^^^^^^^^^^^^^ cannot parse to type `TIMESTAMP`. BadArguments. Code: 1006, Text = unexpected argument. while evaluating function `to_timestamp('2022')` in expr `to_timestamp()`, during run expr: `CAST('2022' AS Timestamp)` @@ -1400,13 +1400,13 @@ error: --> SQL:1:1 | 1 | TO_TIMESTAMP('2022-01') - | ^^^^^^^^^^^^^^^^^^^^^^^ cannot parse to type `TIMESTAMP`. BadArguments. Code: 1006, Text = unexpected argument. while evaluating function `to_timestamp('2022-01')` in expr `to_timestamp('2022-01')` + | ^^^^^^^^^^^^^^^^^^^^^^^ cannot parse to type `TIMESTAMP`. BadArguments. Code: 1006, Text = unexpected argument. while evaluating function `to_timestamp('2022-01')` in expr `to_timestamp()`, during run expr: `CAST('2022-01' AS Timestamp)` ast : TO_TIMESTAMP('2022-01-02') raw expr : TO_TIMESTAMP('2022-01-02') -checked expr : to_timestamp("2022-01-02") +checked expr : CAST("2022-01-02" AS Timestamp) optimized expr : 1641081600000000 output type : Timestamp output domain : {1641081600000000..=1641081600000000} @@ -1417,13 +1417,13 @@ error: --> SQL:1:1 | 1 | TO_TIMESTAMP('A NON-TIMESTAMP STR') - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot parse to type `TIMESTAMP`. BadBytes. Code: 1046, Text = Date Parsing Error: The value 'A NON-TIME' could not be parsed into a valid Date, cause: failed to parse year in date "A NON-TIME": failed to parse "A NO" as year (a four digit integer): invalid digit, expected 0-9 but got A. while evaluating function `to_timestamp('A NON-TIMESTAMP STR')` in expr `to_timestamp('A NON-TIMESTAMP STR')` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot parse to type `TIMESTAMP`. BadBytes. Code: 1046, Text = Date Parsing Error: The value 'A NON-TIME' could not be parsed into a valid Date, cause: failed to parse year in date "A NON-TIME": failed to parse "A NO" as year (a four digit integer): invalid digit, expected 0-9 but got A. while evaluating function `to_timestamp('A NON-TIMESTAMP STR')` in expr `to_timestamp()`, during run expr: `CAST('A NON-TIMESTAMP STR' AS Timestamp)` ast : TO_TIMESTAMP('2022-01-02T03:25:02.868894-07:00') raw expr : TO_TIMESTAMP('2022-01-02T03:25:02.868894-07:00') -checked expr : to_timestamp("2022-01-02T03:25:02.868894-07:00") +checked expr : CAST("2022-01-02T03:25:02.868894-07:00" AS Timestamp) optimized expr : 1641119102868894 output type : Timestamp output domain : {1641119102868894..=1641119102868894} @@ -1432,7 +1432,7 @@ output : '2022-01-02 10:25:02.868894' ast : TO_TIMESTAMP('2022-01-02 02:00:11') raw expr : TO_TIMESTAMP('2022-01-02 02:00:11') -checked expr : to_timestamp("2022-01-02 02:00:11") +checked expr : CAST("2022-01-02 02:00:11" AS Timestamp) optimized expr : 1641088811000000 output type : Timestamp output domain : {1641088811000000..=1641088811000000} @@ -1441,7 +1441,7 @@ output : '2022-01-02 02:00:11.000000' ast : TO_TIMESTAMP('2022-01-02T02:00:22') raw expr : TO_TIMESTAMP('2022-01-02T02:00:22') -checked expr : to_timestamp("2022-01-02T02:00:22") +checked expr : CAST("2022-01-02T02:00:22" AS Timestamp) optimized expr : 1641088822000000 output type : Timestamp output domain : {1641088822000000..=1641088822000000} @@ -1450,7 +1450,7 @@ output : '2022-01-02 02:00:22.000000' ast : TO_TIMESTAMP('2022-01-02T01:12:00-07:00') raw expr : TO_TIMESTAMP('2022-01-02T01:12:00-07:00') -checked expr : to_timestamp("2022-01-02T01:12:00-07:00") +checked expr : CAST("2022-01-02T01:12:00-07:00" AS Timestamp) optimized expr : 1641111120000000 output type : Timestamp output domain : {1641111120000000..=1641111120000000} @@ -1459,7 +1459,7 @@ output : '2022-01-02 08:12:00.000000' ast : TO_TIMESTAMP('2022-01-02T01') raw expr : TO_TIMESTAMP('2022-01-02T01') -checked expr : to_timestamp("2022-01-02T01") +checked expr : CAST("2022-01-02T01" AS Timestamp) optimized expr : 1641085200000000 output type : Timestamp output domain : {1641085200000000..=1641085200000000} @@ -1468,7 +1468,7 @@ output : '2022-01-02 01:00:00.000000' ast : TO_TIMESTAMP(a) raw expr : TO_TIMESTAMP(a::String) -checked expr : to_timestamp(a) +checked expr : CAST(a AS Timestamp) evaluation: +--------+-----------------------------------------------------+---------------------------------------+ | | a | Output | @@ -1492,7 +1492,7 @@ evaluation (internal): ast : CAST(TO_TIMESTAMP(-315360000000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(315360000000000)) AS String) -checked expr : CAST(to_timestamp(minus(315360000000000_u64)) AS String) +checked expr : CAST(CAST(minus(315360000000000_u64) AS Timestamp) AS String) optimized expr : "1960-01-04 00:00:00.000000" output type : String output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -1501,7 +1501,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(TO_TIMESTAMP(-315360000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(315360000000)) AS String) -checked expr : CAST(to_timestamp(minus(315360000000_u64)) AS String) +checked expr : CAST(CAST(minus(315360000000_u64) AS Timestamp) AS String) optimized expr : "1960-01-04 00:00:00.000000" output type : String output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -1510,7 +1510,7 @@ output : '1960-01-04 00:00:00.000000' ast : CAST(TO_TIMESTAMP(-100) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(100)) AS String) -checked expr : CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS String) +checked expr : CAST(CAST(CAST(minus(100_u8) AS Int64) AS Timestamp) AS String) optimized expr : "1969-12-31 23:58:20.000000" output type : String output domain : {"1969-12-31 23:58:20.000000"..="1969-12-31 23:58:20.000000"} @@ -1519,7 +1519,7 @@ output : '1969-12-31 23:58:20.000000' ast : CAST(TO_TIMESTAMP(-0) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(minus(0)) AS String) -checked expr : CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS String) +checked expr : CAST(CAST(CAST(minus(0_u8) AS Int64) AS Timestamp) AS String) optimized expr : "1970-01-01 00:00:00.000000" output type : String output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -1528,7 +1528,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(TO_TIMESTAMP(0) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(0) AS String) -checked expr : CAST(to_timestamp(CAST(0_u8 AS Int64)) AS String) +checked expr : CAST(CAST(CAST(0_u8 AS Int64) AS Timestamp) AS String) optimized expr : "1970-01-01 00:00:00.000000" output type : String output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -1537,7 +1537,7 @@ output : '1970-01-01 00:00:00.000000' ast : CAST(TO_TIMESTAMP(100) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(100) AS String) -checked expr : CAST(to_timestamp(CAST(100_u8 AS Int64)) AS String) +checked expr : CAST(CAST(CAST(100_u8 AS Int64) AS Timestamp) AS String) optimized expr : "1970-01-01 00:01:40.000000" output type : String output domain : {"1970-01-01 00:01:40.000000"..="1970-01-01 00:01:40.000000"} @@ -1546,7 +1546,7 @@ output : '1970-01-01 00:01:40.000000' ast : CAST(TO_TIMESTAMP(315360000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(315360000000) AS String) -checked expr : CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS String) +checked expr : CAST(CAST(CAST(315360000000_u64 AS Int64) AS Timestamp) AS String) optimized expr : "1979-12-30 00:00:00.000000" output type : String output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -1555,7 +1555,7 @@ output : '1979-12-30 00:00:00.000000' ast : CAST(TO_TIMESTAMP(315360000000000) AS VARCHAR) raw expr : CAST(TO_TIMESTAMP(315360000000000) AS String) -checked expr : CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS String) +checked expr : CAST(CAST(CAST(315360000000000_u64 AS Int64) AS Timestamp) AS String) optimized expr : "1979-12-30 00:00:00.000000" output type : String output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -1592,7 +1592,7 @@ error: --> SQL:1:1 | 1 | TO_DATE('2022') - | ^^^^^^^^^^^^^^^ cannot parse to type `DATE`. BadArguments. Code: 1006, Text = unexpected argument. while evaluating function `to_date('2022')` in expr `to_date('2022')` + | ^^^^^^^^^^^^^^^ cannot parse to type `DATE`. BadArguments. Code: 1006, Text = unexpected argument. while evaluating function `to_date('2022')` in expr `to_date()`, during run expr: `CAST('2022' AS Date)` @@ -1600,13 +1600,13 @@ error: --> SQL:1:1 | 1 | TO_DATE('2022-01') - | ^^^^^^^^^^^^^^^^^^ cannot parse to type `DATE`. BadArguments. Code: 1006, Text = unexpected argument. while evaluating function `to_date('2022-01')` in expr `to_date('2022-01')` + | ^^^^^^^^^^^^^^^^^^ cannot parse to type `DATE`. BadArguments. Code: 1006, Text = unexpected argument. while evaluating function `to_date('2022-01')` in expr `to_date()`, during run expr: `CAST('2022-01' AS Date)` ast : TO_DATE('2022-01-02') raw expr : TO_DATE('2022-01-02') -checked expr : to_date("2022-01-02") +checked expr : CAST("2022-01-02" AS Date) optimized expr : 18994 output type : Date output domain : {18994..=18994} @@ -1617,13 +1617,13 @@ error: --> SQL:1:1 | 1 | TO_DATE('A NON-DATE STR') - | ^^^^^^^^^^^^^^^^^^^^^^^^^ cannot parse to type `DATE`. BadBytes. Code: 1046, Text = Date Parsing Error: The value 'A NON-DATE' could not be parsed into a valid Date, cause: failed to parse year in date "A NON-DATE": failed to parse "A NO" as year (a four digit integer): invalid digit, expected 0-9 but got A. while evaluating function `to_date('A NON-DATE STR')` in expr `to_date('A NON-DATE STR')` + | ^^^^^^^^^^^^^^^^^^^^^^^^^ cannot parse to type `DATE`. BadBytes. Code: 1046, Text = Date Parsing Error: The value 'A NON-DATE' could not be parsed into a valid Date, cause: failed to parse year in date "A NON-DATE": failed to parse "A NO" as year (a four digit integer): invalid digit, expected 0-9 but got A. while evaluating function `to_date('A NON-DATE STR')` in expr `to_date()`, during run expr: `CAST('A NON-DATE STR' AS Date)` ast : TO_DATE('2022-01-02T03:25:02.868894-07:00') raw expr : TO_DATE('2022-01-02T03:25:02.868894-07:00') -checked expr : to_date("2022-01-02T03:25:02.868894-07:00") +checked expr : CAST("2022-01-02T03:25:02.868894-07:00" AS Date) optimized expr : 18994 output type : Date output domain : {18994..=18994} @@ -1632,7 +1632,7 @@ output : '2022-01-02' ast : TO_DATE('2022-01-02 02:00:11') raw expr : TO_DATE('2022-01-02 02:00:11') -checked expr : to_date("2022-01-02 02:00:11") +checked expr : CAST("2022-01-02 02:00:11" AS Date) optimized expr : 18994 output type : Date output domain : {18994..=18994} @@ -1641,7 +1641,7 @@ output : '2022-01-02' ast : TO_DATE('2022-01-02T02:00:22') raw expr : TO_DATE('2022-01-02T02:00:22') -checked expr : to_date("2022-01-02T02:00:22") +checked expr : CAST("2022-01-02T02:00:22" AS Date) optimized expr : 18994 output type : Date output domain : {18994..=18994} @@ -1650,7 +1650,7 @@ output : '2022-01-02' ast : TO_DATE('2022-01-02T01:12:00-07:00') raw expr : TO_DATE('2022-01-02T01:12:00-07:00') -checked expr : to_date("2022-01-02T01:12:00-07:00") +checked expr : CAST("2022-01-02T01:12:00-07:00" AS Date) optimized expr : 18994 output type : Date output domain : {18994..=18994} @@ -1659,7 +1659,7 @@ output : '2022-01-02' ast : TO_DATE('2022-01-02T01') raw expr : TO_DATE('2022-01-02T01') -checked expr : to_date("2022-01-02T01") +checked expr : CAST("2022-01-02T01" AS Date) optimized expr : 18994 output type : Date output domain : {18994..=18994} @@ -1668,7 +1668,7 @@ output : '2022-01-02' ast : TO_DATE(a) raw expr : TO_DATE(a::String) -checked expr : to_date(a) +checked expr : CAST(a AS Date) optimized expr : 18994 evaluation: +--------+-----------------------------------------------------+-----------------+ @@ -1693,7 +1693,7 @@ evaluation (internal): ast : CAST(TO_DATE(-354285) AS VARCHAR) raw expr : CAST(TO_DATE(minus(354285)) AS String) -checked expr : CAST(to_date(minus(354285_u32)) AS String) +checked expr : CAST(CAST(minus(354285_u32) AS Date) AS String) optimized expr : "1000-01-01" output type : String output domain : {"1000-01-01"..="1000-01-01"} @@ -1702,7 +1702,7 @@ output : '1000-01-01' ast : CAST(TO_DATE(-100) AS VARCHAR) raw expr : CAST(TO_DATE(minus(100)) AS String) -checked expr : CAST(to_date(CAST(minus(100_u8) AS Int64)) AS String) +checked expr : CAST(CAST(CAST(minus(100_u8) AS Int64) AS Date) AS String) optimized expr : "1969-09-23" output type : String output domain : {"1969-09-23"..="1969-09-23"} @@ -1711,7 +1711,7 @@ output : '1969-09-23' ast : CAST(TO_DATE(-0) AS VARCHAR) raw expr : CAST(TO_DATE(minus(0)) AS String) -checked expr : CAST(to_date(CAST(minus(0_u8) AS Int64)) AS String) +checked expr : CAST(CAST(CAST(minus(0_u8) AS Int64) AS Date) AS String) optimized expr : "1970-01-01" output type : String output domain : {"1970-01-01"..="1970-01-01"} @@ -1720,7 +1720,7 @@ output : '1970-01-01' ast : CAST(TO_DATE(0) AS VARCHAR) raw expr : CAST(TO_DATE(0) AS String) -checked expr : CAST(to_date(CAST(0_u8 AS Int64)) AS String) +checked expr : CAST(CAST(CAST(0_u8 AS Int64) AS Date) AS String) optimized expr : "1970-01-01" output type : String output domain : {"1970-01-01"..="1970-01-01"} @@ -1729,7 +1729,7 @@ output : '1970-01-01' ast : CAST(TO_DATE(100) AS VARCHAR) raw expr : CAST(TO_DATE(100) AS String) -checked expr : CAST(to_date(CAST(100_u8 AS Int64)) AS String) +checked expr : CAST(CAST(CAST(100_u8 AS Int64) AS Date) AS String) optimized expr : "1970-04-11" output type : String output domain : {"1970-04-11"..="1970-04-11"} @@ -1738,7 +1738,7 @@ output : '1970-04-11' ast : CAST(TO_DATE(2932896) AS VARCHAR) raw expr : CAST(TO_DATE(2932896) AS String) -checked expr : CAST(to_date(CAST(2932896_u32 AS Int64)) AS String) +checked expr : CAST(CAST(CAST(2932896_u32 AS Int64) AS Date) AS String) optimized expr : "9999-12-31" output type : String output domain : {"9999-12-31"..="9999-12-31"} @@ -2444,7 +2444,7 @@ output : '[0,"a"]' ast : TRY_CAST(to_timestamp(1000000) AS VARIANT) raw expr : TRY_CAST(to_timestamp(1000000) AS Variant) -checked expr : TRY_CAST(to_timestamp(CAST(1000000_u32 AS Int64)) AS Variant NULL) +checked expr : TRY_CAST(CAST(CAST(1000000_u32 AS Int64) AS Timestamp) AS Variant NULL) optimized expr : 0x200000001000001a313937302d30312d31322031333a34363a34302e303030303030 output type : Variant NULL output domain : Undefined @@ -2686,7 +2686,7 @@ evaluation (internal): ast : TRY_CAST(TO_TIMESTAMP(-315360000000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000000)) AS Int64) -checked expr : TRY_CAST(to_timestamp(minus(315360000000000_u64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(minus(315360000000000_u64) AS Timestamp) AS Int64 NULL) optimized expr : -315360000000000_i64 output type : Int64 NULL output domain : {-315360000000000..=-315360000000000} @@ -2695,7 +2695,7 @@ output : -315360000000000 ast : TRY_CAST(TO_TIMESTAMP(-315360000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000)) AS Int64) -checked expr : TRY_CAST(to_timestamp(minus(315360000000_u64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(minus(315360000000_u64) AS Timestamp) AS Int64 NULL) optimized expr : -315360000000000_i64 output type : Int64 NULL output domain : {-315360000000000..=-315360000000000} @@ -2704,7 +2704,7 @@ output : -315360000000000 ast : TRY_CAST(TO_TIMESTAMP(-100) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(100)) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(minus(100_u8) AS Int64) AS Timestamp) AS Int64 NULL) optimized expr : -100000000_i64 output type : Int64 NULL output domain : {-100000000..=-100000000} @@ -2713,7 +2713,7 @@ output : -100000000 ast : TRY_CAST(TO_TIMESTAMP(-0) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(minus(0)) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(minus(0_u8) AS Int64) AS Timestamp) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2722,7 +2722,7 @@ output : 0 ast : TRY_CAST(TO_TIMESTAMP(0) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(0) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(0_u8 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(0_u8 AS Int64) AS Timestamp) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2731,7 +2731,7 @@ output : 0 ast : TRY_CAST(TO_TIMESTAMP(100) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(100) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(100_u8 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(100_u8 AS Int64) AS Timestamp) AS Int64 NULL) optimized expr : 100000000_i64 output type : Int64 NULL output domain : {100000000..=100000000} @@ -2740,7 +2740,7 @@ output : 100000000 ast : TRY_CAST(TO_TIMESTAMP(315360000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(315360000000_u64 AS Int64) AS Timestamp) AS Int64 NULL) optimized expr : 315360000000000_i64 output type : Int64 NULL output domain : {315360000000000..=315360000000000} @@ -2749,7 +2749,7 @@ output : 315360000000000 ast : TRY_CAST(TO_TIMESTAMP(315360000000000) AS INT64) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000000) AS Int64) -checked expr : TRY_CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(315360000000000_u64 AS Int64) AS Timestamp) AS Int64 NULL) optimized expr : 315360000000000_i64 output type : Int64 NULL output domain : {315360000000000..=315360000000000} @@ -2880,7 +2880,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(-354285) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(354285)) AS Int64) -checked expr : TRY_CAST(to_date(minus(354285_u32)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(minus(354285_u32) AS Date) AS Int64 NULL) optimized expr : -354285_i64 output type : Int64 NULL output domain : {-354285..=-354285} @@ -2889,7 +2889,7 @@ output : -354285 ast : TRY_CAST(TO_DATE(-100) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(100)) AS Int64) -checked expr : TRY_CAST(to_date(CAST(minus(100_u8) AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(minus(100_u8) AS Int64) AS Date) AS Int64 NULL) optimized expr : -100_i64 output type : Int64 NULL output domain : {-100..=-100} @@ -2898,7 +2898,7 @@ output : -100 ast : TRY_CAST(TO_DATE(-0) AS INT64) raw expr : TRY_CAST(TO_DATE(minus(0)) AS Int64) -checked expr : TRY_CAST(to_date(CAST(minus(0_u8) AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(minus(0_u8) AS Int64) AS Date) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2907,7 +2907,7 @@ output : 0 ast : TRY_CAST(TO_DATE(0) AS INT64) raw expr : TRY_CAST(TO_DATE(0) AS Int64) -checked expr : TRY_CAST(to_date(CAST(0_u8 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(0_u8 AS Int64) AS Date) AS Int64 NULL) optimized expr : 0_i64 output type : Int64 NULL output domain : {0..=0} @@ -2916,7 +2916,7 @@ output : 0 ast : TRY_CAST(TO_DATE(100) AS INT64) raw expr : TRY_CAST(TO_DATE(100) AS Int64) -checked expr : TRY_CAST(to_date(CAST(100_u8 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(100_u8 AS Int64) AS Date) AS Int64 NULL) optimized expr : 100_i64 output type : Int64 NULL output domain : {100..=100} @@ -2925,7 +2925,7 @@ output : 100 ast : TRY_CAST(TO_DATE(2932896) AS INT64) raw expr : TRY_CAST(TO_DATE(2932896) AS Int64) -checked expr : TRY_CAST(to_date(CAST(2932896_u32 AS Int64)) AS Int64 NULL) +checked expr : TRY_CAST(CAST(CAST(2932896_u32 AS Int64) AS Date) AS Int64 NULL) optimized expr : 2932896_i64 output type : Int64 NULL output domain : {2932896..=2932896} @@ -3474,7 +3474,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(1) AS TIMESTAMP) raw expr : TRY_CAST(TO_DATE(1) AS Timestamp) -checked expr : TRY_CAST(to_date(CAST(1_u8 AS Int64)) AS Timestamp NULL) +checked expr : TRY_CAST(CAST(CAST(1_u8 AS Int64) AS Date) AS Timestamp NULL) optimized expr : 86400000000 output type : Timestamp NULL output domain : {86400000000..=86400000000} @@ -3483,7 +3483,7 @@ output : '1970-01-02 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(1) AS DATE) raw expr : TRY_CAST(TO_TIMESTAMP(1) AS Date) -checked expr : TRY_CAST(to_timestamp(CAST(1_u8 AS Int64)) AS Date NULL) +checked expr : TRY_CAST(CAST(CAST(1_u8 AS Int64) AS Timestamp) AS Date NULL) optimized expr : 0 output type : Date NULL output domain : {0..=0} @@ -3542,7 +3542,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(a) AS TIMESTAMP) raw expr : TRY_CAST(TO_DATE(a::Int32) AS Timestamp) -checked expr : TRY_CAST(to_date(CAST(a AS Int64)) AS Timestamp NULL) +checked expr : TRY_CAST(CAST(CAST(a AS Int64) AS Date) AS Timestamp NULL) evaluation: +--------+---------------------+-------------------------------------------+ | | a | Output | @@ -3608,7 +3608,7 @@ evaluation (internal): ast : TRY_TO_TIMESTAMP('2022') raw expr : TRY_TO_TIMESTAMP('2022') -checked expr : try_to_timestamp("2022") +checked expr : TRY_CAST("2022" AS Timestamp NULL) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -3617,7 +3617,7 @@ output : NULL ast : TRY_TO_TIMESTAMP('2022-01') raw expr : TRY_TO_TIMESTAMP('2022-01') -checked expr : try_to_timestamp("2022-01") +checked expr : TRY_CAST("2022-01" AS Timestamp NULL) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -3626,7 +3626,7 @@ output : NULL ast : TRY_TO_TIMESTAMP('2022-01-02') raw expr : TRY_TO_TIMESTAMP('2022-01-02') -checked expr : try_to_timestamp("2022-01-02") +checked expr : TRY_CAST("2022-01-02" AS Timestamp NULL) optimized expr : 1641081600000000 output type : Timestamp NULL output domain : {1641081600000000..=1641081600000000} @@ -3635,7 +3635,7 @@ output : '2022-01-02 00:00:00.000000' ast : TRY_TO_TIMESTAMP('A NON-TIMESTAMP STR') raw expr : TRY_TO_TIMESTAMP('A NON-TIMESTAMP STR') -checked expr : try_to_timestamp("A NON-TIMESTAMP STR") +checked expr : TRY_CAST("A NON-TIMESTAMP STR" AS Timestamp NULL) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -3644,7 +3644,7 @@ output : NULL ast : TRY_TO_TIMESTAMP('2022-01-02T03:25:02.868894-07:00') raw expr : TRY_TO_TIMESTAMP('2022-01-02T03:25:02.868894-07:00') -checked expr : try_to_timestamp("2022-01-02T03:25:02.868894-07:00") +checked expr : TRY_CAST("2022-01-02T03:25:02.868894-07:00" AS Timestamp NULL) optimized expr : 1641119102868894 output type : Timestamp NULL output domain : {1641119102868894..=1641119102868894} @@ -3653,7 +3653,7 @@ output : '2022-01-02 10:25:02.868894' ast : TRY_TO_TIMESTAMP('2022-01-02 02:00:11') raw expr : TRY_TO_TIMESTAMP('2022-01-02 02:00:11') -checked expr : try_to_timestamp("2022-01-02 02:00:11") +checked expr : TRY_CAST("2022-01-02 02:00:11" AS Timestamp NULL) optimized expr : 1641088811000000 output type : Timestamp NULL output domain : {1641088811000000..=1641088811000000} @@ -3662,7 +3662,7 @@ output : '2022-01-02 02:00:11.000000' ast : TRY_TO_TIMESTAMP('2022-01-02T02:00:22') raw expr : TRY_TO_TIMESTAMP('2022-01-02T02:00:22') -checked expr : try_to_timestamp("2022-01-02T02:00:22") +checked expr : TRY_CAST("2022-01-02T02:00:22" AS Timestamp NULL) optimized expr : 1641088822000000 output type : Timestamp NULL output domain : {1641088822000000..=1641088822000000} @@ -3671,7 +3671,7 @@ output : '2022-01-02 02:00:22.000000' ast : TRY_TO_TIMESTAMP('2022-01-02T01:12:00-07:00') raw expr : TRY_TO_TIMESTAMP('2022-01-02T01:12:00-07:00') -checked expr : try_to_timestamp("2022-01-02T01:12:00-07:00") +checked expr : TRY_CAST("2022-01-02T01:12:00-07:00" AS Timestamp NULL) optimized expr : 1641111120000000 output type : Timestamp NULL output domain : {1641111120000000..=1641111120000000} @@ -3680,7 +3680,7 @@ output : '2022-01-02 08:12:00.000000' ast : TRY_TO_TIMESTAMP('2022-01-02T01') raw expr : TRY_TO_TIMESTAMP('2022-01-02T01') -checked expr : try_to_timestamp("2022-01-02T01") +checked expr : TRY_CAST("2022-01-02T01" AS Timestamp NULL) optimized expr : 1641085200000000 output type : Timestamp NULL output domain : {1641085200000000..=1641085200000000} @@ -3689,7 +3689,7 @@ output : '2022-01-02 01:00:00.000000' ast : TRY_TO_TIMESTAMP(a) raw expr : TRY_TO_TIMESTAMP(a::String) -checked expr : try_to_timestamp(a) +checked expr : TRY_CAST(a AS Timestamp NULL) evaluation: +--------+-----------------------------------------------------+----------------------------------------------------+ | | a | Output | @@ -3713,7 +3713,7 @@ evaluation (internal): ast : TRY_CAST(TO_TIMESTAMP(-315360000000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000000)) AS String) -checked expr : TRY_CAST(to_timestamp(minus(315360000000000_u64)) AS String NULL) +checked expr : TRY_CAST(CAST(minus(315360000000000_u64) AS Timestamp) AS String NULL) optimized expr : "1960-01-04 00:00:00.000000" output type : String NULL output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -3722,7 +3722,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(-315360000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(315360000000)) AS String) -checked expr : TRY_CAST(to_timestamp(minus(315360000000_u64)) AS String NULL) +checked expr : TRY_CAST(CAST(minus(315360000000_u64) AS Timestamp) AS String NULL) optimized expr : "1960-01-04 00:00:00.000000" output type : String NULL output domain : {"1960-01-04 00:00:00.000000"..="1960-01-04 00:00:00.000000"} @@ -3731,7 +3731,7 @@ output : '1960-01-04 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(-100) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(100)) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(minus(100_u8) AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(minus(100_u8) AS Int64) AS Timestamp) AS String NULL) optimized expr : "1969-12-31 23:58:20.000000" output type : String NULL output domain : {"1969-12-31 23:58:20.000000"..="1969-12-31 23:58:20.000000"} @@ -3740,7 +3740,7 @@ output : '1969-12-31 23:58:20.000000' ast : TRY_CAST(TO_TIMESTAMP(-0) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(minus(0)) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(minus(0_u8) AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(minus(0_u8) AS Int64) AS Timestamp) AS String NULL) optimized expr : "1970-01-01 00:00:00.000000" output type : String NULL output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -3749,7 +3749,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(0) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(0) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(0_u8 AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(0_u8 AS Int64) AS Timestamp) AS String NULL) optimized expr : "1970-01-01 00:00:00.000000" output type : String NULL output domain : {"1970-01-01 00:00:00.000000"..="1970-01-01 00:00:00.000000"} @@ -3758,7 +3758,7 @@ output : '1970-01-01 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(100) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(100) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(100_u8 AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(100_u8 AS Int64) AS Timestamp) AS String NULL) optimized expr : "1970-01-01 00:01:40.000000" output type : String NULL output domain : {"1970-01-01 00:01:40.000000"..="1970-01-01 00:01:40.000000"} @@ -3767,7 +3767,7 @@ output : '1970-01-01 00:01:40.000000' ast : TRY_CAST(TO_TIMESTAMP(315360000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(315360000000_u64 AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(315360000000_u64 AS Int64) AS Timestamp) AS String NULL) optimized expr : "1979-12-30 00:00:00.000000" output type : String NULL output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -3776,7 +3776,7 @@ output : '1979-12-30 00:00:00.000000' ast : TRY_CAST(TO_TIMESTAMP(315360000000000) AS VARCHAR) raw expr : TRY_CAST(TO_TIMESTAMP(315360000000000) AS String) -checked expr : TRY_CAST(to_timestamp(CAST(315360000000000_u64 AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(315360000000000_u64 AS Int64) AS Timestamp) AS String NULL) optimized expr : "1979-12-30 00:00:00.000000" output type : String NULL output domain : {"1979-12-30 00:00:00.000000"..="1979-12-30 00:00:00.000000"} @@ -3811,7 +3811,7 @@ evaluation (internal): ast : TRY_TO_DATE('2022') raw expr : TRY_TO_DATE('2022') -checked expr : try_to_date("2022") +checked expr : TRY_CAST("2022" AS Date NULL) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -3820,7 +3820,7 @@ output : NULL ast : TRY_TO_DATE('2022-01') raw expr : TRY_TO_DATE('2022-01') -checked expr : try_to_date("2022-01") +checked expr : TRY_CAST("2022-01" AS Date NULL) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -3829,7 +3829,7 @@ output : NULL ast : TRY_TO_DATE('2022-01-02') raw expr : TRY_TO_DATE('2022-01-02') -checked expr : try_to_date("2022-01-02") +checked expr : TRY_CAST("2022-01-02" AS Date NULL) optimized expr : 18994 output type : Date NULL output domain : {18994..=18994} @@ -3838,7 +3838,7 @@ output : '2022-01-02' ast : TRY_TO_DATE('A NON-DATE STR') raw expr : TRY_TO_DATE('A NON-DATE STR') -checked expr : try_to_date("A NON-DATE STR") +checked expr : TRY_CAST("A NON-DATE STR" AS Date NULL) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -3847,7 +3847,7 @@ output : NULL ast : TRY_TO_DATE('2022-01-02T03:25:02.868894-07:00') raw expr : TRY_TO_DATE('2022-01-02T03:25:02.868894-07:00') -checked expr : try_to_date("2022-01-02T03:25:02.868894-07:00") +checked expr : TRY_CAST("2022-01-02T03:25:02.868894-07:00" AS Date NULL) optimized expr : 18994 output type : Date NULL output domain : {18994..=18994} @@ -3856,7 +3856,7 @@ output : '2022-01-02' ast : TRY_TO_DATE('2022-01-02 02:00:11') raw expr : TRY_TO_DATE('2022-01-02 02:00:11') -checked expr : try_to_date("2022-01-02 02:00:11") +checked expr : TRY_CAST("2022-01-02 02:00:11" AS Date NULL) optimized expr : 18994 output type : Date NULL output domain : {18994..=18994} @@ -3865,7 +3865,7 @@ output : '2022-01-02' ast : TRY_TO_DATE('2022-01-02T02:00:22') raw expr : TRY_TO_DATE('2022-01-02T02:00:22') -checked expr : try_to_date("2022-01-02T02:00:22") +checked expr : TRY_CAST("2022-01-02T02:00:22" AS Date NULL) optimized expr : 18994 output type : Date NULL output domain : {18994..=18994} @@ -3874,7 +3874,7 @@ output : '2022-01-02' ast : TRY_TO_DATE('2022-01-02T01:12:00-07:00') raw expr : TRY_TO_DATE('2022-01-02T01:12:00-07:00') -checked expr : try_to_date("2022-01-02T01:12:00-07:00") +checked expr : TRY_CAST("2022-01-02T01:12:00-07:00" AS Date NULL) optimized expr : 18994 output type : Date NULL output domain : {18994..=18994} @@ -3883,7 +3883,7 @@ output : '2022-01-02' ast : TRY_TO_DATE('2022-01-02T01') raw expr : TRY_TO_DATE('2022-01-02T01') -checked expr : try_to_date("2022-01-02T01") +checked expr : TRY_CAST("2022-01-02T01" AS Date NULL) optimized expr : 18994 output type : Date NULL output domain : {18994..=18994} @@ -3892,7 +3892,7 @@ output : '2022-01-02' ast : TRY_TO_DATE(a) raw expr : TRY_TO_DATE(a::String) -checked expr : try_to_date(a) +checked expr : TRY_CAST(a AS Date NULL) evaluation: +--------+-----------------------------------------------------+------------------------------+ | | a | Output | @@ -3916,7 +3916,7 @@ evaluation (internal): ast : TRY_CAST(TO_DATE(-354285) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(354285)) AS String) -checked expr : TRY_CAST(to_date(minus(354285_u32)) AS String NULL) +checked expr : TRY_CAST(CAST(minus(354285_u32) AS Date) AS String NULL) optimized expr : "1000-01-01" output type : String NULL output domain : {"1000-01-01"..="1000-01-01"} @@ -3925,7 +3925,7 @@ output : '1000-01-01' ast : TRY_CAST(TO_DATE(-100) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(100)) AS String) -checked expr : TRY_CAST(to_date(CAST(minus(100_u8) AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(minus(100_u8) AS Int64) AS Date) AS String NULL) optimized expr : "1969-09-23" output type : String NULL output domain : {"1969-09-23"..="1969-09-23"} @@ -3934,7 +3934,7 @@ output : '1969-09-23' ast : TRY_CAST(TO_DATE(-0) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(minus(0)) AS String) -checked expr : TRY_CAST(to_date(CAST(minus(0_u8) AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(minus(0_u8) AS Int64) AS Date) AS String NULL) optimized expr : "1970-01-01" output type : String NULL output domain : {"1970-01-01"..="1970-01-01"} @@ -3943,7 +3943,7 @@ output : '1970-01-01' ast : TRY_CAST(TO_DATE(0) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(0) AS String) -checked expr : TRY_CAST(to_date(CAST(0_u8 AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(0_u8 AS Int64) AS Date) AS String NULL) optimized expr : "1970-01-01" output type : String NULL output domain : {"1970-01-01"..="1970-01-01"} @@ -3952,7 +3952,7 @@ output : '1970-01-01' ast : TRY_CAST(TO_DATE(100) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(100) AS String) -checked expr : TRY_CAST(to_date(CAST(100_u8 AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(100_u8 AS Int64) AS Date) AS String NULL) optimized expr : "1970-04-11" output type : String NULL output domain : {"1970-04-11"..="1970-04-11"} @@ -3961,7 +3961,7 @@ output : '1970-04-11' ast : TRY_CAST(TO_DATE(2932896) AS VARCHAR) raw expr : TRY_CAST(TO_DATE(2932896) AS String) -checked expr : TRY_CAST(to_date(CAST(2932896_u32 AS Int64)) AS String NULL) +checked expr : TRY_CAST(CAST(CAST(2932896_u32 AS Int64) AS Date) AS String NULL) optimized expr : "9999-12-31" output type : String NULL output domain : {"9999-12-31"..="9999-12-31"} diff --git a/src/query/functions/tests/it/scalars/testdata/comparison.txt b/src/query/functions/tests/it/scalars/testdata/comparison.txt index b8711f829ae45..f7b09761084a5 100644 --- a/src/query/functions/tests/it/scalars/testdata/comparison.txt +++ b/src/query/functions/tests/it/scalars/testdata/comparison.txt @@ -149,7 +149,7 @@ output : false ast : to_interval('1 hour')=to_interval('3600 seconds') raw expr : eq(to_interval('1 hour'), to_interval('3600 seconds')) -checked expr : eq(to_interval("1 hour"), to_interval("3600 seconds")) +checked expr : eq(CAST("1 hour" AS Interval), CAST("3600 seconds" AS Interval)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -158,7 +158,7 @@ output : true ast : to_timestamp(-315360000000000)=to_timestamp(-100) raw expr : eq(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : eq(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) +checked expr : eq(CAST(minus(315360000000000_u64) AS Timestamp), CAST(CAST(minus(100_u8) AS Int64) AS Timestamp)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -383,7 +383,7 @@ output : true ast : to_interval('1 hour')!=to_interval('3600 seconds') raw expr : noteq(to_interval('1 hour'), to_interval('3600 seconds')) -checked expr : noteq(to_interval("1 hour"), to_interval("3600 seconds")) +checked expr : noteq(CAST("1 hour" AS Interval), CAST("3600 seconds" AS Interval)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -392,7 +392,7 @@ output : false ast : to_timestamp(-315360000000000)!=to_timestamp(-100) raw expr : noteq(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : noteq(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) +checked expr : noteq(CAST(minus(315360000000000_u64) AS Timestamp), CAST(CAST(minus(100_u8) AS Int64) AS Timestamp)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -557,7 +557,7 @@ output : true ast : to_interval('29 days')(to_interval("29 days"), to_interval("1 month")) +checked expr : lt(CAST("29 days" AS Interval), CAST("1 month" AS Interval)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -566,7 +566,7 @@ output : true ast : to_timestamp(-315360000000000)(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) +checked expr : lt(CAST(minus(315360000000000_u64) AS Timestamp), CAST(CAST(minus(100_u8) AS Int64) AS Timestamp)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -746,7 +746,7 @@ output : true ast : to_interval('29 days')<=to_interval('1 month') raw expr : lte(to_interval('29 days'), to_interval('1 month')) -checked expr : lte(to_interval("29 days"), to_interval("1 month")) +checked expr : lte(CAST("29 days" AS Interval), CAST("1 month" AS Interval)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -755,7 +755,7 @@ output : true ast : to_timestamp(-315360000000000)<=to_timestamp(-100) raw expr : lte(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : lte(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) +checked expr : lte(CAST(minus(315360000000000_u64) AS Timestamp), CAST(CAST(minus(100_u8) AS Int64) AS Timestamp)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -764,7 +764,7 @@ output : true ast : to_timestamp(-315360000000000)<=to_timestamp(-315360000000000) raw expr : lte(to_timestamp(minus(315360000000000)), to_timestamp(minus(315360000000000))) -checked expr : lte(to_timestamp(minus(315360000000000_u64)), to_timestamp(minus(315360000000000_u64))) +checked expr : lte(CAST(minus(315360000000000_u64) AS Timestamp), CAST(minus(315360000000000_u64) AS Timestamp)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -918,7 +918,7 @@ output : false ast : to_interval('29 days')>to_interval('1 month') raw expr : gt(to_interval('29 days'), to_interval('1 month')) -checked expr : gt(to_interval("29 days"), to_interval("1 month")) +checked expr : gt(CAST("29 days" AS Interval), CAST("1 month" AS Interval)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -927,7 +927,7 @@ output : false ast : to_timestamp(-315360000000000)>to_timestamp(-100) raw expr : gt(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : gt(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) +checked expr : gt(CAST(minus(315360000000000_u64) AS Timestamp), CAST(CAST(minus(100_u8) AS Int64) AS Timestamp)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -936,7 +936,7 @@ output : false ast : to_timestamp(-315360000000000)>to_timestamp(-315360000000000) raw expr : gt(to_timestamp(minus(315360000000000)), to_timestamp(minus(315360000000000))) -checked expr : gt(to_timestamp(minus(315360000000000_u64)), to_timestamp(minus(315360000000000_u64))) +checked expr : gt(CAST(minus(315360000000000_u64) AS Timestamp), CAST(minus(315360000000000_u64) AS Timestamp)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1125,7 +1125,7 @@ output : false ast : to_interval('29 days')>=to_interval('1 month') raw expr : gte(to_interval('29 days'), to_interval('1 month')) -checked expr : gte(to_interval("29 days"), to_interval("1 month")) +checked expr : gte(CAST("29 days" AS Interval), CAST("1 month" AS Interval)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1134,7 +1134,7 @@ output : false ast : to_timestamp(-315360000000000)>=to_timestamp(-100) raw expr : gte(to_timestamp(minus(315360000000000)), to_timestamp(minus(100))) -checked expr : gte(to_timestamp(minus(315360000000000_u64)), to_timestamp(CAST(minus(100_u8) AS Int64))) +checked expr : gte(CAST(minus(315360000000000_u64) AS Timestamp), CAST(CAST(minus(100_u8) AS Int64) AS Timestamp)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1143,7 +1143,7 @@ output : false ast : to_timestamp(-315360000000000)>=to_timestamp(-315360000000000) raw expr : gte(to_timestamp(minus(315360000000000)), to_timestamp(minus(315360000000000))) -checked expr : gte(to_timestamp(minus(315360000000000_u64)), to_timestamp(minus(315360000000000_u64))) +checked expr : gte(CAST(minus(315360000000000_u64) AS Timestamp), CAST(minus(315360000000000_u64) AS Timestamp)) optimized expr : true output type : Boolean output domain : {TRUE} diff --git a/src/query/functions/tests/it/scalars/testdata/datetime.txt b/src/query/functions/tests/it/scalars/testdata/datetime.txt index e4bc5c3d15116..7247eb131bbb1 100644 --- a/src/query/functions/tests/it/scalars/testdata/datetime.txt +++ b/src/query/functions/tests/it/scalars/testdata/datetime.txt @@ -1,6 +1,6 @@ ast : to_timestamp(-30610224000000001) raw expr : to_timestamp(minus(30610224000000001)) -checked expr : to_timestamp(minus(30610224000000001_u64)) +checked expr : CAST(minus(30610224000000001_u64) AS Timestamp) optimized expr : -30610224000000001 output type : Timestamp output domain : {-30610224000000001..=-30610224000000001} @@ -9,7 +9,7 @@ output : '0999-12-31 23:59:59.999999' ast : to_timestamp(-315360000000000) raw expr : to_timestamp(minus(315360000000000)) -checked expr : to_timestamp(minus(315360000000000_u64)) +checked expr : CAST(minus(315360000000000_u64) AS Timestamp) optimized expr : -315360000000000 output type : Timestamp output domain : {-315360000000000..=-315360000000000} @@ -18,7 +18,7 @@ output : '1960-01-04 00:00:00.000000' ast : to_timestamp(-315360000000) raw expr : to_timestamp(minus(315360000000)) -checked expr : to_timestamp(minus(315360000000_u64)) +checked expr : CAST(minus(315360000000_u64) AS Timestamp) optimized expr : -315360000000000 output type : Timestamp output domain : {-315360000000000..=-315360000000000} @@ -27,7 +27,7 @@ output : '1960-01-04 00:00:00.000000' ast : to_timestamp(-100) raw expr : to_timestamp(minus(100)) -checked expr : to_timestamp(CAST(minus(100_u8) AS Int64)) +checked expr : CAST(CAST(minus(100_u8) AS Int64) AS Timestamp) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -36,7 +36,7 @@ output : '1969-12-31 23:58:20.000000' ast : to_timestamp(-0) raw expr : to_timestamp(minus(0)) -checked expr : to_timestamp(CAST(minus(0_u8) AS Int64)) +checked expr : CAST(CAST(minus(0_u8) AS Int64) AS Timestamp) optimized expr : 0 output type : Timestamp output domain : {0..=0} @@ -45,7 +45,7 @@ output : '1970-01-01 00:00:00.000000' ast : to_timestamp(0) raw expr : to_timestamp(0) -checked expr : to_timestamp(CAST(0_u8 AS Int64)) +checked expr : CAST(CAST(0_u8 AS Int64) AS Timestamp) optimized expr : 0 output type : Timestamp output domain : {0..=0} @@ -54,7 +54,7 @@ output : '1970-01-01 00:00:00.000000' ast : to_timestamp(100) raw expr : to_timestamp(100) -checked expr : to_timestamp(CAST(100_u8 AS Int64)) +checked expr : CAST(CAST(100_u8 AS Int64) AS Timestamp) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -63,7 +63,7 @@ output : '1970-01-01 00:01:40.000000' ast : to_timestamp(315360000000) raw expr : to_timestamp(315360000000) -checked expr : to_timestamp(CAST(315360000000_u64 AS Int64)) +checked expr : CAST(CAST(315360000000_u64 AS Int64) AS Timestamp) optimized expr : 315360000000000 output type : Timestamp output domain : {315360000000000..=315360000000000} @@ -72,7 +72,7 @@ output : '1979-12-30 00:00:00.000000' ast : to_timestamp('2023-01-11') raw expr : to_timestamp('2023-01-11') -checked expr : to_timestamp("2023-01-11") +checked expr : CAST("2023-01-11" AS Timestamp) optimized expr : 1673395200000000 output type : Timestamp output domain : {1673395200000000..=1673395200000000} @@ -81,7 +81,7 @@ output : '2023-01-11 00:00:00.000000' ast : to_timestamp('2023-01-11')::int64::timestamp raw expr : CAST(CAST(to_timestamp('2023-01-11') AS Int64) AS Timestamp) -checked expr : CAST(CAST(to_timestamp("2023-01-11") AS Int64) AS Timestamp) +checked expr : CAST(CAST(CAST("2023-01-11" AS Timestamp) AS Int64) AS Timestamp) optimized expr : 1673395200000000 output type : Timestamp output domain : {1673395200000000..=1673395200000000} @@ -90,7 +90,7 @@ output : '2023-01-11 00:00:00.000000' ast : to_timestamp(315360000000000) raw expr : to_timestamp(315360000000000) -checked expr : to_timestamp(CAST(315360000000000_u64 AS Int64)) +checked expr : CAST(CAST(315360000000000_u64 AS Int64) AS Timestamp) optimized expr : 315360000000000 output type : Timestamp output domain : {315360000000000..=315360000000000} @@ -99,7 +99,7 @@ output : '1979-12-30 00:00:00.000000' ast : to_timestamp(253402300800000000) raw expr : to_timestamp(253402300800000000) -checked expr : to_timestamp(CAST(253402300800000000_u64 AS Int64)) +checked expr : CAST(CAST(253402300800000000_u64 AS Int64) AS Timestamp) optimized expr : -62135596800000000 output type : Timestamp output domain : {-62135596800000000..=-62135596800000000} @@ -108,7 +108,7 @@ output : '0001-01-01 00:00:00.000000' ast : to_timestamp(a) raw expr : to_timestamp(a::Int64) -checked expr : to_timestamp(a) +checked expr : CAST(a AS Timestamp) evaluation: +--------+--------------------------------------+--------------------------------------+ | | a | Output | @@ -134,7 +134,7 @@ evaluation (internal): ast : to_timestamp(b) raw expr : to_timestamp(b::String) -checked expr : to_timestamp(b) +checked expr : CAST(b AS Timestamp) evaluation: +--------+-------------------------------+---------------------------------------+ | | b | Output | @@ -157,7 +157,7 @@ evaluation (internal): ast : to_date(-354286) raw expr : to_date(minus(354286)) -checked expr : to_date(minus(354286_u32)) +checked expr : CAST(minus(354286_u32) AS Date) optimized expr : -354286 output type : Date output domain : {-354286..=-354286} @@ -166,7 +166,7 @@ output : '0999-12-31' ast : to_date(-354285) raw expr : to_date(minus(354285)) -checked expr : to_date(minus(354285_u32)) +checked expr : CAST(minus(354285_u32) AS Date) optimized expr : -354285 output type : Date output domain : {-354285..=-354285} @@ -175,7 +175,7 @@ output : '1000-01-01' ast : to_date(-100) raw expr : to_date(minus(100)) -checked expr : to_date(CAST(minus(100_u8) AS Int64)) +checked expr : CAST(CAST(minus(100_u8) AS Int64) AS Date) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -184,7 +184,7 @@ output : '1969-09-23' ast : to_date(-0) raw expr : to_date(minus(0)) -checked expr : to_date(CAST(minus(0_u8) AS Int64)) +checked expr : CAST(CAST(minus(0_u8) AS Int64) AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -193,7 +193,7 @@ output : '1970-01-01' ast : to_date(0) raw expr : to_date(0) -checked expr : to_date(CAST(0_u8 AS Int64)) +checked expr : CAST(CAST(0_u8 AS Int64) AS Date) optimized expr : 0 output type : Date output domain : {0..=0} @@ -202,7 +202,7 @@ output : '1970-01-01' ast : to_date('2023-01-11') raw expr : to_date('2023-01-11') -checked expr : to_date("2023-01-11") +checked expr : CAST("2023-01-11" AS Date) optimized expr : 19368 output type : Date output domain : {19368..=19368} @@ -211,7 +211,7 @@ output : '2023-01-11' ast : to_int32(to_date('2023-01-11'))::date raw expr : CAST(to_int32(to_date('2023-01-11')) AS Date) -checked expr : CAST(to_int32(CAST(to_date("2023-01-11") AS Int64)) AS Date) +checked expr : CAST(CAST(CAST(CAST("2023-01-11" AS Date) AS Int64) AS Int32) AS Date) optimized expr : 19368 output type : Date output domain : {19368..=19368} @@ -220,7 +220,7 @@ output : '2023-01-11' ast : to_date(100) raw expr : to_date(100) -checked expr : to_date(CAST(100_u8 AS Int64)) +checked expr : CAST(CAST(100_u8 AS Int64) AS Date) optimized expr : 100 output type : Date output domain : {100..=100} @@ -229,7 +229,7 @@ output : '1970-04-11' ast : to_date(2932896) raw expr : to_date(2932896) -checked expr : to_date(CAST(2932896_u32 AS Int64)) +checked expr : CAST(CAST(2932896_u32 AS Int64) AS Date) optimized expr : 2932896 output type : Date output domain : {2932896..=2932896} @@ -238,7 +238,7 @@ output : '9999-12-31' ast : to_date(2932897) raw expr : to_date(2932897) -checked expr : to_date(CAST(2932897_u32 AS Int64)) +checked expr : CAST(CAST(2932897_u32 AS Int64) AS Date) optimized expr : -719162 output type : Date output domain : {-719162..=-719162} @@ -247,7 +247,7 @@ output : '0001-01-01' ast : to_date(a) raw expr : to_date(a::Int32) -checked expr : to_date(CAST(a AS Int64)) +checked expr : CAST(CAST(a AS Int64) AS Date) evaluation: +--------+---------------------+---------------------+ | | a | Output | @@ -271,7 +271,7 @@ evaluation (internal): ast : to_date(b) raw expr : to_date(b::String) -checked expr : to_date(b) +checked expr : CAST(b AS Date) evaluation: +--------+-------------------------------+-----------------+ | | b | Output | @@ -296,13 +296,13 @@ error: --> SQL:1:1 | 1 | add_years(to_date(0), 10000) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(CAST(0 AS Int64)), CAST(10000 AS Int64))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(CAST(CAST(0 AS Int64) AS Date), CAST(10000 AS Int64))` ast : add_years(to_date(0), 100) raw expr : add_years(to_date(0), 100) -checked expr : add_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_years(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 36525 output type : Date output domain : {36525..=36525} @@ -311,7 +311,7 @@ output : '2070-01-01' ast : add_months(to_date(0), 100) raw expr : add_months(to_date(0), 100) -checked expr : add_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_months(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 3042 output type : Date output domain : {3042..=3042} @@ -320,7 +320,7 @@ output : '1978-05-01' ast : add_days(to_date(0), 100) raw expr : add_days(to_date(0), 100) -checked expr : add_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_days(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -329,7 +329,7 @@ output : '1970-04-11' ast : add(to_date(0), 100) raw expr : add(to_date(0), 100) -checked expr : plus(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : plus(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -338,7 +338,7 @@ output : '1970-04-11' ast : add(to_date(0), 10000000) raw expr : add(to_date(0), 10000000) -checked expr : plus(to_date(CAST(0_u8 AS Int64)), CAST(10000000_u32 AS Int64)) +checked expr : plus(CAST(CAST(0_u8 AS Int64) AS Date), CAST(10000000_u32 AS Int64)) optimized expr : -719162 output type : Date output domain : {-719162..=-719162} @@ -347,7 +347,7 @@ output : '0001-01-01' ast : subtract_years(to_date(0), 100) raw expr : subtract_years(to_date(0), 100) -checked expr : subtract_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_years(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -36524 output type : Date output domain : {-36524..=-36524} @@ -356,7 +356,7 @@ output : '1870-01-01' ast : subtract_quarters(to_date(0), 100) raw expr : subtract_quarters(to_date(0), 100) -checked expr : subtract_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_quarters(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -9131 output type : Date output domain : {-9131..=-9131} @@ -365,7 +365,7 @@ output : '1945-01-01' ast : subtract_months(to_date(0), 100) raw expr : subtract_months(to_date(0), 100) -checked expr : subtract_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_months(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -3044 output type : Date output domain : {-3044..=-3044} @@ -374,7 +374,7 @@ output : '1961-09-01' ast : subtract_days(to_date(0), 100) raw expr : subtract_days(to_date(0), 100) -checked expr : subtract_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_days(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -383,7 +383,7 @@ output : '1969-09-23' ast : subtract(to_date(0), 100) raw expr : subtract(to_date(0), 100) -checked expr : minus(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : minus(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -392,7 +392,7 @@ output : '1969-09-23' ast : subtract(to_date(0), 10000000) raw expr : subtract(to_date(0), 10000000) -checked expr : minus(to_date(CAST(0_u8 AS Int64)), CAST(10000000_u32 AS Int64)) +checked expr : minus(CAST(CAST(0_u8 AS Int64) AS Date), CAST(10000000_u32 AS Int64)) optimized expr : -719162 output type : Date output domain : {-719162..=-719162} @@ -587,13 +587,13 @@ error: --> SQL:1:1 | 1 | add_years(to_timestamp(0), 10000) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(CAST(0 AS Int64)), CAST(10000 AS Int64))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(CAST(CAST(0 AS Int64) AS Timestamp), CAST(10000 AS Int64))` ast : add_years(to_timestamp(0), 100) raw expr : add_years(to_timestamp(0), 100) -checked expr : add_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_years(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 3155760000000000 output type : Timestamp output domain : {3155760000000000..=3155760000000000} @@ -602,7 +602,7 @@ output : '2070-01-01 00:00:00.000000' ast : add_quarters(to_timestamp(0), 100) raw expr : add_quarters(to_timestamp(0), 100) -checked expr : add_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_quarters(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 788918400000000 output type : Timestamp output domain : {788918400000000..=788918400000000} @@ -611,7 +611,7 @@ output : '1995-01-01 00:00:00.000000' ast : add_months(to_timestamp(0), 100) raw expr : add_months(to_timestamp(0), 100) -checked expr : add_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_months(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 262828800000000 output type : Timestamp output domain : {262828800000000..=262828800000000} @@ -620,7 +620,7 @@ output : '1978-05-01 00:00:00.000000' ast : add_days(to_timestamp(0), 100) raw expr : add_days(to_timestamp(0), 100) -checked expr : add_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_days(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 8640000000000 output type : Timestamp output domain : {8640000000000..=8640000000000} @@ -629,7 +629,7 @@ output : '1970-04-11 00:00:00.000000' ast : add_hours(to_timestamp(0), 100) raw expr : add_hours(to_timestamp(0), 100) -checked expr : add_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_hours(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 360000000000 output type : Timestamp output domain : {360000000000..=360000000000} @@ -638,7 +638,7 @@ output : '1970-01-05 04:00:00.000000' ast : add_minutes(to_timestamp(0), 100) raw expr : add_minutes(to_timestamp(0), 100) -checked expr : add_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_minutes(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 6000000000 output type : Timestamp output domain : {6000000000..=6000000000} @@ -647,7 +647,7 @@ output : '1970-01-01 01:40:00.000000' ast : add_seconds(to_timestamp(0), 100) raw expr : add_seconds(to_timestamp(0), 100) -checked expr : add_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_seconds(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -656,7 +656,7 @@ output : '1970-01-01 00:01:40.000000' ast : add(to_timestamp(0), 100000000000000) raw expr : add(to_timestamp(0), 100000000000000) -checked expr : plus(to_timestamp(CAST(0_u8 AS Int64)), CAST(100000000000000_u64 AS Int64)) +checked expr : plus(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100000000000000_u64 AS Int64)) optimized expr : 100000000000000 output type : Timestamp output domain : {100000000000000..=100000000000000} @@ -665,7 +665,7 @@ output : '1973-03-03 09:46:40.000000' ast : add(to_timestamp(0), 1000000000000000000) raw expr : add(to_timestamp(0), 1000000000000000000) -checked expr : plus(to_timestamp(CAST(0_u8 AS Int64)), CAST(1000000000000000000_u64 AS Int64)) +checked expr : plus(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(1000000000000000000_u64 AS Int64)) optimized expr : -62135596800000000 output type : Timestamp output domain : {-62135596800000000..=-62135596800000000} @@ -674,7 +674,7 @@ output : '0001-01-01 00:00:00.000000' ast : subtract_years(to_timestamp(0), 100) raw expr : subtract_years(to_timestamp(0), 100) -checked expr : subtract_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_years(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -3155673600000000 output type : Timestamp output domain : {-3155673600000000..=-3155673600000000} @@ -683,7 +683,7 @@ output : '1870-01-01 00:00:00.000000' ast : subtract_quarters(to_timestamp(0), 100) raw expr : subtract_quarters(to_timestamp(0), 100) -checked expr : subtract_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_quarters(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -788918400000000 output type : Timestamp output domain : {-788918400000000..=-788918400000000} @@ -692,7 +692,7 @@ output : '1945-01-01 00:00:00.000000' ast : subtract_months(to_timestamp(0), 100) raw expr : subtract_months(to_timestamp(0), 100) -checked expr : subtract_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_months(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -263001600000000 output type : Timestamp output domain : {-263001600000000..=-263001600000000} @@ -701,7 +701,7 @@ output : '1961-09-01 00:00:00.000000' ast : subtract_days(to_timestamp(0), 100) raw expr : subtract_days(to_timestamp(0), 100) -checked expr : subtract_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_days(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -8640000000000 output type : Timestamp output domain : {-8640000000000..=-8640000000000} @@ -710,7 +710,7 @@ output : '1969-09-23 00:00:00.000000' ast : subtract_hours(to_timestamp(0), 100) raw expr : subtract_hours(to_timestamp(0), 100) -checked expr : subtract_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_hours(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -360000000000 output type : Timestamp output domain : {-360000000000..=-360000000000} @@ -719,7 +719,7 @@ output : '1969-12-27 20:00:00.000000' ast : subtract_minutes(to_timestamp(0), 100) raw expr : subtract_minutes(to_timestamp(0), 100) -checked expr : subtract_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_minutes(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -6000000000 output type : Timestamp output domain : {-6000000000..=-6000000000} @@ -728,7 +728,7 @@ output : '1969-12-31 22:20:00.000000' ast : subtract_seconds(to_timestamp(0), 100) raw expr : subtract_seconds(to_timestamp(0), 100) -checked expr : subtract_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_seconds(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -737,7 +737,7 @@ output : '1969-12-31 23:58:20.000000' ast : subtract(to_timestamp(0), 100000000000000) raw expr : subtract(to_timestamp(0), 100000000000000) -checked expr : minus(to_timestamp(CAST(0_u8 AS Int64)), CAST(100000000000000_u64 AS Int64)) +checked expr : minus(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100000000000000_u64 AS Int64)) optimized expr : -100000000000000 output type : Timestamp output domain : {-100000000000000..=-100000000000000} @@ -746,7 +746,7 @@ output : '1966-10-31 14:13:20.000000' ast : subtract(to_timestamp(0), 1000000000000000000) raw expr : subtract(to_timestamp(0), 1000000000000000000) -checked expr : minus(to_timestamp(CAST(0_u8 AS Int64)), CAST(1000000000000000000_u64 AS Int64)) +checked expr : minus(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(1000000000000000000_u64 AS Int64)) optimized expr : -62135596800000000 output type : Timestamp output domain : {-62135596800000000..=-62135596800000000} @@ -1079,13 +1079,13 @@ error: --> SQL:1:1 | 1 | date_add(year, 10000, to_date(0)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(CAST(0 AS Int64)), CAST(10000 AS Int64))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(CAST(CAST(0 AS Int64) AS Date), CAST(10000 AS Int64))` ast : date_add(year, 100, to_date(0)) raw expr : add_years(to_date(0), 100) -checked expr : add_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_years(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 36525 output type : Date output domain : {36525..=36525} @@ -1094,7 +1094,7 @@ output : '2070-01-01' ast : date_add(quarter, 100, to_date(0)) raw expr : add_quarters(to_date(0), 100) -checked expr : add_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_quarters(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 9131 output type : Date output domain : {9131..=9131} @@ -1103,7 +1103,7 @@ output : '1995-01-01' ast : date_add(month, 100, to_date(0)) raw expr : add_months(to_date(0), 100) -checked expr : add_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_months(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 3042 output type : Date output domain : {3042..=3042} @@ -1112,7 +1112,7 @@ output : '1978-05-01' ast : date_add(day, 100, to_date(0)) raw expr : add_days(to_date(0), 100) -checked expr : add_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_days(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -1121,7 +1121,7 @@ output : '1970-04-11' ast : date_sub(year, 100, to_date(0)) raw expr : subtract_years(to_date(0), 100) -checked expr : subtract_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_years(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -36524 output type : Date output domain : {-36524..=-36524} @@ -1130,7 +1130,7 @@ output : '1870-01-01' ast : date_sub(quarter, 100, to_date(0)) raw expr : subtract_quarters(to_date(0), 100) -checked expr : subtract_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_quarters(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -9131 output type : Date output domain : {-9131..=-9131} @@ -1139,7 +1139,7 @@ output : '1945-01-01' ast : date_sub(month, 100, to_date(0)) raw expr : subtract_months(to_date(0), 100) -checked expr : subtract_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_months(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -3044 output type : Date output domain : {-3044..=-3044} @@ -1148,7 +1148,7 @@ output : '1961-09-01' ast : date_sub(day, 100, to_date(0)) raw expr : subtract_days(to_date(0), 100) -checked expr : subtract_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_days(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -1343,13 +1343,13 @@ error: --> SQL:1:1 | 1 | date_add(year, 10000, to_timestamp(0)) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(CAST(0 AS Int64)), CAST(10000 AS Int64))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(CAST(CAST(0 AS Int64) AS Timestamp), CAST(10000 AS Int64))` ast : date_add(year, 100, to_timestamp(0)) raw expr : add_years(to_timestamp(0), 100) -checked expr : add_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_years(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 3155760000000000 output type : Timestamp output domain : {3155760000000000..=3155760000000000} @@ -1358,7 +1358,7 @@ output : '2070-01-01 00:00:00.000000' ast : date_add(quarter, 100, to_timestamp(0)) raw expr : add_quarters(to_timestamp(0), 100) -checked expr : add_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_quarters(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 788918400000000 output type : Timestamp output domain : {788918400000000..=788918400000000} @@ -1367,7 +1367,7 @@ output : '1995-01-01 00:00:00.000000' ast : date_add(month, 100, to_timestamp(0)) raw expr : add_months(to_timestamp(0), 100) -checked expr : add_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_months(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 262828800000000 output type : Timestamp output domain : {262828800000000..=262828800000000} @@ -1376,7 +1376,7 @@ output : '1978-05-01 00:00:00.000000' ast : date_add(day, 100, to_timestamp(0)) raw expr : add_days(to_timestamp(0), 100) -checked expr : add_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_days(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 8640000000000 output type : Timestamp output domain : {8640000000000..=8640000000000} @@ -1385,7 +1385,7 @@ output : '1970-04-11 00:00:00.000000' ast : date_add(hour, 100, to_timestamp(0)) raw expr : add_hours(to_timestamp(0), 100) -checked expr : add_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_hours(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 360000000000 output type : Timestamp output domain : {360000000000..=360000000000} @@ -1394,7 +1394,7 @@ output : '1970-01-05 04:00:00.000000' ast : date_add(minute, 100, to_timestamp(0)) raw expr : add_minutes(to_timestamp(0), 100) -checked expr : add_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_minutes(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 6000000000 output type : Timestamp output domain : {6000000000..=6000000000} @@ -1403,7 +1403,7 @@ output : '1970-01-01 01:40:00.000000' ast : date_add(second, 100, to_timestamp(0)) raw expr : add_seconds(to_timestamp(0), 100) -checked expr : add_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_seconds(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -1412,7 +1412,7 @@ output : '1970-01-01 00:01:40.000000' ast : date_sub(year, 100, to_timestamp(0)) raw expr : subtract_years(to_timestamp(0), 100) -checked expr : subtract_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_years(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -3155673600000000 output type : Timestamp output domain : {-3155673600000000..=-3155673600000000} @@ -1421,7 +1421,7 @@ output : '1870-01-01 00:00:00.000000' ast : date_sub(quarter, 100, to_timestamp(0)) raw expr : subtract_quarters(to_timestamp(0), 100) -checked expr : subtract_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_quarters(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -788918400000000 output type : Timestamp output domain : {-788918400000000..=-788918400000000} @@ -1430,7 +1430,7 @@ output : '1945-01-01 00:00:00.000000' ast : date_sub(month, 100, to_timestamp(0)) raw expr : subtract_months(to_timestamp(0), 100) -checked expr : subtract_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_months(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -263001600000000 output type : Timestamp output domain : {-263001600000000..=-263001600000000} @@ -1439,7 +1439,7 @@ output : '1961-09-01 00:00:00.000000' ast : date_sub(day, 100, to_timestamp(0)) raw expr : subtract_days(to_timestamp(0), 100) -checked expr : subtract_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_days(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -8640000000000 output type : Timestamp output domain : {-8640000000000..=-8640000000000} @@ -1448,7 +1448,7 @@ output : '1969-09-23 00:00:00.000000' ast : date_sub(hour, 100, to_timestamp(0)) raw expr : subtract_hours(to_timestamp(0), 100) -checked expr : subtract_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_hours(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -360000000000 output type : Timestamp output domain : {-360000000000..=-360000000000} @@ -1457,7 +1457,7 @@ output : '1969-12-27 20:00:00.000000' ast : date_sub(minute, 100, to_timestamp(0)) raw expr : subtract_minutes(to_timestamp(0), 100) -checked expr : subtract_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_minutes(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -6000000000 output type : Timestamp output domain : {-6000000000..=-6000000000} @@ -1466,7 +1466,7 @@ output : '1969-12-31 22:20:00.000000' ast : date_sub(second, 100, to_timestamp(0)) raw expr : subtract_seconds(to_timestamp(0), 100) -checked expr : subtract_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_seconds(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -1799,13 +1799,13 @@ error: --> SQL:1:12 | 1 | to_date(0) + interval 10000 year - | ^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(to_date(CAST(0 AS Int64)), CAST(10000 AS Int64))` + | ^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01', 10000)` in expr `add_years(CAST(CAST(0 AS Int64) AS Date), CAST(10000 AS Int64))` ast : to_date(0) + interval 100 year raw expr : add_years(to_date(0), 100) -checked expr : add_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_years(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 36525 output type : Date output domain : {36525..=36525} @@ -1814,7 +1814,7 @@ output : '2070-01-01' ast : to_date(0) + interval 100 quarter raw expr : add_quarters(to_date(0), 100) -checked expr : add_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_quarters(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 9131 output type : Date output domain : {9131..=9131} @@ -1823,7 +1823,7 @@ output : '1995-01-01' ast : to_date(0) + interval 100 month raw expr : add_months(to_date(0), 100) -checked expr : add_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_months(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 3042 output type : Date output domain : {3042..=3042} @@ -1832,7 +1832,7 @@ output : '1978-05-01' ast : to_date(0) + interval 100 day raw expr : add_days(to_date(0), 100) -checked expr : add_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_days(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : 100 output type : Date output domain : {100..=100} @@ -1841,7 +1841,7 @@ output : '1970-04-11' ast : to_date(0) - interval 100 year raw expr : subtract_years(to_date(0), 100) -checked expr : subtract_years(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_years(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -36524 output type : Date output domain : {-36524..=-36524} @@ -1850,7 +1850,7 @@ output : '1870-01-01' ast : to_date(0) - interval 100 quarter raw expr : subtract_quarters(to_date(0), 100) -checked expr : subtract_quarters(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_quarters(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -9131 output type : Date output domain : {-9131..=-9131} @@ -1859,7 +1859,7 @@ output : '1945-01-01' ast : to_date(0) - interval 100 month raw expr : subtract_months(to_date(0), 100) -checked expr : subtract_months(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_months(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -3044 output type : Date output domain : {-3044..=-3044} @@ -1868,7 +1868,7 @@ output : '1961-09-01' ast : to_date(0) - interval 100 day raw expr : subtract_days(to_date(0), 100) -checked expr : subtract_days(to_date(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_days(CAST(CAST(0_u8 AS Int64) AS Date), CAST(100_u8 AS Int64)) optimized expr : -100 output type : Date output domain : {-100..=-100} @@ -2063,13 +2063,13 @@ error: --> SQL:1:17 | 1 | to_timestamp(0) + interval 10000 year - | ^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(to_timestamp(CAST(0 AS Int64)), CAST(10000 AS Int64))` + | ^ Invalid date: parameter 'year' with value 11970 is not in the required range of -9999..=9999 while evaluating function `add_years('1970-01-01 00:00:00.000000', 10000)` in expr `add_years(CAST(CAST(0 AS Int64) AS Timestamp), CAST(10000 AS Int64))` ast : to_timestamp(0) + interval 100 year raw expr : add_years(to_timestamp(0), 100) -checked expr : add_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_years(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 3155760000000000 output type : Timestamp output domain : {3155760000000000..=3155760000000000} @@ -2078,7 +2078,7 @@ output : '2070-01-01 00:00:00.000000' ast : to_timestamp(0) + interval 100 quarter raw expr : add_quarters(to_timestamp(0), 100) -checked expr : add_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_quarters(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 788918400000000 output type : Timestamp output domain : {788918400000000..=788918400000000} @@ -2087,7 +2087,7 @@ output : '1995-01-01 00:00:00.000000' ast : to_timestamp(0) + interval 100 month raw expr : add_months(to_timestamp(0), 100) -checked expr : add_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_months(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 262828800000000 output type : Timestamp output domain : {262828800000000..=262828800000000} @@ -2096,7 +2096,7 @@ output : '1978-05-01 00:00:00.000000' ast : to_timestamp(0) + interval 100 day raw expr : add_days(to_timestamp(0), 100) -checked expr : add_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_days(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 8640000000000 output type : Timestamp output domain : {8640000000000..=8640000000000} @@ -2105,7 +2105,7 @@ output : '1970-04-11 00:00:00.000000' ast : to_timestamp(0) + interval 100 hour raw expr : add_hours(to_timestamp(0), 100) -checked expr : add_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_hours(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 360000000000 output type : Timestamp output domain : {360000000000..=360000000000} @@ -2114,7 +2114,7 @@ output : '1970-01-05 04:00:00.000000' ast : to_timestamp(0) + interval 100 minute raw expr : add_minutes(to_timestamp(0), 100) -checked expr : add_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_minutes(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 6000000000 output type : Timestamp output domain : {6000000000..=6000000000} @@ -2123,7 +2123,7 @@ output : '1970-01-01 01:40:00.000000' ast : to_timestamp(0) + interval 100 second raw expr : add_seconds(to_timestamp(0), 100) -checked expr : add_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : add_seconds(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : 100000000 output type : Timestamp output domain : {100000000..=100000000} @@ -2132,7 +2132,7 @@ output : '1970-01-01 00:01:40.000000' ast : to_timestamp(0) - interval 100 year raw expr : subtract_years(to_timestamp(0), 100) -checked expr : subtract_years(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_years(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -3155673600000000 output type : Timestamp output domain : {-3155673600000000..=-3155673600000000} @@ -2141,7 +2141,7 @@ output : '1870-01-01 00:00:00.000000' ast : to_timestamp(0) - interval 100 quarter raw expr : subtract_quarters(to_timestamp(0), 100) -checked expr : subtract_quarters(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_quarters(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -788918400000000 output type : Timestamp output domain : {-788918400000000..=-788918400000000} @@ -2150,7 +2150,7 @@ output : '1945-01-01 00:00:00.000000' ast : to_timestamp(0) - interval 100 month raw expr : subtract_months(to_timestamp(0), 100) -checked expr : subtract_months(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_months(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -263001600000000 output type : Timestamp output domain : {-263001600000000..=-263001600000000} @@ -2159,7 +2159,7 @@ output : '1961-09-01 00:00:00.000000' ast : to_timestamp(0) - interval 100 day raw expr : subtract_days(to_timestamp(0), 100) -checked expr : subtract_days(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_days(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -8640000000000 output type : Timestamp output domain : {-8640000000000..=-8640000000000} @@ -2168,7 +2168,7 @@ output : '1969-09-23 00:00:00.000000' ast : to_timestamp(0) - interval 100 hour raw expr : subtract_hours(to_timestamp(0), 100) -checked expr : subtract_hours(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_hours(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -360000000000 output type : Timestamp output domain : {-360000000000..=-360000000000} @@ -2177,7 +2177,7 @@ output : '1969-12-27 20:00:00.000000' ast : to_timestamp(0) - interval 100 minute raw expr : subtract_minutes(to_timestamp(0), 100) -checked expr : subtract_minutes(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_minutes(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -6000000000 output type : Timestamp output domain : {-6000000000..=-6000000000} @@ -2186,7 +2186,7 @@ output : '1969-12-31 22:20:00.000000' ast : to_timestamp(0) - interval 100 second raw expr : subtract_seconds(to_timestamp(0), 100) -checked expr : subtract_seconds(to_timestamp(CAST(0_u8 AS Int64)), CAST(100_u8 AS Int64)) +checked expr : subtract_seconds(CAST(CAST(0_u8 AS Int64) AS Timestamp), CAST(100_u8 AS Int64)) optimized expr : -100000000 output type : Timestamp output domain : {-100000000..=-100000000} @@ -2517,7 +2517,7 @@ evaluation (internal): ast : to_yyyymm(to_date(18875)) raw expr : to_yyyymm(to_date(18875)) -checked expr : to_yyyymm(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_yyyymm(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 202109_u32 output type : UInt32 output domain : {202109..=202109} @@ -2526,7 +2526,7 @@ output : 202109 ast : to_yyyymmdd(to_date(18875)) raw expr : to_yyyymmdd(to_date(18875)) -checked expr : to_yyyymmdd(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_yyyymmdd(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 20210905_u32 output type : UInt32 output domain : {20210905..=20210905} @@ -2535,7 +2535,7 @@ output : 20210905 ast : to_yyyymmddhhmmss(to_date(18875)) raw expr : to_yyyymmddhhmmss(to_date(18875)) -checked expr : to_yyyymmddhhmmss(CAST(to_date(CAST(18875_u16 AS Int64)) AS Timestamp)) +checked expr : to_yyyymmddhhmmss(CAST(CAST(CAST(18875_u16 AS Int64) AS Date) AS Timestamp)) optimized expr : 20210905000000_u64 output type : UInt64 output domain : {20210905000000..=20210905000000} @@ -2544,7 +2544,7 @@ output : 20210905000000 ast : to_year(to_date(18875)) raw expr : to_year(to_date(18875)) -checked expr : to_year(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_year(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 2021_u16 output type : UInt16 output domain : {2021..=2021} @@ -2553,7 +2553,7 @@ output : 2021 ast : to_quarter(to_date(18875)) raw expr : to_quarter(to_date(18875)) -checked expr : to_quarter(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_quarter(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 3_u8 output type : UInt8 output domain : {3..=3} @@ -2562,7 +2562,7 @@ output : 3 ast : to_month(to_date(18875)) raw expr : to_month(to_date(18875)) -checked expr : to_month(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_month(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 9_u8 output type : UInt8 output domain : {9..=9} @@ -2571,7 +2571,7 @@ output : 9 ast : to_day_of_year(to_date(18875)) raw expr : to_day_of_year(to_date(18875)) -checked expr : to_day_of_year(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_day_of_year(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 248_u16 output type : UInt16 output domain : {248..=248} @@ -2580,7 +2580,7 @@ output : 248 ast : to_day_of_month(to_date(18875)) raw expr : to_day_of_month(to_date(18875)) -checked expr : to_day_of_month(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_day_of_month(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 5_u8 output type : UInt8 output domain : {5..=5} @@ -2589,7 +2589,7 @@ output : 5 ast : to_day_of_week(to_date(18875)) raw expr : to_day_of_week(to_date(18875)) -checked expr : to_day_of_week(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_day_of_week(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 7_u8 output type : UInt8 output domain : {7..=7} @@ -2598,7 +2598,7 @@ output : 7 ast : to_week_of_year(to_date(18875)) raw expr : to_week_of_year(to_date(18875)) -checked expr : to_week_of_year(to_date(CAST(18875_u16 AS Int64))) +checked expr : to_week_of_year(CAST(CAST(18875_u16 AS Int64) AS Date)) optimized expr : 35_u32 output type : UInt32 output domain : {35..=35} @@ -2827,7 +2827,7 @@ evaluation (internal): ast : to_yyyymm(to_timestamp(1630812366)) raw expr : to_yyyymm(to_timestamp(1630812366)) -checked expr : to_yyyymm(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_yyyymm(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 202109_u32 output type : UInt32 output domain : {202109..=202109} @@ -2836,7 +2836,7 @@ output : 202109 ast : to_yyyymmdd(to_timestamp(1630812366)) raw expr : to_yyyymmdd(to_timestamp(1630812366)) -checked expr : to_yyyymmdd(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_yyyymmdd(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 20210905_u32 output type : UInt32 output domain : {20210905..=20210905} @@ -2845,7 +2845,7 @@ output : 20210905 ast : to_yyyymmddhhmmss(to_timestamp(1630812366)) raw expr : to_yyyymmddhhmmss(to_timestamp(1630812366)) -checked expr : to_yyyymmddhhmmss(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_yyyymmddhhmmss(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 20210905032606_u64 output type : UInt64 output domain : {20210905032606..=20210905032606} @@ -2854,7 +2854,7 @@ output : 20210905032606 ast : to_year(to_timestamp(1630812366)) raw expr : to_year(to_timestamp(1630812366)) -checked expr : to_year(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_year(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 2021_u16 output type : UInt16 output domain : {2021..=2021} @@ -2863,7 +2863,7 @@ output : 2021 ast : to_quarter(to_timestamp(1630812366)) raw expr : to_quarter(to_timestamp(1630812366)) -checked expr : to_quarter(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_quarter(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 3_u8 output type : UInt8 output domain : {3..=3} @@ -2872,7 +2872,7 @@ output : 3 ast : to_month(to_timestamp(1630812366)) raw expr : to_month(to_timestamp(1630812366)) -checked expr : to_month(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_month(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 9_u8 output type : UInt8 output domain : {9..=9} @@ -2881,7 +2881,7 @@ output : 9 ast : to_day_of_year(to_timestamp(1630812366)) raw expr : to_day_of_year(to_timestamp(1630812366)) -checked expr : to_day_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_day_of_year(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 248_u16 output type : UInt16 output domain : {248..=248} @@ -2890,7 +2890,7 @@ output : 248 ast : to_day_of_month(to_timestamp(1630812366)) raw expr : to_day_of_month(to_timestamp(1630812366)) -checked expr : to_day_of_month(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_day_of_month(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 5_u8 output type : UInt8 output domain : {5..=5} @@ -2899,7 +2899,7 @@ output : 5 ast : to_day_of_week(to_timestamp(1630812366)) raw expr : to_day_of_week(to_timestamp(1630812366)) -checked expr : to_day_of_week(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_day_of_week(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 7_u8 output type : UInt8 output domain : {7..=7} @@ -2908,7 +2908,7 @@ output : 7 ast : to_week_of_year(to_timestamp(1630812366)) raw expr : to_week_of_year(to_timestamp(1630812366)) -checked expr : to_week_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_week_of_year(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 35_u32 output type : UInt32 output domain : {35..=35} @@ -2917,7 +2917,7 @@ output : 35 ast : to_hour(to_timestamp(1630812366)) raw expr : to_hour(to_timestamp(1630812366)) -checked expr : to_hour(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_hour(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 3_u8 output type : UInt8 output domain : {3..=3} @@ -2926,7 +2926,7 @@ output : 3 ast : to_minute(to_timestamp(1630812366)) raw expr : to_minute(to_timestamp(1630812366)) -checked expr : to_minute(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_minute(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 26_u8 output type : UInt8 output domain : {26..=26} @@ -2935,7 +2935,7 @@ output : 26 ast : to_second(to_timestamp(1630812366)) raw expr : to_second(to_timestamp(1630812366)) -checked expr : to_second(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_second(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 6_u8 output type : UInt8 output domain : {6..=6} @@ -3230,7 +3230,7 @@ evaluation (internal): ast : to_start_of_second(to_timestamp(1630812366)) raw expr : to_start_of_second(to_timestamp(1630812366)) -checked expr : to_start_of_second(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_second(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630812366000000 output type : Timestamp output domain : {1630812366000000..=1630812366000000} @@ -3239,7 +3239,7 @@ output : '2021-09-05 03:26:06.000000' ast : to_start_of_minute(to_timestamp(1630812366)) raw expr : to_start_of_minute(to_timestamp(1630812366)) -checked expr : to_start_of_minute(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_minute(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630812360000000 output type : Timestamp output domain : {1630812360000000..=1630812360000000} @@ -3248,7 +3248,7 @@ output : '2021-09-05 03:26:00.000000' ast : to_start_of_five_minutes(to_timestamp(1630812366)) raw expr : to_start_of_five_minutes(to_timestamp(1630812366)) -checked expr : to_start_of_five_minutes(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_five_minutes(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630812300000000 output type : Timestamp output domain : {1630812300000000..=1630812300000000} @@ -3257,7 +3257,7 @@ output : '2021-09-05 03:25:00.000000' ast : to_start_of_ten_minutes(to_timestamp(1630812366)) raw expr : to_start_of_ten_minutes(to_timestamp(1630812366)) -checked expr : to_start_of_ten_minutes(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_ten_minutes(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630812000000000 output type : Timestamp output domain : {1630812000000000..=1630812000000000} @@ -3266,7 +3266,7 @@ output : '2021-09-05 03:20:00.000000' ast : to_start_of_fifteen_minutes(to_timestamp(1630812366)) raw expr : to_start_of_fifteen_minutes(to_timestamp(1630812366)) -checked expr : to_start_of_fifteen_minutes(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_fifteen_minutes(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630811700000000 output type : Timestamp output domain : {1630811700000000..=1630811700000000} @@ -3275,7 +3275,7 @@ output : '2021-09-05 03:15:00.000000' ast : to_start_of_hour(to_timestamp(1630812366)) raw expr : to_start_of_hour(to_timestamp(1630812366)) -checked expr : to_start_of_hour(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_hour(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630810800000000 output type : Timestamp output domain : {1630810800000000..=1630810800000000} @@ -3284,7 +3284,7 @@ output : '2021-09-05 03:00:00.000000' ast : to_start_of_day(to_timestamp(1630812366)) raw expr : to_start_of_day(to_timestamp(1630812366)) -checked expr : to_start_of_day(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_day(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630800000000000 output type : Timestamp output domain : {1630800000000000..=1630800000000000} @@ -3293,7 +3293,7 @@ output : '2021-09-05 00:00:00.000000' ast : time_slot(to_timestamp(1630812366)) raw expr : time_slot(to_timestamp(1630812366)) -checked expr : time_slot(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : time_slot(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630810800000000 output type : Timestamp output domain : {1630810800000000..=1630810800000000} @@ -3302,7 +3302,7 @@ output : '2021-09-05 03:00:00.000000' ast : to_monday(to_timestamp(1630812366)) raw expr : to_monday(to_timestamp(1630812366)) -checked expr : to_monday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_monday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18869 output type : Date output domain : {18869..=18869} @@ -3311,7 +3311,7 @@ output : '2021-08-30' ast : to_start_of_week(to_timestamp(1630812366)) raw expr : to_start_of_week(to_timestamp(1630812366)) -checked expr : to_start_of_week(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_week(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18875 output type : Date output domain : {18875..=18875} @@ -3320,7 +3320,7 @@ output : '2021-09-05' ast : to_start_of_week(to_timestamp(1630812366)) raw expr : to_start_of_week(to_timestamp(1630812366)) -checked expr : to_start_of_week(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_week(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18875 output type : Date output domain : {18875..=18875} @@ -3329,7 +3329,7 @@ output : '2021-09-05' ast : to_start_of_week(to_timestamp(1630812366), 1) raw expr : to_start_of_week(to_timestamp(1630812366), 1) -checked expr : to_start_of_week(to_timestamp(CAST(1630812366_u32 AS Int64)), CAST(1_u8 AS Int64)) +checked expr : to_start_of_week(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp), CAST(1_u8 AS Int64)) optimized expr : 18869 output type : Date output domain : {18869..=18869} @@ -3338,7 +3338,7 @@ output : '2021-08-30' ast : to_start_of_month(to_timestamp(1630812366)) raw expr : to_start_of_month(to_timestamp(1630812366)) -checked expr : to_start_of_month(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_month(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18871 output type : Date output domain : {18871..=18871} @@ -3347,7 +3347,7 @@ output : '2021-09-01' ast : to_start_of_quarter(to_timestamp(1630812366)) raw expr : to_start_of_quarter(to_timestamp(1630812366)) -checked expr : to_start_of_quarter(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_quarter(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18809 output type : Date output domain : {18809..=18809} @@ -3356,7 +3356,7 @@ output : '2021-07-01' ast : to_start_of_year(to_timestamp(1630812366)) raw expr : to_start_of_year(to_timestamp(1630812366)) -checked expr : to_start_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_year(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18628 output type : Date output domain : {18628..=18628} @@ -3365,7 +3365,7 @@ output : '2021-01-01' ast : to_start_of_iso_year(to_timestamp(1630812366)) raw expr : to_start_of_iso_year(to_timestamp(1630812366)) -checked expr : to_start_of_iso_year(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_iso_year(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18631 output type : Date output domain : {18631..=18631} @@ -3374,7 +3374,7 @@ output : '2021-01-04' ast : date_trunc(year, to_timestamp(1630812366)) raw expr : to_start_of_year(to_timestamp(1630812366)) -checked expr : to_start_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_year(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18628 output type : Date output domain : {18628..=18628} @@ -3383,7 +3383,7 @@ output : '2021-01-01' ast : date_trunc(quarter, to_timestamp(1630812366)) raw expr : to_start_of_quarter(to_timestamp(1630812366)) -checked expr : to_start_of_quarter(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_quarter(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18809 output type : Date output domain : {18809..=18809} @@ -3392,7 +3392,7 @@ output : '2021-07-01' ast : date_trunc(month, to_timestamp(1630812366)) raw expr : to_start_of_month(to_timestamp(1630812366)) -checked expr : to_start_of_month(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_month(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18871 output type : Date output domain : {18871..=18871} @@ -3401,7 +3401,7 @@ output : '2021-09-01' ast : date_trunc(day, to_timestamp(1630812366)) raw expr : to_start_of_day(to_timestamp(1630812366)) -checked expr : to_start_of_day(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_day(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630800000000000 output type : Timestamp output domain : {1630800000000000..=1630800000000000} @@ -3410,7 +3410,7 @@ output : '2021-09-05 00:00:00.000000' ast : date_trunc(hour, to_timestamp(1630812366)) raw expr : to_start_of_hour(to_timestamp(1630812366)) -checked expr : to_start_of_hour(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_hour(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630810800000000 output type : Timestamp output domain : {1630810800000000..=1630810800000000} @@ -3419,7 +3419,7 @@ output : '2021-09-05 03:00:00.000000' ast : date_trunc(minute, to_timestamp(1630812366)) raw expr : to_start_of_minute(to_timestamp(1630812366)) -checked expr : to_start_of_minute(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_minute(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630812360000000 output type : Timestamp output domain : {1630812360000000..=1630812360000000} @@ -3428,7 +3428,7 @@ output : '2021-09-05 03:26:00.000000' ast : date_trunc(second, to_timestamp(1630812366)) raw expr : to_start_of_second(to_timestamp(1630812366)) -checked expr : to_start_of_second(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_start_of_second(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 1630812366000000 output type : Timestamp output domain : {1630812366000000..=1630812366000000} @@ -3437,7 +3437,7 @@ output : '2021-09-05 03:26:06.000000' ast : last_day(to_timestamp(1630812366), year) raw expr : to_last_of_year(to_timestamp(1630812366)) -checked expr : to_last_of_year(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_last_of_year(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18992 output type : Date output domain : {18992..=18992} @@ -3446,7 +3446,7 @@ output : '2021-12-31' ast : last_day(to_timestamp(1630812366), quarter) raw expr : to_last_of_quarter(to_timestamp(1630812366)) -checked expr : to_last_of_quarter(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_last_of_quarter(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18900 output type : Date output domain : {18900..=18900} @@ -3455,7 +3455,7 @@ output : '2021-09-30' ast : last_day(to_timestamp(1630812366), month) raw expr : to_last_of_month(to_timestamp(1630812366)) -checked expr : to_last_of_month(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_last_of_month(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18900 output type : Date output domain : {18900..=18900} @@ -3464,7 +3464,7 @@ output : '2021-09-30' ast : last_day(to_timestamp(1630812366), week) raw expr : to_last_of_week(to_timestamp(1630812366)) -checked expr : to_last_of_week(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_last_of_week(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18875 output type : Date output domain : {18875..=18875} @@ -3473,7 +3473,7 @@ output : '2021-09-05' ast : previous_day(to_timestamp(1630812366), monday) raw expr : to_previous_monday(to_timestamp(1630812366)) -checked expr : to_previous_monday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_previous_monday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18869 output type : Date output domain : {18869..=18869} @@ -3482,7 +3482,7 @@ output : '2021-08-30' ast : previous_day(to_timestamp(1630812366), tuesday) raw expr : to_previous_tuesday(to_timestamp(1630812366)) -checked expr : to_previous_tuesday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_previous_tuesday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18870 output type : Date output domain : {18870..=18870} @@ -3491,7 +3491,7 @@ output : '2021-08-31' ast : previous_day(to_timestamp(1630812366), wednesday) raw expr : to_previous_wednesday(to_timestamp(1630812366)) -checked expr : to_previous_wednesday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_previous_wednesday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18871 output type : Date output domain : {18871..=18871} @@ -3500,7 +3500,7 @@ output : '2021-09-01' ast : previous_day(to_timestamp(1630812366), thursday) raw expr : to_previous_thursday(to_timestamp(1630812366)) -checked expr : to_previous_thursday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_previous_thursday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18872 output type : Date output domain : {18872..=18872} @@ -3509,7 +3509,7 @@ output : '2021-09-02' ast : previous_day(to_timestamp(1630812366), friday) raw expr : to_previous_friday(to_timestamp(1630812366)) -checked expr : to_previous_friday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_previous_friday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18873 output type : Date output domain : {18873..=18873} @@ -3518,7 +3518,7 @@ output : '2021-09-03' ast : previous_day(to_timestamp(1630812366), saturday) raw expr : to_previous_saturday(to_timestamp(1630812366)) -checked expr : to_previous_saturday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_previous_saturday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18874 output type : Date output domain : {18874..=18874} @@ -3527,7 +3527,7 @@ output : '2021-09-04' ast : previous_day(to_timestamp(1630812366), sunday) raw expr : to_previous_sunday(to_timestamp(1630812366)) -checked expr : to_previous_sunday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_previous_sunday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18868 output type : Date output domain : {18868..=18868} @@ -3536,7 +3536,7 @@ output : '2021-08-29' ast : next_day(to_timestamp(1630812366), monday) raw expr : to_next_monday(to_timestamp(1630812366)) -checked expr : to_next_monday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_next_monday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18876 output type : Date output domain : {18876..=18876} @@ -3545,7 +3545,7 @@ output : '2021-09-06' ast : next_day(to_timestamp(1630812366), tuesday) raw expr : to_next_tuesday(to_timestamp(1630812366)) -checked expr : to_next_tuesday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_next_tuesday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18877 output type : Date output domain : {18877..=18877} @@ -3554,7 +3554,7 @@ output : '2021-09-07' ast : next_day(to_timestamp(1630812366), wednesday) raw expr : to_next_wednesday(to_timestamp(1630812366)) -checked expr : to_next_wednesday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_next_wednesday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18878 output type : Date output domain : {18878..=18878} @@ -3563,7 +3563,7 @@ output : '2021-09-08' ast : next_day(to_timestamp(1630812366), thursday) raw expr : to_next_thursday(to_timestamp(1630812366)) -checked expr : to_next_thursday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_next_thursday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18879 output type : Date output domain : {18879..=18879} @@ -3572,7 +3572,7 @@ output : '2021-09-09' ast : next_day(to_timestamp(1630812366), friday) raw expr : to_next_friday(to_timestamp(1630812366)) -checked expr : to_next_friday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_next_friday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18880 output type : Date output domain : {18880..=18880} @@ -3581,7 +3581,7 @@ output : '2021-09-10' ast : next_day(to_timestamp(1630812366), saturday) raw expr : to_next_saturday(to_timestamp(1630812366)) -checked expr : to_next_saturday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_next_saturday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18881 output type : Date output domain : {18881..=18881} @@ -3590,7 +3590,7 @@ output : '2021-09-11' ast : next_day(to_timestamp(1630812366), sunday) raw expr : to_next_sunday(to_timestamp(1630812366)) -checked expr : to_next_sunday(to_timestamp(CAST(1630812366_u32 AS Int64))) +checked expr : to_next_sunday(CAST(CAST(1630812366_u32 AS Int64) AS Timestamp)) optimized expr : 18882 output type : Date output domain : {18882..=18882} @@ -3599,7 +3599,7 @@ output : '2021-09-12' ast : date_diff(year, to_date(0), to_date(10000)) raw expr : diff_years(to_date(10000), to_date(0)) -checked expr : diff_years(to_date(CAST(10000_u16 AS Int64)), to_date(CAST(0_u8 AS Int64))) +checked expr : diff_years(CAST(CAST(10000_u16 AS Int64) AS Date), CAST(CAST(0_u8 AS Int64) AS Date)) optimized expr : 27_i64 output type : Int64 output domain : {27..=27} @@ -3608,7 +3608,7 @@ output : 27 ast : date_diff(year, to_date(10000), to_date(0)) raw expr : diff_years(to_date(0), to_date(10000)) -checked expr : diff_years(to_date(CAST(0_u8 AS Int64)), to_date(CAST(10000_u16 AS Int64))) +checked expr : diff_years(CAST(CAST(0_u8 AS Int64) AS Date), CAST(CAST(10000_u16 AS Int64) AS Date)) optimized expr : -27_i64 output type : Int64 output domain : {-27..=-27} @@ -3617,7 +3617,7 @@ output : -27 ast : date_diff(year, to_date('2000-01-01'), to_date('2024-12-31')) raw expr : diff_years(to_date('2024-12-31'), to_date('2000-01-01')) -checked expr : diff_years(to_date("2024-12-31"), to_date("2000-01-01")) +checked expr : diff_years(CAST("2024-12-31" AS Date), CAST("2000-01-01" AS Date)) optimized expr : 24_i64 output type : Int64 output domain : {24..=24} @@ -3626,7 +3626,7 @@ output : 24 ast : date_diff(year, to_date('2023-12-31'), to_date('2024-01-01')) raw expr : diff_years(to_date('2024-01-01'), to_date('2023-12-31')) -checked expr : diff_years(to_date("2024-01-01"), to_date("2023-12-31")) +checked expr : diff_years(CAST("2024-01-01" AS Date), CAST("2023-12-31" AS Date)) optimized expr : 1_i64 output type : Int64 output domain : {1..=1} @@ -3635,7 +3635,7 @@ output : 1 ast : date_diff(year, to_date('2024-01-01'), to_date('2023-12-31')) raw expr : diff_years(to_date('2023-12-31'), to_date('2024-01-01')) -checked expr : diff_years(to_date("2023-12-31"), to_date("2024-01-01")) +checked expr : diff_years(CAST("2023-12-31" AS Date), CAST("2024-01-01" AS Date)) optimized expr : -1_i64 output type : Int64 output domain : {-1..=-1} @@ -3644,7 +3644,7 @@ output : -1 ast : date_diff(year, to_timestamp('2023-11-12 09:38:18.165575'), to_timestamp('2025-03-27 21:01:35.423179')) raw expr : diff_years(to_timestamp('2025-03-27 21:01:35.423179'), to_timestamp('2023-11-12 09:38:18.165575')) -checked expr : diff_years(to_timestamp("2025-03-27 21:01:35.423179"), to_timestamp("2023-11-12 09:38:18.165575")) +checked expr : diff_years(CAST("2025-03-27 21:01:35.423179" AS Timestamp), CAST("2023-11-12 09:38:18.165575" AS Timestamp)) optimized expr : 2_i64 output type : Int64 output domain : {2..=2} @@ -3653,7 +3653,7 @@ output : 2 ast : date_diff(year, to_timestamp('2020-02-29 23:59:59.165575'), to_timestamp('2019-02-28 23:59:59.423179')) raw expr : diff_years(to_timestamp('2019-02-28 23:59:59.423179'), to_timestamp('2020-02-29 23:59:59.165575')) -checked expr : diff_years(to_timestamp("2019-02-28 23:59:59.423179"), to_timestamp("2020-02-29 23:59:59.165575")) +checked expr : diff_years(CAST("2019-02-28 23:59:59.423179" AS Timestamp), CAST("2020-02-29 23:59:59.165575" AS Timestamp)) optimized expr : -1_i64 output type : Int64 output domain : {-1..=-1} @@ -3662,7 +3662,7 @@ output : -1 ast : date_diff(month, to_date(0), to_date(10000)) raw expr : diff_months(to_date(10000), to_date(0)) -checked expr : diff_months(to_date(CAST(10000_u16 AS Int64)), to_date(CAST(0_u8 AS Int64))) +checked expr : diff_months(CAST(CAST(10000_u16 AS Int64) AS Date), CAST(CAST(0_u8 AS Int64) AS Date)) optimized expr : 328_i64 output type : Int64 output domain : {328..=328} @@ -3671,7 +3671,7 @@ output : 328 ast : date_diff(month, to_date(10000), to_date(0)) raw expr : diff_months(to_date(0), to_date(10000)) -checked expr : diff_months(to_date(CAST(0_u8 AS Int64)), to_date(CAST(10000_u16 AS Int64))) +checked expr : diff_months(CAST(CAST(0_u8 AS Int64) AS Date), CAST(CAST(10000_u16 AS Int64) AS Date)) optimized expr : -328_i64 output type : Int64 output domain : {-328..=-328} @@ -3680,7 +3680,7 @@ output : -328 ast : date_diff(month, to_date('2000-01-01'), to_date('2024-12-31')) raw expr : diff_months(to_date('2024-12-31'), to_date('2000-01-01')) -checked expr : diff_months(to_date("2024-12-31"), to_date("2000-01-01")) +checked expr : diff_months(CAST("2024-12-31" AS Date), CAST("2000-01-01" AS Date)) optimized expr : 299_i64 output type : Int64 output domain : {299..=299} @@ -3689,7 +3689,7 @@ output : 299 ast : date_diff(month, to_timestamp('2023-11-12 09:38:18.165575'), to_timestamp('2025-03-27 21:01:35.423179')) raw expr : diff_months(to_timestamp('2025-03-27 21:01:35.423179'), to_timestamp('2023-11-12 09:38:18.165575')) -checked expr : diff_months(to_timestamp("2025-03-27 21:01:35.423179"), to_timestamp("2023-11-12 09:38:18.165575")) +checked expr : diff_months(CAST("2025-03-27 21:01:35.423179" AS Timestamp), CAST("2023-11-12 09:38:18.165575" AS Timestamp)) optimized expr : 16_i64 output type : Int64 output domain : {16..=16} @@ -3698,7 +3698,7 @@ output : 16 ast : date_diff(month, to_timestamp('2020-02-29 23:59:59.165575'), to_timestamp('2019-02-28 23:59:59.423179')) raw expr : diff_months(to_timestamp('2019-02-28 23:59:59.423179'), to_timestamp('2020-02-29 23:59:59.165575')) -checked expr : diff_months(to_timestamp("2019-02-28 23:59:59.423179"), to_timestamp("2020-02-29 23:59:59.165575")) +checked expr : diff_months(CAST("2019-02-28 23:59:59.423179" AS Timestamp), CAST("2020-02-29 23:59:59.165575" AS Timestamp)) optimized expr : -12_i64 output type : Int64 output domain : {-12..=-12} @@ -3707,7 +3707,7 @@ output : -12 ast : date_diff(day, to_date(0), to_date(10000)) raw expr : diff_days(to_date(10000), to_date(0)) -checked expr : diff_days(to_date(CAST(10000_u16 AS Int64)), to_date(CAST(0_u8 AS Int64))) +checked expr : diff_days(CAST(CAST(10000_u16 AS Int64) AS Date), CAST(CAST(0_u8 AS Int64) AS Date)) optimized expr : 10000_i64 output type : Int64 output domain : {10000..=10000} @@ -3716,7 +3716,7 @@ output : 10000 ast : date_diff(day, to_date(10000), to_date(0)) raw expr : diff_days(to_date(0), to_date(10000)) -checked expr : diff_days(to_date(CAST(0_u8 AS Int64)), to_date(CAST(10000_u16 AS Int64))) +checked expr : diff_days(CAST(CAST(0_u8 AS Int64) AS Date), CAST(CAST(10000_u16 AS Int64) AS Date)) optimized expr : -10000_i64 output type : Int64 output domain : {-10000..=-10000} @@ -3725,7 +3725,7 @@ output : -10000 ast : date_diff(day, to_date('2000-01-01'), to_date('2024-12-31')) raw expr : diff_days(to_date('2024-12-31'), to_date('2000-01-01')) -checked expr : diff_days(to_date("2024-12-31"), to_date("2000-01-01")) +checked expr : diff_days(CAST("2024-12-31" AS Date), CAST("2000-01-01" AS Date)) optimized expr : 9131_i64 output type : Int64 output domain : {9131..=9131} @@ -3734,7 +3734,7 @@ output : 9131 ast : date_diff(day, to_timestamp('2023-11-12 09:38:18.165575'), to_timestamp('2025-03-27 21:01:35.423179')) raw expr : diff_days(to_timestamp('2025-03-27 21:01:35.423179'), to_timestamp('2023-11-12 09:38:18.165575')) -checked expr : diff_days(to_timestamp("2025-03-27 21:01:35.423179"), to_timestamp("2023-11-12 09:38:18.165575")) +checked expr : diff_days(CAST("2025-03-27 21:01:35.423179" AS Timestamp), CAST("2023-11-12 09:38:18.165575" AS Timestamp)) optimized expr : 501_i64 output type : Int64 output domain : {501..=501} @@ -3743,7 +3743,7 @@ output : 501 ast : date_diff(day, to_timestamp('2020-02-29 23:59:59.165575'), to_timestamp('2019-02-28 23:59:59.423179')) raw expr : diff_days(to_timestamp('2019-02-28 23:59:59.423179'), to_timestamp('2020-02-29 23:59:59.165575')) -checked expr : diff_days(to_timestamp("2019-02-28 23:59:59.423179"), to_timestamp("2020-02-29 23:59:59.165575")) +checked expr : diff_days(CAST("2019-02-28 23:59:59.423179" AS Timestamp), CAST("2020-02-29 23:59:59.165575" AS Timestamp)) optimized expr : -366_i64 output type : Int64 output domain : {-366..=-366} @@ -3752,7 +3752,7 @@ output : -366 ast : date_diff(hour, to_timestamp('2023-11-12 09:38:18.165575'), to_timestamp('2025-03-27 21:01:35.423179')) raw expr : diff_hours(to_timestamp('2025-03-27 21:01:35.423179'), to_timestamp('2023-11-12 09:38:18.165575')) -checked expr : diff_hours(to_timestamp("2025-03-27 21:01:35.423179"), to_timestamp("2023-11-12 09:38:18.165575")) +checked expr : diff_hours(CAST("2025-03-27 21:01:35.423179" AS Timestamp), CAST("2023-11-12 09:38:18.165575" AS Timestamp)) optimized expr : 12036_i64 output type : Int64 output domain : {12036..=12036} @@ -3761,7 +3761,7 @@ output : 12036 ast : date_diff(hour, to_timestamp('2020-02-29 23:59:59.165575'), to_timestamp('2019-02-28 23:59:59.423179')) raw expr : diff_hours(to_timestamp('2019-02-28 23:59:59.423179'), to_timestamp('2020-02-29 23:59:59.165575')) -checked expr : diff_hours(to_timestamp("2019-02-28 23:59:59.423179"), to_timestamp("2020-02-29 23:59:59.165575")) +checked expr : diff_hours(CAST("2019-02-28 23:59:59.423179" AS Timestamp), CAST("2020-02-29 23:59:59.165575" AS Timestamp)) optimized expr : -8784_i64 output type : Int64 output domain : {-8784..=-8784} @@ -3770,7 +3770,7 @@ output : -8784 ast : date_diff(minute, to_timestamp('2023-11-12 09:38:18.165575'), to_timestamp('2025-03-27 21:01:35.423179')) raw expr : diff_minutes(to_timestamp('2025-03-27 21:01:35.423179'), to_timestamp('2023-11-12 09:38:18.165575')) -checked expr : diff_minutes(to_timestamp("2025-03-27 21:01:35.423179"), to_timestamp("2023-11-12 09:38:18.165575")) +checked expr : diff_minutes(CAST("2025-03-27 21:01:35.423179" AS Timestamp), CAST("2023-11-12 09:38:18.165575" AS Timestamp)) optimized expr : 722123_i64 output type : Int64 output domain : {722123..=722123} @@ -3779,7 +3779,7 @@ output : 722123 ast : date_diff(minute, to_timestamp('2020-02-29 23:59:59.165575'), to_timestamp('2019-02-28 23:59:59.423179')) raw expr : diff_minutes(to_timestamp('2019-02-28 23:59:59.423179'), to_timestamp('2020-02-29 23:59:59.165575')) -checked expr : diff_minutes(to_timestamp("2019-02-28 23:59:59.423179"), to_timestamp("2020-02-29 23:59:59.165575")) +checked expr : diff_minutes(CAST("2019-02-28 23:59:59.423179" AS Timestamp), CAST("2020-02-29 23:59:59.165575" AS Timestamp)) optimized expr : -527040_i64 output type : Int64 output domain : {-527040..=-527040} @@ -3788,7 +3788,7 @@ output : -527040 ast : date_diff(second, to_timestamp('2023-11-12 09:38:18.165575'), to_timestamp('2025-03-27 21:01:35.423179')) raw expr : diff_seconds(to_timestamp('2025-03-27 21:01:35.423179'), to_timestamp('2023-11-12 09:38:18.165575')) -checked expr : diff_seconds(to_timestamp("2025-03-27 21:01:35.423179"), to_timestamp("2023-11-12 09:38:18.165575")) +checked expr : diff_seconds(CAST("2025-03-27 21:01:35.423179" AS Timestamp), CAST("2023-11-12 09:38:18.165575" AS Timestamp)) optimized expr : 43327397_i64 output type : Int64 output domain : {43327397..=43327397} @@ -3797,7 +3797,7 @@ output : 43327397 ast : date_diff(second, to_timestamp('2020-02-29 23:59:59.165575'), to_timestamp('2019-02-28 23:59:59.423179')) raw expr : diff_seconds(to_timestamp('2019-02-28 23:59:59.423179'), to_timestamp('2020-02-29 23:59:59.165575')) -checked expr : diff_seconds(to_timestamp("2019-02-28 23:59:59.423179"), to_timestamp("2020-02-29 23:59:59.165575")) +checked expr : diff_seconds(CAST("2019-02-28 23:59:59.423179" AS Timestamp), CAST("2020-02-29 23:59:59.165575" AS Timestamp)) optimized expr : -31622400_i64 output type : Int64 output domain : {-31622400..=-31622400} @@ -3806,7 +3806,7 @@ output : -31622400 ast : date_diff(second, to_timestamp('2020-02-29 23:59:59'), to_timestamp('2019-02-28 23:59:59')) raw expr : diff_seconds(to_timestamp('2019-02-28 23:59:59'), to_timestamp('2020-02-29 23:59:59')) -checked expr : diff_seconds(to_timestamp("2019-02-28 23:59:59"), to_timestamp("2020-02-29 23:59:59")) +checked expr : diff_seconds(CAST("2019-02-28 23:59:59" AS Timestamp), CAST("2020-02-29 23:59:59" AS Timestamp)) optimized expr : -31622400_i64 output type : Int64 output domain : {-31622400..=-31622400} diff --git a/src/query/functions/tests/it/scalars/testdata/geometry.txt b/src/query/functions/tests/it/scalars/testdata/geometry.txt index baa036adbc131..a54480f596286 100644 --- a/src/query/functions/tests/it/scalars/testdata/geometry.txt +++ b/src/query/functions/tests/it/scalars/testdata/geometry.txt @@ -9,7 +9,7 @@ output : 3936.390533556 ast : st_asewkb(to_geometry('SRID=4326;POINT(-122.35 37.55)')) raw expr : st_asewkb(to_geometry('SRID=4326;POINT(-122.35 37.55)')) -checked expr : st_asewkb(to_geometry("SRID=4326;POINT(-122.35 37.55)")) +checked expr : st_asewkb(CAST("SRID=4326;POINT(-122.35 37.55)" AS Geometry)) optimized expr : 0101000020E61000006666666666965EC06666666666C64240 output type : Binary output domain : Undefined @@ -18,7 +18,7 @@ output : 0101000020E61000006666666666965EC06666666666C64240 ast : st_asewkb(to_geometry('SRID=0;LINESTRING(0.75 0.75, -10 20)')) raw expr : st_asewkb(to_geometry('SRID=0;LINESTRING(0.75 0.75, -10 20)')) -checked expr : st_asewkb(to_geometry("SRID=0;LINESTRING(0.75 0.75, -10 20)")) +checked expr : st_asewkb(CAST("SRID=0;LINESTRING(0.75 0.75, -10 20)" AS Geometry)) optimized expr : 01020000200000000002000000000000000000E83F000000000000E83F00000000000024C00000000000003440 output type : Binary output domain : Undefined @@ -27,7 +27,7 @@ output : 01020000200000000002000000000000000000E83F000000000000E83F00000 ast : st_aswkb(to_geometry('POINT(-122.35 37.55)')) raw expr : st_aswkb(to_geometry('POINT(-122.35 37.55)')) -checked expr : st_aswkb(to_geometry("POINT(-122.35 37.55)")) +checked expr : st_aswkb(CAST("POINT(-122.35 37.55)" AS Geometry)) optimized expr : 01010000006666666666965EC06666666666C64240 output type : Binary output domain : Undefined @@ -36,7 +36,7 @@ output : 01010000006666666666965EC06666666666C64240 ast : st_aswkb(to_geometry('LINESTRING(0.75 0.75, -10 20)')) raw expr : st_aswkb(to_geometry('LINESTRING(0.75 0.75, -10 20)')) -checked expr : st_aswkb(to_geometry("LINESTRING(0.75 0.75, -10 20)")) +checked expr : st_aswkb(CAST("LINESTRING(0.75 0.75, -10 20)" AS Geometry)) optimized expr : 010200000002000000000000000000E83F000000000000E83F00000000000024C00000000000003440 output type : Binary output domain : Undefined @@ -45,7 +45,7 @@ output : 010200000002000000000000000000E83F000000000000E83F0000000000002 ast : st_asewkt(to_geometry('SRID=4326;POINT(-122.35 37.55)')) raw expr : st_asewkt(to_geometry('SRID=4326;POINT(-122.35 37.55)')) -checked expr : st_asewkt(to_geometry("SRID=4326;POINT(-122.35 37.55)")) +checked expr : st_asewkt(CAST("SRID=4326;POINT(-122.35 37.55)" AS Geometry)) optimized expr : "SRID=4326;POINT(-122.35 37.55)" output type : String output domain : {"SRID=4326;POINT(-122.35 37.55)"..="SRID=4326;POINT(-122.35 37.55)"} @@ -54,7 +54,7 @@ output : 'SRID=4326;POINT(-122.35 37.55)' ast : st_asewkt(to_geometry('SRID=0;LINESTRING(0.75 0.75, -10 20)')) raw expr : st_asewkt(to_geometry('SRID=0;LINESTRING(0.75 0.75, -10 20)')) -checked expr : st_asewkt(to_geometry("SRID=0;LINESTRING(0.75 0.75, -10 20)")) +checked expr : st_asewkt(CAST("SRID=0;LINESTRING(0.75 0.75, -10 20)" AS Geometry)) optimized expr : "LINESTRING(0.75 0.75,-10 20)" output type : String output domain : {"LINESTRING(0.75 0.75,-10 20)"..="LINESTRING(0.75 0.75,-10 20)"} @@ -63,7 +63,7 @@ output : 'LINESTRING(0.75 0.75,-10 20)' ast : st_asewkt(to_geometry('POINT(-122.35 37.55)')) raw expr : st_asewkt(to_geometry('POINT(-122.35 37.55)')) -checked expr : st_asewkt(to_geometry("POINT(-122.35 37.55)")) +checked expr : st_asewkt(CAST("POINT(-122.35 37.55)" AS Geometry)) optimized expr : "POINT(-122.35 37.55)" output type : String output domain : {"POINT(-122.35 37.55)"..="POINT(-122.35 37.55)"} @@ -72,7 +72,7 @@ output : 'POINT(-122.35 37.55)' ast : st_asewkt(to_geometry('LINESTRING(0.75 0.75, -10 20)')) raw expr : st_asewkt(to_geometry('LINESTRING(0.75 0.75, -10 20)')) -checked expr : st_asewkt(to_geometry("LINESTRING(0.75 0.75, -10 20)")) +checked expr : st_asewkt(CAST("LINESTRING(0.75 0.75, -10 20)" AS Geometry)) optimized expr : "LINESTRING(0.75 0.75,-10 20)" output type : String output domain : {"LINESTRING(0.75 0.75,-10 20)"..="LINESTRING(0.75 0.75,-10 20)"} @@ -81,7 +81,7 @@ output : 'LINESTRING(0.75 0.75,-10 20)' ast : ST_CONTAINS(TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))'), TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))')) raw expr : ST_CONTAINS(TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))'), TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))')) -checked expr : st_contains(to_geometry("POLYGON((-2 0, 0 2, 2 0, -2 0))"), to_geometry("POLYGON((-2 0, 0 2, 2 0, -2 0))")) +checked expr : st_contains(CAST("POLYGON((-2 0, 0 2, 2 0, -2 0))" AS Geometry), CAST("POLYGON((-2 0, 0 2, 2 0, -2 0))" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -90,7 +90,7 @@ output : true ast : ST_CONTAINS(TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))'), TO_GEOMETRY('POLYGON((-1 0, 0 1, 1 0, -1 0))')) raw expr : ST_CONTAINS(TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))'), TO_GEOMETRY('POLYGON((-1 0, 0 1, 1 0, -1 0))')) -checked expr : st_contains(to_geometry("POLYGON((-2 0, 0 2, 2 0, -2 0))"), to_geometry("POLYGON((-1 0, 0 1, 1 0, -1 0))")) +checked expr : st_contains(CAST("POLYGON((-2 0, 0 2, 2 0, -2 0))" AS Geometry), CAST("POLYGON((-1 0, 0 1, 1 0, -1 0))" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -99,7 +99,7 @@ output : true ast : ST_CONTAINS(TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))'), TO_GEOMETRY('LINESTRING(-1 1, 0 2, 1 1))')) raw expr : ST_CONTAINS(TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))'), TO_GEOMETRY('LINESTRING(-1 1, 0 2, 1 1))')) -checked expr : st_contains(to_geometry("POLYGON((-2 0, 0 2, 2 0, -2 0))"), to_geometry("LINESTRING(-1 1, 0 2, 1 1))")) +checked expr : st_contains(CAST("POLYGON((-2 0, 0 2, 2 0, -2 0))" AS Geometry), CAST("LINESTRING(-1 1, 0 2, 1 1))" AS Geometry)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -108,7 +108,7 @@ output : false ast : ST_CONTAINS(TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))'), TO_GEOMETRY('LINESTRING(-2 0, 0 0, 0 1))')) raw expr : ST_CONTAINS(TO_GEOMETRY('POLYGON((-2 0, 0 2, 2 0, -2 0))'), TO_GEOMETRY('LINESTRING(-2 0, 0 0, 0 1))')) -checked expr : st_contains(to_geometry("POLYGON((-2 0, 0 2, 2 0, -2 0))"), to_geometry("LINESTRING(-2 0, 0 0, 0 1))")) +checked expr : st_contains(CAST("POLYGON((-2 0, 0 2, 2 0, -2 0))" AS Geometry), CAST("LINESTRING(-2 0, 0 0, 0 1))" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -117,7 +117,7 @@ output : true ast : st_endpoint(to_geometry('LINESTRING(1 1, 2 2, 3 3, 4 4)')) raw expr : st_endpoint(to_geometry('LINESTRING(1 1, 2 2, 3 3, 4 4)')) -checked expr : st_endpoint(to_geometry("LINESTRING(1 1, 2 2, 3 3, 4 4)")) +checked expr : st_endpoint(CAST("LINESTRING(1 1, 2 2, 3 3, 4 4)" AS Geometry)) optimized expr : "POINT(4 4)" output type : Geometry NULL output domain : Undefined @@ -126,7 +126,7 @@ output : 'POINT(4 4)' ast : st_dimension(to_geometry('POINT(-122.35 37.55)')) raw expr : st_dimension(to_geometry('POINT(-122.35 37.55)')) -checked expr : st_dimension(to_geometry("POINT(-122.35 37.55)")) +checked expr : st_dimension(CAST("POINT(-122.35 37.55)" AS Geometry)) optimized expr : 0_i32 output type : Int32 NULL output domain : {0..=0} @@ -135,7 +135,7 @@ output : 0 ast : st_dimension(to_geometry('MULTIPOINT((-122.35 37.55),(0 -90))')) raw expr : st_dimension(to_geometry('MULTIPOINT((-122.35 37.55),(0 -90))')) -checked expr : st_dimension(to_geometry("MULTIPOINT((-122.35 37.55),(0 -90))")) +checked expr : st_dimension(CAST("MULTIPOINT((-122.35 37.55),(0 -90))" AS Geometry)) optimized expr : 0_i32 output type : Int32 NULL output domain : {0..=0} @@ -144,7 +144,7 @@ output : 0 ast : st_dimension(to_geometry('LINESTRING(-124.2 42,-120.01 41.99)')) raw expr : st_dimension(to_geometry('LINESTRING(-124.2 42,-120.01 41.99)')) -checked expr : st_dimension(to_geometry("LINESTRING(-124.2 42,-120.01 41.99)")) +checked expr : st_dimension(CAST("LINESTRING(-124.2 42,-120.01 41.99)" AS Geometry)) optimized expr : 1_i32 output type : Int32 NULL output domain : {1..=1} @@ -153,7 +153,7 @@ output : 1 ast : st_dimension(to_geometry('LINESTRING(-124.2 42,-120.01 41.99,-122.5 42.01)')) raw expr : st_dimension(to_geometry('LINESTRING(-124.2 42,-120.01 41.99,-122.5 42.01)')) -checked expr : st_dimension(to_geometry("LINESTRING(-124.2 42,-120.01 41.99,-122.5 42.01)")) +checked expr : st_dimension(CAST("LINESTRING(-124.2 42,-120.01 41.99,-122.5 42.01)" AS Geometry)) optimized expr : 1_i32 output type : Int32 NULL output domain : {1..=1} @@ -162,7 +162,7 @@ output : 1 ast : st_dimension(to_geometry('MULTILINESTRING((-124.2 42,-120.01 41.99,-122.5 42.01),(10 0,20 10,30 0))')) raw expr : st_dimension(to_geometry('MULTILINESTRING((-124.2 42,-120.01 41.99,-122.5 42.01),(10 0,20 10,30 0))')) -checked expr : st_dimension(to_geometry("MULTILINESTRING((-124.2 42,-120.01 41.99,-122.5 42.01),(10 0,20 10,30 0))")) +checked expr : st_dimension(CAST("MULTILINESTRING((-124.2 42,-120.01 41.99,-122.5 42.01),(10 0,20 10,30 0))" AS Geometry)) optimized expr : 1_i32 output type : Int32 NULL output domain : {1..=1} @@ -171,7 +171,7 @@ output : 1 ast : st_dimension(to_geometry('POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))')) raw expr : st_dimension(to_geometry('POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))')) -checked expr : st_dimension(to_geometry("POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))")) +checked expr : st_dimension(CAST("POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))" AS Geometry)) optimized expr : 2_i32 output type : Int32 NULL output domain : {2..=2} @@ -180,7 +180,7 @@ output : 2 ast : st_dimension(to_geometry('MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))')) raw expr : st_dimension(to_geometry('MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))')) -checked expr : st_dimension(to_geometry("MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))")) +checked expr : st_dimension(CAST("MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))" AS Geometry)) optimized expr : 2_i32 output type : Int32 NULL output domain : {2..=2} @@ -189,7 +189,7 @@ output : 2 ast : st_dimension(to_geometry('GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))')) raw expr : st_dimension(to_geometry('GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))')) -checked expr : st_dimension(to_geometry("GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))")) +checked expr : st_dimension(CAST("GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))" AS Geometry)) optimized expr : 2_i32 output type : Int32 NULL output domain : {2..=2} @@ -198,7 +198,7 @@ output : 2 ast : st_distance(to_geometry('POINT(0 0)'), to_geometry('POINT(1 1)')) raw expr : st_distance(to_geometry('POINT(0 0)'), to_geometry('POINT(1 1)')) -checked expr : st_distance(to_geometry("POINT(0 0)"), to_geometry("POINT(1 1)")) +checked expr : st_distance(CAST("POINT(0 0)" AS Geometry), CAST("POINT(1 1)" AS Geometry)) optimized expr : 1.414213562_f64 output type : Float64 output domain : {1.414213562..=1.414213562} @@ -273,7 +273,7 @@ output : 'POINT(1.0004425048828125 2.0001983642578125)' ast : st_length(to_geometry('POINT(1 1)')) raw expr : st_length(to_geometry('POINT(1 1)')) -checked expr : st_length(to_geometry("POINT(1 1)")) +checked expr : st_length(CAST("POINT(1 1)" AS Geometry)) optimized expr : 0_f64 output type : Float64 output domain : {0..=0} @@ -282,7 +282,7 @@ output : 0 ast : st_length(to_geometry('LINESTRING(0 0, 1 1)')) raw expr : st_length(to_geometry('LINESTRING(0 0, 1 1)')) -checked expr : st_length(to_geometry("LINESTRING(0 0, 1 1)")) +checked expr : st_length(CAST("LINESTRING(0 0, 1 1)" AS Geometry)) optimized expr : 1.414213562_f64 output type : Float64 output domain : {1.414213562..=1.414213562} @@ -291,7 +291,7 @@ output : 1.414213562 ast : st_length(to_geometry('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')) raw expr : st_length(to_geometry('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')) -checked expr : st_length(to_geometry("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))")) +checked expr : st_length(CAST("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))" AS Geometry)) optimized expr : 0_f64 output type : Float64 output domain : {0..=0} @@ -413,7 +413,7 @@ evaluation (internal): ast : st_npoints(to_geometry('POINT(66 12)')) raw expr : st_npoints(to_geometry('POINT(66 12)')) -checked expr : st_npoints(to_geometry("POINT(66 12)")) +checked expr : st_npoints(CAST("POINT(66 12)" AS Geometry)) optimized expr : 1_u32 output type : UInt32 output domain : {1..=1} @@ -422,7 +422,7 @@ output : 1 ast : st_npoints(to_geometry('MULTIPOINT((45 21), (12 54))')) raw expr : st_npoints(to_geometry('MULTIPOINT((45 21), (12 54))')) -checked expr : st_npoints(to_geometry("MULTIPOINT((45 21), (12 54))")) +checked expr : st_npoints(CAST("MULTIPOINT((45 21), (12 54))" AS Geometry)) optimized expr : 2_u32 output type : UInt32 output domain : {2..=2} @@ -431,7 +431,7 @@ output : 2 ast : st_npoints(to_geometry('LINESTRING(40 60, 50 50, 60 40)')) raw expr : st_npoints(to_geometry('LINESTRING(40 60, 50 50, 60 40)')) -checked expr : st_npoints(to_geometry("LINESTRING(40 60, 50 50, 60 40)")) +checked expr : st_npoints(CAST("LINESTRING(40 60, 50 50, 60 40)" AS Geometry)) optimized expr : 3_u32 output type : UInt32 output domain : {3..=3} @@ -440,7 +440,7 @@ output : 3 ast : st_npoints(to_geometry('MULTILINESTRING((1 1, 32 17), (33 12, 73 49, 87.1 6.1))')) raw expr : st_npoints(to_geometry('MULTILINESTRING((1 1, 32 17), (33 12, 73 49, 87.1 6.1))')) -checked expr : st_npoints(to_geometry("MULTILINESTRING((1 1, 32 17), (33 12, 73 49, 87.1 6.1))")) +checked expr : st_npoints(CAST("MULTILINESTRING((1 1, 32 17), (33 12, 73 49, 87.1 6.1))" AS Geometry)) optimized expr : 5_u32 output type : UInt32 output domain : {5..=5} @@ -449,7 +449,7 @@ output : 5 ast : st_npoints(to_geometry('POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))')) raw expr : st_npoints(to_geometry('POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))')) -checked expr : st_npoints(to_geometry("POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))")) +checked expr : st_npoints(CAST("POLYGON((17 17, 17 30, 30 30, 30 17, 17 17))" AS Geometry)) optimized expr : 5_u32 output type : UInt32 output domain : {5..=5} @@ -458,7 +458,7 @@ output : 5 ast : st_npoints(to_geometry('MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))')) raw expr : st_npoints(to_geometry('MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))')) -checked expr : st_npoints(to_geometry("MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))")) +checked expr : st_npoints(CAST("MULTIPOLYGON(((-10 0,0 10,10 0,-10 0)),((-10 40,10 40,0 20,-10 40)))" AS Geometry)) optimized expr : 8_u32 output type : UInt32 output domain : {8..=8} @@ -467,7 +467,7 @@ output : 8 ast : st_npoints(to_geometry('GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))')) raw expr : st_npoints(to_geometry('GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))')) -checked expr : st_npoints(to_geometry("GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))")) +checked expr : st_npoints(CAST("GEOMETRYCOLLECTION(POLYGON((-10 0,0 10,10 0,-10 0)),LINESTRING(40 60, 50 50, 60 40), POINT(99 11))" AS Geometry)) optimized expr : 8_u32 output type : UInt32 output domain : {8..=8} @@ -476,7 +476,7 @@ output : 8 ast : ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 1) raw expr : ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), 1) -checked expr : st_pointn(to_geometry("LINESTRING(1 1, 2 2, 3 3, 4 4)"), CAST(1_u8 AS Int32)) +checked expr : st_pointn(CAST("LINESTRING(1 1, 2 2, 3 3, 4 4)" AS Geometry), CAST(1_u8 AS Int32)) optimized expr : "POINT(1 1)" output type : Geometry NULL output domain : Undefined @@ -485,7 +485,7 @@ output : 'POINT(1 1)' ast : ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), -2) raw expr : ST_POINTN(TO_GEOMETRY('LINESTRING(1 1, 2 2, 3 3, 4 4)'), minus(2)) -checked expr : st_pointn(to_geometry("LINESTRING(1 1, 2 2, 3 3, 4 4)"), CAST(minus(2_u8) AS Int32)) +checked expr : st_pointn(CAST("LINESTRING(1 1, 2 2, 3 3, 4 4)" AS Geometry), CAST(minus(2_u8) AS Int32)) optimized expr : "POINT(3 3)" output type : Geometry NULL output domain : Undefined @@ -494,7 +494,7 @@ output : 'POINT(3 3)' ast : st_setsrid(to_geometry('POINT(13 51)'), 4326) raw expr : st_setsrid(to_geometry('POINT(13 51)'), 4326) -checked expr : st_setsrid(to_geometry("POINT(13 51)"), CAST(4326_u16 AS Int32)) +checked expr : st_setsrid(CAST("POINT(13 51)" AS Geometry), CAST(4326_u16 AS Int32)) optimized expr : "SRID=4326;POINT(13 51)" output type : Geometry output domain : Undefined @@ -539,7 +539,7 @@ output : NULL ast : st_startpoint(to_geometry('LINESTRING(1 1, 2 2, 3 3, 4 4)')) raw expr : st_startpoint(to_geometry('LINESTRING(1 1, 2 2, 3 3, 4 4)')) -checked expr : st_startpoint(to_geometry("LINESTRING(1 1, 2 2, 3 3, 4 4)")) +checked expr : st_startpoint(CAST("LINESTRING(1 1, 2 2, 3 3, 4 4)" AS Geometry)) optimized expr : "POINT(1 1)" output type : Geometry NULL output domain : Undefined @@ -602,7 +602,7 @@ output : NULL ast : to_geometry('POINT(1820.12 890.56)') raw expr : to_geometry('POINT(1820.12 890.56)') -checked expr : to_geometry("POINT(1820.12 890.56)") +checked expr : CAST("POINT(1820.12 890.56)" AS Geometry) optimized expr : "POINT(1820.12 890.56)" output type : Geometry output domain : Undefined @@ -611,7 +611,7 @@ output : 'POINT(1820.12 890.56)' ast : to_geometry('SRID=4326;POINT(1820.12 890.56)') raw expr : to_geometry('SRID=4326;POINT(1820.12 890.56)') -checked expr : to_geometry("SRID=4326;POINT(1820.12 890.56)") +checked expr : CAST("SRID=4326;POINT(1820.12 890.56)" AS Geometry) optimized expr : "SRID=4326;POINT(1820.12 890.56)" output type : Geometry output domain : Undefined @@ -629,7 +629,7 @@ output : 'SRID=4326;POINT(1820.12 890.56)' ast : to_geometry('0101000020797f000066666666a9cb17411f85ebc19e325641') raw expr : to_geometry('0101000020797f000066666666a9cb17411f85ebc19e325641') -checked expr : to_geometry("0101000020797f000066666666a9cb17411f85ebc19e325641") +checked expr : CAST("0101000020797f000066666666a9cb17411f85ebc19e325641" AS Geometry) optimized expr : "SRID=32633;POINT(389866.35 5819003.03)" output type : Geometry output domain : Undefined @@ -647,7 +647,7 @@ output : 'SRID=4326;POINT(389866.35 5819003.03)' ast : to_geometry(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641')) raw expr : to_geometry(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641')) -checked expr : to_geometry(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641")) +checked expr : CAST(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641") AS Geometry) optimized expr : "SRID=32633;POINT(389866.35 5819003.03)" output type : Geometry output domain : Undefined @@ -665,7 +665,7 @@ output : 'SRID=4326;POINT(389866.35 5819003.03)' ast : to_geometry('{"coordinates":[[389866,5819003],[390000,5830000]],"type":"LineString"}') raw expr : to_geometry('{"coordinates":[[389866,5819003],[390000,5830000]],"type":"LineString"}') -checked expr : to_geometry("{\"coordinates\":[[389866,5819003],[390000,5830000]],\"type\":\"LineString\"}") +checked expr : CAST("{\"coordinates\":[[389866,5819003],[390000,5830000]],\"type\":\"LineString\"}" AS Geometry) optimized expr : "LINESTRING(389866 5819003,390000 5830000)" output type : Geometry output domain : Undefined @@ -683,7 +683,7 @@ output : 'SRID=4326;LINESTRING(389866 5819003,390000 5830000)' ast : to_string(st_makegeompoint(7.0, -8.0)) raw expr : to_string(st_makegeompoint(7.0, minus(8.0))) -checked expr : to_string(st_makegeompoint(CAST(7.0_d128(2,1) AS Float64), CAST(minus(8.0_d128(2,1)) AS Float64))) +checked expr : CAST(st_makegeompoint(CAST(7.0_d128(2,1) AS Float64), CAST(minus(8.0_d128(2,1)) AS Float64)) AS String) optimized expr : "POINT(7 -8)" output type : String output domain : {"POINT(7 -8)"..="POINT(7 -8)"} @@ -692,7 +692,7 @@ output : 'POINT(7 -8)' ast : to_string(st_makegeompoint(a, b)) raw expr : to_string(st_makegeompoint(a::Float64, b::Float64)) -checked expr : to_string(st_makegeompoint(a, b)) +checked expr : CAST(st_makegeompoint(a, b) AS String) evaluation: +--------+---------+---------+--------------+ | | a | b | Output | @@ -715,7 +715,7 @@ evaluation (internal): ast : try_to_geometry(NULL) raw expr : try_to_geometry(NULL) -checked expr : try_to_geometry(CAST(NULL AS Variant NULL)) +checked expr : TRY_CAST(CAST(NULL AS Variant NULL) AS Geometry NULL) optimized expr : NULL output type : Geometry NULL output domain : {NULL} @@ -724,7 +724,7 @@ output : NULL ast : try_to_geometry('nuLL') raw expr : try_to_geometry('nuLL') -checked expr : try_to_geometry("nuLL") +checked expr : TRY_CAST("nuLL" AS Geometry NULL) optimized expr : NULL output type : Geometry NULL output domain : {NULL} @@ -733,7 +733,7 @@ output : NULL ast : try_to_geometry('null') raw expr : try_to_geometry('null') -checked expr : try_to_geometry("null") +checked expr : TRY_CAST("null" AS Geometry NULL) optimized expr : NULL output type : Geometry NULL output domain : {NULL} @@ -742,7 +742,7 @@ output : NULL ast : try_to_geometry('SRID=4326;POINT(1820.12 890.56)') raw expr : try_to_geometry('SRID=4326;POINT(1820.12 890.56)') -checked expr : try_to_geometry("SRID=4326;POINT(1820.12 890.56)") +checked expr : TRY_CAST("SRID=4326;POINT(1820.12 890.56)" AS Geometry NULL) optimized expr : "SRID=4326;POINT(1820.12 890.56)" output type : Geometry NULL output domain : Undefined @@ -760,7 +760,7 @@ output : 'SRID=4326;POINT(1820.12 890.56)' ast : try_to_geometry('0101000020797f000066666666a9cb17411f85ebc19e325641') raw expr : try_to_geometry('0101000020797f000066666666a9cb17411f85ebc19e325641') -checked expr : try_to_geometry("0101000020797f000066666666a9cb17411f85ebc19e325641") +checked expr : TRY_CAST("0101000020797f000066666666a9cb17411f85ebc19e325641" AS Geometry NULL) optimized expr : "SRID=32633;POINT(389866.35 5819003.03)" output type : Geometry NULL output domain : Undefined @@ -778,7 +778,7 @@ output : 'SRID=4326;POINT(389866.35 5819003.03)' ast : try_to_geometry(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641')) raw expr : try_to_geometry(unhex('0101000020797f000066666666a9cb17411f85ebc19e325641')) -checked expr : try_to_geometry(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641")) +checked expr : TRY_CAST(from_hex("0101000020797f000066666666a9cb17411f85ebc19e325641") AS Geometry NULL) optimized expr : "SRID=32633;POINT(389866.35 5819003.03)" output type : Geometry NULL output domain : Undefined @@ -796,7 +796,7 @@ output : 'SRID=4326;POINT(389866.35 5819003.03)' ast : try_to_geometry('{"coordinates":[[389866,5819003],[390000,5830000]],"type":"LineString"}') raw expr : try_to_geometry('{"coordinates":[[389866,5819003],[390000,5830000]],"type":"LineString"}') -checked expr : try_to_geometry("{\"coordinates\":[[389866,5819003],[390000,5830000]],\"type\":\"LineString\"}") +checked expr : TRY_CAST("{\"coordinates\":[[389866,5819003],[390000,5830000]],\"type\":\"LineString\"}" AS Geometry NULL) optimized expr : "LINESTRING(389866 5819003,390000 5830000)" output type : Geometry NULL output domain : Undefined @@ -814,7 +814,7 @@ output : 'SRID=4326;LINESTRING(389866 5819003,390000 5830000)' ast : try_to_geometry('POINT(1820.12 890.56)') raw expr : try_to_geometry('POINT(1820.12 890.56)') -checked expr : try_to_geometry("POINT(1820.12 890.56)") +checked expr : TRY_CAST("POINT(1820.12 890.56)" AS Geometry NULL) optimized expr : "POINT(1820.12 890.56)" output type : Geometry NULL output domain : Undefined @@ -823,7 +823,7 @@ output : 'POINT(1820.12 890.56)' ast : try_to_geometry('SRID=4326;POINT(1820.12 890.56)') raw expr : try_to_geometry('SRID=4326;POINT(1820.12 890.56)') -checked expr : try_to_geometry("SRID=4326;POINT(1820.12 890.56)") +checked expr : TRY_CAST("SRID=4326;POINT(1820.12 890.56)" AS Geometry NULL) optimized expr : "SRID=4326;POINT(1820.12 890.56)" output type : Geometry NULL output domain : Undefined @@ -850,7 +850,7 @@ output : NULL ast : try_to_geometry(unhex('1234')) raw expr : try_to_geometry(unhex('1234')) -checked expr : try_to_geometry(from_hex("1234")) +checked expr : TRY_CAST(from_hex("1234") AS Geometry NULL) optimized expr : NULL output type : Geometry NULL output domain : {NULL} @@ -868,7 +868,7 @@ output : NULL ast : try_to_geometry('{"coordinates":[],"type":"LineString"}') raw expr : try_to_geometry('{"coordinates":[],"type":"LineString"}') -checked expr : try_to_geometry("{\"coordinates\":[],\"type\":\"LineString\"}") +checked expr : TRY_CAST("{\"coordinates\":[],\"type\":\"LineString\"}" AS Geometry NULL) optimized expr : "LINESTRING EMPTY" output type : Geometry NULL output domain : Undefined @@ -1011,7 +1011,7 @@ evaluation (internal): ast : st_xmax(to_geometry('POINT(-180 0)')) raw expr : st_xmax(to_geometry('POINT(-180 0)')) -checked expr : st_xmax(to_geometry("POINT(-180 0)")) +checked expr : st_xmax(CAST("POINT(-180 0)" AS Geometry)) optimized expr : -180_f64 output type : Float64 NULL output domain : {-180..=-180} @@ -1020,7 +1020,7 @@ output : -180 ast : st_xmax(to_geometry('LINESTRING(-179 0, 179 0)')) raw expr : st_xmax(to_geometry('LINESTRING(-179 0, 179 0)')) -checked expr : st_xmax(to_geometry("LINESTRING(-179 0, 179 0)")) +checked expr : st_xmax(CAST("LINESTRING(-179 0, 179 0)" AS Geometry)) optimized expr : 179_f64 output type : Float64 NULL output domain : {179..=179} @@ -1029,7 +1029,7 @@ output : 179 ast : st_xmax(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))')) raw expr : st_xmax(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))')) -checked expr : st_xmax(to_geometry("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))")) +checked expr : st_xmax(CAST("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))" AS Geometry)) optimized expr : 45_f64 output type : Float64 NULL output domain : {45..=45} @@ -1038,7 +1038,7 @@ output : 45 ast : st_xmax(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)')) raw expr : st_xmax(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)')) -checked expr : st_xmax(to_geometry("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)")) +checked expr : st_xmax(CAST("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)" AS Geometry)) optimized expr : 40_f64 output type : Float64 NULL output domain : {40..=40} @@ -1047,7 +1047,7 @@ output : 40 ast : st_xmax(to_geometry('MULTILINESTRING((10 10, 20 20, 10 40), EMPTY)')) raw expr : st_xmax(to_geometry('MULTILINESTRING((10 10, 20 20, 10 40), EMPTY)')) -checked expr : st_xmax(to_geometry("MULTILINESTRING((10 10, 20 20, 10 40), EMPTY)")) +checked expr : st_xmax(CAST("MULTILINESTRING((10 10, 20 20, 10 40), EMPTY)" AS Geometry)) optimized expr : 20_f64 output type : Float64 NULL output domain : {20..=20} @@ -1056,7 +1056,7 @@ output : 20 ast : st_xmin(to_geometry('POINT(-180 0)')) raw expr : st_xmin(to_geometry('POINT(-180 0)')) -checked expr : st_xmin(to_geometry("POINT(-180 0)")) +checked expr : st_xmin(CAST("POINT(-180 0)" AS Geometry)) optimized expr : -180_f64 output type : Float64 NULL output domain : {-180..=-180} @@ -1065,7 +1065,7 @@ output : -180 ast : st_xmin(to_geometry('LINESTRING(-179 0, 179 0)')) raw expr : st_xmin(to_geometry('LINESTRING(-179 0, 179 0)')) -checked expr : st_xmin(to_geometry("LINESTRING(-179 0, 179 0)")) +checked expr : st_xmin(CAST("LINESTRING(-179 0, 179 0)" AS Geometry)) optimized expr : -179_f64 output type : Float64 NULL output domain : {-179..=-179} @@ -1074,7 +1074,7 @@ output : -179 ast : st_xmin(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))')) raw expr : st_xmin(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))')) -checked expr : st_xmin(to_geometry("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))")) +checked expr : st_xmin(CAST("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))" AS Geometry)) optimized expr : 10_f64 output type : Float64 NULL output domain : {10..=10} @@ -1083,7 +1083,7 @@ output : 10 ast : st_xmin(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)')) raw expr : st_xmin(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)')) -checked expr : st_xmin(to_geometry("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)")) +checked expr : st_xmin(CAST("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)" AS Geometry)) optimized expr : 10_f64 output type : Float64 NULL output domain : {10..=10} @@ -1092,7 +1092,7 @@ output : 10 ast : st_xmin(to_geometry('MULTILINESTRING((10 10, 20 20, 10 40), EMPTY)')) raw expr : st_xmin(to_geometry('MULTILINESTRING((10 10, 20 20, 10 40), EMPTY)')) -checked expr : st_xmin(to_geometry("MULTILINESTRING((10 10, 20 20, 10 40), EMPTY)")) +checked expr : st_xmin(CAST("MULTILINESTRING((10 10, 20 20, 10 40), EMPTY)" AS Geometry)) optimized expr : 10_f64 output type : Float64 NULL output domain : {10..=10} @@ -1101,7 +1101,7 @@ output : 10 ast : st_ymax(to_geometry('POINT(-180 0)')) raw expr : st_ymax(to_geometry('POINT(-180 0)')) -checked expr : st_ymax(to_geometry("POINT(-180 0)")) +checked expr : st_ymax(CAST("POINT(-180 0)" AS Geometry)) optimized expr : 0_f64 output type : Float64 NULL output domain : {0..=0} @@ -1110,7 +1110,7 @@ output : 0 ast : st_ymax(to_geometry('LINESTRING(-179 1, 179 20)')) raw expr : st_ymax(to_geometry('LINESTRING(-179 1, 179 20)')) -checked expr : st_ymax(to_geometry("LINESTRING(-179 1, 179 20)")) +checked expr : st_ymax(CAST("LINESTRING(-179 1, 179 20)" AS Geometry)) optimized expr : 20_f64 output type : Float64 NULL output domain : {20..=20} @@ -1119,7 +1119,7 @@ output : 20 ast : st_ymax(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))')) raw expr : st_ymax(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))')) -checked expr : st_ymax(to_geometry("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))")) +checked expr : st_ymax(CAST("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))" AS Geometry)) optimized expr : 45_f64 output type : Float64 NULL output domain : {45..=45} @@ -1128,7 +1128,7 @@ output : 45 ast : st_ymax(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)')) raw expr : st_ymax(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)')) -checked expr : st_ymax(to_geometry("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)")) +checked expr : st_ymax(CAST("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)" AS Geometry)) optimized expr : 40_f64 output type : Float64 NULL output domain : {40..=40} @@ -1137,7 +1137,7 @@ output : 40 ast : st_ymax(to_geometry('MULTILINESTRING ((10 10, 20 20, 10 40), EMPTY)')) raw expr : st_ymax(to_geometry('MULTILINESTRING ((10 10, 20 20, 10 40), EMPTY)')) -checked expr : st_ymax(to_geometry("MULTILINESTRING ((10 10, 20 20, 10 40), EMPTY)")) +checked expr : st_ymax(CAST("MULTILINESTRING ((10 10, 20 20, 10 40), EMPTY)" AS Geometry)) optimized expr : 40_f64 output type : Float64 NULL output domain : {40..=40} @@ -1146,7 +1146,7 @@ output : 40 ast : st_ymin(to_geometry('POINT(-180 0)')) raw expr : st_ymin(to_geometry('POINT(-180 0)')) -checked expr : st_ymin(to_geometry("POINT(-180 0)")) +checked expr : st_ymin(CAST("POINT(-180 0)" AS Geometry)) optimized expr : 0_f64 output type : Float64 NULL output domain : {0..=0} @@ -1155,7 +1155,7 @@ output : 0 ast : st_ymin(to_geometry('LINESTRING(-179 1, 179 20)')) raw expr : st_ymin(to_geometry('LINESTRING(-179 1, 179 20)')) -checked expr : st_ymin(to_geometry("LINESTRING(-179 1, 179 20)")) +checked expr : st_ymin(CAST("LINESTRING(-179 1, 179 20)" AS Geometry)) optimized expr : 1_f64 output type : Float64 NULL output domain : {1..=1} @@ -1164,7 +1164,7 @@ output : 1 ast : st_ymin(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))')) raw expr : st_ymin(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))')) -checked expr : st_ymin(to_geometry("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))")) +checked expr : st_ymin(CAST("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POLYGON((40 40,20 45,45 30,40 40)))" AS Geometry)) optimized expr : 10_f64 output type : Float64 NULL output domain : {10..=10} @@ -1173,7 +1173,7 @@ output : 10 ast : st_ymin(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)')) raw expr : st_ymin(to_geometry('GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)')) -checked expr : st_ymin(to_geometry("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)")) +checked expr : st_ymin(CAST("GEOMETRYCOLLECTION(POINT(40 10),LINESTRING(10 10,20 20,10 40),POINT EMPTY)" AS Geometry)) optimized expr : 10_f64 output type : Float64 NULL output domain : {10..=10} @@ -1182,7 +1182,7 @@ output : 10 ast : st_ymin(to_geometry('MULTILINESTRING ((10 10, 20 20, 10 40), EMPTY)')) raw expr : st_ymin(to_geometry('MULTILINESTRING ((10 10, 20 20, 10 40), EMPTY)')) -checked expr : st_ymin(to_geometry("MULTILINESTRING ((10 10, 20 20, 10 40), EMPTY)")) +checked expr : st_ymin(CAST("MULTILINESTRING ((10 10, 20 20, 10 40), EMPTY)" AS Geometry)) optimized expr : 10_f64 output type : Float64 NULL output domain : {10..=10} @@ -1255,7 +1255,7 @@ evaluation (internal): ast : ST_INTERSECTS(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('LINESTRING(2 0, 0 2)')) raw expr : ST_INTERSECTS(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('LINESTRING(2 0, 0 2)')) -checked expr : st_intersects(to_geometry("POINT(0 0)"), to_geometry("LINESTRING(2 0, 0 2)")) +checked expr : st_intersects(CAST("POINT(0 0)" AS Geometry), CAST("LINESTRING(2 0, 0 2)" AS Geometry)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1264,7 +1264,7 @@ output : false ast : ST_INTERSECTS(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('LINESTRING(0 0, 0 2)')) raw expr : ST_INTERSECTS(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('LINESTRING(0 0, 0 2)')) -checked expr : st_intersects(to_geometry("POINT(0 0)"), to_geometry("LINESTRING(0 0, 0 2)")) +checked expr : st_intersects(CAST("POINT(0 0)" AS Geometry), CAST("LINESTRING(0 0, 0 2)" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1273,7 +1273,7 @@ output : true ast : ST_INTERSECTS(TO_GEOMETRY('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))'), TO_GEOMETRY('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))')) raw expr : ST_INTERSECTS(TO_GEOMETRY('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))'), TO_GEOMETRY('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))')) -checked expr : st_intersects(to_geometry("POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))"), to_geometry("POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))")) +checked expr : st_intersects(CAST("POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))" AS Geometry), CAST("POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1282,7 +1282,7 @@ output : true ast : ST_DISJOINT(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('LINESTRING(2 0, 0 2)')) raw expr : ST_DISJOINT(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('LINESTRING(2 0, 0 2)')) -checked expr : st_disjoint(to_geometry("POINT(0 0)"), to_geometry("LINESTRING(2 0, 0 2)")) +checked expr : st_disjoint(CAST("POINT(0 0)" AS Geometry), CAST("LINESTRING(2 0, 0 2)" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1291,7 +1291,7 @@ output : true ast : ST_DISJOINT(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('LINESTRING(0 0, 0 2)')) raw expr : ST_DISJOINT(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('LINESTRING(0 0, 0 2)')) -checked expr : st_disjoint(to_geometry("POINT(0 0)"), to_geometry("LINESTRING(0 0, 0 2)")) +checked expr : st_disjoint(CAST("POINT(0 0)" AS Geometry), CAST("LINESTRING(0 0, 0 2)" AS Geometry)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1300,7 +1300,7 @@ output : false ast : ST_DISJOINT(TO_GEOMETRY('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))'), TO_GEOMETRY('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))')) raw expr : ST_DISJOINT(TO_GEOMETRY('POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))'), TO_GEOMETRY('POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))')) -checked expr : st_disjoint(to_geometry("POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))"), to_geometry("POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))")) +checked expr : st_disjoint(CAST("POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))" AS Geometry), CAST("POLYGON((1 1, 3 1, 3 3, 1 3, 1 1))" AS Geometry)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1309,7 +1309,7 @@ output : false ast : ST_WITHIN(TO_GEOMETRY('POINT(1 2)'), TO_GEOMETRY('LINESTRING(0 0, 2 4)')) raw expr : ST_WITHIN(TO_GEOMETRY('POINT(1 2)'), TO_GEOMETRY('LINESTRING(0 0, 2 4)')) -checked expr : st_within(to_geometry("POINT(1 2)"), to_geometry("LINESTRING(0 0, 2 4)")) +checked expr : st_within(CAST("POINT(1 2)" AS Geometry), CAST("LINESTRING(0 0, 2 4)" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1318,7 +1318,7 @@ output : true ast : ST_WITHIN(TO_GEOMETRY('POINT(10 20)'), TO_GEOMETRY('POLYGON((0 0, 0 40, 40 40, 40 0, 0 0))')) raw expr : ST_WITHIN(TO_GEOMETRY('POINT(10 20)'), TO_GEOMETRY('POLYGON((0 0, 0 40, 40 40, 40 0, 0 0))')) -checked expr : st_within(to_geometry("POINT(10 20)"), to_geometry("POLYGON((0 0, 0 40, 40 40, 40 0, 0 0))")) +checked expr : st_within(CAST("POINT(10 20)" AS Geometry), CAST("POLYGON((0 0, 0 40, 40 40, 40 0, 0 0))" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1327,7 +1327,7 @@ output : true ast : ST_WITHIN(TO_GEOMETRY('POLYGON((0 0, 0 40, 40 40, 40 0, 0 0))'), TO_GEOMETRY('POINT(10 20)')) raw expr : ST_WITHIN(TO_GEOMETRY('POLYGON((0 0, 0 40, 40 40, 40 0, 0 0))'), TO_GEOMETRY('POINT(10 20)')) -checked expr : st_within(to_geometry("POLYGON((0 0, 0 40, 40 40, 40 0, 0 0))"), to_geometry("POINT(10 20)")) +checked expr : st_within(CAST("POLYGON((0 0, 0 40, 40 40, 40 0, 0 0))" AS Geometry), CAST("POINT(10 20)" AS Geometry)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1336,7 +1336,7 @@ output : false ast : ST_EQUALS(TO_GEOMETRY('LINESTRING(0 0, 10 10)'), TO_GEOMETRY('LINESTRING(0 0, 5 5, 10 10)')) raw expr : ST_EQUALS(TO_GEOMETRY('LINESTRING(0 0, 10 10)'), TO_GEOMETRY('LINESTRING(0 0, 5 5, 10 10)')) -checked expr : st_equals(to_geometry("LINESTRING(0 0, 10 10)"), to_geometry("LINESTRING(0 0, 5 5, 10 10)")) +checked expr : st_equals(CAST("LINESTRING(0 0, 10 10)" AS Geometry), CAST("LINESTRING(0 0, 5 5, 10 10)" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1345,7 +1345,7 @@ output : true ast : ST_EQUALS(TO_GEOMETRY('LINESTRING(0 0, 5 5, 10 10)'), TO_GEOMETRY('LINESTRING(0 0, 10 10)')) raw expr : ST_EQUALS(TO_GEOMETRY('LINESTRING(0 0, 5 5, 10 10)'), TO_GEOMETRY('LINESTRING(0 0, 10 10)')) -checked expr : st_equals(to_geometry("LINESTRING(0 0, 5 5, 10 10)"), to_geometry("LINESTRING(0 0, 10 10)")) +checked expr : st_equals(CAST("LINESTRING(0 0, 5 5, 10 10)" AS Geometry), CAST("LINESTRING(0 0, 10 10)" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1354,7 +1354,7 @@ output : true ast : ST_EQUALS(TO_GEOMETRY('LINESTRING(10 10, 1 2)'), TO_GEOMETRY('LINESTRING(0 0, 5 5, 10 10)')) raw expr : ST_EQUALS(TO_GEOMETRY('LINESTRING(10 10, 1 2)'), TO_GEOMETRY('LINESTRING(0 0, 5 5, 10 10)')) -checked expr : st_equals(to_geometry("LINESTRING(10 10, 1 2)"), to_geometry("LINESTRING(0 0, 5 5, 10 10)")) +checked expr : st_equals(CAST("LINESTRING(10 10, 1 2)" AS Geometry), CAST("LINESTRING(0 0, 5 5, 10 10)" AS Geometry)) optimized expr : false output type : Boolean output domain : {FALSE} @@ -1363,7 +1363,7 @@ output : false ast : ST_EQUALS(TO_GEOMETRY('POINT(10 10)'), TO_GEOMETRY('LINESTRING(10 10, 10 10)')) raw expr : ST_EQUALS(TO_GEOMETRY('POINT(10 10)'), TO_GEOMETRY('LINESTRING(10 10, 10 10)')) -checked expr : st_equals(to_geometry("POINT(10 10)"), to_geometry("LINESTRING(10 10, 10 10)")) +checked expr : st_equals(CAST("POINT(10 10)" AS Geometry), CAST("LINESTRING(10 10, 10 10)" AS Geometry)) optimized expr : true output type : Boolean output domain : {TRUE} @@ -1372,7 +1372,7 @@ output : true ast : ST_AREA(TO_GEOMETRY('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')) raw expr : ST_AREA(TO_GEOMETRY('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')) -checked expr : st_area(to_geometry("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))")) +checked expr : st_area(CAST("POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))" AS Geometry)) optimized expr : 1_f64 output type : Float64 output domain : {1..=1} @@ -1381,7 +1381,7 @@ output : 1 ast : ST_AREA(TO_GEOMETRY('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))')) raw expr : ST_AREA(TO_GEOMETRY('POLYGON((0 0, 0 4, 4 4, 4 0, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))')) -checked expr : st_area(to_geometry("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))")) +checked expr : st_area(CAST("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))" AS Geometry)) optimized expr : 15_f64 output type : Float64 output domain : {15..=15} @@ -1390,7 +1390,7 @@ output : 15 ast : ST_AREA(TO_GEOMETRY('MULTIPOLYGON(((0 0, 0 2, 2 2, 2 0, 0 0)), ((3 0, 3 2, 5 2, 5 0, 3 0)))')) raw expr : ST_AREA(TO_GEOMETRY('MULTIPOLYGON(((0 0, 0 2, 2 2, 2 0, 0 0)), ((3 0, 3 2, 5 2, 5 0, 3 0)))')) -checked expr : st_area(to_geometry("MULTIPOLYGON(((0 0, 0 2, 2 2, 2 0, 0 0)), ((3 0, 3 2, 5 2, 5 0, 3 0)))")) +checked expr : st_area(CAST("MULTIPOLYGON(((0 0, 0 2, 2 2, 2 0, 0 0)), ((3 0, 3 2, 5 2, 5 0, 3 0)))" AS Geometry)) optimized expr : 8_f64 output type : Float64 output domain : {8..=8} @@ -1399,7 +1399,7 @@ output : 8 ast : ST_AREA(TO_GEOMETRY('POINT(0 0)')) raw expr : ST_AREA(TO_GEOMETRY('POINT(0 0)')) -checked expr : st_area(to_geometry("POINT(0 0)")) +checked expr : st_area(CAST("POINT(0 0)" AS Geometry)) optimized expr : 0_f64 output type : Float64 output domain : {0..=0} @@ -1408,7 +1408,7 @@ output : 0 ast : ST_AREA(TO_GEOMETRY('LINESTRING(0 0, 1 1, 2 2)')) raw expr : ST_AREA(TO_GEOMETRY('LINESTRING(0 0, 1 1, 2 2)')) -checked expr : st_area(to_geometry("LINESTRING(0 0, 1 1, 2 2)")) +checked expr : st_area(CAST("LINESTRING(0 0, 1 1, 2 2)" AS Geometry)) optimized expr : 0_f64 output type : Float64 output domain : {0..=0} @@ -1417,7 +1417,7 @@ output : 0 ast : ST_CONVEXHULL(TO_GEOMETRY('POINT(1 1)')) raw expr : ST_CONVEXHULL(TO_GEOMETRY('POINT(1 1)')) -checked expr : st_convexhull(to_geometry("POINT(1 1)")) +checked expr : st_convexhull(CAST("POINT(1 1)" AS Geometry)) optimized expr : "POLYGON((1 1,1 1))" output type : Geometry output domain : Undefined @@ -1426,7 +1426,7 @@ output : 'POLYGON((1 1,1 1))' ast : ST_CONVEXHULL(TO_GEOMETRY('MULTIPOINT((1 1), (0 0), (2 2), (1 2), (2 1))')) raw expr : ST_CONVEXHULL(TO_GEOMETRY('MULTIPOINT((1 1), (0 0), (2 2), (1 2), (2 1))')) -checked expr : st_convexhull(to_geometry("MULTIPOINT((1 1), (0 0), (2 2), (1 2), (2 1))")) +checked expr : st_convexhull(CAST("MULTIPOINT((1 1), (0 0), (2 2), (1 2), (2 1))" AS Geometry)) optimized expr : "POLYGON((2 1,2 2,1 2,0 0,2 1))" output type : Geometry output domain : Undefined @@ -1435,7 +1435,7 @@ output : 'POLYGON((2 1,2 2,1 2,0 0,2 1))' ast : ST_CONVEXHULL(TO_GEOMETRY('LINESTRING(0 0, 1 1, 0 2, 2 1)')) raw expr : ST_CONVEXHULL(TO_GEOMETRY('LINESTRING(0 0, 1 1, 0 2, 2 1)')) -checked expr : st_convexhull(to_geometry("LINESTRING(0 0, 1 1, 0 2, 2 1)")) +checked expr : st_convexhull(CAST("LINESTRING(0 0, 1 1, 0 2, 2 1)" AS Geometry)) optimized expr : "POLYGON((2 1,0 2,0 0,2 1))" output type : Geometry output domain : Undefined @@ -1444,7 +1444,7 @@ output : 'POLYGON((2 1,0 2,0 0,2 1))' ast : ST_CONVEXHULL(TO_GEOMETRY('POLYGON((0 0, 0 2, 1 1, 2 2, 2 0, 0 0))')) raw expr : ST_CONVEXHULL(TO_GEOMETRY('POLYGON((0 0, 0 2, 1 1, 2 2, 2 0, 0 0))')) -checked expr : st_convexhull(to_geometry("POLYGON((0 0, 0 2, 1 1, 2 2, 2 0, 0 0))")) +checked expr : st_convexhull(CAST("POLYGON((0 0, 0 2, 1 1, 2 2, 2 0, 0 0))" AS Geometry)) optimized expr : "POLYGON((2 0,2 2,0 2,0 0,2 0))" output type : Geometry output domain : Undefined @@ -1453,7 +1453,7 @@ output : 'POLYGON((2 0,2 2,0 2,0 0,2 0))' ast : ST_CONVEXHULL(TO_GEOMETRY('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2), POLYGON((3 0, 3 3, 6 3, 6 0, 3 0)))')) raw expr : ST_CONVEXHULL(TO_GEOMETRY('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2), POLYGON((3 0, 3 3, 6 3, 6 0, 3 0)))')) -checked expr : st_convexhull(to_geometry("GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2), POLYGON((3 0, 3 3, 6 3, 6 0, 3 0)))")) +checked expr : st_convexhull(CAST("GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2), POLYGON((3 0, 3 3, 6 3, 6 0, 3 0)))" AS Geometry)) optimized expr : "POLYGON((6 0,6 3,3 3,0 0,6 0))" output type : Geometry output domain : Undefined diff --git a/src/query/functions/tests/it/scalars/testdata/hash.txt b/src/query/functions/tests/it/scalars/testdata/hash.txt index 5cce48d9bff60..eadac4c0d12b2 100644 --- a/src/query/functions/tests/it/scalars/testdata/hash.txt +++ b/src/query/functions/tests/it/scalars/testdata/hash.txt @@ -197,7 +197,7 @@ output : 10246934130793054423 ast : city64withseed(to_datetime(100000), 1234) raw expr : city64withseed(to_datetime(100000), 1234) -checked expr : city64withseed(to_timestamp(CAST(100000_u32 AS Int64)), 1234_u16) +checked expr : city64withseed(CAST(CAST(100000_u32 AS Int64) AS Timestamp), 1234_u16) optimized expr : 4538088127563444061_u64 output type : UInt64 output domain : {4538088127563444061..=4538088127563444061} @@ -242,7 +242,7 @@ output : 2939704650099116301 ast : city64withseed(to_date(100000), 1234) raw expr : city64withseed(to_date(100000), 1234) -checked expr : city64withseed(to_date(CAST(100000_u32 AS Int64)), 1234_u16) +checked expr : city64withseed(CAST(CAST(100000_u32 AS Int64) AS Date), 1234_u16) optimized expr : 8535774936754559738_u64 output type : UInt64 output domain : {8535774936754559738..=8535774936754559738} @@ -292,7 +292,7 @@ output : 17684958587550623602 ast : siphash64(to_datetime(100000)) raw expr : siphash64(to_datetime(100000)) -checked expr : siphash64(to_timestamp(CAST(100000_u32 AS Int64))) +checked expr : siphash64(CAST(CAST(100000_u32 AS Int64) AS Timestamp)) optimized expr : 6710305768027137259_u64 output type : UInt64 output domain : {6710305768027137259..=6710305768027137259} @@ -337,7 +337,7 @@ output : 14856193058643670405 ast : siphash64(to_date(100000)) raw expr : siphash64(to_date(100000)) -checked expr : siphash64(to_date(CAST(100000_u32 AS Int64))) +checked expr : siphash64(CAST(CAST(100000_u32 AS Int64) AS Date)) optimized expr : 17230848539826186862_u64 output type : UInt64 output domain : {17230848539826186862..=17230848539826186862} @@ -403,7 +403,7 @@ output : 11989503812394966078 ast : xxhash64(to_datetime(100000)) raw expr : xxhash64(to_datetime(100000)) -checked expr : xxhash64(to_timestamp(CAST(100000_u32 AS Int64))) +checked expr : xxhash64(CAST(CAST(100000_u32 AS Int64) AS Timestamp)) optimized expr : 14455582462593060490_u64 output type : UInt64 output domain : {14455582462593060490..=14455582462593060490} @@ -430,7 +430,7 @@ output : 18307966283998289030 ast : xxhash64(to_date(100000)) raw expr : xxhash64(to_date(100000)) -checked expr : xxhash64(to_date(CAST(100000_u32 AS Int64))) +checked expr : xxhash64(CAST(CAST(100000_u32 AS Int64) AS Date)) optimized expr : 8691527656253933431_u64 output type : UInt64 output domain : {8691527656253933431..=8691527656253933431} @@ -496,7 +496,7 @@ output : 3980406955 ast : xxhash32(to_datetime(100000)) raw expr : xxhash32(to_datetime(100000)) -checked expr : xxhash32(to_timestamp(CAST(100000_u32 AS Int64))) +checked expr : xxhash32(CAST(CAST(100000_u32 AS Int64) AS Timestamp)) optimized expr : 680734338_u32 output type : UInt32 output domain : {680734338..=680734338} @@ -523,7 +523,7 @@ output : 3252916525 ast : xxhash32(to_date(100000)) raw expr : xxhash32(to_date(100000)) -checked expr : xxhash32(to_date(CAST(100000_u32 AS Int64))) +checked expr : xxhash32(CAST(CAST(100000_u32 AS Int64) AS Date)) optimized expr : 2518126785_u32 output type : UInt32 output domain : {2518126785..=2518126785} diff --git a/src/query/functions/tests/it/scalars/testdata/other.txt b/src/query/functions/tests/it/scalars/testdata/other.txt index 8e816285959cb..a2bfd7deab373 100644 --- a/src/query/functions/tests/it/scalars/testdata/other.txt +++ b/src/query/functions/tests/it/scalars/testdata/other.txt @@ -18,7 +18,7 @@ output : 0 ast : running_difference(to_datetime(10000)) raw expr : running_difference(to_datetime(10000)) -checked expr : running_difference(to_timestamp(CAST(10000_u16 AS Int64))) +checked expr : running_difference(CAST(CAST(10000_u16 AS Int64) AS Timestamp)) optimized expr : 0_i64 output type : Int64 output domain : {0..=0} @@ -27,7 +27,7 @@ output : 0 ast : running_difference(to_date(10000)) raw expr : running_difference(to_date(10000)) -checked expr : running_difference(to_date(CAST(10000_u16 AS Int64))) +checked expr : running_difference(CAST(CAST(10000_u16 AS Int64) AS Date)) optimized expr : 0_i32 output type : Int32 output domain : {0..=0} diff --git a/src/query/functions/tests/it/scalars/testdata/variant.txt b/src/query/functions/tests/it/scalars/testdata/variant.txt index ba41d57750535..f8f480c9f459b 100644 --- a/src/query/functions/tests/it/scalars/testdata/variant.txt +++ b/src/query/functions/tests/it/scalars/testdata/variant.txt @@ -1530,7 +1530,7 @@ evaluation (internal): ast : to_boolean(parse_json('null')) raw expr : to_boolean(parse_json('null')) -checked expr : to_boolean(CAST("null" AS Variant)) +checked expr : CAST(CAST("null" AS Variant) AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1539,7 +1539,7 @@ output : NULL ast : to_boolean(parse_json('true')) raw expr : to_boolean(parse_json('true')) -checked expr : to_boolean(CAST("true" AS Variant)) +checked expr : CAST(CAST("true" AS Variant) AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -1550,7 +1550,7 @@ error: --> SQL:1:1 | 1 | to_boolean(parse_json('123')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ InvalidCast while evaluating function `to_boolean('123')` in expr `to_boolean(CAST('123' AS Variant))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ InvalidCast while evaluating function `to_boolean('123')` in expr `to_boolean()`, during run expr: `CAST(CAST('123' AS Variant) AS Boolean NULL)` @@ -1558,13 +1558,13 @@ error: --> SQL:1:1 | 1 | to_boolean(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ InvalidCast while evaluating function `to_boolean('"abc"')` in expr `to_boolean(CAST('"abc"' AS Variant))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ InvalidCast while evaluating function `to_boolean('"abc"')` in expr `to_boolean()`, during run expr: `CAST(CAST('"abc"' AS Variant) AS Boolean NULL)` ast : to_uint64(parse_json('null')) raw expr : to_uint64(parse_json('null')) -checked expr : to_uint64(CAST("null" AS Variant)) +checked expr : CAST(CAST("null" AS Variant) AS UInt64 NULL) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -1573,7 +1573,7 @@ output : NULL ast : to_uint64(parse_json('123')) raw expr : to_uint64(parse_json('123')) -checked expr : to_uint64(CAST("123" AS Variant)) +checked expr : CAST(CAST("123" AS Variant) AS UInt64 NULL) optimized expr : 123_u64 output type : UInt64 NULL output domain : {123..=123} @@ -1584,7 +1584,7 @@ error: --> SQL:1:1 | 1 | to_uint64(parse_json('-123')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type UInt64 while evaluating function `to_uint64('-123')` in expr `to_uint64(CAST('-123' AS Variant))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type UInt64 while evaluating function `to_uint64('-123')` in expr `to_uint64()`, during run expr: `CAST(CAST('-123' AS Variant) AS UInt64 NULL)` @@ -1592,13 +1592,13 @@ error: --> SQL:1:1 | 1 | to_uint64(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type UInt64 while evaluating function `to_uint64('"abc"')` in expr `to_uint64(CAST('"abc"' AS Variant))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type UInt64 while evaluating function `to_uint64('"abc"')` in expr `to_uint64()`, during run expr: `CAST(CAST('"abc"' AS Variant) AS UInt64 NULL)` ast : to_int64(parse_json('123')) raw expr : to_int64(parse_json('123')) -checked expr : to_int64(CAST("123" AS Variant)) +checked expr : CAST(CAST("123" AS Variant) AS Int64 NULL) optimized expr : 123_i64 output type : Int64 NULL output domain : {123..=123} @@ -1607,7 +1607,7 @@ output : 123 ast : to_int64(parse_json('-123')) raw expr : to_int64(parse_json('-123')) -checked expr : to_int64(CAST("-123" AS Variant)) +checked expr : CAST(CAST("-123" AS Variant) AS Int64 NULL) optimized expr : -123_i64 output type : Int64 NULL output domain : {-123..=-123} @@ -1618,13 +1618,13 @@ error: --> SQL:1:1 | 1 | to_int64(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type Int64 while evaluating function `to_int64('"abc"')` in expr `to_int64(CAST('"abc"' AS Variant))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type Int64 while evaluating function `to_int64('"abc"')` in expr `to_int64()`, during run expr: `CAST(CAST('"abc"' AS Variant) AS Int64 NULL)` ast : to_float64(parse_json('12.34')) raw expr : to_float64(parse_json('12.34')) -checked expr : to_float64(CAST("12.34" AS Variant)) +checked expr : CAST(CAST("12.34" AS Variant) AS Float64 NULL) optimized expr : 12.34_f64 output type : Float64 NULL output domain : {12.34..=12.34} @@ -1635,13 +1635,13 @@ error: --> SQL:1:1 | 1 | to_float64(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type Float64 while evaluating function `to_float64('"abc"')` in expr `to_float64(CAST('"abc"' AS Variant))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type Float64 while evaluating function `to_float64('"abc"')` in expr `to_float64()`, during run expr: `CAST(CAST('"abc"' AS Variant) AS Float64 NULL)` ast : to_date(parse_json('null')) raw expr : to_date(parse_json('null')) -checked expr : to_date(CAST("null" AS Variant)) +checked expr : CAST(CAST("null" AS Variant) AS Date NULL) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -1650,7 +1650,7 @@ output : NULL ast : to_date(parse_json('"2023-01-01"')) raw expr : to_date(parse_json('"2023-01-01"')) -checked expr : to_date(CAST("\"2023-01-01\"" AS Variant)) +checked expr : CAST(CAST("\"2023-01-01\"" AS Variant) AS Date NULL) optimized expr : 19358 output type : Date NULL output domain : {19358..=19358} @@ -1661,13 +1661,13 @@ error: --> SQL:1:1 | 1 | to_date(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type `DATE` unexpected argument. while evaluating function `to_date('"abc"')` in expr `to_date(CAST('"abc"' AS Variant))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type `DATE` unexpected argument. while evaluating function `to_date('"abc"')` in expr `to_date()`, during run expr: `CAST(CAST('"abc"' AS Variant) AS Date NULL)` ast : to_timestamp(parse_json('null')) raw expr : to_timestamp(parse_json('null')) -checked expr : to_timestamp(CAST("null" AS Variant)) +checked expr : CAST(CAST("null" AS Variant) AS Timestamp NULL) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -1676,7 +1676,7 @@ output : NULL ast : to_timestamp(parse_json('"2023-01-01 00:00:00"')) raw expr : to_timestamp(parse_json('"2023-01-01 00:00:00"')) -checked expr : to_timestamp(CAST("\"2023-01-01 00:00:00\"" AS Variant)) +checked expr : CAST(CAST("\"2023-01-01 00:00:00\"" AS Variant) AS Timestamp NULL) optimized expr : 1672531200000000 output type : Timestamp NULL output domain : {1672531200000000..=1672531200000000} @@ -1687,13 +1687,13 @@ error: --> SQL:1:1 | 1 | to_timestamp(parse_json('"abc"')) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type `TIMESTAMP` unexpected argument. while evaluating function `to_timestamp('"abc"')` in expr `to_timestamp(CAST('"abc"' AS Variant))` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unable to cast to type `TIMESTAMP` unexpected argument. while evaluating function `to_timestamp('"abc"')` in expr `to_timestamp()`, during run expr: `CAST(CAST('"abc"' AS Variant) AS Timestamp NULL)` ast : to_string(parse_json('null')) raw expr : to_string(parse_json('null')) -checked expr : to_string(CAST("null" AS Variant)) +checked expr : CAST(CAST("null" AS Variant) AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -1702,7 +1702,7 @@ output : NULL ast : to_string(parse_json('12.34')) raw expr : to_string(parse_json('12.34')) -checked expr : to_string(CAST("12.34" AS Variant)) +checked expr : CAST(CAST("12.34" AS Variant) AS String NULL) optimized expr : "12.34" output type : String NULL output domain : {"12.34"..="12.34"} @@ -1711,7 +1711,7 @@ output : '12.34' ast : to_string(parse_json('"abc"')) raw expr : to_string(parse_json('"abc"')) -checked expr : to_string(CAST("\"abc\"" AS Variant)) +checked expr : CAST(CAST("\"abc\"" AS Variant) AS String NULL) optimized expr : "abc" output type : String NULL output domain : {"abc"..="abc"} @@ -1720,7 +1720,7 @@ output : 'abc' ast : to_boolean(parse_json(s)) raw expr : to_boolean(parse_json(s::String NULL)) -checked expr : to_boolean(CAST(s AS Variant NULL)) +checked expr : CAST(CAST(s AS Variant NULL) AS Boolean NULL) evaluation: +--------+----------------------------+--------------+ | | s | Output | @@ -1742,7 +1742,7 @@ evaluation (internal): ast : to_int64(parse_json(s)) raw expr : to_int64(parse_json(s::String NULL)) -checked expr : to_int64(CAST(s AS Variant NULL)) +checked expr : CAST(CAST(s AS Variant NULL) AS Int64 NULL) evaluation: +--------+------------------------+------------+ | | s | Output | @@ -1764,7 +1764,7 @@ evaluation (internal): ast : to_uint64(parse_json(s)) raw expr : to_uint64(parse_json(s::String NULL)) -checked expr : to_uint64(CAST(s AS Variant NULL)) +checked expr : CAST(CAST(s AS Variant NULL) AS UInt64 NULL) evaluation: +--------+-----------------------+-------------+ | | s | Output | @@ -1786,7 +1786,7 @@ evaluation (internal): ast : to_float64(parse_json(s)) raw expr : to_float64(parse_json(s::String NULL)) -checked expr : to_float64(CAST(s AS Variant NULL)) +checked expr : CAST(CAST(s AS Variant NULL) AS Float64 NULL) evaluation: +--------+----------------------------+--------------+ | | s | Output | @@ -1808,7 +1808,7 @@ evaluation (internal): ast : to_date(parse_json(s)) raw expr : to_date(parse_json(s::String NULL)) -checked expr : to_date(CAST(s AS Variant NULL)) +checked expr : CAST(CAST(s AS Variant NULL) AS Date NULL) evaluation: +--------+------------------------------------------------+--------------+ | | s | Output | @@ -1830,7 +1830,7 @@ evaluation (internal): ast : to_timestamp(parse_json(s)) raw expr : to_timestamp(parse_json(s::String NULL)) -checked expr : to_timestamp(CAST(s AS Variant NULL)) +checked expr : CAST(CAST(s AS Variant NULL) AS Timestamp NULL) evaluation: +--------+------------------------------------------------------------------+------------------------------+ | | s | Output | @@ -1852,7 +1852,7 @@ evaluation (internal): ast : to_string(parse_json(s)) raw expr : to_string(parse_json(s::String NULL)) -checked expr : to_string(CAST(s AS Variant NULL)) +checked expr : CAST(CAST(s AS Variant NULL) AS String NULL) evaluation: +--------+------------------------------+-------------+ | | s | Output | @@ -1874,7 +1874,7 @@ evaluation (internal): ast : try_to_boolean(parse_json('null')) raw expr : try_to_boolean(parse_json('null')) -checked expr : try_to_boolean(CAST("null" AS Variant)) +checked expr : TRY_CAST(CAST("null" AS Variant) AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1883,7 +1883,7 @@ output : NULL ast : try_to_boolean(parse_json('true')) raw expr : try_to_boolean(parse_json('true')) -checked expr : try_to_boolean(CAST("true" AS Variant)) +checked expr : TRY_CAST(CAST("true" AS Variant) AS Boolean NULL) optimized expr : true output type : Boolean NULL output domain : {TRUE} @@ -1892,7 +1892,7 @@ output : true ast : try_to_boolean(parse_json('123')) raw expr : try_to_boolean(parse_json('123')) -checked expr : try_to_boolean(CAST("123" AS Variant)) +checked expr : TRY_CAST(CAST("123" AS Variant) AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1901,7 +1901,7 @@ output : NULL ast : try_to_boolean(parse_json('"abc"')) raw expr : try_to_boolean(parse_json('"abc"')) -checked expr : try_to_boolean(CAST("\"abc\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"abc\"" AS Variant) AS Boolean NULL) optimized expr : NULL output type : Boolean NULL output domain : {NULL} @@ -1910,7 +1910,7 @@ output : NULL ast : try_to_uint64(parse_json('null')) raw expr : try_to_uint64(parse_json('null')) -checked expr : try_to_uint64(CAST("null" AS Variant)) +checked expr : TRY_CAST(CAST("null" AS Variant) AS UInt64 NULL) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -1919,7 +1919,7 @@ output : NULL ast : try_to_uint64(parse_json('123')) raw expr : try_to_uint64(parse_json('123')) -checked expr : try_to_uint64(CAST("123" AS Variant)) +checked expr : TRY_CAST(CAST("123" AS Variant) AS UInt64 NULL) optimized expr : 123_u64 output type : UInt64 NULL output domain : {123..=123} @@ -1928,7 +1928,7 @@ output : 123 ast : try_to_uint64(parse_json('-123')) raw expr : try_to_uint64(parse_json('-123')) -checked expr : try_to_uint64(CAST("-123" AS Variant)) +checked expr : TRY_CAST(CAST("-123" AS Variant) AS UInt64 NULL) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -1937,7 +1937,7 @@ output : NULL ast : try_to_uint64(parse_json('"abc"')) raw expr : try_to_uint64(parse_json('"abc"')) -checked expr : try_to_uint64(CAST("\"abc\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"abc\"" AS Variant) AS UInt64 NULL) optimized expr : NULL output type : UInt64 NULL output domain : {NULL} @@ -1946,7 +1946,7 @@ output : NULL ast : try_to_int64(parse_json('123')) raw expr : try_to_int64(parse_json('123')) -checked expr : try_to_int64(CAST("123" AS Variant)) +checked expr : TRY_CAST(CAST("123" AS Variant) AS Int64 NULL) optimized expr : 123_i64 output type : Int64 NULL output domain : {123..=123} @@ -1955,7 +1955,7 @@ output : 123 ast : try_to_int64(parse_json('-123')) raw expr : try_to_int64(parse_json('-123')) -checked expr : try_to_int64(CAST("-123" AS Variant)) +checked expr : TRY_CAST(CAST("-123" AS Variant) AS Int64 NULL) optimized expr : -123_i64 output type : Int64 NULL output domain : {-123..=-123} @@ -1964,7 +1964,7 @@ output : -123 ast : try_to_int64(parse_json('"abc"')) raw expr : try_to_int64(parse_json('"abc"')) -checked expr : try_to_int64(CAST("\"abc\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"abc\"" AS Variant) AS Int64 NULL) optimized expr : NULL output type : Int64 NULL output domain : {NULL} @@ -1973,7 +1973,7 @@ output : NULL ast : try_to_float64(parse_json('12.34')) raw expr : try_to_float64(parse_json('12.34')) -checked expr : try_to_float64(CAST("12.34" AS Variant)) +checked expr : TRY_CAST(CAST("12.34" AS Variant) AS Float64 NULL) optimized expr : 12.34_f64 output type : Float64 NULL output domain : {12.34..=12.34} @@ -1982,7 +1982,7 @@ output : 12.34 ast : try_to_float64(parse_json('"abc"')) raw expr : try_to_float64(parse_json('"abc"')) -checked expr : try_to_float64(CAST("\"abc\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"abc\"" AS Variant) AS Float64 NULL) optimized expr : NULL output type : Float64 NULL output domain : {NULL} @@ -1991,7 +1991,7 @@ output : NULL ast : try_to_date(parse_json('null')) raw expr : try_to_date(parse_json('null')) -checked expr : try_to_date(CAST("null" AS Variant)) +checked expr : TRY_CAST(CAST("null" AS Variant) AS Date NULL) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -2000,7 +2000,7 @@ output : NULL ast : try_to_date(parse_json('"2023-01-01"')) raw expr : try_to_date(parse_json('"2023-01-01"')) -checked expr : try_to_date(CAST("\"2023-01-01\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"2023-01-01\"" AS Variant) AS Date NULL) optimized expr : 19358 output type : Date NULL output domain : {19358..=19358} @@ -2009,7 +2009,7 @@ output : '2023-01-01' ast : try_to_date(parse_json('"abc"')) raw expr : try_to_date(parse_json('"abc"')) -checked expr : try_to_date(CAST("\"abc\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"abc\"" AS Variant) AS Date NULL) optimized expr : NULL output type : Date NULL output domain : {NULL} @@ -2018,7 +2018,7 @@ output : NULL ast : try_to_timestamp(parse_json('null')) raw expr : try_to_timestamp(parse_json('null')) -checked expr : try_to_timestamp(CAST("null" AS Variant)) +checked expr : TRY_CAST(CAST("null" AS Variant) AS Timestamp NULL) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -2027,7 +2027,7 @@ output : NULL ast : try_to_timestamp(parse_json('"2023-01-01 00:00:00"')) raw expr : try_to_timestamp(parse_json('"2023-01-01 00:00:00"')) -checked expr : try_to_timestamp(CAST("\"2023-01-01 00:00:00\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"2023-01-01 00:00:00\"" AS Variant) AS Timestamp NULL) optimized expr : 1672531200000000 output type : Timestamp NULL output domain : {1672531200000000..=1672531200000000} @@ -2036,7 +2036,7 @@ output : '2023-01-01 00:00:00.000000' ast : try_to_timestamp(parse_json('"abc"')) raw expr : try_to_timestamp(parse_json('"abc"')) -checked expr : try_to_timestamp(CAST("\"abc\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"abc\"" AS Variant) AS Timestamp NULL) optimized expr : NULL output type : Timestamp NULL output domain : {NULL} @@ -2045,7 +2045,7 @@ output : NULL ast : try_to_string(parse_json('null')) raw expr : try_to_string(parse_json('null')) -checked expr : try_to_string(CAST("null" AS Variant)) +checked expr : TRY_CAST(CAST("null" AS Variant) AS String NULL) optimized expr : NULL output type : String NULL output domain : {NULL} @@ -2054,7 +2054,7 @@ output : NULL ast : try_to_string(parse_json('12.34')) raw expr : try_to_string(parse_json('12.34')) -checked expr : try_to_string(CAST("12.34" AS Variant)) +checked expr : TRY_CAST(CAST("12.34" AS Variant) AS String NULL) optimized expr : "12.34" output type : String NULL output domain : {"12.34"..="12.34"} @@ -2063,7 +2063,7 @@ output : '12.34' ast : try_to_string(parse_json('"abc"')) raw expr : try_to_string(parse_json('"abc"')) -checked expr : try_to_string(CAST("\"abc\"" AS Variant)) +checked expr : TRY_CAST(CAST("\"abc\"" AS Variant) AS String NULL) optimized expr : "abc" output type : String NULL output domain : {"abc"..="abc"} @@ -2072,7 +2072,7 @@ output : 'abc' ast : try_to_boolean(parse_json(s)) raw expr : try_to_boolean(parse_json(s::String NULL)) -checked expr : try_to_boolean(CAST(s AS Variant NULL)) +checked expr : TRY_CAST(CAST(s AS Variant NULL) AS Boolean NULL) evaluation: +--------+--------------------------------------+--------------+ | | s | Output | @@ -2099,7 +2099,7 @@ evaluation (internal): ast : try_to_int64(parse_json(s)) raw expr : try_to_int64(parse_json(s::String NULL)) -checked expr : try_to_int64(CAST(s AS Variant NULL)) +checked expr : TRY_CAST(CAST(s AS Variant NULL) AS Int64 NULL) evaluation: +--------+--------------------------------------+------------+ | | s | Output | @@ -2126,7 +2126,7 @@ evaluation (internal): ast : try_to_uint64(parse_json(s)) raw expr : try_to_uint64(parse_json(s::String NULL)) -checked expr : try_to_uint64(CAST(s AS Variant NULL)) +checked expr : TRY_CAST(CAST(s AS Variant NULL) AS UInt64 NULL) evaluation: +--------+--------------------------------------+-------------+ | | s | Output | @@ -2153,7 +2153,7 @@ evaluation (internal): ast : try_to_float64(parse_json(s)) raw expr : try_to_float64(parse_json(s::String NULL)) -checked expr : try_to_float64(CAST(s AS Variant NULL)) +checked expr : TRY_CAST(CAST(s AS Variant NULL) AS Float64 NULL) evaluation: +--------+--------------------------------------+--------------+ | | s | Output | @@ -2180,7 +2180,7 @@ evaluation (internal): ast : try_to_date(parse_json(s)) raw expr : try_to_date(parse_json(s::String NULL)) -checked expr : try_to_date(CAST(s AS Variant NULL)) +checked expr : TRY_CAST(CAST(s AS Variant NULL) AS Date NULL) evaluation: +--------+--------------------------------------+--------------+ | | s | Output | @@ -2207,7 +2207,7 @@ evaluation (internal): ast : try_to_timestamp(parse_json(s)) raw expr : try_to_timestamp(parse_json(s::String NULL)) -checked expr : try_to_timestamp(CAST(s AS Variant NULL)) +checked expr : TRY_CAST(CAST(s AS Variant NULL) AS Timestamp NULL) evaluation: +--------+--------------------------------------+------------------------------+ | | s | Output | @@ -2234,7 +2234,7 @@ evaluation (internal): ast : try_to_string(parse_json(s)) raw expr : try_to_string(parse_json(s::String NULL)) -checked expr : try_to_string(CAST(s AS Variant NULL)) +checked expr : TRY_CAST(CAST(s AS Variant NULL) AS String NULL) evaluation: +--------+--------------------------------------+-----------------------+ | | s | Output | @@ -2731,7 +2731,7 @@ evaluation (internal): ast : json_to_string(parse_json('true')) raw expr : json_to_string(parse_json('true')) -checked expr : to_string(CAST("true" AS Variant)) +checked expr : CAST(CAST("true" AS Variant) AS String NULL) optimized expr : "true" output type : String NULL output domain : {"true"..="true"} @@ -2740,7 +2740,7 @@ output : 'true' ast : json_to_string(parse_json('123456')) raw expr : json_to_string(parse_json('123456')) -checked expr : to_string(CAST("123456" AS Variant)) +checked expr : CAST(CAST("123456" AS Variant) AS String NULL) optimized expr : "123456" output type : String NULL output domain : {"123456"..="123456"} @@ -2749,7 +2749,7 @@ output : '123456' ast : json_to_string(parse_json('"abcd"')) raw expr : json_to_string(parse_json('"abcd"')) -checked expr : to_string(CAST("\"abcd\"" AS Variant)) +checked expr : CAST(CAST("\"abcd\"" AS Variant) AS String NULL) optimized expr : "abcd" output type : String NULL output domain : {"abcd"..="abcd"} @@ -2758,7 +2758,7 @@ output : 'abcd' ast : json_to_string(parse_json('[1, 2, 3, 4, 5, 6]')) raw expr : json_to_string(parse_json('[1, 2, 3, 4, 5, 6]')) -checked expr : to_string(CAST("[1, 2, 3, 4, 5, 6]" AS Variant)) +checked expr : CAST(CAST("[1, 2, 3, 4, 5, 6]" AS Variant) AS String NULL) optimized expr : "[1,2,3,4,5,6]" output type : String NULL output domain : {"[1,2,3,4,5,6]"..="[1,2,3,4,5,6]"} @@ -2767,7 +2767,7 @@ output : '[1,2,3,4,5,6]' ast : json_to_string(parse_json('{"k1":123, "k2":"abc"}')) raw expr : json_to_string(parse_json('{"k1":123, "k2":"abc"}')) -checked expr : to_string(CAST("{\"k1\":123, \"k2\":\"abc\"}" AS Variant)) +checked expr : CAST(CAST("{\"k1\":123, \"k2\":\"abc\"}" AS Variant) AS String NULL) optimized expr : "{\"k1\":123,\"k2\":\"abc\"}" output type : String NULL output domain : {"{\"k1\":123,\"k2\":\"abc\"}"..="{\"k1\":123,\"k2\":\"abc\"}"} diff --git a/src/query/sql/src/planner/semantic/type_check.rs b/src/query/sql/src/planner/semantic/type_check.rs index 6ca361d135c98..6ede87cf326d3 100644 --- a/src/query/sql/src/planner/semantic/type_check.rs +++ b/src/query/sql/src/planner/semantic/type_check.rs @@ -229,15 +229,6 @@ impl<'a> TypeChecker<'a> { }) } - #[allow(dead_code)] - fn post_resolve( - &mut self, - scalar: &ScalarExpr, - data_type: &DataType, - ) -> Result<(ScalarExpr, DataType)> { - Ok((scalar.clone(), data_type.clone())) - } - #[recursive::recursive] pub fn resolve(&mut self, expr: &Expr) -> Result> { let box (scalar, data_type): Box<(ScalarExpr, DataType)> = match expr { @@ -598,7 +589,6 @@ impl<'a> TypeChecker<'a> { }; let registry = &BUILTIN_FUNCTIONS; let checked_expr = type_check::check(&raw_expr, registry)?; - let checked_expr = type_check::rewrite_function_to_cast(checked_expr)?; if let Some(constant) = self.try_fold_constant(&checked_expr, false) { return Ok(constant); @@ -647,7 +637,6 @@ impl<'a> TypeChecker<'a> { }; let registry = &BUILTIN_FUNCTIONS; let checked_expr = type_check::check(&raw_expr, registry)?; - let checked_expr = type_check::rewrite_function_to_cast(checked_expr)?; if let Some(constant) = self.try_fold_constant(&checked_expr, false) { return Ok(constant); @@ -944,7 +933,7 @@ impl<'a> TypeChecker<'a> { // Scalar function let mut new_params: Vec = Vec::with_capacity(params.len()); for param in params { - let box (scalar, _data_type) = self.resolve(param)?; + let box (scalar, _) = self.resolve(param)?; let expr = scalar.as_expr()?; let (expr, _) = ConstantFolder::fold(&expr, &self.func_ctx, &BUILTIN_FUNCTIONS); @@ -2185,7 +2174,6 @@ impl<'a> TypeChecker<'a> { .project_column_ref(|index| { lambda_schema.index_of(&index.to_string()).unwrap() }); - let expr = type_check::rewrite_function_to_cast(expr)?; let (expr, _) = ConstantFolder::fold(&expr, &self.func_ctx, &BUILTIN_FUNCTIONS); let remote_lambda_expr = expr.as_remote_expr(); let lambda_display = format!("{:?} -> {}", params, expr.sql_display()); @@ -2906,7 +2894,7 @@ impl<'a> TypeChecker<'a> { }; let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS)?; - let expr = type_check::rewrite_function_to_cast(expr)?; + let expr = type_check::rewrite_function_to_cast(expr); // Run constant folding for arguments of the scalar function. // This will be helpful to simplify some constant expressions, especially @@ -2942,6 +2930,26 @@ impl<'a> TypeChecker<'a> { return Ok(constant); } + if let EExpr::Cast { + span, + is_try, + dest_type, + .. + } = expr + { + assert_eq!(folded_args.len(), 1); + return Ok(Box::new(( + CastExpr { + span, + is_try, + argument: Box::new(folded_args.pop().unwrap()), + target_type: Box::new(dest_type.clone()), + } + .into(), + dest_type, + ))); + } + // reorder if func_name == "eq" && folded_args.len() == 2 diff --git a/src/query/storages/common/index/tests/it/filters/bloom_filter.rs b/src/query/storages/common/index/tests/it/filters/bloom_filter.rs index 76e45567b2ac4..8d2a80a84fe6d 100644 --- a/src/query/storages/common/index/tests/it/filters/bloom_filter.rs +++ b/src/query/storages/common/index/tests/it/filters/bloom_filter.rs @@ -442,7 +442,7 @@ fn eval_text( let raw_expr = parse_raw_expr(text, &columns); let expr = type_check::check(&raw_expr, &BUILTIN_FUNCTIONS).unwrap(); - let expr = type_check::rewrite_function_to_cast(expr).unwrap(); + let expr = type_check::rewrite_function_to_cast(expr); let expr = expr.project_column_ref(|i| columns[*i].0.to_string()); eval_index_expr(file, &block, &bloom_columns, schema, expr); From 69d920248ef9f1b2d2b3f20a901b60959deda8d8 Mon Sep 17 00:00:00 2001 From: coldWater Date: Thu, 3 Apr 2025 17:42:29 +0800 Subject: [PATCH 23/23] fix --- .../index/tests/it/testdata/test_bloom_filter.txt | 8 ++++---- .../suites/mode/standalone/explain/explain.test | 11 ++--------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt b/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt index 5f0687362100a..7f59e75245a55 100644 --- a/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt +++ b/src/query/storages/common/index/tests/it/testdata/test_bloom_filter.txt @@ -267,8 +267,8 @@ result : MustFalse +-----------+------+----------------------+ | 0 | Int8 | Column(Int8([0, 2])) | +-----------+------+----------------------+ -expr : eq(CAST(to_int32(to_int16(x)) AS Decimal(10, 0)), 1.2_d128(2,1)) -filter : eq(CAST(to_int32(to_int16(x)) AS Decimal(10, 0)), 1.2_d128(2,1)) +expr : eq(CAST(CAST(CAST(x AS Int16) AS Int32) AS Decimal(10, 0)), 1.2_d128(2,1)) +filter : eq(CAST(CAST(CAST(x AS Int16) AS Int32) AS Decimal(10, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int8(SimpleDomain { min: 0, max: 2 }))} result : Uncertain @@ -337,8 +337,8 @@ result : MustFalse +-----------+-------+-------------------------+ | 0 | Int16 | Column(Int16([0, 300])) | +-----------+-------+-------------------------+ -expr : eq(CAST(to_int8(x) AS Decimal(3, 0)), 1.2_d128(2,1)) -filter : eq(CAST(to_int8(x) AS Decimal(3, 0)), 1.2_d128(2,1)) +expr : eq(CAST(CAST(x AS Int8) AS Decimal(3, 0)), 1.2_d128(2,1)) +filter : eq(CAST(CAST(x AS Int8) AS Decimal(3, 0)), 1.2_d128(2,1)) domains : {"x": Number(Int16(SimpleDomain { min: 0, max: 300 }))} result : Uncertain diff --git a/tests/sqllogictests/suites/mode/standalone/explain/explain.test b/tests/sqllogictests/suites/mode/standalone/explain/explain.test index 33cd676156106..e781936a51427 100644 --- a/tests/sqllogictests/suites/mode/standalone/explain/explain.test +++ b/tests/sqllogictests/suites/mode/standalone/explain/explain.test @@ -873,7 +873,7 @@ Sort ├── estimated rows: 0.00 ├── EvalScalar(Build) │ ├── output columns: [numbers.number (#2), register_at (#3)] - │ ├── expressions: [to_yyyymmdd(to_timestamp(CAST(numbers.number (#2) AS Int64)))] + │ ├── expressions: [to_yyyymmdd(CAST(numbers.number (#2) AS Timestamp))] │ ├── estimated rows: 0.00 │ └── Filter │ ├── output columns: [numbers.number (#2)] @@ -890,7 +890,7 @@ Sort │ └── estimated rows: 10.00 └── EvalScalar(Probe) ├── output columns: [numbers.number (#0), pt (#1)] - ├── expressions: [to_yyyymmdd(to_timestamp(CAST(numbers.number (#0) AS Int64)))] + ├── expressions: [to_yyyymmdd(CAST(numbers.number (#0) AS Timestamp))] ├── estimated rows: 0.00 └── Filter ├── output columns: [numbers.number (#0)] @@ -906,13 +906,6 @@ Sort ├── push downs: [filters: [numbers.number (#0) > 5], limit: NONE] └── estimated rows: 10.00 - -statement ok -drop table if exists a - -statement ok -drop table if exists b - statement ok create OR REPLACE table a(id int, c1 INT NULL)