public static void setNullableValue()

in java/clickhouse-connector/src/main/java/com/epam/deltix/timebase/connector/clickhouse/algos/UnboundTableWriter.java [452:537]


    public static void setNullableValue(ClickhouseContext clickhouseContext, ColumnDeclarationEx columnDeclaration) throws SQLException {
        SqlDataType dataType = columnDeclaration.getDbDataType();
        boolean isNullable = false;
        if (dataType instanceof NullableDataType) {
            dataType = ((NullableDataType) dataType).getNestedType();
            isNullable = true;
        }

        if (dataType instanceof NullableDataType) {
            throw new UnsupportedOperationException();
        } else if (dataType instanceof ArraySqlType) {
            clickhouseContext.statement.setArray(columnDeclaration.getStatementIndex(), (Array) getArrayValues(clickhouseContext, columnDeclaration, new Object[0]));
//        } else if (dataType instanceof BinaryDataType) {
//            essentialDataType = ClickHouseDataType.String;
        } else if (dataType instanceof UInt8DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.INTEGER);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.INTEGER);
        } else if (dataType instanceof StringDataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.VARCHAR);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.VARCHAR);
        } else if (dataType instanceof DateDataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.TIMESTAMP);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.TIMESTAMP);
        } else if (dataType instanceof DateTime64DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.TIMESTAMP);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.TIMESTAMP);
        } else if (dataType instanceof Enum16DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.VARCHAR);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.VARCHAR);
        } else if (dataType instanceof Float32DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.FLOAT);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.FLOAT);
        } else if (dataType instanceof Float64DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.DOUBLE);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.DOUBLE);
        } else if (dataType instanceof DecimalDataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.DECIMAL);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.DECIMAL);
        } else if (dataType instanceof Int8DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.INTEGER);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.INTEGER);
        } else if (dataType instanceof Int16DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.INTEGER);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.INTEGER);
        } else if (dataType instanceof Int32DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.INTEGER);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.INTEGER);
        } else if (dataType instanceof Int64DataType) {
            if (isNullable)
                clickhouseContext.statement.setNull(columnDeclaration.getStatementIndex(), Types.BIGINT);
            else
                clickhouseContext.statement.setObject(columnDeclaration.getStatementIndex(), columnDeclaration.getDefaultValue(), Types.BIGINT);
        } else if (dataType instanceof NestedDataType) {
            setInnerNullValues(clickhouseContext, columnDeclaration, true);
        } else if (dataType instanceof ObjectDataType) {
            ObjectDataType nestedDataType = (ObjectDataType) dataType;
            for (ColumnDeclaration c : nestedDataType.getColumns()) {
                ColumnDeclarationEx ce = (ColumnDeclarationEx) c;
                setNullableValue(clickhouseContext, ce);
            }
        } else {
            throw new UnsupportedOperationException(String.format("Not supported data type '%s'", dataType.getClass().getName()));
        }
    }