public static Block Read(ProtocolFormatter formatter) { var rv = new Block(); if (formatter.ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithTemporaryTables) { formatter.ReadString(); } using (formatter.Decompression) { if (formatter.ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithBlockInfo) { rv.BlockInfo = BlockInfo.Read(formatter); } var cols = formatter.ReadUInt(); var rows = formatter.ReadUInt(); for (var i = 0; i < cols; i++) { rv.Columns.Add(ColumnInfo.Read(formatter, (int)rows)); } } return(rv); }
public static BlockInfo Read(ProtocolFormatter formatter) { long fieldNum; var rv = new BlockInfo(); while ((fieldNum = formatter.ReadUInt()) != 0) { switch (fieldNum) { case 1: rv.IsOwerflow = formatter.ReadBytes(1)[0] != 0; break; case 2: rv.BucketNum = BitConverter.ToInt32(formatter.ReadBytes(4), 0); break; default: throw new InvalidOperationException("Unknown field number {0} in block info."); } } return(rv); }