You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by "Mehant Baid (JIRA)" <ji...@apache.org> on 2014/02/11 07:43:20 UTC
[jira] [Created] (DRILL-364) Casting to VarChar throws error
CompileException
Mehant Baid created DRILL-364:
---------------------------------
Summary: Casting to VarChar throws error CompileException
Key: DRILL-364
URL: https://issues.apache.org/jira/browse/DRILL-364
Project: Apache Drill
Issue Type: Bug
Reporter: Mehant Baid
Assignee: Mehant Baid
Priority: Minor
This can be reproduced using the below physical plan:
{
head:{
type:"APACHE_DRILL_PHYSICAL",
version:"1",
generator:{
type:"manual"
}
},
graph:[
{
@id:1,
pop:"json-scan",
entries: [
{
path : "/tmp/scan.json"
}
],
storageengine: {
"type": "json",
"dfsName": "file:///"
}
},
{
pop:"project",
@id:2,
child: 1,
exprs: [ {
ref: "VarCharCast",
expr: "cast(integer as varchar(30))"
} ]
},
{
@id: 3,
child: 2,
pop: "screen"
}
]
}
The input file, "/tmp/scan.json" is as follows
{
"integer" : 2008
}
It fails with the error: "org.codehaus.commons.compiler.CompileException
Line 55, Column 38: No applicable constructor/method found for actual parameters"
>From the error, its clear that its not able to find a method. The line its complaining about is:
vv6 .getMutator().set((outIndex), out5);
vv6 is a VarCharVector and out5 is a NullableVarCharHolder. So its unable to find a set() function with parameters (int, NullableVarCharHolder). We do have a function in VarCharVector that matches the required signature but its 'protected' hence cannot be called from here. The only way to call that function is from within the set function of NullableVarCharVector.
Looks like a minor bug in the generated code for project, vv6 should be declared a NullableVarCharVector.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)
Re: [jira] [Created] (DRILL-364) Casting to VarChar throws error CompileException
Posted by Jinfeng Ni <ji...@gmail.com>.
Hi Mehant,
You are right that vv6 should be declared as a NullableVarCharVector. The
cause of this bug is in the OutputTypeDeterminer for the cast function
definition; we should not use fixed type as the output of cast function.
In stead, we should use a Null-if-Null output type determiner.
I added a new OutputTypeDeterminer when I worked on other SQL functions.
We may fix this cast function bug after we have this new
OutputTypeDeterminer.
On Mon, Feb 10, 2014 at 10:43 PM, Mehant Baid (JIRA) <ji...@apache.org>wrote:
> Mehant Baid created DRILL-364:
> ---------------------------------
>
> Summary: Casting to VarChar throws error CompileException
> Key: DRILL-364
> URL: https://issues.apache.org/jira/browse/DRILL-364
> Project: Apache Drill
> Issue Type: Bug
> Reporter: Mehant Baid
> Assignee: Mehant Baid
> Priority: Minor
>
>
> This can be reproduced using the below physical plan:
>
> {
> head:{
> type:"APACHE_DRILL_PHYSICAL",
> version:"1",
> generator:{
> type:"manual"
> }
> },
> graph:[
> {
> @id:1,
> pop:"json-scan",
> entries: [
> {
> path : "/tmp/scan.json"
> }
> ],
> storageengine: {
> "type": "json",
> "dfsName": "file:///"
> }
> },
> {
> pop:"project",
> @id:2,
> child: 1,
> exprs: [ {
> ref: "VarCharCast",
> expr: "cast(integer as varchar(30))"
> } ]
> },
> {
> @id: 3,
> child: 2,
> pop: "screen"
> }
> ]
> }
>
> The input file, "/tmp/scan.json" is as follows
> {
> "integer" : 2008
> }
>
> It fails with the error: "org.codehaus.commons.compiler.CompileException
> Line 55, Column 38: No applicable constructor/method found for actual
> parameters"
>
> From the error, its clear that its not able to find a method. The line its
> complaining about is:
> vv6 .getMutator().set((outIndex), out5);
>
> vv6 is a VarCharVector and out5 is a NullableVarCharHolder. So its unable
> to find a set() function with parameters (int, NullableVarCharHolder). We
> do have a function in VarCharVector that matches the required signature but
> its 'protected' hence cannot be called from here. The only way to call that
> function is from within the set function of NullableVarCharVector.
>
> Looks like a minor bug in the generated code for project, vv6 should be
> declared a NullableVarCharVector.
>
>
>
> --
> This message was sent by Atlassian JIRA
> (v6.1.5#6160)
>