MCPcopy Create free account
hub / github.com/apache/datafusion / test_bigquery_dialect_overrides

Function test_bigquery_dialect_overrides

datafusion/sql/src/unparser/expr.rs:3659–3705  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

3657
3658 #[test]
3659 fn test_bigquery_dialect_overrides() -> Result<()> {
3660 let bigquery_dialect: Arc<dyn Dialect> = Arc::new(BigQueryDialect::new());
3661 let unparser = Unparser::new(bigquery_dialect.as_ref());
3662
3663 // date_field_extract_style: EXTRACT instead of date_part
3664 let expr = Expr::ScalarFunction(ScalarFunction {
3665 func: Arc::new(ScalarUDF::new_from_impl(
3666 datafusion_functions::datetime::date_part::DatePartFunc::new(),
3667 )),
3668 args: vec![lit("YEAR"), col("date_col")],
3669 });
3670 let actual = format!("{}", unparser.expr_to_sql(&expr)?);
3671 assert_eq!(actual, "EXTRACT(YEAR FROM `date_col`)");
3672
3673 // interval_style: SQL standard instead of PostgresVerbose
3674 let expr = interval_year_month_lit("3 months");
3675 let actual = format!("{}", unparser.expr_to_sql(&expr)?);
3676 assert_eq!(actual, "INTERVAL '3' MONTH");
3677
3678 // float64_ast_dtype: FLOAT64 instead of DOUBLE
3679 let expr = cast(col("a"), DataType::Float64);
3680 let actual = format!("{}", unparser.expr_to_sql(&expr)?);
3681 assert_eq!(actual, "CAST(`a` AS FLOAT64)");
3682
3683 // supports_column_alias_in_table_alias: false
3684 assert!(!bigquery_dialect.supports_column_alias_in_table_alias());
3685
3686 // utf8_cast_dtype: STRING instead of VARCHAR
3687 let expr = cast(col("a"), DataType::Utf8);
3688 let actual = format!("{}", unparser.expr_to_sql(&expr)?);
3689 assert_eq!(actual, "CAST(`a` AS STRING)");
3690
3691 // large_utf8_cast_dtype: STRING instead of TEXT
3692 let expr = cast(col("a"), DataType::LargeUtf8);
3693 let actual = format!("{}", unparser.expr_to_sql(&expr)?);
3694 assert_eq!(actual, "CAST(`a` AS STRING)");
3695
3696 // timestamp_cast_dtype: TIMESTAMP (no WITH TIME ZONE)
3697 let expr = cast(
3698 col("a"),
3699 DataType::Timestamp(TimeUnit::Microsecond, Some("+00:00".into())),
3700 );
3701 let actual = format!("{}", unparser.expr_to_sql(&expr)?);
3702 assert_eq!(actual, "CAST(`a` AS TIMESTAMP)");
3703
3704 Ok(())
3705 }
3706
3707 #[test]
3708 fn test_is_distinct_from() {

Callers

nothing calls this directly

Calls 8

newFunction · 0.85
ScalarFunctionClass · 0.85
interval_year_month_litFunction · 0.85
castFunction · 0.50
colFunction · 0.50
TimestampClass · 0.50
as_refMethod · 0.45
intoMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…