> On May 7, 2014, 6:49 p.m., Jinfeng Ni wrote:
> > exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java,
> >  line 85
> > <https://reviews.apache.org/r/21165/diff/1/?file=576119#file576119line85>
> >
> >     Since the new Scan has the same rowtype as the original scan node, and 
> > we get the column count from RowType, when we compute the cost for this 
> > scan operator, I wonder if may lead to the same cost for the new scan and 
> > old scan operator. As a result, the new scan may not be chosen by optiq 
> > optimizer. 
> >     
> >     Probably, we need modify the code of getting column count in 
> > DrillScanRel.computeSelfCost().

Agree, will address that in updated patch.


> On May 7, 2014, 6:49 p.m., Jinfeng Ni wrote:
> > exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java,
> >  line 165
> > <https://reviews.apache.org/r/21165/diff/1/?file=576120#file576120line165>
> >
> >     For RexLiteral, I think we had better use 
> > literal.getType().getSqlTypeName().
> >     
> >     literal.getTypeName() returns a broad type of the literal. For example, 
> > all exact numbers, including integers have typeName "Decimal". If we use 
> > getTypeName(), then  f[12.3] will also be pushed down into scan? 
> >

f[12.3] will not pass SQL validation.

>>>>>>>>>>>>>>>>>>>>>
SEVERE: org.eigenbase.sql.validate.SqlValidatorException: Cannot apply 'ITEM' 
to arguments of type 'ITEM(<ANY>, <DECIMAL(3, 1)>)'. Supported form(s): 
<ARRAY>[<INTEGER>]
<<<<<<<<<<<<<<<<<<<<<

But in any case, I'll make the change just in case.


> On May 7, 2014, 6:49 p.m., Jinfeng Ni wrote:
> > exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java,
> >  line 167
> > <https://reviews.apache.org/r/21165/diff/1/?file=576120#file576120line167>
> >
> >     If we have a string literal in the query, then, this code will return a 
> > NamedSegment, and put the NamedSegment into the pushed column lists. For 
> > instance, 
> >     
> >     select 'abc', 'cde', regular_column from cp.`data.parquet`
> >     
> >     if table happens to have column named 'abc', 'cde', then, the pushed 
> > columns means unnecessary scan cost.
> >     
> >     
> >

Thanks for uncovering this. I am fixing this by removing the overridden 
visitLiteral() function as that is not required.


> On May 7, 2014, 6:49 p.m., Jinfeng Ni wrote:
> > exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java,
> >  line 144
> > <https://reviews.apache.org/r/21165/diff/1/?file=576120#file576120line144>
> >
> >     Here, we override visitCall() in this visitor class.  Do you think we 
> > override  visitOver()?  RexOver extendes RexCall, and also contains 
> > operands, though currently we do not support window function yet. 
> >      
> >

visitOver() in the super class takes care of visiting the operands. Tested 
(only the parsing) with the following query

SELECT
  f, SUM(f2['c2']) OVER (ROWS 3 PRECEDING), AVG(f3[2]) OVER (ROWS 10 PRECEDING)
FROM
  hbase.MyTable;

Projected column => [SchemaPath [`f`], SchemaPath [`f2`.`c2`], SchemaPath 
[`f3`[2]]]


- Aditya


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21165/#review42453
-----------------------------------------------------------


On May 7, 2014, 9:34 a.m., Aditya Kishore wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21165/
> -----------------------------------------------------------
> 
> (Updated May 7, 2014, 9:34 a.m.)
> 
> 
> Review request for drill, Jinfeng Ni and Steven Phillips.
> 
> 
> Bugs: DRILL-626
>     https://issues.apache.org/jira/browse/DRILL-626
> 
> 
> Repository: drill-git
> 
> 
> Description
> -------
> 
> If a query against an HBase table requires only a subset of columns, we 
> should qualify the HBase scan with these columns.
> 
> For example
> 
>     SELECT row_key, f['c1'], f['c2'], g FROM hbase.MyTable
> 
> should qualify the HBase scan as families => [g["ALL"], f["c1", "c2"]]
> 
> 
> Diffs
> -----
> 
>   
> common/src/main/java/org/apache/drill/common/exceptions/DrillRuntimeException.java
>  9266cdd 
>   
> contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseGroupScan.java
>  bcdebc3 
>   
> contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseRecordReader.java
>  aa5743f 
>   
> contrib/storage-hbase/src/main/java/org/apache/drill/exec/store/hbase/HBaseSubScan.java
>  ceaf23f 
>   
> contrib/storage-hbase/src/test/java/org/apache/drill/hbase/BaseHBaseTest.java 
> PRE-CREATION 
>   
> contrib/storage-hbase/src/test/java/org/apache/drill/hbase/TestHBaseFilterPushDown.java
>  1911078 
>   
> contrib/storage-hbase/src/test/java/org/apache/drill/hbase/TestHBaseProjectPushDown.java
>  PRE-CREATION 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/AbstractGroupScan.java
>  cd78bc1 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/physical/base/GroupScan.java
>  492dbc1 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillPushProjIntoScan.java
>  0eae1da 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/PrelUtil.java
>  d69f8cf 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/easy/EasyGroupScan.java
>  f94cff8 
>   exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/HiveScan.java 
> 2972928 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/store/ischema/InfoSchemaGroupScan.java
>  5202038 
>   
> exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScan.java
>  4d4ec9b 
> 
> Diff: https://reviews.apache.org/r/21165/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Aditya Kishore
> 
>

Reply via email to