示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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);
        }