[ 
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)

Reply via email to