private List getDynamoDBFiltersFromSchema()

in emr-dynamodb-hive/src/main/java/org/apache/hadoop/hive/dynamodb/filter/DynamoDBFilterPushdown.java [360:387]


  private List<DynamoDBFilter> getDynamoDBFiltersFromSchema(List<KeySchemaElement> schema,
      Map<String, DynamoDBFilter> filterMap) {
    List<DynamoDBFilter> dynamoDBFilters = new ArrayList<>();

    boolean hashKeyFilterExists = false;
    if (schema.size() > 0
        && DYNAMODB_KEY_TYPE_HASH.equals(schema.get(HASH_KEY_INDEX).getKeyType())) {
      String hashKeyName = schema.get(HASH_KEY_INDEX).getAttributeName();
      if (filterMap.containsKey(hashKeyName)) {
        DynamoDBFilter hashKeyFilter = filterMap.get(hashKeyName);
        if (DynamoDBFilterOperator.EQ.equals(hashKeyFilter.getOperator())) {
          dynamoDBFilters.add(hashKeyFilter);
          hashKeyFilterExists = true;
        }
      }
    }

    if (hashKeyFilterExists && schema.size() > 1) {
      String rangeKeyName = schema.get(RANGE_KEY_INDEX).getAttributeName();
      if (filterMap.containsKey(rangeKeyName)) {
        DynamoDBFilter rangeKeyFilter = filterMap.get(rangeKeyName);
        if (eligibleOperatorsForRange.contains(rangeKeyFilter.getOperator())) {
          dynamoDBFilters.add(rangeKeyFilter);
        }
      }
    }
    return dynamoDBFilters;
  }