[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-11 Thread Yao Zhang (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17397137#comment-17397137
 ] 

Yao Zhang commented on FLINK-23602:
---

Hi [~TsReaper],

I reviewed codes in Calcite and it turns out that it is legal to convert a 
string to a Boolean while it cannot convert a integer to a Boolean.

SqlTypeUtil.java
{code:java}
  private static boolean canConvertStringInCompare(RelDataTypeFamily family) {
if (family instanceof SqlTypeFamily) {
  SqlTypeFamily sqlTypeFamily = (SqlTypeFamily) family;
  switch (sqlTypeFamily) {
  case DATE:
  case TIME:
  case TIMESTAMP:
  case INTERVAL_DAY_TIME:
  case INTERVAL_YEAR_MONTH:
  case NUMERIC:
  case APPROXIMATE_NUMERIC:
  case EXACT_NUMERIC:
  case INTEGER:
  case BOOLEAN:
return true;
  }
}
return false;
  }
{code}

Then, given these SQLs:

{code:sql}
-- Same data type as in your example
create table student (id bigint, name string, score DECIMAL) with ('connector' 
= 'datagen')

select score from student where score between '1.0' and (id < 1)
{code}

It can pass the validation, because the string type can be implicitly converted 
to Boolean. 

As the current implementation of Calcite, its operands type checking logic is 
as discussed below:

Three operands of between clause are student.score(with type DECIMAL), '1.0' 
(with type CHAR[]) and (id < 1) (an expression with the type of boolean).

Calcite will check whether those three operands are comparable. It does two 
checks: student.score with '1.0' and '1.0' with (id < 1). Those two pairs are 
comparable.

However, in convert phase, the type of the three operands in where clause is 
DECIMAL, CHAR and BOOLEAN respectively. We cannot get a consistent type for 
those three operands. As a result, Calcite will add no cast functions to those 
operands. That's why no auto type conversion is performed.

Finally, the where clause is converted to "where student.score >= '1.0' and 
student.score <= (id < 1)" As a consequence, Flink will directly compare 
DECIMAL and CHAR. That's the reason why this exception (No applicable 
constructor/method found for actual parameters 
"org.apache.flink.table.data.DecimalData, 
org.apache.flink.table.data.binary.BinaryStringData") was thrown.

I created an issue CALCITE-4725, suggesting that it should perform more strict 
type check for between clause. The between clause operands checker should check 
all combinations of these three operands, not just one by one.


> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Assignee: Yao Zhang
>Priority: Major
>  Labels: pull-request-available
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (CAST (database5_t2.c0 AS STRING), '0.9996987230442536')) 
> AS DOUBLE )) AS ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> 

[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-09 Thread Caizhi Weng (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17396379#comment-17396379
 ] 

Caizhi Weng commented on FLINK-23602:
-

Hi [~paul8263]!

Flink and Calcite follow the SQL standard while most other databases don't, so 
the behaviors might be inconsistent but this is reasonable. According to SQL 
2011 standard section 6.13 (cast specification) booleans and exact numerics are 
not allowed to cast from and to each other, let along comparing with each other.

So I think the problem is not that Calcite is not casting a boolean value to a 
numeric, but that Calcite is not checking for this invalid case when it comes 
to {{BETWEEN... AND...}} clause.

> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Assignee: Yao Zhang
>Priority: Major
>  Labels: pull-request-available
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (CAST (database5_t2.c0 AS STRING), '0.9996987230442536')) 
> AS DOUBLE )) AS ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>   at 
> org.apache.flink.util.TestNameProvider$1.evaluate(TestNameProvider.java:45)
>   at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>   at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>   at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>   

[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-09 Thread Yao Zhang (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17396002#comment-17396002
 ] 

Yao Zhang commented on FLINK-23602:
---

Hi [~TsReaper],

I also investigated the behaviors of those SQL in other databases such as 
SQLite. For example, SQLs like:
{code:sql}
select PersonID, LastName from Person where PersonID between 0 and (PersonID < 
6);
select PersonID, LastName from Person where PersonID <= (PersonID < 90);
{code}
can successfully executed in SQLite but they will fail in Calcite. It seems 
that in Calcite, data of other types cannot compare with Boolean, while in 
SQLite it can. In SQLite, if the operand (such as PersonID < 90) which 
indicates a Boolean result returns true, it means that the condition expression 
is met. 

So, it appears that Calcite and SQLite do not share the same SQL dialect. Even 
though one SQL can pass the validation progress, it might still fail in the 
execution phase.

Should Flink(Calcite) support this kind of function(Boolean expression in 
between operand)?

I looked into the auto cast logic in Calcite. It locates in RelBuilder.java but 
I still did not get where exactly it is. I will focus on it these days. If 
anyone who is familiar with how Calcite adds auto cast, please comment below. 
Thanks.

> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Assignee: Yao Zhang
>Priority: Major
>  Labels: pull-request-available
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (CAST (database5_t2.c0 AS STRING), '0.9996987230442536')) 
> AS DOUBLE )) AS ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>   at 
> org.apache.flink.util.TestNameProvider$1.evaluate(TestNameProvider.java:45)
>   at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>   at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>   

[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-09 Thread Caizhi Weng (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17395933#comment-17395933
 ] 

Caizhi Weng commented on FLINK-23602:
-

Hi [~paul8263].

This is where the problem lies. I haven't looked into it thoroughly but it 
seems that although Calcite will change {{between... and...}} clause to {{>=}} 
and {{<=}} operations, it forgets to check for the operand types after the 
change. You can also look into Calcite with breakpoints and see where this 
change and the type checking happens.

> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Assignee: Yao Zhang
>Priority: Major
>  Labels: pull-request-available
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (CAST (database5_t2.c0 AS STRING), '0.9996987230442536')) 
> AS DOUBLE )) AS ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>   at 
> org.apache.flink.util.TestNameProvider$1.evaluate(TestNameProvider.java:45)
>   at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>   at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>   at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>   at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
>   at 
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
>   

[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-08 Thread Yao Zhang (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17395727#comment-17395727
 ] 

Yao Zhang commented on FLINK-23602:
---

Hi [~TsReaper], 

 

I reproduced what you commented by printing the SQL explanation and I guess the 
issue might be that the data type of the second operand((c1 < 1) literally is 
Boolean but I will explain it later) could not be determined so that there 
would be no automatic data type casting applied to the first operand.

 

However, I tried to explain the SQL:

SELECT database5_t2.c0 <= (c1 < 1) FROM database5_t2

and then got an error:

Cannot apply '<=' to arguments of type ' <= '. 
Supported form(s): ' <= '

So I doubt that the second operand of the between clause is illegal.

 

Can you successfully run this SQL explanation?

 

> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Assignee: Yao Zhang
>Priority: Major
>  Labels: pull-request-available
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (CAST (database5_t2.c0 AS STRING), '0.9996987230442536')) 
> AS DOUBLE )) AS ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>   at 
> org.apache.flink.util.TestNameProvider$1.evaluate(TestNameProvider.java:45)
>   at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>   at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>   at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>   at 

[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-06 Thread Caizhi Weng (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17394673#comment-17394673
 ] 

Caizhi Weng commented on FLINK-23602:
-

Hi all!

I looked into this issue a bit and I think the problem is not that we're 
lacking a corresponding function in {{DecimalDataUtils}}, but that there is 
something wrong with the generated plan.

I tried this SQL {{SELECT database5_t2.c0 BETWEEN '1' AND (c1 < 1) FROM 
database5_t2}} and get the plan
{code}
Sink(table=[default_catalog.default_database.Unregistered_Collect_Sink_1], 
fields=[EXPR$0])
+- Calc(select=[AND(>=(c0, _UTF-16LE'1'), <=(c0, <(c1, 1))) AS EXPR$0])
   +- TableSourceScan(table=[[default_catalog, default_database, 
database5_t2]], fields=[c0, c1])
{code}

We can see that there is no casting around {{_UTF-16LE'1'}} and {{<(c1, 1)}}. 
But if we write {{SELECT database5_t2.c0 >= '1' FROM database5_t2}} and 
{{SELECT database5_t2.c0 <= (c1 < 1) FROM database5_t2}} separately the SQL 
will run as normal.

> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Assignee: Yao Zhang
>Priority: Major
>  Labels: pull-request-available
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (CAST (database5_t2.c0 AS STRING), '0.9996987230442536')) 
> AS DOUBLE )) AS ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>   at 
> org.apache.flink.util.TestNameProvider$1.evaluate(TestNameProvider.java:45)
>   at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>   at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>   at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>   at 

[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-04 Thread Jark Wu (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17393058#comment-17393058
 ] 

Jark Wu commented on FLINK-23602:
-

cc [~lzljs3620320]

> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Priority: Major
>  Labels: pull-request-available
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (database5_t2.c0, '0.9996987230442536')) AS DOUBLE )) AS 
> ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>   at 
> org.apache.flink.util.TestNameProvider$1.evaluate(TestNameProvider.java:45)
>   at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>   at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>   at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>   at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
>   at 
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
>   at 
> com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
>   at 
> com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
>   at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
> Caused by: org.apache.flink.table.api.TableException: Failed to wait job 
> finish
>   at 
> 

[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-04 Thread xiaojin.wy (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17393015#comment-17393015
 ] 

xiaojin.wy commented on FLINK-23602:


I don't have the ability to assign people, maybe [~jark] can help you.

> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Priority: Major
>  Labels: pull-request-available
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (database5_t2.c0, '0.9996987230442536')) AS DOUBLE )) AS 
> ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>   at 
> org.apache.flink.util.TestNameProvider$1.evaluate(TestNameProvider.java:45)
>   at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>   at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>   at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>   at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
>   at 
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
>   at 
> com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
>   at 
> com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
>   at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
> Caused by: org.apache.flink.table.api.TableException: Failed to wait job 

[jira] [Commented] (FLINK-23602) org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No applicable constructor/method found for actual parameters "org.apache.flink.table.data.DecimalDa

2021-08-03 Thread Yao Zhang (Jira)


[ 
https://issues.apache.org/jira/browse/FLINK-23602?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17392686#comment-17392686
 ] 

Yao Zhang commented on FLINK-23602:
---

Hi [~xiaojin.wy],

The type of database5_t2.c0 in your DDL is Decimal. If you want to test whether 
a string literal is in a list contains Decimal values, Flink have to compare 
them. But the comparison method with the correct parameter types is not 
provided.

If this feature is required I can help fix this. Could you please assign this 
to me?

> org.codehaus.commons.compiler.CompileException: Line 84, Column 78: No 
> applicable constructor/method found for actual parameters 
> "org.apache.flink.table.data.DecimalData
> -
>
> Key: FLINK-23602
> URL: https://issues.apache.org/jira/browse/FLINK-23602
> Project: Flink
>  Issue Type: Bug
>  Components: Table SQL / Runtime
>Affects Versions: 1.14.0
>Reporter: xiaojin.wy
>Priority: Major
>
> {code:java}
> CREATE TABLE database5_t2 (
>   `c0` DECIMAL , `c1` BIGINT
> ) WITH (
>   'connector' = 'filesystem',
>   'format' = 'testcsv',
>   'path' = '$resultPath33'
> )
> INSERT OVERWRITE database5_t2(c0, c1) VALUES(-120229892, 790169221), 
> (-1070424438, -1787215649)
> SELECT COUNT(CAST ((database5_t2.c0) BETWEEN ((REVERSE(CAST ('1969-12-08' AS 
> STRING  AND
> (('-727278084') IN (database5_t2.c0, '0.9996987230442536')) AS DOUBLE )) AS 
> ref0
> FROM database5_t2 GROUP BY database5_t2.c1  ORDER BY database5_t2.c1
> {code}
> Running the sql above, will generate the error of this:
> {code:java}
> java.util.concurrent.ExecutionException: 
> org.apache.flink.table.api.TableException: Failed to wait job finish
>   at 
> java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
>   at 
> java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.awaitInternal(TableResultImpl.java:129)
>   at 
> org.apache.flink.table.api.internal.TableResultImpl.await(TableResultImpl.java:92)
>   at 
> org.apache.flink.table.planner.runtime.batch.sql.TableSourceITCase.testTableXiaojin(TableSourceITCase.scala:482)
>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>   at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.lang.reflect.Method.invoke(Method.java:498)
>   at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>   at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>   at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>   at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>   at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
>   at 
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
>   at 
> org.apache.flink.util.TestNameProvider$1.evaluate(TestNameProvider.java:45)
>   at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:61)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>   at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>   at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>   at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>   at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54)
>   at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>   at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>   at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>   at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
>   at 
> com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
>   at 
> com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
>   at 
>