Knut Forkalsrud created CALCITE-534:
---------------------------------------

             Summary: Missing implementation of 
ResultSetMetaData.getColumnClassName(int)
                 Key: CALCITE-534
                 URL: https://issues.apache.org/jira/browse/CALCITE-534
             Project: Calcite
          Issue Type: Bug
    Affects Versions: 1.0.0-incubating
            Reporter: Knut Forkalsrud
            Assignee: Julian Hyde
         Attachments: resultsetmetadata.patch

We are running into an obstacle using a very simple Calcite in memory table.
It manifests itself in getting the column classname from ResultSetMetaData. It 
seems easy enough to fix, at least for our purposes. Here is a proposed patch 
relative to Git master within the last hour:

{noformat}
diff --git 
a/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java 
b/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java
index 102590e..fca92b4 100644
--- a/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java
+++ b/avatica/src/main/java/org/apache/calcite/avatica/ColumnMetaData.java
@@ -106,7 +106,8 @@ public ColumnMetaData(
     this.readOnly = readOnly;
     this.writable = writable;
     this.definitelyWritable = definitelyWritable;
-    this.columnClassName = columnClassName;
+    this.columnClassName = columnClassName != null
+        ? columnClassName : type.representation.clazz.getName();
   }
 
   private static <T> T first(T t0, T t1) {
diff --git 
a/core/src/test/java/org/apache/calcite/test/TableInRootSchemaTest.java 
b/core/src/test/java/org/apache/calcite/test/TableInRootSchemaTest.java
index 58ebe99..3898422 100644
--- a/core/src/test/java/org/apache/calcite/test/TableInRootSchemaTest.java
+++ b/core/src/test/java/org/apache/calcite/test/TableInRootSchemaTest.java
@@ -77,6 +77,8 @@
     assertThat(resultSetMetaData.getColumnName(1), equalTo("A"));
     assertThat(resultSetMetaData.getTableName(1), equalTo("SAMPLE"));
     assertThat(resultSetMetaData.getSchemaName(1), nullValue());
+    assertThat(resultSetMetaData.getColumnClassName(1),
+               equalTo("java.lang.String"));
     // Per JDBC, column name should be null. But DBUnit requires every column
     // to have a name, so the driver uses the label.
     assertThat(resultSetMetaData.getColumnName(2), equalTo("EXPR$1"));
{noformat}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to