[
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)