DRILL-452: Conversion functions for external data types

* Length need not be a parameter in varchar* functions.
* Added test cases for UTF8 conversion.


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

Branch: refs/heads/master
Commit: beeaf9e8fb482cc2bde1838e5f152bff130d4135
Parents: 2bfa2c1
Author: Aditya Kishore <[email protected]>
Authored: Fri Apr 25 16:02:32 2014 -0700
Committer: Jacques Nadeau <[email protected]>
Committed: Sat May 3 18:46:30 2014 -0700

----------------------------------------------------------------------
 .../drill/exec/expr/fn/impl/conv/UTF16ConvertFrom.java       | 8 +-------
 .../apache/drill/exec/expr/fn/impl/conv/UTF16ConvertTo.java  | 8 +-------
 .../apache/drill/exec/expr/fn/impl/conv/UTF8ConvertFrom.java | 8 +-------
 .../apache/drill/exec/expr/fn/impl/conv/UTF8ConvertTo.java   | 8 +-------
 .../drill/exec/physical/impl/TestConvertFunctions.java       | 7 +++++++
 5 files changed, 11 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/beeaf9e8/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertFrom.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertFrom.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertFrom.java
index d8dfe26..82562c8 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertFrom.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertFrom.java
@@ -24,7 +24,6 @@ import 
org.apache.drill.exec.expr.annotations.FunctionTemplate.FunctionScope;
 import org.apache.drill.exec.expr.annotations.FunctionTemplate.NullHandling;
 import org.apache.drill.exec.expr.annotations.Output;
 import org.apache.drill.exec.expr.annotations.Param;
-import org.apache.drill.exec.expr.holders.BigIntHolder;
 import org.apache.drill.exec.expr.holders.Var16CharHolder;
 import org.apache.drill.exec.expr.holders.VarBinaryHolder;
 import org.apache.drill.exec.record.RecordBatch;
@@ -33,7 +32,6 @@ import org.apache.drill.exec.record.RecordBatch;
 public class UTF16ConvertFrom implements DrillSimpleFunc {
 
   @Param VarBinaryHolder in;
-  @Param BigIntHolder length;
   @Output Var16CharHolder out;
 
   @Override
@@ -43,10 +41,6 @@ public class UTF16ConvertFrom implements DrillSimpleFunc {
   public void eval() {
     out.buffer = in.buffer;
     out.start =  in.start;
-    if (in.end - in.start <= length.value) {
-      out.end = in.end;
-    } else {
-      out.end = out.start + (int) length.value;
-    }
+    out.end = in.end;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/beeaf9e8/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertTo.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertTo.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertTo.java
index b47918b..cff1851 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertTo.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF16ConvertTo.java
@@ -24,7 +24,6 @@ import 
org.apache.drill.exec.expr.annotations.FunctionTemplate.FunctionScope;
 import org.apache.drill.exec.expr.annotations.FunctionTemplate.NullHandling;
 import org.apache.drill.exec.expr.annotations.Output;
 import org.apache.drill.exec.expr.annotations.Param;
-import org.apache.drill.exec.expr.holders.BigIntHolder;
 import org.apache.drill.exec.expr.holders.Var16CharHolder;
 import org.apache.drill.exec.expr.holders.VarBinaryHolder;
 import org.apache.drill.exec.record.RecordBatch;
@@ -33,7 +32,6 @@ import org.apache.drill.exec.record.RecordBatch;
 public class UTF16ConvertTo implements DrillSimpleFunc {
 
   @Param Var16CharHolder in;
-  @Param BigIntHolder length;
   @Output VarBinaryHolder out;
 
   @Override
@@ -43,10 +41,6 @@ public class UTF16ConvertTo implements DrillSimpleFunc {
   public void eval() {
     out.buffer = in.buffer;
     out.start =  in.start;
-    if (in.end - in.start <= length.value) {
-      out.end = in.end;
-    } else {
-      out.end = out.start + (int) length.value;
-    }
+    out.end = in.end;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/beeaf9e8/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertFrom.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertFrom.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertFrom.java
index b73ca98..a6f8901 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertFrom.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertFrom.java
@@ -24,7 +24,6 @@ import 
org.apache.drill.exec.expr.annotations.FunctionTemplate.FunctionScope;
 import org.apache.drill.exec.expr.annotations.FunctionTemplate.NullHandling;
 import org.apache.drill.exec.expr.annotations.Output;
 import org.apache.drill.exec.expr.annotations.Param;
-import org.apache.drill.exec.expr.holders.BigIntHolder;
 import org.apache.drill.exec.expr.holders.VarBinaryHolder;
 import org.apache.drill.exec.expr.holders.VarCharHolder;
 import org.apache.drill.exec.record.RecordBatch;
@@ -33,7 +32,6 @@ import org.apache.drill.exec.record.RecordBatch;
 public class UTF8ConvertFrom implements DrillSimpleFunc {
 
   @Param VarBinaryHolder in;
-  @Param BigIntHolder length;
   @Output VarCharHolder out;
 
   @Override
@@ -43,10 +41,6 @@ public class UTF8ConvertFrom implements DrillSimpleFunc {
   public void eval() {
     out.buffer = in.buffer;
     out.start =  in.start;
-    if (in.end - in.start <= length.value) {
-      out.end = in.end;
-    } else {
-      out.end = out.start + (int) length.value;
-    }
+    out.end = in.end;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/beeaf9e8/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertTo.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertTo.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertTo.java
index 92770de..093d6b9 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertTo.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/impl/conv/UTF8ConvertTo.java
@@ -24,7 +24,6 @@ import 
org.apache.drill.exec.expr.annotations.FunctionTemplate.FunctionScope;
 import org.apache.drill.exec.expr.annotations.FunctionTemplate.NullHandling;
 import org.apache.drill.exec.expr.annotations.Output;
 import org.apache.drill.exec.expr.annotations.Param;
-import org.apache.drill.exec.expr.holders.BigIntHolder;
 import org.apache.drill.exec.expr.holders.VarBinaryHolder;
 import org.apache.drill.exec.expr.holders.VarCharHolder;
 import org.apache.drill.exec.record.RecordBatch;
@@ -33,7 +32,6 @@ import org.apache.drill.exec.record.RecordBatch;
 public class UTF8ConvertTo implements DrillSimpleFunc {
 
   @Param VarCharHolder in;
-  @Param BigIntHolder length;
   @Output VarBinaryHolder out;
 
   @Override
@@ -43,10 +41,6 @@ public class UTF8ConvertTo implements DrillSimpleFunc {
   public void eval() {
     out.buffer = in.buffer;
     out.start =  in.start;
-    if (in.end - in.start <= length.value) {
-      out.end = in.end;
-    } else {
-      out.end = out.start + (int) length.value;
-    }
+    out.end = in.end;
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/beeaf9e8/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestConvertFunctions.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestConvertFunctions.java
 
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestConvertFunctions.java
index 881495c..6476e0b 100644
--- 
a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestConvertFunctions.java
+++ 
b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/TestConvertFunctions.java
@@ -348,6 +348,13 @@ public class TestConvertFunctions extends PopUnitTestBase {
   }
 
   @Test
+  public void testUTF8(@Injectable final DrillbitContext bitContext,
+      @Injectable UserServer.UserClientConnection connection) throws Throwable 
{
+    runTest(bitContext, connection, 
"convert_from(binary_string('apache_drill'), 'UTF8')", "apache_drill");
+    runTest(bitContext, connection, "convert_to('apache_drill', 'UTF8')", new 
byte[] {'a', 'p', 'a', 'c', 'h', 'e', '_', 'd', 'r', 'i', 'l', 'l'});
+  }
+
+  @Test
   public void testBigIntVarCharReturnTripConvertLogical() throws Exception {
     RemoteServiceSet serviceSet = RemoteServiceSet.getLocalServiceSet();
 

Reply via email to