Class Columns

All Implemented Interfaces:
Iterable<ColumnMetadata>, Collection<ColumnMetadata>

public class Columns extends AbstractCollection<ColumnMetadata> implements Collection<ColumnMetadata>
An immutable and sorted list of (non-PK) columns for a given table.

Note that in practice, it will either store only static columns, or only regular ones. When we need both type of columns, we use a RegularAndStaticColumns object.

  • Field Details

  • Method Details

    • of

      public static Columns of(ColumnMetadata c)
      Creates a Columns holding only the one column provided.
      Parameters:
      c - the column for which to create a Columns object.
      Returns:
      the newly created Columns containing only c.
    • from

      public static Columns from(Row row)
      Returns a new Columns object holing the same columns as the provided Row.
      Parameters:
      row - the row from which to create the new Columns.
      Returns:
      the newly created Columns containing the columns from row.
    • from

      public static Columns from(BTree.Builder<ColumnMetadata> builder)
    • from

      public static Columns from(Collection<ColumnMetadata> s)
      Returns a new Columns object holding the same columns than the provided set. This method assumes nothing about the order of s.
      Parameters:
      s - the set from which to create the new Columns.
      Returns:
      the newly created Columns containing the columns from s.
    • isEmpty

      public boolean isEmpty()
      Whether this columns is empty.
      Specified by:
      isEmpty in interface Collection<ColumnMetadata>
      Overrides:
      isEmpty in class AbstractCollection<ColumnMetadata>
      Returns:
      whether this columns is empty.
    • simpleColumnCount

      public int simpleColumnCount()
      The number of simple columns in this object.
      Returns:
      the number of simple columns in this object.
    • complexColumnCount

      public int complexColumnCount()
      The number of complex columns (non-frozen collections, udts, ...) in this object.
      Returns:
      the number of complex columns in this object.
    • size

      public int size()
      The total number of columns in this object.
      Specified by:
      size in interface Collection<ColumnMetadata>
      Specified by:
      size in class AbstractCollection<ColumnMetadata>
      Returns:
      the total number of columns in this object.
    • hasSimple

      public boolean hasSimple()
      Whether this objects contains simple columns.
      Returns:
      whether this objects contains simple columns.
    • hasComplex

      public boolean hasComplex()
      Whether this objects contains complex columns.
      Returns:
      whether this objects contains complex columns.
    • getSimple

      public ColumnMetadata getSimple(int i)
      Returns the ith simple column of this object.
      Parameters:
      i - the index for the simple column to fectch. This must satisfy 0 <= i < simpleColumnCount().
      Returns:
      the ith simple column in this object.
    • getComplex

      public ColumnMetadata getComplex(int i)
      Returns the ith complex column of this object.
      Parameters:
      i - the index for the complex column to fectch. This must satisfy 0 <= i < complexColumnCount().
      Returns:
      the ith complex column in this object.
    • simpleIdx

      public int simpleIdx(ColumnMetadata c)
      The index of the provided simple column in this object (if it contains the provided column).
      Parameters:
      c - the simple column for which to return the index of.
      Returns:
      the index for simple column c if it is contains in this object
    • complexIdx

      public int complexIdx(ColumnMetadata c)
      The index of the provided complex column in this object (if it contains the provided column).
      Parameters:
      c - the complex column for which to return the index of.
      Returns:
      the index for complex column c if it is contains in this object
    • contains

      public boolean contains(ColumnMetadata c)
      Whether the provided column is contained by this object.
      Parameters:
      c - the column to check presence of.
      Returns:
      whether c is contained by this object.
    • mergeTo

      public Columns mergeTo(Columns other)
      Returns the result of merging this Columns object with the provided one.
      Parameters:
      other - the other Columns to merge this object with.
      Returns:
      the result of merging/taking the union of this and other. The returned object may be one of the operand and that operand is a subset of the other operand.
    • containsAll

      public boolean containsAll(Collection<?> other)
      Whether this object is a superset of the provided other Columns object.
      Specified by:
      containsAll in interface Collection<ColumnMetadata>
      Overrides:
      containsAll in class AbstractCollection<ColumnMetadata>
      Parameters:
      other - the other object to test for inclusion in this object.
      Returns:
      whether all the columns of other are contained by this object.
    • simpleColumns

      public Iterator<ColumnMetadata> simpleColumns()
      Iterator over the simple columns of this object.
      Returns:
      an iterator over the simple columns of this object.
    • complexColumns

      public Iterator<ColumnMetadata> complexColumns()
      Iterator over the complex columns of this object.
      Returns:
      an iterator over the complex columns of this object.
    • iterator

      Iterator over all the columns of this object.
      Specified by:
      iterator in interface Collection<ColumnMetadata>
      Specified by:
      iterator in interface Iterable<ColumnMetadata>
      Specified by:
      iterator in class AbstractCollection<ColumnMetadata>
      Returns:
      an iterator over all the columns of this object.
    • selectOrderIterator

      public Iterator<ColumnMetadata> selectOrderIterator()
      An iterator that returns the columns of this object in "select" order (that is in global alphabetical order, where the "normal" iterator returns simple columns first and the complex second).
      Returns:
      an iterator returning columns in alphabetical order.
    • without

      public Columns without(ColumnMetadata column)
      Returns the equivalent of those columns but with the provided column removed.
      Parameters:
      column - the column to remove.
      Returns:
      newly allocated columns containing all the columns of this expect for column.
    • inOrderInclusionTester

      public Predicate<ColumnMetadata> inOrderInclusionTester()
      Returns a predicate to test whether columns are included in this Columns object, assuming that tes tested columns are passed to the predicate in sorted order.
      Returns:
      a predicate to test the inclusion of sorted columns in this object.
    • digest

      public void digest(Digest digest)
    • apply

      public void apply(Consumer<ColumnMetadata> function)
      Apply a function to each column definition in forwards or reversed order.
      Parameters:
      function -
    • equals

      public boolean equals(Object other)
      Specified by:
      equals in interface Collection<ColumnMetadata>
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Collection<ColumnMetadata>
      Overrides:
      hashCode in class Object
    • unsharedHeapSize

      public long unsharedHeapSize()
    • toString

      public String toString()
      Overrides:
      toString in class AbstractCollection<ColumnMetadata>