Class RequestedColumnImpl

java.lang.Object
org.apache.drill.exec.physical.resultSet.project.BaseRequestedColumn
org.apache.drill.exec.physical.resultSet.project.RequestedColumnImpl
All Implemented Interfaces:
QualifierContainer, RequestedColumn

public class RequestedColumnImpl extends BaseRequestedColumn implements QualifierContainer
Represents one name element. Like a PathSegment.NameSegment, except that this version is an aggregate. If the projection list contains `a.b` and `a.c`, then one name segment exists for a, and contains segments for both b and c.
  • Constructor Details

  • Method Details

    • bumpRefCount

      protected void bumpRefCount()
    • refCount

      public int refCount()
    • qualifier

      public Qualifier qualifier()
      Description copied from interface: RequestedColumn
      The internal qualifier information for the column. Generally not needed by clients; use the other informations to interpret the qualifier for you.
      Specified by:
      qualifier in interface QualifierContainer
      Specified by:
      qualifier in interface RequestedColumn
      Returns:
      detailed column qualifier information, if the column was seen to be complex in the project list
    • requireQualifier

      public Qualifier requireQualifier()
      Specified by:
      requireQualifier in interface QualifierContainer
    • isWildcard

      public boolean isWildcard()
      Description copied from interface: RequestedColumn
      Several consumers of this this mechanism process the "raw" projection list which can contain a combination of wildcard and otehr columns. For example: filename, *, dir0. The requested tuple preserves the wildcard within the projection list so that, say, the projection mechanism can insert the actual data columns between the two implicit columns in the example.

      If a column is a wildcard, then none of the other methods apply, since this projected column represents any number or actual columns.

      Specified by:
      isWildcard in interface RequestedColumn
      Returns:
      if this column is the wildcard placeholder
    • isSimple

      public boolean isSimple()
      Specified by:
      isSimple in interface RequestedColumn
      Returns:
      true if this column has no qualifiers. Example: a.
    • isTuple

      public boolean isTuple()
      Description copied from interface: RequestedColumn
      Report whether the projection implies a tuple. Example: a.b. Not that this method, and others can only tell if the projection implies a tuple; the actual column may be a tuple (MAP), but be projected simply. The map format also describes a DICT with a VARCHAR key.
      Specified by:
      isTuple in interface RequestedColumn
      Returns:
      true if the column has a map-like projection.
    • tuple

      public RequestedTuple tuple()
      Description copied from interface: RequestedColumn
      Return projection information for the column as a tuple. If projection included references to nested columns (such as a.b, a.c, then the tuple projection will list only the referenced columns. However, if projection is generic (m), then we presume all columns of the map are projected and the returned object assumes all members are projected.
      Specified by:
      tuple in interface RequestedColumn
      Returns:
      projection information for a (presumed) map column
    • isArray

      public boolean isArray()
      Description copied from interface: RequestedColumn
      Report whether the first qualifier is an array. Example: a[1]. The array format also describes a DICT with an integer key.
      Specified by:
      isArray in interface RequestedColumn
      Returns:
      true if the column must be an array.
    • hasIndexes

      public boolean hasIndexes()
      Description copied from interface: RequestedColumn
      Reports if the projection list included (only) specific element indexes. For example: a[2], a[5]. The user could also project both indexes and the array: a[0], a. In this case isArray() is {code true}, but hasIndexes() is false.
      Specified by:
      hasIndexes in interface RequestedColumn
      Returns:
      true if the column has enumerated indexes, false if the column was also projected as a whole, or if this column was not observed to be an array
    • hasIndex

      public boolean hasIndex(int index)
      Description copied from interface: RequestedColumn
      Report is a specific index was selected. Short cut for the other array methods. Used in cases such as the columns column where the user can select specific elements (column) but not others.
      Specified by:
      hasIndex in interface RequestedColumn
      Parameters:
      index - the array index to check
      Returns:
      true if the array element was projected, either explicitly (a[3]) or implicitly (a). Returns false only if hasIndexes() returns true (the user listed only explicit indexes) and the requested index is not among those requested (index >= maxIndex() || !indexes()[index])
    • maxIndex

      public int maxIndex()
      Description copied from interface: RequestedColumn
      Return the maximum index value, if only explicit indexes were given. Valid if hasIndexes() returns true.
      Specified by:
      maxIndex in interface RequestedColumn
      Returns:
      the maximum array index value known to the projection, or 0 if isArray() is false. Also returns 0 if hasIndexe() returns false, meaning that either the column was not observed to be an array, or was projected with both indexes and by itself: a[0], a.
    • indexes

      public boolean[] indexes()
      Description copied from interface: RequestedColumn
      Return a bitmap of the selected indexes. Only valid if hasIndexes() returns true.
      Specified by:
      indexes in interface RequestedColumn
      Returns:
      a bitmap of the selected array indexes, or null if hasIndexes() returns false.
    • toString

      public String toString()
      Convert the projection to a string of the form: a[0,1,4]['*']{b, c d}. The information here s insufficient to specify a type, it only specifies a pattern to which types are compatible.
      Overrides:
      toString in class Object
    • arrayDims

      public int arrayDims()
      Description copied from interface: RequestedColumn
      If isArray() returns true, reports the number of dimensions observed in projection. That is if projection is a[0][1], then this method returns 2.

      Note that, as with all projection-level information, this number reflects only what was in the project list; not what might be the number of dimensions in the actual input source.

      Specified by:
      arrayDims in interface RequestedColumn
      Returns:
      the maximum number of array dimensions observed in the projection list, or 0 if this column was not observed to be an array (if isArray() returns false.