public Map<String, String> generateExtractorAttributes(final String username) {
    final Map<String, String> extractorAttributes = new HashMap<>();
    // disable meta sync
    extractorAttributes.put("source", "iotdb-source");
    extractorAttributes.put("inclusion", "data.insert");
    extractorAttributes.put("inclusion.exclusion", "data.delete");
    // user
    extractorAttributes.put("username", username);
    // TODO: currently set skipif to no-privileges
    extractorAttributes.put("skipif", "no-privileges");
    // sql dialect
    extractorAttributes.putAll(config.getAttributeWithSqlDialect());
    if (config.isTableTopic()) {
      // table model: database name and table name
      extractorAttributes.putAll(config.getAttributesWithSourceDatabaseAndTableName());
    } else {
      // tree model: path or pattern
      extractorAttributes.putAll(config.getAttributesWithSourcePathOrPattern());
    }
    // time
    extractorAttributes.putAll(config.getAttributesWithSourceTimeRange());
    // realtime mode
    extractorAttributes.putAll(config.getAttributesWithSourceRealtimeMode());
    // source mode
    extractorAttributes.putAll(config.getAttributesWithSourceMode());
    // loose range or strict
    extractorAttributes.putAll(config.getAttributesWithSourceLooseRangeOrStrict());
    // backdoor configs
    extractorAttributes.putAll(config.getAttributesWithSourcePrefix());
    return extractorAttributes;
  }
@return true if the consumer group did not already subscribe this topic
iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/topic/TopicMeta.java