You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Robert Hou (JIRA)" <ji...@apache.org> on 2017/08/31 01:20:00 UTC

[jira] [Commented] (DRILL-5754) Test framework does not enforce column orders

    [ https://issues.apache.org/jira/browse/DRILL-5754?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16148305#comment-16148305 ] 

Robert Hou commented on DRILL-5754:
-----------------------------------

The Drill QA test framework enforces column order.  So an interim solution could be to make sure desired tests are incorporated in the QA test suites.

> Test framework does not enforce column orders
> ---------------------------------------------
>
>                 Key: DRILL-5754
>                 URL: https://issues.apache.org/jira/browse/DRILL-5754
>             Project: Apache Drill
>          Issue Type: Bug
>            Reporter: Jinfeng Ni
>
> Drill has provided a test framework to submit SQL statements and verify the query results against expected results.  For instance 
> {code}
>     final String query = "select n_nationkey, n_regionkey from cp.`tpch/nation.parquet` where n_nationkey = 5 and n_regionkey = 0";
>     testBuilder()
>         .sqlQuery(query)
>         .unOrdered()
>         .baselineColumns("n_nationkey", "n_regionkey")
>         .baselineValues(5, 0)
>         .build()
>         .run();
> {code} 
> However, it seems that the test framework only do result match based on column name, without enforcing the column order in the output result set. The missing of column order verification  may be different from what people typically expect, and hide some code bugs. 
> The following test specify the expected output columns in a reverse order. However, the current test framework would still pass the test.
> {code}
>     final String query = "select n_nationkey, n_regionkey from cp.`tpch/nation.parquet` where n_nationkey = 5 and n_regionkey = 0";
>     testBuilder()
>         .sqlQuery(query)
>         .unOrdered()
>         .baselineColumns("n_regionkey", "n_nationkey")
>         .baselineValues(0, 5)
>         .build()
>         .run();
> {code}
> For now, to check the column order in query output,  people should use SchemaTestBuilder.  The problem is SchemaTestBuilder only allows to verify schema, without allowing to specify base line values. This means people has to write two tests if they want to verify schema & values. 
> {code}
>      final List<Pair<SchemaPath, TypeProtos.MajorType>> expectedSchema = Lists.newArrayList(
>         Pair.of(SchemaPath.getSimplePath("n_nationkey"), Types.required(TypeProtos.MinorType.INT)),
>         Pair.of(SchemaPath.getSimplePath("n_regionkey"), Types.required(TypeProtos.MinorType.INT)));
>     testBuilder()
>         .sqlQuery(query)
>         .schemaBaseLine(expectedSchema)
>         .go();
> {code}
> This JIRA is opened to ask for enhance test framework to make it enforce column order as well. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)