コード例 #1
0
ファイル: Block.cs プロジェクト: enragez/BARS.ClickHouse.NET
        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);
        }
コード例 #2
0
ファイル: BlockInfo.cs プロジェクト: xontab/ClickHouse-Net
        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);
        }