jdbc-protolib/src/main/java/com/streamsets/pipeline/lib/jdbc/JdbcRecordReaderWriterFactory.java
public static JdbcRecordWriter createJdbcRecordWriter(
       String connectionString,
       HikariDataSource dataSource,
       String schema,
       String tableName,
       List<JdbcFieldColumnParamMapping> customMappings,
       List<JdbcFieldColumnMapping> generatedColumnMappings,
       boolean rollbackOnError,
       boolean useMultiRowOp,
       int maxPrepStmtParameters,
       int defaultOpCode,
       UnsupportedOperationAction unsupportedAction,
       JdbcRecordReader recordReader,
       boolean caseSensitive,
       List<String> customDataSqlStateCodes
  ) throws StageException {

    JdbcRecordWriter recordWriter;

    if (useMultiRowOp) {
      recordWriter = new JdbcMultiRowRecordWriter(
          connectionString,
          dataSource,
          schema,
          tableName,
          rollbackOnError,
          customMappings,
          maxPrepStmtParameters,
          defaultOpCode,
          unsupportedAction,
          generatedColumnMappings,
          recordReader,
          caseSensitive,
          customDataSqlStateCodes
      );
    } else {
      recordWriter = new JdbcGenericRecordWriter(
          connectionString,
          dataSource,
          schema,
          tableName,
          rollbackOnError,
          customMappings,
          defaultOpCode,
          unsupportedAction,
          generatedColumnMappings,
          recordReader,
          caseSensitive,
          customDataSqlStateCodes
      );
    }
    return recordWriter;
  }
public static JdbcRecordWriter createJdbcRecordWriter(
       String connectionString,
       HikariDataSource dataSource,
       String schema,
       String tableName,
       List<JdbcFieldColumnParamMapping> customMappings,
       List<JdbcFieldColumnMapping> generatedColumnMappings,
       boolean rollbackOnError,
       boolean useMultiRowOp,
       int maxPrepStmtParameters,
       int defaultOpCode,
       UnsupportedOperationAction unsupportedAction,
       JdbcRecordReader recordReader,
       boolean caseSensitive,
       List<String> customDataSqlStateCodes
  ) throws StageException {

    JdbcRecordWriter recordWriter;

    if (useMultiRowOp) {
      recordWriter = new JdbcMultiRowRecordWriter(
          connectionString,
          dataSource,
          schema,
          tableName,
          rollbackOnError,
          customMappings,
          maxPrepStmtParameters,
          defaultOpCode,
          unsupportedAction,
          generatedColumnMappings,
          recordReader,
          caseSensitive,
          customDataSqlStateCodes
      );
    } else {
      recordWriter = new JdbcGenericRecordWriter(
          connectionString,
          dataSource,
          schema,
          tableName,
          rollbackOnError,
          customMappings,
          defaultOpCode,
          unsupportedAction,
          generatedColumnMappings,
          recordReader,
          caseSensitive,
          customDataSqlStateCodes
      );
    }
    return recordWriter;
  }
Called by JdbcTeeProcessor