コード例 #1
0
        internal void Write(ProtocolFormatter formatter)
        {
            formatter.WriteByte((byte)QueryKind);
            if (QueryKind == QueryKind.None)
            {
                return;
            }

            formatter.WriteString(InitialUser);
            formatter.WriteString(InitialQueryId);
            formatter.WriteString(InitialAddress?.ToString());
            formatter.WriteByte((byte)Interface);
            switch (Interface)
            {
            case Interface.Tcp:
                formatter.WriteString(OsUser);
                formatter.WriteString(ClientHostname);
                formatter.WriteString(ClientName);
                formatter.WriteUInt(ClientVersionMajor);
                formatter.WriteUInt(ClientVersionMinor);
                formatter.WriteUInt(ClientRevision);
                break;

            case Interface.Http:
                formatter.WriteByte((byte)HttpMethod);
                formatter.WriteString(HttpUserAgent);
                break;
            }

            if (formatter.ServerInfo.Build > ProtocolCaps.DbmsMinRevisionWithQuotaKeyInClientInfo)
            {
                formatter.WriteString(QuotaKey);
            }
        }
コード例 #2
0
ファイル: BlockInfo.cs プロジェクト: xontab/ClickHouse-Net
 internal void Write(ProtocolFormatter formatter)
 {
     formatter.WriteUInt(1);
     formatter.WriteByte(IsOwerflow ? (byte)1 : (byte)0);
     formatter.WriteUInt(2);
     formatter.WriteBytes(BitConverter.GetBytes(BucketNum));
     formatter.WriteUInt(0);
 }
コード例 #3
0
        internal void Write(ProtocolFormatter formatter)
        {
            formatter.WriteUInt((int)ClientMessageType.Data);
            if (formatter.ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithTemporaryTables)
            {
                formatter.WriteString(Name);
            }
            using (formatter.Compression) {
                if (formatter.ClientInfo.ClientRevision >= ProtocolCaps.DbmsMinRevisionWithBlockInfo)
                {
                    BlockInfo.Write(formatter);
                }

                formatter.WriteUInt(Columns.Count);
                formatter.WriteUInt(Rows);

                foreach (var column in Columns)
                {
                    column.Write(formatter, Rows);
                }
            }
        }
コード例 #4
0
 protected internal override void Write(ProtocolFormatter formatter)
 {
     formatter.WriteUInt((long)Value.TotalSeconds);
 }
コード例 #5
0
 protected internal override void Write(ProtocolFormatter formatter)
 {
     formatter.WriteUInt((long)Convert.ChangeType(Value, typeof(int)));
 }
コード例 #6
0
 protected internal override void Write(ProtocolFormatter formatter) => formatter.WriteUInt(Value ? 1L : 0L);