// List of columns of this table that are nullable (and must have nulls pruned out)

        #endregion

        #region constructors

        /// <summary>
        /// Basic constructor
        /// </summary>
        /// <param name="id">node id</param>
        /// <param name="node">scan table node</param>
        internal AugmentedTableNode(int id, Node node)
            : base(id, node)
        {
            var scanTableOp = (ScanTableOp)node.Op;
            m_table = scanTableOp.Table;
            LastVisibleId = id;
            m_replacementTable = this;
            m_newLocationId = id;
        }
예제 #2
0
 /// <summary>
 /// Creates a new var for a table column
 /// </summary>
 /// <param name="table">The table instance that produces the column</param>
 /// <param name="columnMD">column metadata</param>
 /// <returns>A new ColumnVar instance that references the specified column in the given table</returns>
 internal ColumnVar CreateColumnVar(Table table, ColumnMD columnMD)
 {
     // create a new column var now
     ColumnVar c = new ColumnVar(NewVarId(), table, columnMD);
     table.Columns.Add(c);
     m_vars.Add(c);
     return c;
 }
예제 #3
0
 /// <summary>
 /// Creates a new table instance
 /// </summary>
 /// <param name="tableMetadata">table metadata</param>
 /// <returns>A new Table instance with columns as defined in the specified metadata</returns>
 internal Table CreateTableInstance(TableMD tableMetadata)
 {
     Table t = new Table(this, tableMetadata, NewTableId());
     m_tables.Add(t);
     return t;
 }
예제 #4
0
 /// <summary>
 /// Creates a new UnnestOp - a variant of the above with the Table supplied
 /// </summary>
 /// <param name="v">the unnest Var</param>
 /// <param name="t">the table instance</param>
 /// <returns>a new UnnestOp</returns>
 internal UnnestOp CreateUnnestOp(Var v, Table t)
 {
     return new UnnestOp(v, t);
 }
예제 #5
0
 /// <summary>
 /// Creates an instance of a ScanViewOp
 /// </summary>
 /// <param name="table">the table instance</param>
 /// <returns>a new ScanViewOp</returns>
 internal ScanViewOp CreateScanViewOp(Table table)
 {
     return new ScanViewOp(table);
 }
예제 #6
0
 /// <summary>
 /// Maps columns of an existing table to those of the cloned table
 /// </summary>
 /// <param name="newTable">The original Table</param>
 /// <param name="oldTable">The cloned Table</param>
 private void MapTable(Table newTable, Table oldTable)
 {
     // Map the corresponding columns of the table
     // Now set up the column map
     for (int i = 0; i < oldTable.Columns.Count; i++)
     {
         SetMappedVar(oldTable.Columns[i], newTable.Columns[i]);
     }
 }
예제 #7
0
 /// <summary>
 /// A variant of the above
 /// </summary>
 /// <param name="table">The table instance</param>
 /// <returns>a new ScanTableOp</returns>
 internal virtual ScanTableOp CreateScanTableOp(Table table)
 {
     return new ScanTableOp(table);
 }