in core/src/main/java/org/apache/calcite/avatica/AvaticaSite.java [202:290]
public void setObject(Object x, int targetSqlType) {
if (x == null || Types.NULL == targetSqlType) {
setNull(targetSqlType);
return;
}
switch (targetSqlType) {
case Types.CLOB:
case Types.DATALINK:
case Types.NCLOB:
case Types.OTHER:
case Types.REF:
case Types.SQLXML:
case Types.STRUCT:
throw notImplemented();
case Types.ARRAY:
setArray(toArray(x));
break;
case Types.BIGINT:
setLong(toLong(x));
break;
case Types.BINARY:
case Types.LONGVARBINARY:
case Types.VARBINARY:
setBytes(toBytes(x));
break;
case Types.BIT:
case Types.BOOLEAN:
setBoolean(toBoolean(x));
break;
case Types.BLOB:
if (x instanceof Blob) {
setBlob((Blob) x);
break;
} else if (x instanceof InputStream) {
setBlob((InputStream) x);
}
throw unsupportedCast(x.getClass(), Blob.class);
case Types.DATE:
setDate(toDate(x), calendar);
break;
case Types.DECIMAL:
case Types.NUMERIC:
setBigDecimal(toBigDecimal(x));
break;
case Types.DISTINCT:
throw notImplemented();
case Types.DOUBLE:
case Types.FLOAT: // yes really; SQL FLOAT is up to 8 bytes
setDouble(toDouble(x));
break;
case Types.INTEGER:
setInt(toInt(x));
break;
case Types.JAVA_OBJECT:
setObject(x);
break;
case Types.LONGNVARCHAR:
case Types.LONGVARCHAR:
case Types.NVARCHAR:
case Types.VARCHAR:
case Types.CHAR:
case Types.NCHAR:
setString(toString(x));
break;
case Types.REAL:
setFloat(toFloat(x));
break;
case Types.ROWID:
if (x instanceof RowId) {
setRowId((RowId) x);
break;
}
throw unsupportedCast(x.getClass(), RowId.class);
case Types.SMALLINT:
setShort(toShort(x));
break;
case Types.TIME:
setTime(toTime(x), calendar);
break;
case Types.TIMESTAMP:
setTimestamp(toTimestamp(x), calendar);
break;
case Types.TINYINT:
setByte(toByte(x));
break;
default:
throw notImplemented();
}
}