parquet-thrift/src/main/java/org/apache/parquet/thrift/projection/StrictFieldProjectionFilter.java
boolean keep(String path) {
    WildcardPath match = null;

    // since we have a rule of every path must match at least one column,
    // we visit every single wildcard path, instead of short circuiting,
    // for the case where more than one pattern matches a column. Otherwise
    // we'd get a misleading exception saying a path didn't match a column,
    // even though it looks like it should have (but didn't because of short circuiting).
    // This also allows us log a warning when more than one glob path matches.
    for (WildcardPathStatus wp : columnsToKeep) {
      if (wp.matches(path)) {
        if (match != null && !match.getParentGlobPath().equals(wp.getWildcardPath().getParentGlobPath())) {
          String message = "Field path: '%s' matched more than one glob path pattern. First match: " +
              "'%s' (when expanded to '%s') second match:'%s' (when expanded to '%s')";

          warn(String.format(message,
              path, match.getParentGlobPath(), match.getOriginalPattern(),
              wp.getWildcardPath().getParentGlobPath(), wp.getWildcardPath().getOriginalPattern()));
        } else {
          match = wp.getWildcardPath();
        }
      }
    }

    return match != null;
  }
boolean keep(String path) {
    WildcardPath match = null;

    // since we have a rule of every path must match at least one column,
    // we visit every single wildcard path, instead of short circuiting,
    // for the case where more than one pattern matches a column. Otherwise
    // we'd get a misleading exception saying a path didn't match a column,
    // even though it looks like it should have (but didn't because of short circuiting).
    // This also allows us log a warning when more than one glob path matches.
    for (WildcardPathStatus wp : columnsToKeep) {
      if (wp.matches(path)) {
        if (match != null && !match.getParentGlobPath().equals(wp.getWildcardPath().getParentGlobPath())) {
          String message = "Field path: '%s' matched more than one glob path pattern. First match: " +
              "'%s' (when expanded to '%s') second match:'%s' (when expanded to '%s')";

          warn(String.format(message,
              path, match.getParentGlobPath(), match.getOriginalPattern(),
              wp.getWildcardPath().getParentGlobPath(), wp.getWildcardPath().getOriginalPattern()));
        } else {
          match = wp.getWildcardPath();
        }
      }
    }

    return match != null;
  }
boolean keep ( String path ) { WildcardPath match = null ; // since we have a rule of every path must match at least one column, // we visit every single wildcard path, instead of short circuiting, // for the case where more than one pattern matches a column. Otherwise // we'd get a misleading exception saying a path didn't match a column, // even though it looks like it should have (but didn't because of short circuiting). // This also allows us log a warning when more than one glob path matches. for ( WildcardPathStatus wp : columnsToKeep ) { if ( wp . matches ( path ) ) { if ( match != null && ! match . getParentGlobPath ( ) . equals ( wp . getWildcardPath ( ) . getParentGlobPath ( ) ) ) { String message = "Field path: '%s' matched more than one glob path pattern. First match: " + "'%s' (when expanded to '%s') second match:'%s' (when expanded to '%s')" ; warn ( String . format ( message , path , match . getParentGlobPath ( ) , match . getOriginalPattern ( ) , wp . getWildcardPath ( ) . getParentGlobPath ( ) , wp . getWildcardPath ( ) . getOriginalPattern ( ) ) ) ; } else { match = wp . getWildcardPath ( ) ; } } } return match != null ; }
visible for testing
visible for testing