@@ -851,13 +851,69 @@ mod tests {
851851 time_dimensions: None,
852852 order: Some(vec![]),
853853 limit: Some(0),
854- offset: None ,
854+ offset: Some(0) ,
855855 filters: None,
856856 ungrouped: Some(true),
857857 }
858858 );
859859 }
860860
861+ #[tokio::test]
862+ async fn test_pushdown_limit_0_grouped() {
863+ if !Rewriter::sql_push_down_enabled() {
864+ return;
865+ }
866+ init_testing_logger();
867+
868+ let logical_plan = convert_select_to_query_plan(
869+ "SELECT KibanaSampleDataEcommerce.customer_gender FROM \"public\".\"KibanaSampleDataEcommerce\" GROUP BY 1 LIMIT 0".to_string(),
870+ DatabaseProtocol::PostgreSQL
871+ ).await.as_logical_plan();
872+
873+ assert_eq!(
874+ logical_plan.find_cube_scan().request,
875+ V1LoadRequestQuery {
876+ measures: Some(vec![]),
877+ dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]),
878+ segments: Some(vec![]),
879+ time_dimensions: None,
880+ order: Some(vec![]),
881+ limit: Some(0),
882+ offset: None,
883+ filters: None,
884+ ungrouped: None,
885+ }
886+ )
887+ }
888+
889+ #[tokio::test]
890+ async fn test_pushdown_limit_0_ungrouped() {
891+ if !Rewriter::sql_push_down_enabled() {
892+ return;
893+ }
894+ init_testing_logger();
895+
896+ let logical_plan = convert_select_to_query_plan(
897+ "SELECT KibanaSampleDataEcommerce.customer_gender FROM \"public\".\"KibanaSampleDataEcommerce\" LIMIT 0".to_string(),
898+ DatabaseProtocol::PostgreSQL
899+ ).await.as_logical_plan();
900+
901+ assert_eq!(
902+ logical_plan.find_cube_scan().request,
903+ V1LoadRequestQuery {
904+ measures: Some(vec![]),
905+ dimensions: Some(vec!["KibanaSampleDataEcommerce.customer_gender".to_string()]),
906+ segments: Some(vec![]),
907+ time_dimensions: None,
908+ order: Some(vec![]),
909+ limit: Some(0),
910+ offset: None,
911+ filters: None,
912+ ungrouped: Some(true),
913+ }
914+ )
915+ }
916+
861917 #[tokio::test]
862918 async fn tableau_projection_with_casts() {
863919 if !Rewriter::sql_push_down_enabled() {
0 commit comments