public SystemPhysicalExec(TaskAttemptContext context, ScanNode scanNode) {
      super(context, scanNode.getInSchema(), scanNode.getOutSchema());
      this.scanNode = scanNode;

      if (this.scanNode.hasQual()) {
        this.qual = this.scanNode.getQual();
        this.qual.bind(null, inSchema);
      }

      cachedData = TUtil.newList();
      currentRow = 0;
      isClosed = false;

      projector = new Projector(context, inSchema, outSchema, scanNode.getTargets());
    }