public SqlStatement[] generateStatements(Database database) {

    boolean needsPreparedStatement = false;
    for (ColumnConfig column : columns) {
      if (column.getValueBlobFile() != null) {
        needsPreparedStatement = true;
      }
      if (column.getValueClobFile() != null) {
        needsPreparedStatement = true;
      }
      //            if (column.getValueText() != null && database instanceof InformixDatabase) {
      //                needsPreparedStatement = true;
      //            }
    }

    if (needsPreparedStatement) {
      return new SqlStatement[] {
        new InsertExecutablePreparedStatement(database, catalogName, schemaName, tableName, columns)
      };
    }

    InsertStatement statement =
        new InsertStatement(getCatalogName(), getSchemaName(), getTableName());

    for (ColumnConfig column : columns) {

      if (database.supportsAutoIncrement()
          && column.isAutoIncrement() != null
          && column.isAutoIncrement()) {
        // skip auto increment columns as they will be generated by the database
        continue;
      }

      statement.addColumnValue(column.getName(), column.getValueObject());
    }
    return new SqlStatement[] {statement};
  }