in src/main/java/com/amazon/redshift/jdbc/RedshiftPreparedStatement.java [231:320]
public void setNull(int parameterIndex, int sqlType) throws SQLException {
if (RedshiftLogger.isEnable())
connection.getLogger().logFunction(true, parameterIndex, sqlType);
checkClosed();
if (parameterIndex < 1 || parameterIndex > preparedParameters.getParameterCount()) {
throw new RedshiftException(
GT.tr("The column index is out of range: {0}, number of columns: {1}.",
parameterIndex, preparedParameters.getParameterCount()),
RedshiftState.INVALID_PARAMETER_VALUE);
}
int oid;
switch (sqlType) {
case Types.SQLXML:
oid = Oid.XML;
break;
case Types.INTEGER:
oid = Oid.INT4;
break;
case Types.TINYINT:
case Types.SMALLINT:
oid = Oid.INT2;
break;
case Types.BIGINT:
oid = Oid.INT8;
break;
case Types.REAL:
oid = Oid.FLOAT4;
break;
case Types.DOUBLE:
case Types.FLOAT:
oid = Oid.FLOAT8;
break;
case Types.DECIMAL:
case Types.NUMERIC:
oid = Oid.NUMERIC;
break;
case Types.CHAR:
oid = Oid.BPCHAR;
break;
case Types.VARCHAR:
case Types.LONGVARCHAR:
oid = connection.getStringVarcharFlag() ? Oid.VARCHAR : Oid.UNSPECIFIED;
break;
case Types.DATE:
oid = Oid.DATE;
break;
case Types.TIME:
//JCP! if mvn.project.property.redshift.jdbc.spec >= "JDBC4.2"
case Types.TIME_WITH_TIMEZONE:
case Types.TIMESTAMP_WITH_TIMEZONE:
//JCP! endif
case Types.TIMESTAMP:
oid = Oid.UNSPECIFIED;
break;
case Types.BOOLEAN:
case Types.BIT:
oid = Oid.BOOL;
break;
case Types.BINARY:
case Types.VARBINARY:
case Types.BLOB:
oid = Oid.BYTEA;
break;
case Types.LONGVARBINARY:
oid = Oid.VARBYTE;
break;
case Types.CLOB: {
// In case of NULL, CLOB can be seen as VARCHAR
// This is useful in application like Spark dataframe which generates
// code to setNull as CLOB without seeing data source support it or not
// as dataframe read must have happen using a CLOB supported database like MySQL or SQL Server.
oid = Oid.VARCHAR;
break;
}
case Types.ARRAY:
case Types.DISTINCT:
case Types.STRUCT:
case Types.NULL:
case Types.OTHER:
oid = Oid.UNSPECIFIED;
break;
default:
// Bad Types value.
throw new RedshiftException(GT.tr("Unknown Types value."), RedshiftState.INVALID_PARAMETER_TYPE);
}
preparedParameters.setNull(parameterIndex, oid);
}