[ 
https://issues.apache.org/jira/browse/DRILL-3623?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15009832#comment-15009832
 ] 

ASF GitHub Bot commented on DRILL-3623:
---------------------------------------

Github user sudheeshkatkam commented on a diff in the pull request:

    https://github.com/apache/drill/pull/193#discussion_r45138996
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillDirectScanRel.java
 ---
    @@ -0,0 +1,111 @@
    +/**
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + * http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.drill.exec.planner.logical;
    +
    +import com.google.common.collect.Iterators;
    +import org.apache.calcite.plan.RelOptCluster;
    +import org.apache.calcite.plan.RelTraitSet;
    +import org.apache.calcite.rel.AbstractRelNode;
    +import org.apache.calcite.rel.RelWriter;
    +import org.apache.calcite.rel.type.RelDataType;
    +import org.apache.drill.common.logical.data.LogicalOperator;
    +import org.apache.drill.exec.physical.base.PhysicalOperator;
    +import org.apache.drill.exec.planner.physical.DrillScanPrel;
    +import org.apache.drill.exec.planner.physical.PhysicalPlanCreator;
    +import org.apache.drill.exec.planner.physical.PlannerSettings;
    +import org.apache.drill.exec.planner.physical.Prel;
    +import org.apache.drill.exec.planner.physical.PrelUtil;
    +import org.apache.drill.exec.planner.physical.visitor.PrelVisitor;
    +import org.apache.drill.exec.record.BatchSchema;
    +import org.apache.drill.exec.store.direct.DirectGroupScan;
    +
    +import java.io.IOException;
    +import java.util.Iterator;
    +
    +/**
    + * Logical and physical RelNode representing a {@link DirectGroupScan}. 
This is not backed by a {@link DrillTable},
    + * unlike {@link DrillScanRel}.
    + */
    +public class DrillDirectScanRel extends AbstractRelNode implements 
DrillScanPrel, DrillRel {
    --- End diff --
    
    @jinfengni I'll post the patch with Values approach.
    
    @julianhyde That makes sense.
    
    @jacques-n Since we use data to encode types in Values, pushing Limit 
(specially zero) into into Values requires a sizable change (?). Also, I think 
[there is a 
bug](https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillValuesRel.java#L141)
 since Calcite allows for creating a LogicalValues [with types and without 
literals](https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/rel/logical/LogicalValues.java#L101),
 and Drill does not handle this case.
    
    Regarding the above approach (putting a limit 0 on top of scan), I think 
fast schema wasn't sufficient because there was only one record batch during 
execution (extreme case). Right now, I do not see any specific issue there.
    
    Regarding the note, can you expand on what you mean? Change the visitor 
pattern to a logical rule? Or is there a logical rule that conflicts with this 
change, and this shorter path should be avoided?


> Hive query hangs with limit 0 clause
> ------------------------------------
>
>                 Key: DRILL-3623
>                 URL: https://issues.apache.org/jira/browse/DRILL-3623
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Storage - Hive
>    Affects Versions: 1.1.0
>         Environment: MapR cluster
>            Reporter: Andries Engelbrecht
>            Assignee: Sudheesh Katkam
>             Fix For: Future
>
>
> Running a select * from hive.table limit 0 does not return (hangs).
> Select * from hive.table limit 1 works fine
> Hive table is about 6GB with 330 files with parquet using snappy compression.
> Data types are int, bigint, string and double.
> Querying directory with parquet files through the DFS plugin works fine
> select * from dfs.root.`/user/hive/warehouse/database/table` limit 0;



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

Reply via email to