internal void RunQuery(string sql, QueryProcessingStage stage, QuerySettings settings, ClientInfo clientInfo, IEnumerable <Block> xtables, bool noData) { if (_connectionSettings.LogQueryToStdout) { Console.WriteLine("==========================================="); Console.WriteLine(sql); } WriteUInt((int)ClientMessageType.Query); WriteString(""); if (ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithClientInfo) { if (clientInfo == null) { clientInfo = ClientInfo; } else { clientInfo.QueryKind = QueryKind.Secondary; } clientInfo.Write(this); } var compressionMethod = _compressor != null ? _compressor.Method : CompressionMethod.Lz4; if (settings != null) { settings.Write(this); compressionMethod = settings.Get <CompressionMethod>("compression_method"); } else { WriteString(""); } WriteUInt((int)stage); WriteUInt(_connectionSettings.Compress ? (int)compressionMethod : 0); WriteString(sql); _baseStream.Flush(); if (ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithTemporaryTables && noData) { new Block().Write(this); _baseStream.Flush(); } if (ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithTemporaryTables) { SendBlocks(xtables); } }
internal void RunQuery(string sql, QueryProcessingStage stage, QuerySettings settings, ClientInfo clientInfo, IEnumerable <Block> xtables, bool noData) { try { if (_connectionSettings.Trace) { Trace.WriteLine($"Executing sql \"{sql}\"", "ClickHouse.Ado"); } WriteUInt((int)ClientMessageType.Query); WriteString(""); if (ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithClientInfo) { if (clientInfo == null) { clientInfo = ClientInfo; } else { clientInfo.QueryKind = QueryKind.Secondary; } clientInfo.Write(this, _connectionSettings.ClientName); } var compressionMethod = _compressor != null ? _compressor.Method : CompressionMethod.Lz4; if (settings != null) { settings.Write(this); compressionMethod = settings.Get <CompressionMethod>("compression_method"); } else { WriteString(""); } WriteUInt((int)stage); WriteUInt(_connectionSettings.Compress ? (int)compressionMethod : 0); WriteString(sql); _baseStream.Flush(); if (ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithTemporaryTables && noData) { new Block().Write(this); _baseStream.Flush(); } if (ServerInfo.Build >= ProtocolCaps.DbmsMinRevisionWithTemporaryTables) { SendBlocks(xtables); } } catch (Exception e) { _owner.MaybeSetBroken(e); throw; } }