private static ColumnSource CreateSolumnSource <T>(EFieldType type, string name, T value, int order) { ColumnMetadata colMeta; switch (type) { case EFieldType.Byte: case EFieldType.Bool: case EFieldType.Int16: case EFieldType.Int32: case EFieldType.Int64: case EFieldType.Double: case EFieldType.DateTime: case EFieldType.DateTimeEpochMs: colMeta = ColumnMetadata.FromFixedField(new ColumnSerializerMetadata(type, name, null), order, order); break; case EFieldType.Symbol: case EFieldType.String: colMeta = ColumnMetadata.FromStringField(new ColumnSerializerMetadata(type, name, null), 10, 10, order, order); break; case EFieldType.Binary: colMeta = ColumnMetadata.FromBinaryField(new ColumnSerializerMetadata(type, name, null), 10, 10, order, order); break; default: throw new ArgumentOutOfRangeException("type"); } return(new ColumnSource(colMeta, ColumnsStub.CreateColumn(value, type, order, name), order)); }
private ResultSetBuilder CreateResultSetBuilder() { var journal = new Mock <IJournalCore>(); _metadata = new Mock <IJournalMetadata>(); var journalStat = new Mock <IQueryStatistics>(); journalStat.Setup(j => j.GetCardinalityByColumnValue(It.IsAny <IReadTransactionContext>(), It.IsAny <ColumnMetadata>(), It.IsAny <string[]>())).Returns(long.MaxValue); journal.Setup(j => j.Metadata).Returns(_metadata.Object); journal.Setup(j => j.QueryStatistics).Returns(journalStat.Object); _metadata.Setup(m => m.GetColumnByPropertyName(It.IsAny <string>())).Returns( (string name) => { if (name != "bidSize") { return(ColumnMetadata.FromStringField(new ColumnSerializerMetadata(EFieldType.String, name, name), 10, 10, name.GetHashCode(), -1)); } return(ColumnMetadata.FromFixedField(new ColumnSerializerMetadata(EFieldType.Int32, name, name), 2, -1)); }); return(new ResultSetBuilder(journal.Object, new Mock <IReadTransactionContext>().Object)); }
private IList <ColumnMetadata> ParseColumns(IEnumerable <IColumnSerializerMetadata> columnsMetadata, List <ColumnElement> columns) { // Build. var cols = new List <ColumnMetadata>(); int nullIndex = 0; foreach (IColumnSerializerMetadata field in columnsMetadata) { var nIndex = field.Nullable ? nullIndex++ : -1; // Type. switch (field.ColumnType) { case EFieldType.Byte: case EFieldType.Bool: case EFieldType.Int16: case EFieldType.Int32: case EFieldType.Int64: case EFieldType.Double: cols.Add(ColumnMetadata.FromFixedField(field, cols.Count, nIndex)); break; case EFieldType.DateTime: case EFieldType.DateTimeEpochMs: // Check config. var dateTimeConfig = columns .FirstOrDefault(c => c.Name.Equals(field.PropertyName, StringComparison.OrdinalIgnoreCase)); if (dateTimeConfig != null && dateTimeConfig.ColumnType == EFieldType.DateTimeEpochMs) { field.ColumnType = EFieldType.DateTimeEpochMs; } cols.Add(ColumnMetadata.FromFixedField(field, cols.Count, nIndex)); break; case EFieldType.Symbol: case EFieldType.String: // Check config. var stringConfig = (VarLenColumnElement)columns .FirstOrDefault(c => c.Name.Equals(field.PropertyName, StringComparison.OrdinalIgnoreCase)); if (stringConfig != null) { cols.Add(ColumnMetadata.FromColumnElement(field, stringConfig, cols.Count, nIndex)); } else { // No config. cols.Add(ColumnMetadata.FromStringField(field, MetadataConstants.DEFAULT_STRING_AVG_SIZE, MetadataConstants.DEFAULT_STRING_MAX_SIZE, cols.Count, nIndex)); } break; case EFieldType.Binary: var binaryConfig = (VarLenColumnElement)columns .FirstOrDefault(c => c.Name.Equals(field.PropertyName, StringComparison.OrdinalIgnoreCase)); if (binaryConfig != null) { cols.Add(ColumnMetadata.FromColumnElement(field, binaryConfig, cols.Count, nIndex)); } else { // No config. cols.Add(ColumnMetadata.FromBinaryField(field, MetadataConstants.DEFAULT_BINARY_AVG_SIZE, MetadataConstants.DEFAULT_BINARY_MAX_SIZE, cols.Count, nIndex)); } break; case EFieldType.BitSet: var fieldSize = BitsetColumn.CalculateSize(field.Size); cols.Add(ColumnMetadata.FromBitsetField(field, fieldSize, cols.Count)); break; default: throw new ArgumentOutOfRangeException(); } } return(cols); }