drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-5324) Provide simplified column reader/writer for use in tests
Date Fri, 14 Apr 2017 00:03:42 GMT

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

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

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

    https://github.com/apache/drill/pull/783#discussion_r111289506
  
    --- Diff: exec/vector/src/main/codegen/templates/ColumnAccessors.java ---
    @@ -0,0 +1,333 @@
    +/*
    + * 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.
    + */
    +
    +<@pp.dropOutputFile />
    +<@pp.changeOutputFile name="/org/apache/drill/exec/vector/accessor/ColumnAccessors.java"
/>
    +<#include "/@includes/license.ftl" />
    +<#macro getType label>
    +    @Override
    +    public ValueType valueType() {
    +  <#if label == "Int">
    +      return ValueType.INTEGER;
    +  <#else>
    +      return ValueType.${label?upper_case};
    +  </#if>
    +    }
    +</#macro>
    +<#macro bindReader prefix drillType>
    +  <#if drillType = "Decimal9" || drillType == "Decimal18">
    +    private MaterializedField field;
    +  </#if>
    +    private ${prefix}${drillType}Vector.Accessor accessor;
    +
    +    @Override
    +    public void bind(RowIndex vectorIndex, ValueVector vector) {
    +      bind(vectorIndex);
    +  <#if drillType = "Decimal9" || drillType == "Decimal18">
    +      field = vector.getField();
    +  </#if>
    +      accessor = ((${prefix}${drillType}Vector) vector).getAccessor();
    +    }
    +
    +  <#if drillType = "Decimal9" || drillType == "Decimal18">
    +    @Override
    +    public void bind(RowIndex vectorIndex, MaterializedField field, VectorAccessor va)
{
    +      bind(vectorIndex, field, va);
    +      this.field = field;
    +    }
    +
    + </#if>
    +   private ${prefix}${drillType}Vector.Accessor accessor() {
    +      if (vectorAccessor == null) {
    +        return accessor;
    +      } else {
    +        return ((${prefix}${drillType}Vector) vectorAccessor.vector()).getAccessor();
    +      }
    +    }
    +</#macro>
    +<#macro get drillType accessorType label isArray>
    +    @Override
    +    public ${accessorType} get${label}(<#if isArray>int index</#if>) {
    +  <#if isArray>
    +    <#assign index=", index"/>
    +    <#assign getObject="getSingleObject">
    +  <#else>
    +    <#assign index=""/>
    +    <#assign getObject="getObject">
    +  </#if>
    +  <#if drillType == "VarChar">
    +      return new String(accessor().get(vectorIndex.index()${index}), Charsets.UTF_8);
    +  <#elseif drillType == "Var16Char">
    +      return new String(accessor().get(vectorIndex.index()${index}), Charsets.UTF_16);
    +  <#elseif drillType == "VarBinary">
    +      return accessor().get(vectorIndex.index()${index});
    +  <#elseif drillType == "Decimal9" || drillType == "Decimal18">
    +      return DecimalUtility.getBigDecimalFromPrimitiveTypes(
    +                accessor().get(vectorIndex.index()${index}),
    +                field.getScale(),
    +                field.getPrecision());
    +  <#elseif accessorType == "Decimal18">
    +      return DecimalUtilities.getBigDecimalFromPrimitiveTypes(accessor().${getObject}(vectorIndex.index()${index});
    --- End diff --
    
    As discusses offline, this seems to be deadcode as there is no DecimalUtilities class
in the Drill source base.


> Provide simplified column reader/writer for use in tests
> --------------------------------------------------------
>
>                 Key: DRILL-5324
>                 URL: https://issues.apache.org/jira/browse/DRILL-5324
>             Project: Apache Drill
>          Issue Type: Sub-task
>          Components: Tools, Build & Test
>    Affects Versions: 1.11.0
>            Reporter: Paul Rogers
>            Assignee: Paul Rogers
>             Fix For: 1.11.0
>
>
> In support of DRILL-5323, we wish to provide a very easy way to work with row sets. See
the comment section for examples of the target API.
> Drill provides over 100 different value vectors, any of which may be required to perform
a specific unit test. Creating these vectors, populating them, and retrieving values, is very
tedious. The work is so complex that it acts to discourage developers from writing such tests.
> To simplify the task, we wish to provide a simplified row set reader and writer. To do
that, we need to generate the corresponding column reader and writer for each value vector.
This ticket focuses on the column-level readers and writers, and the required code generation.
> Drill already provides vector readers and writers derived from {{FieldReader}}. However,
these readers do not provide a uniform get/set interface that is type independent on the application
side. Instead, application code must be aware of the type of the vector, something we seek
to avoid for test code.
> The reader and writer classes are designed to be used in many contexts, not just for
testing. As a result, their implementation makes no assumptions about the broader row reader
and writer, other than that a row index and the required value vector are both available.




--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message