DRILL-585: Switch getObject in SQL accessors to return java.sql.* types.

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

Branch: refs/heads/master
Commit: 0648c9e9fb3c6fa607e8b46f4062ff6453b6a634
Parents: 2b5ae07
Author: Cliff Buchanan <[email protected]>
Authored: Mon Jun 16 08:14:13 2014 -0700
Committer: Jacques Nadeau <[email protected]>
Committed: Mon Jun 16 12:43:55 2014 -0700

----------------------------------------------------------------------
 .../src/main/codegen/includes/vv_imports.ftl    |  1 +
 .../main/codegen/templates/SqlAccessors.java    | 22 ++++++++++++++++++++
 .../vector/accessor/AbstractSqlAccessor.java    |  2 +-
 .../jdbc/test/TestAggregateFunctionsQuery.java  | 11 ++++++----
 4 files changed, 31 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/0648c9e9/exec/java-exec/src/main/codegen/includes/vv_imports.ftl
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/includes/vv_imports.ftl 
b/exec/java-exec/src/main/codegen/includes/vv_imports.ftl
index 114ecbe..9e16116 100644
--- a/exec/java-exec/src/main/codegen/includes/vv_imports.ftl
+++ b/exec/java-exec/src/main/codegen/includes/vv_imports.ftl
@@ -22,6 +22,7 @@ import io.netty.buffer.ByteBufInputStream;
 
 import org.apache.commons.lang3.ArrayUtils;
 
+import org.apache.drill.exec.expr.fn.impl.StringFunctionUtil;
 import org.apache.drill.exec.memory.AccountingByteBuf;
 import org.apache.drill.exec.memory.BufferAllocator;
 import org.apache.drill.exec.proto.SchemaDefProtos;

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/0648c9e9/exec/java-exec/src/main/codegen/templates/SqlAccessors.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/SqlAccessors.java 
b/exec/java-exec/src/main/codegen/templates/SqlAccessors.java
index b7207f9..d05b7fd 100644
--- a/exec/java-exec/src/main/codegen/templates/SqlAccessors.java
+++ b/exec/java-exec/src/main/codegen/templates/SqlAccessors.java
@@ -45,9 +45,11 @@ public class ${name}Accessor extends AbstractSqlAccessor{
     this.ac = vector.getAccessor();
   }
 
+  <#if minor.class != "TimeStampTZ" && minor.class != "TimeStamp" && 
minor.class != "Time" && minor.class != "Date">
   public Object getObject(int index){
     return ac.getObject(index);
   }
+  </#if>
   
   <#if type.major == "VarLen">
 
@@ -65,6 +67,10 @@ public class ${name}Accessor extends AbstractSqlAccessor{
   
   <#switch minor.class>
     <#case "VarBinary">
+    public String getString(int index) {
+      byte [] b = ac.get(index);
+      return 
StringFunctionUtil.toBinaryString(io.netty.buffer.Unpooled.wrappedBuffer(b), 0, 
b.length);
+    }
       <#break>
     <#case "VarChar">
     @Override 
@@ -98,6 +104,10 @@ public class ${name}Accessor extends AbstractSqlAccessor{
 
   <#else>
   <#if minor.class == "TimeStampTZ">
+  public Object getObject(int index) {
+    return getTimestamp(index);
+  }
+
   @Override
   public Timestamp getTimestamp(int index) {
     return new Timestamp(ac.getObject(index).getMillis());
@@ -113,6 +123,10 @@ public class ${name}Accessor extends AbstractSqlAccessor{
       return ac.getObject(index);
   }
   <#elseif minor.class == "Date">
+  public Object getObject(int index) {
+    return getDate(index);
+  }
+
   @Override
   public Date getDate(int index) {
     org.joda.time.DateTime date = new org.joda.time.DateTime(ac.get(index), 
org.joda.time.DateTimeZone.UTC);
@@ -120,6 +134,10 @@ public class ${name}Accessor extends AbstractSqlAccessor{
     return new Date(date.getMillis());
   }
   <#elseif minor.class == "TimeStamp">
+  public Object getObject(int index) {
+    return getTimestamp(index);
+  }
+
   @Override
   public Timestamp getTimestamp(int index) {
     org.joda.time.DateTime date = new org.joda.time.DateTime(ac.get(index), 
org.joda.time.DateTimeZone.UTC);
@@ -127,6 +145,10 @@ public class ${name}Accessor extends AbstractSqlAccessor{
     return new Timestamp(date.getMillis());
   }
   <#elseif minor.class == "Time">
+  public Object getObject(int index) {
+    return getTime(index);
+  }
+
   @Override
   public Time getTime(int index) {
     org.joda.time.DateTime time = new org.joda.time.DateTime(ac.get(index), 
org.joda.time.DateTimeZone.UTC);

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/0648c9e9/exec/java-exec/src/main/java/org/apache/drill/exec/vector/accessor/AbstractSqlAccessor.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/accessor/AbstractSqlAccessor.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/accessor/AbstractSqlAccessor.java
index 93089e7..9884612 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/vector/accessor/AbstractSqlAccessor.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/vector/accessor/AbstractSqlAccessor.java
@@ -99,7 +99,7 @@ abstract class AbstractSqlAccessor implements SqlAccessor {
 
   @Override
   public String getString(int index) throws InvalidAccessException{
-    throw new InvalidAccessException("String");
+    return getObject(index).toString();
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/0648c9e9/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestAggregateFunctionsQuery.java
----------------------------------------------------------------------
diff --git 
a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestAggregateFunctionsQuery.java
 
b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestAggregateFunctionsQuery.java
index 5c5a218..812ee40 100644
--- 
a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestAggregateFunctionsQuery.java
+++ 
b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestAggregateFunctionsQuery.java
@@ -19,6 +19,7 @@ package org.apache.drill.jdbc.test;
 
 import java.nio.file.Paths;
 import java.sql.Connection;
+import java.sql.Date;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
@@ -29,6 +30,7 @@ import org.apache.drill.common.util.TestTools;
 import org.apache.drill.exec.store.hive.HiveTestDataGenerator;
 import org.apache.drill.jdbc.Driver;
 import org.apache.drill.jdbc.JdbcTest;
+import org.joda.time.chrono.ISOChronology;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
@@ -36,11 +38,10 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TestRule;
 
-import org.joda.time.DateTime;
-
 import com.google.common.base.Function;
 import com.google.common.base.Stopwatch;
 
+
 public class TestAggregateFunctionsQuery {
 
   public static final String WORKING_PATH;
@@ -55,8 +56,10 @@ public class TestAggregateFunctionsQuery {
         " FROM `employee.json`");
 
 
-    String t = new DateTime(1998, 1, 1, 0, 0, 0, 0).toString();
-    String t1 = new DateTime(1993, 5, 1, 0, 0, 0, 0).toString();
+    String t  = new Date(ISOChronology.getInstance().getDateTimeMillis(1998, 
1, 1, 0)).toString();
+    String t1 = new Date(ISOChronology.getInstance().getDateTimeMillis(1993, 
5, 1, 0)).toString();
+    //String t = new Date(1998, 1, 1).toString();
+    //String t1 = new Date(1993, 5, 1).toString();
 
     String result = String.format("MAX_DATE="+ t + "; " + "MIN_DATE=" + t1 + 
"\n");
 

Reply via email to