Exemplo n.º 1
0
        public static Expression GetLeft(this Expression expression)
        {
            var biExp = expression as BinaryExpression;

            if (biExp != null)
            {
                return(biExp.Left);
            }
            var compEx = expression as ComparisonExpression;

            if (compEx != null)
            {
                return(compEx.Left);
            }

            throw QueryExceptionExtensions.ExpressionNotSupported("Expressions does not have left expression.", expression);
        }
Exemplo n.º 2
0
        public IComparer <long> GetColumnComparer(int columnId, IReadTransactionContext tx, bool ascending)
        {
            switch (ColumnType)
            {
            case EFieldType.Byte:
                return(new ColumnValueComparer <byte>(columnId, tx, ascending));

            case EFieldType.Bool:
                return(new ColumnValueComparer <bool>(columnId, tx, ascending));

            case EFieldType.Int16:
                return(new ColumnValueComparer <short>(columnId, tx, ascending));

            case EFieldType.Int32:
                return(new ColumnValueComparer <int>(columnId, tx, ascending));

            case EFieldType.Int64:
                return(new ColumnValueComparer <long>(columnId, tx, ascending));

            case EFieldType.Double:
                return(new ColumnValueComparer <double>(columnId, tx, ascending));

            case EFieldType.Symbol:
            case EFieldType.String:
                return(new ColumnValueComparer <string>(columnId, tx, ascending));

            case EFieldType.DateTime:
            case EFieldType.DateTimeEpochMs:
                return(new ColumnValueComparer <DateTime>(columnId, tx, ascending));

            case EFieldType.Binary:
                return(new BinaryColumnValueComparer(columnId, tx, ascending));

            default:
                throw QueryExceptionExtensions.NotSupported("Column {0} of type {1} is not sortable.", columnId, columnId);
            }
        }
Exemplo n.º 3
0
        public void ApplyLastestByIdPlanItem(IColumnMetadata column)
        {
            if (!CanTranformLastestByIdPlanItem(column))
            {
                throw new InvalidOperationException("Please check CanTranformLastestByIdPlanItem first.");
            }

            var existingLatestFileter = _partitionFilter as ILatestBySymbolFilter;

            if (existingLatestFileter != null && existingLatestFileter.Column.ColumnID == column.ColumnID)
            {
                return;
            }

            var partitionAsColumn = _partitionFilter as IColumnFilter;

            if (partitionAsColumn != null)
            {
                if (_andFilters == null)
                {
                    _andFilters = new List <IRowFilter>();
                }
                _andFilters.Add(partitionAsColumn);
                _partitionFilter = null;
            }

            switch (column.DataType.ColumnType)
            {
            case EFieldType.Byte:
                _partitionFilter = new LatestByFilter <byte>(_journal, column, ExtractColumnContains <byte>(column));
                break;

            case EFieldType.Bool:
                _partitionFilter = new LatestByFilter <bool>(_journal, column, ExtractColumnContains <bool>(column));
                break;

            case EFieldType.Int16:
                _partitionFilter = new LatestByFilter <short>(_journal, column, ExtractColumnContains <short>(column));
                break;

            case EFieldType.Int32:
                _partitionFilter = new LatestByFilter <int>(_journal, column, ExtractColumnContains <int>(column));
                break;

            case EFieldType.Int64:
                _partitionFilter = new LatestByFilter <long>(_journal, column, ExtractColumnContains <long>(column));
                break;

            case EFieldType.Double:
                _partitionFilter = new LatestByFilter <double>(_journal, column, ExtractColumnContains <double>(column));
                break;

            case EFieldType.Symbol:
            case EFieldType.String:
                _partitionFilter = new LatestByFilter <string>(_journal, column, ExtractColumnContains <string>(column));
                break;

            case EFieldType.DateTime:
            case EFieldType.DateTimeEpochMs:
                _partitionFilter = new LatestByFilter <DateTime>(_journal, column, ExtractColumnContains <DateTime>(column));
                break;

            default:
                throw QueryExceptionExtensions.NotSupported("Latest by {0} column is not supported.", column.DataType.ColumnType);
            }
        }