private void PrintMissignQuery(string sql, List <TDSRPCRequestParameter> parameters) { var newStub = new SqlStub(); newStub.Query = sql; newStub.Parameters = new Dictionary <string, object>(); lock (_exisitngStubs) { _missingStubs.Add(newStub); Console.WriteLine($"--------------{Name}---------------------"); Console.WriteLine(sql); if (null != parameters) { foreach (var parameter in parameters) { if (null != parameter.ParamMetaData && "@RETURN_VALUE" != parameter.ParamMetaData) { Console.WriteLine(parameter.ParamMetaData + " = " + parameter.Value); newStub.Parameters.Add(parameter.ParamMetaData.Substring(1), parameter.Value); } } } } }
public void AddStub(SqlStub stub) { if (_exisitngStubs.ContainsKey(stub.Query)) { _exisitngStubs[stub.Query].Add(stub); } else { var stubs = new List <SqlStub>(); stubs.Add(stub); _exisitngStubs.Add(stub.Query, stubs); } }
private static String GetHash(SqlStub stub, MD5 hasher) { var parameters = String.Join(";", stub.Parameters.Select(p => p.Key + p.Value)); var bytes = Encoding.UTF8.GetBytes(stub.Query + parameters); byte[] hash = hasher.ComputeHash(bytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < hash.Length; i++) { sb.Append(hash[i].ToString("X2")); } return(sb.ToString()); }
private List <TDSPacketToken> ReturnTable(SqlStub result) { List <TDSPacketToken> tokens = new List <TDSPacketToken>(); var records = result.GetRecords().ToArray(); if (0 < records.Length) { TDSColMetadataToken metadataToken = new TDSColMetadataToken(); tokens.Add(metadataToken); foreach (var columnDefinition in result.GetColumns()) { TDSColumnData column = new TDSColumnData(); column.DataType = columnDefinition.Type; column.Flags.Updatable = TDSColumnDataUpdatableFlag.ReadOnly; if (columnDefinition.Type == TDSDataType.NVarChar) { column.DataTypeSpecific = new TDSShilohVarCharColumnSpecific((ushort)columnDefinition.Size, new TDSColumnDataCollation(13632521, 52)); } else if (columnDefinition.Type == TDSDataType.DateTime2N || columnDefinition.Type == TDSDataType.DateTime) { column.DataTypeSpecific = (byte)columnDefinition.Size; column.Flags.IsComputed = true; column.Flags.IsNullable = true; // TODO: Must be nullable, otherwise something is wrong with SqlClient } else if (columnDefinition.Type == TDSDataType.Bit) { } else if (columnDefinition.Type == TDSDataType.BigVarBinary) { column.DataTypeSpecific = (ushort)columnDefinition.Size; } else if (columnDefinition.Type == TDSDataType.Int2) { column.DataTypeSpecific = (byte)columnDefinition.Size; } else { column.DataTypeSpecific = (byte)columnDefinition.Size; column.Flags.IsComputed = true; column.Flags.IsNullable = true; // TODO: Must be nullable, otherwise something is wrong with SqlClient } column.Name = columnDefinition.Name; metadataToken.Columns.Add(column); } foreach (var recordData in records) { TDSRowToken rowToken = new TDSRowToken(metadataToken); foreach (var value in recordData) { rowToken.Data.Add(value); } tokens.Add(rowToken); } } return(tokens); }