public override void Put(StreamBase f)
 {
     base.Put(f);
     source.Put(f);
     f.PutInt(groupby.Length);
     for (var b = groupby.First(); b != null; b = b.Next())
     {
         f.PutString(b.Value.Item2);
     }
     f.PutInt(having.Length);
     for (var b = having.First(); b != null; b = b.Next())
     {
         b.Value.Put(f);
     }
 }
 public override void Put(StreamBase f)
 {
     base.Put(f);
     left.Put(f);
     f.PutInt(outer ? 1 : 0);
     f.PutInt((int)joinType);
     right.Put(f);
     f.PutInt((ons.Length + uses.Length) ?? 0); // at most one of these is nonzero
     for (var b = ons.First(); b != null; b = b.Next())
     {
         b.Value.Put(f);
     }
     for (var b = uses.First(); b != null; b = b.Next())
     {
         f.PutString(b.Value);
     }
 }
        public override void Put(StreamBase f)
        {
            base.Put(f);
            f.WriteByte((byte)(distinct ? 1 : 0));
            f.PutInt(display.Length);
            var ab = display.First();

            for (var b = cpos.First(); ab != null && b != null; b = b.Next(), ab = ab.Next())
            {
                f.PutString(ab.Value.Item2);
                b.Value.Item2.Put(f);
            }
            qry.Put(f);
            f.PutInt(order.Length.HasValue?order.Length.Value:0);
            for (var b = order.First(); b != null; b = b.Next())
            {
                b.Value.Put(f);
            }
        }
 public override void Put(StreamBase f)
 {
     base.Put(f);
     f.PutString(alias);
 }