public override void Serialize(SqlQueryExpression expression, BinaryWriter writer) { SerializeSelectColumns(expression.SelectColumns, writer); writer.Write(expression.Distinct ? (byte)1 : (byte)0); if (expression.FromClause != null) { writer.Write((byte)1); FromClause.Serialize(expression.FromClause, writer); } else { writer.Write((byte)0); } if (expression.WhereExpression != null) { writer.Write((byte)1); SqlExpression.Serialize(expression.WhereExpression, writer); } else { writer.Write((byte)0); } if (expression.GroupBy != null) { throw new NotImplementedException(); } if (expression.GroupMax != null) { writer.Write((byte)1); ObjectName.Serialize(expression.GroupMax, writer); } else { writer.Write((byte)0); } if (expression.HavingExpression != null) { writer.Write((byte)1); SqlExpression.Serialize(expression.HavingExpression, writer); } else { writer.Write((byte)0); } // TODO: Composites!! }