private void handleStreamLoadProp() {
        Properties props = executionOptions.getStreamLoadProp();
        boolean ifEscape = Boolean.parseBoolean(props.getProperty(ESCAPE_DELIMITERS_KEY, ESCAPE_DELIMITERS_DEFAULT));
        this.fieldDelimiter = props.getProperty(FIELD_DELIMITER_KEY, FIELD_DELIMITER_DEFAULT);
        this.lineDelimiter = props.getProperty(LINE_DELIMITER_KEY, LINE_DELIMITER_DEFAULT);
        if (ifEscape) {
            this.fieldDelimiter = DorisParseUtils.escapeString(fieldDelimiter);
            this.lineDelimiter = DorisParseUtils.escapeString(lineDelimiter);
            props.remove(ESCAPE_DELIMITERS_KEY);
        }

        // save `sink.properties.columns` parameter from options
        this.columns = (String) props.get(COLUMNS_KEY);
        if (!multipleSink) {
            // add column key when fieldNames is not empty
            if (!props.containsKey(COLUMNS_KEY) && fieldNames != null && fieldNames.length > 0) {
                String columns =
                        Arrays.stream(fieldNames).map(item -> String.format("`%s`", item.trim().replace("`", "")))
                                .collect(Collectors.joining(","));
                props.put(COLUMNS_KEY, columns);
            }

            // if enable batch delete, the columns must add tag '__DORIS_DELETE_SIGN__'
            String columns = (String) props.get(COLUMNS_KEY);
            if (columns != null && !columns.contains(DORIS_DELETE_SIGN) && enableBatchDelete()) {
                columns = String.format("%s,%s", columns, DORIS_DELETE_SIGN);
                props.put(COLUMNS_KEY, columns);
            }
        }
    }
A builder used to set parameters to the output format's configuration in a fluent way.

@return builder
inlong-sort/sort-flink/sort-flink-v1.13/sort-connectors/doris/src/main/java/org/apache/inlong/sort/doris/table/DorisDynamicSchemaOutputFormat.java