You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Paul Rogers (JIRA)" <ji...@apache.org> on 2016/11/26 04:39:58 UTC

[jira] [Created] (DRILL-5069) MaterializeVisitor.visitSchemaPath silently ignores missing fields

Paul Rogers created DRILL-5069:
----------------------------------

             Summary: MaterializeVisitor.visitSchemaPath silently ignores missing fields
                 Key: DRILL-5069
                 URL: https://issues.apache.org/jira/browse/DRILL-5069
             Project: Apache Drill
          Issue Type: Bug
    Affects Versions: 1.8.0
            Reporter: Paul Rogers
            Priority: Minor


Not sure if this is a bug or a feature...

The test {{ExpressionTest}} tests various expressions by parsing them and generating code. The expression under test in the {{testExprParseLowerExponent}} test is:

{code}
multiply(`$f0`, 1.0e-4)
{code}

The first argument appears to be a reference to the first field (0-based indexes) in the given {{RecordBatch}}:

{code}
getExpressionCode("multiply(`$f0`, 1.0e-4)", batch);
{code}

Because of the way the mocked {{RecordBatch}} is handled, resolving {{$f0}} will produce a null result from: {{batch.getValueVectorId("$f0");}}. The code in {{MaterializeVisitor.visitSchemaPath}} logs a warning when the field reference is not found:

{code}
Unable to find value vector of path $f0, returning null instance.
{code}

The code for building up the multiply function appears to treat this case as a the equivalent of:

{code}
multiply(1.0e-4)
{code}

That is, it just ignores the missing field.

This seems to invite errors. Would expect that if code elsewhere in Drill generated the a reference to a missing field, that Drill should flag this as a serious error. Said another way, if the rest of Drill works properly, the missing field reference scenario should never occur in production.

For the particular test in question, use the mocking mechanism to pretend that the target field exists. See the {{testSchemaExpression}} test for an example.




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