@@ -4581,124 +4581,3 @@ fn test_drop_constraints() {
4581
4581
snowflake ( ) . verified_stmt ( "ALTER TABLE tbl DROP FOREIGN KEY k1 RESTRICT" ) ;
4582
4582
snowflake ( ) . verified_stmt ( "ALTER TABLE tbl DROP CONSTRAINT c1 CASCADE" ) ;
4583
4583
}
4584
-
4585
- #[ test]
4586
- fn test_semantic_view ( ) {
4587
- let valid_sqls = [
4588
- ( "SELECT * FROM SEMANTIC_VIEW(model)" , None ) ,
4589
- (
4590
- "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1, dim2)" ,
4591
- None ,
4592
- ) ,
4593
- ( "SELECT * FROM SEMANTIC_VIEW(a.b METRICS c.d, c.e)" , None ) ,
4594
- (
4595
- "SELECT * FROM SEMANTIC_VIEW(model FACTS fact1, fact2)" ,
4596
- None ,
4597
- ) ,
4598
- (
4599
- "SELECT * FROM SEMANTIC_VIEW(model FACTS DATE_PART('year', col))" ,
4600
- None ,
4601
- ) ,
4602
- (
4603
- "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1 METRICS met1)" ,
4604
- None ,
4605
- ) ,
4606
- (
4607
- "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1 WHERE x > 0)" ,
4608
- None ,
4609
- ) ,
4610
- (
4611
- "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1) AS sv" ,
4612
- None ,
4613
- ) ,
4614
- (
4615
- "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS DATE_PART('year', col))" ,
4616
- None ,
4617
- ) ,
4618
- (
4619
- "SELECT * FROM SEMANTIC_VIEW(model METRICS orders.col, orders.col2)" ,
4620
- None ,
4621
- ) ,
4622
- // We can parse in any order but will always produce a result in a fixed order.
4623
- (
4624
- "SELECT * FROM SEMANTIC_VIEW(model WHERE x > 0 DIMENSIONS dim1)" ,
4625
- Some ( "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1 WHERE x > 0)" ) ,
4626
- ) ,
4627
- (
4628
- "SELECT * FROM SEMANTIC_VIEW(model METRICS met1 DIMENSIONS dim1)" ,
4629
- Some ( "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1 METRICS met1)" ) ,
4630
- ) ,
4631
- (
4632
- "SELECT * FROM SEMANTIC_VIEW(model FACTS fact1 DIMENSIONS dim1)" ,
4633
- Some ( "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1 FACTS fact1)" ) ,
4634
- ) ,
4635
- ] ;
4636
-
4637
- for ( input_sql, expected_sql) in valid_sqls {
4638
- if let Some ( expected) = expected_sql {
4639
- // Test that non-canonical order gets normalized
4640
- let parsed = snowflake ( ) . parse_sql_statements ( input_sql) . unwrap ( ) ;
4641
- let formatted = parsed[ 0 ] . to_string ( ) ;
4642
- assert_eq ! ( formatted, expected) ;
4643
- } else {
4644
- snowflake ( ) . verified_stmt ( input_sql) ;
4645
- }
4646
- }
4647
-
4648
- let invalid_sqls = [
4649
- "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1 INVALID inv1)" ,
4650
- "SELECT * FROM SEMANTIC_VIEW(model DIMENSIONS dim1 DIMENSIONS dim2)" ,
4651
- "SELECT * FROM SEMANTIC_VIEW(model METRICS SUM(met1.avg))" ,
4652
- ] ;
4653
-
4654
- for sql in invalid_sqls {
4655
- let result = snowflake ( ) . parse_sql_statements ( sql) ;
4656
- assert ! ( result. is_err( ) , "Expected error for invalid SQL: {}" , sql) ;
4657
- }
4658
-
4659
- let ast_sql = r#"SELECT * FROM SEMANTIC_VIEW(
4660
- my_model
4661
- DIMENSIONS DATE_PART('year', date_col), region_name
4662
- METRICS orders.revenue, orders.count
4663
- WHERE active = true
4664
- ) AS model_alias"# ;
4665
-
4666
- let stmt = snowflake ( ) . parse_sql_statements ( ast_sql) . unwrap ( ) ;
4667
- match & stmt[ 0 ] {
4668
- Statement :: Query ( q) => {
4669
- if let SetExpr :: Select ( select) = q. body . as_ref ( ) {
4670
- if let Some ( TableWithJoins { relation, .. } ) = select. from . first ( ) {
4671
- match relation {
4672
- TableFactor :: SemanticView {
4673
- name,
4674
- dimensions,
4675
- metrics,
4676
- facts,
4677
- where_clause,
4678
- alias,
4679
- } => {
4680
- assert_eq ! ( name. to_string( ) , "my_model" ) ;
4681
- assert_eq ! ( dimensions. len( ) , 2 ) ;
4682
- assert_eq ! ( dimensions[ 0 ] . to_string( ) , "DATE_PART('year', date_col)" ) ;
4683
- assert_eq ! ( dimensions[ 1 ] . to_string( ) , "region_name" ) ;
4684
- assert_eq ! ( metrics. len( ) , 2 ) ;
4685
- assert_eq ! ( metrics[ 0 ] . to_string( ) , "orders.revenue" ) ;
4686
- assert_eq ! ( metrics[ 1 ] . to_string( ) , "orders.count" ) ;
4687
- assert ! ( facts. is_empty( ) ) ;
4688
- assert ! ( where_clause. is_some( ) ) ;
4689
- assert_eq ! ( where_clause. as_ref( ) . unwrap( ) . to_string( ) , "active = true" ) ;
4690
- assert ! ( alias. is_some( ) ) ;
4691
- assert_eq ! ( alias. as_ref( ) . unwrap( ) . name. value, "model_alias" ) ;
4692
- }
4693
- _ => panic ! ( "Expected SemanticView table factor" ) ,
4694
- }
4695
- } else {
4696
- panic ! ( "Expected table in FROM clause" ) ;
4697
- }
4698
- } else {
4699
- panic ! ( "Expected SELECT statement" ) ;
4700
- }
4701
- }
4702
- _ => panic ! ( "Expected Query statement" ) ,
4703
- }
4704
- }
0 commit comments