[CALCITE-4757] Allow columns of type Null in ResultSet (NobiGo)
Close apache/calcite-avatica#152
diff --git a/core/src/main/java/org/apache/calcite/avatica/AvaticaSite.java b/core/src/main/java/org/apache/calcite/avatica/AvaticaSite.java
index b7f46a0..e70aa87 100644
--- a/core/src/main/java/org/apache/calcite/avatica/AvaticaSite.java
+++ b/core/src/main/java/org/apache/calcite/avatica/AvaticaSite.java
@@ -343,6 +343,7 @@
}
return anInt;
case Types.JAVA_OBJECT:
+ case Types.NULL:
case Types.OTHER:
return accessor.getObject();
case Types.LONGNVARCHAR:
diff --git a/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java b/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java
index f23a372..fa357d5 100644
--- a/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java
+++ b/core/src/main/java/org/apache/calcite/avatica/util/AbstractCursor.java
@@ -211,6 +211,7 @@
throw new AssertionError("bad " + columnMetaData.type.rep);
}
case Types.JAVA_OBJECT:
+ case Types.NULL:
case Types.OTHER: // e.g. map
if (columnMetaData.type.getName().startsWith("INTERVAL_")) {
int end = columnMetaData.type.getName().indexOf("(");
diff --git a/core/src/test/java/org/apache/calcite/avatica/AvaticaResultSetConversionsTest.java b/core/src/test/java/org/apache/calcite/avatica/AvaticaResultSetConversionsTest.java
index 694c7f6..c49e047 100644
--- a/core/src/test/java/org/apache/calcite/avatica/AvaticaResultSetConversionsTest.java
+++ b/core/src/test/java/org/apache/calcite/avatica/AvaticaResultSetConversionsTest.java
@@ -176,7 +176,11 @@
columnMetaData("bit", 13,
ColumnMetaData.scalar(Types.BIT, "BIT",
ColumnMetaData.Rep.PRIMITIVE_BOOLEAN),
- DatabaseMetaData.columnNoNulls));
+ DatabaseMetaData.columnNoNulls),
+ columnMetaData("null", 14,
+ ColumnMetaData.scalar(Types.NULL, "NULL",
+ ColumnMetaData.Rep.OBJECT),
+ DatabaseMetaData.columnNullable));
List<Object> row = Collections.<Object>singletonList(
new Object[] {
@@ -185,7 +189,8 @@
new Timestamp(1476130718123L),
Arrays.asList(1, 2, 3),
new StructImpl(Arrays.asList(42, false)),
- false
+ false,
+ null,
});
CursorFactory factory = CursorFactory.deduce(columns, null);