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

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

Github user jacques-n commented on a diff in the pull request:

    https://github.com/apache/drill/pull/228#discussion_r43941999
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/vector/complex/fn/JsonReader.java
 ---
    @@ -93,13 +93,15 @@ public void ensureAtLeastOneField(ComplexWriter writer) 
{
         if (!atLeastOneWrite) {
           // if we had no columns, create one empty one so we can return some 
data for count purposes.
           SchemaPath sp = columns.get(0);
    -      PathSegment root = sp.getRootSegment();
    +      PathSegment fieldPath = sp.getRootSegment();
           BaseWriter.MapWriter fieldWriter = writer.rootAsMap();
    -      while (root.getChild() != null && !root.getChild().isArray()) {
    -        fieldWriter = fieldWriter.map(root.getNameSegment().getPath());
    -        root = root.getChild();
    +      while (fieldPath.getChild() != null && ! 
fieldPath.getChild().isArray()) {
    +        fieldWriter = 
fieldWriter.map(fieldPath.getNameSegment().getPath());
    +        fieldPath = fieldPath.getChild();
    +      }
    +      if (fieldWriter.isEmptyMap()) {
    --- End diff --
    
    Let me restate:
    
    We're using ensureAtLeastOneField to make sure we have at least one vector 
has been created. If we check this condition and it is false, then we do 
nothing. My question is: can we remove the ensureAtLeastOneField property and 
replace the condition above to be fieldWriter.isEmptyMap() instead?
    
    Basically change:
    
    if (!atLeastOneWrite) {
    
    to
    
    if (fieldWriter.isEmptyMap()) {
    



> ScanBatch violates IterOutcome protocol for zero-row sources [was: missing 
> JDBC metadata (schema) for 0-row results...]
> -----------------------------------------------------------------------------------------------------------------------
>
>                 Key: DRILL-2288
>                 URL: https://issues.apache.org/jira/browse/DRILL-2288
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Storage - Information Schema
>            Reporter: Daniel Barclay (Drill)
>            Assignee: Daniel Barclay (Drill)
>             Fix For: 1.3.0
>
>         Attachments: Drill2288NoResultSetMetadataWhenZeroRowsTest.java
>
>
> The ResultSetMetaData object from getMetadata() of a ResultSet is not set up 
> (getColumnCount() returns zero, and trying to access any other metadata 
> throws IndexOutOfBoundsException) for a result set with zero rows, at least 
> for one from DatabaseMetaData.getColumns(...).



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

Reply via email to