private boolean isDual(NamedTable table) {
   String groupName = null;
   AbstractMetadataRecord groupID = table.getMetadataObject();
   if (groupID != null) {
     groupName = SQLStringVisitor.getRecordName(groupID);
   } else {
     groupName = table.getName();
   }
   return DUAL.equalsIgnoreCase(groupName);
 }
  private void sendSchema() {
    StringBuffer strBuf = new StringBuffer();

    // timestamp column
    strBuf.append('i');

    // sign column
    if (!table.isStream()) {
      strBuf.append(",b");
    }

    for (int a = 0; a < table.getNumAttrs(); a++) {
      strBuf.append(',');

      switch (table.getAttrType(a)) {
        case Types.INTEGER:
          strBuf.append('i');
          break;

        case Types.FLOAT:
          strBuf.append('f');
          break;

        case Types.CHAR:
          strBuf.append('c');
          strBuf.append(table.getAttrLen(a));
          break;

        case Types.BYTE:
          strBuf.append('b');
          break;

        default:
          assert (false);
          break;
      }
    }

    String schema = strBuf.toString();
    out.println(schema);
  }
 @Override
 public void visit(NamedTable obj) {
   this.scanTable = obj.getMetadataObject();
 }