drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jacques Nadeau (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DRILL-3863) TestBuilder.baseLineColumns(...) doesn't take net strings; parses somehow--can't test some names
Date Thu, 01 Oct 2015 00:06:04 GMT

     [ https://issues.apache.org/jira/browse/DRILL-3863?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jacques Nadeau updated DRILL-3863:
----------------------------------
    Assignee: Daniel Barclay (Drill)  (was: Jason Altekruse)

> TestBuilder.baseLineColumns(...) doesn't take net strings; parses somehow--can't test
some names
> ------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-3863
>                 URL: https://issues.apache.org/jira/browse/DRILL-3863
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Tools, Build & Test
>            Reporter: Daniel Barclay (Drill)
>            Assignee: Daniel Barclay (Drill)
>
> {{TestBuilder}}'s {{baseLineColumns(String...)}} method doesn't take the given strings
as net column names, and instead tries to parse them somehow, but doesn't parse them as the
SQL parser would (and that method's Javadoc documentation doesn't seem to say how the strings
are parsed/interpreted or indicate any third way of specifying arbitrary net column names).
> That means that certain column names _cannot be checked_ for (cannot be used in the result
set being checked).
> For example, in Drill, the SQL delimited identifier  "{{`Column B`}}"  specifies a net
column name of "{{Column B}}".  However, passing that net column name (that is, a {{String}}
representing that net column name) to {{baseLineColumns}} results in a strange parsing error.
 (See Test Class 1 and the error in Failure Trace 1.)
> Checking whether {{baseLineColumns}} takes SQL-level syntax for column names rather than
net column names (by passing a string including the back-quote characters of the delimited
identifier) seems to indicate that {{baseLineColumns}} doesn't take that syntax that either.
 (See Test Class 2 and the three expected/returned records in Failure Trace 2.)
> That seems to mean that it's impossible to use {{baseLineColumns}} to validate certain
column names (including the fairly simple/common case of alias names containing spaces for
output formatting purposes).
> Test Class 1:
> {noformat}
> import org.junit.Test;
> public class TestTEMPFileNameBugs extends BaseTestQuery {
>   @Test
>   public void test1() throws Exception {
>     testBuilder()
>     .sqlQuery( "SELECT * FROM ( VALUES (1, 2) ) AS T(column_a, `Column B`)" )
>     .unOrdered()
>     .baselineColumns("column_a", "Column B")
>     .baselineValues(1, 2)
>     .go();
>   }
> }
> {noformat}
> Failure Trace 1:
> {noformat}
> org.apache.drill.common.exceptions.ExpressionParsingException: Expression has syntax
error! line 1:0:no viable alternative at input 'Column'
> 	at org.apache.drill.common.expression.parser.ExprParser.displayRecognitionError(ExprParser.java:169)
> 	at org.antlr.runtime.BaseRecognizer.reportError(BaseRecognizer.java:186)
> 	at org.apache.drill.common.expression.parser.ExprParser.lookup(ExprParser.java:5163)
> 	at org.apache.drill.common.expression.parser.ExprParser.atom(ExprParser.java:4370)
> 	at org.apache.drill.common.expression.parser.ExprParser.unaryExpr(ExprParser.java:4252)
> 	at org.apache.drill.common.expression.parser.ExprParser.xorExpr(ExprParser.java:3954)
> 	at org.apache.drill.common.expression.parser.ExprParser.mulExpr(ExprParser.java:3821)
> 	at org.apache.drill.common.expression.parser.ExprParser.addExpr(ExprParser.java:3689)
> 	at org.apache.drill.common.expression.parser.ExprParser.relExpr(ExprParser.java:3564)
> 	at org.apache.drill.common.expression.parser.ExprParser.equExpr(ExprParser.java:3436)
> 	at org.apache.drill.common.expression.parser.ExprParser.andExpr(ExprParser.java:3310)
> 	at org.apache.drill.common.expression.parser.ExprParser.orExpr(ExprParser.java:3185)
> 	at org.apache.drill.common.expression.parser.ExprParser.condExpr(ExprParser.java:3110)
> 	at org.apache.drill.common.expression.parser.ExprParser.expression(ExprParser.java:3041)
> 	at org.apache.drill.common.expression.parser.ExprParser.parse(ExprParser.java:206)
> 	at org.apache.drill.TestBuilder.parsePath(TestBuilder.java:202)
> 	at org.apache.drill.TestBuilder.baselineColumns(TestBuilder.java:333)
> 	at org.apache.drill.TestTEMPFileNameBugs.test1(TestTEMPFileNameBugs.java:30)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> {noformat}
> Test Class 2:
> {noformat}
> import org.junit.Test;
> public class TestTEMPFileNameBugs extends BaseTestQuery {
>   @Test
>   public void test1() throws Exception {
>     testBuilder()
>     .sqlQuery( "SELECT * FROM ( VALUES (1, 2) ) AS T(column_a, `Column B`)" )
>     .unOrdered()
>     .baselineColumns("column_a", "`Column B`")
>     .baselineValues(1, 2)
>     .go();
>   }
> }
> {noformat}
> Failure Trace 2:
> {noformat}
> java.lang.Exception: After matching 0 records, did not find expected record in result
set: `Column B` : 2, `column_a` : 1, 
> Some examples of expected records:`Column B` : 2, `column_a` : 1, 
>  Some examples of records returned by the test query:`Column B` : 2, `column_a` : 1,

> 	at org.apache.drill.DrillTestWrapper.compareResults(DrillTestWrapper.java:577)
> 	at org.apache.drill.DrillTestWrapper.compareUnorderedResults(DrillTestWrapper.java:303)
> 	at org.apache.drill.DrillTestWrapper.run(DrillTestWrapper.java:125)
> 	at org.apache.drill.TestBuilder.go(TestBuilder.java:129)
> 	at org.apache.drill.TestTEMPFileNameBugs.test1(TestTEMPFileNameBugs.java:33)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at java.lang.reflect.Method.invoke(Method.java:606)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message