You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by am...@apache.org on 2017/04/17 05:24:09 UTC

[4/4] drill git commit: DRILL-5424: Fix IOBE for reverse function

DRILL-5424: Fix IOBE for reverse function

close apache/drill#815


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/72903d01
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/72903d01
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/72903d01

Branch: refs/heads/master
Commit: 72903d01424139057d4309ce6655e0aecee2573e
Parents: 3b71cbd
Author: Volodymyr Vysotskyi <vv...@gmail.com>
Authored: Mon Apr 10 13:16:52 2017 +0000
Committer: Aman Sinha <as...@maprtech.com>
Committed: Sun Apr 16 22:20:31 2017 -0700

----------------------------------------------------------------------
 .../exec/expr/fn/impl/StringFunctions.java      | 20 +++++------
 .../exec/expr/fn/impl/TestStringFunctions.java  | 37 +++++++++++++++++++-
 2 files changed, 46 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/72903d01/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/StringFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/StringFunctions.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/StringFunctions.java
index 8196728..d90581e 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/StringFunctions.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/StringFunctions.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -1698,20 +1698,20 @@ public class StringFunctions{
       out.start = 0;
       out.end = len;
       out.buffer = buffer = buffer.reallocIfNeeded(len);
-      int charlen = 0;
+      int charLen;
 
-      int index = in.end;
-      int innerindex = 0;
+      int index = out.end;
+      int innerIndex;
 
-      for (int id = in.start; id < in.end; id += charlen) {
-        innerindex = charlen = org.apache.drill.exec.expr.fn.impl.StringFunctionUtil.utf8CharLen(in.buffer, id);
+      for (int id = in.start; id < in.end; id += charLen) {
+        innerIndex = charLen = org.apache.drill.exec.expr.fn.impl.StringFunctionUtil.utf8CharLen(in.buffer, id);
 
-        while (innerindex > 0) {
-          out.buffer.setByte(index - innerindex, in.buffer.getByte(id + (charlen - innerindex)));
-          innerindex-- ;
+        while (innerIndex > 0) {
+          out.buffer.setByte(index - innerIndex, in.buffer.getByte(id + (charLen - innerIndex)));
+          innerIndex--;
         }
 
-        index -= charlen;
+        index -= charLen;
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/drill/blob/72903d01/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestStringFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestStringFunctions.java b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestStringFunctions.java
index daedd1c..fe099d7 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestStringFunctions.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/expr/fn/impl/TestStringFunctions.java
@@ -1,4 +1,4 @@
-/**
+/*
  * 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
@@ -19,12 +19,17 @@ package org.apache.drill.exec.expr.fn.impl;
 
 import static org.junit.Assert.assertTrue;
 
+import org.apache.commons.io.FileUtils;
 import org.apache.drill.BaseTestQuery;
 import org.apache.drill.exec.util.Text;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
 
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+
 public class TestStringFunctions extends BaseTestQuery {
 
   @Test
@@ -273,4 +278,34 @@ public class TestStringFunctions extends BaseTestQuery {
         .run();
   }
 
+  @Test
+  public void testReverse() throws Exception {
+    testBuilder()
+      .sqlQuery("select reverse('qwerty') words from (values(1))")
+      .unOrdered()
+      .baselineColumns("words")
+      .baselineValues("ytrewq")
+      .build()
+      .run();
+  }
+
+  @Test // DRILL-5424
+  public void testReverseLongVarChars() throws Exception {
+    File path = new File(BaseTestQuery.getTempDir("input"));
+    try {
+      path.mkdirs();
+      String pathString = path.toPath().toString();
+
+      try (BufferedWriter writer = new BufferedWriter(new FileWriter(new File(path, "table_with_long_varchars.json")))) {
+        for (int i = 0; i < 10; i++) {
+          writer.write("{ \"a\": \"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz\"}");
+        }
+      }
+
+      test("select reverse(a) from dfs_test.`%s/table_with_long_varchars.json` t", pathString);
+
+    } finally {
+      FileUtils.deleteQuietly(path);
+    }
+  }
 }