From c3f71d718eb6c052322eccf43d0c707ccb731143 Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Sat, 9 Mar 2019 14:48:24 -0700 Subject: [PATCH] add integration test --- rust/datafusion/src/datasource/parquet.rs | 1 + rust/datafusion/tests/sql.rs | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/rust/datafusion/src/datasource/parquet.rs b/rust/datafusion/src/datasource/parquet.rs index 1f2a66d2bb017..dbb1775836e21 100644 --- a/rust/datafusion/src/datasource/parquet.rs +++ b/rust/datafusion/src/datasource/parquet.rs @@ -54,6 +54,7 @@ impl ParquetTable { } impl Table for ParquetTable { + fn schema(&self) -> &Arc { &self.schema } diff --git a/rust/datafusion/tests/sql.rs b/rust/datafusion/tests/sql.rs index 954b2ee0fbf13..5ffae5dafe814 100644 --- a/rust/datafusion/tests/sql.rs +++ b/rust/datafusion/tests/sql.rs @@ -16,6 +16,7 @@ // under the License. use std::cell::RefCell; +use std::env; use std::rc::Rc; use std::sync::Arc; @@ -27,9 +28,22 @@ use arrow::datatypes::{DataType, Field, Schema}; use datafusion::execution::context::ExecutionContext; use datafusion::execution::relation::Relation; +use datafusion::datasource::parquet::ParquetFile; +use datafusion::datasource::parquet::ParquetTable; +use datafusion::datasource::{RecordBatchIterator, Table}; const DEFAULT_BATCH_SIZE: usize = 1024 * 1024; +#[test] +fn parquet_query() { + let mut ctx = ExecutionContext::new(); + ctx.register_table("alltypes_plain", load_parquet_table("alltypes_plain.parquet")); + let sql = "SELECT id, string_col FROM alltypes_plain"; + let actual = execute(&mut ctx, sql); + let expected = "tbd".to_string(); + assert_eq!(expected, actual); +} + #[test] fn csv_query_with_predicate() { let mut ctx = ExecutionContext::new(); @@ -163,6 +177,14 @@ fn register_csv( ctx.register_csv(name, filename, &schema, true); } +fn load_parquet_table(name: &str) -> Rc { + let testdata = env::var("PARQUET_TEST_DATA").unwrap(); + let filename = format!("{}/{}", testdata, name); + let table = ParquetTable::new(&filename); + println!("{:?}", table.schema()); + Rc::new(table) +} + /// Execute query and return result set as tab delimited string fn execute(ctx: &mut ExecutionContext, sql: &str) -> String { let results = ctx.sql(&sql, DEFAULT_BATCH_SIZE).unwrap();