public void setNull()

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);
  }