Exemple #1
0
            public IClickHouseColumnWriter Dispatch(string columnName, object rows, ClickHouseColumnSettings?columnSettings, IClickHouseColumnTypeInfo underlyingTypeInfo)
            {
                var genericList = (IReadOnlyList <TValue?>)rows;
                var listWrapper = new MappedReadOnlyList <TValue?, TValue>(genericList, item => item ?? default);

                return(underlyingTypeInfo.CreateColumnWriter(columnName, listWrapper, columnSettings));
            }
Exemple #2
0
            public IClickHouseColumnWriter Dispatch <T>()
            {
                var linearizedList      = new ArrayLinearizedList <T>((IReadOnlyList <IReadOnlyList <T>?>)_rows);
                var elementColumnWriter = _elementTypeInfo.CreateColumnWriter(_columnName, linearizedList, _columnSettings);

                return(new ArrayColumnWriter <T>(_columnType, linearizedList, elementColumnWriter));
            }
Exemple #3
0
            public IClickHouseColumnWriter Dispatch <T>()
            {
                var mappedRows          = new MappedReadOnlyList <Array, IReadOnlyList <T> >(_rows, arr => (IReadOnlyList <T>)_dispatchArray(arr));
                var linearizedList      = new ArrayLinearizedList <T>(mappedRows);
                var elementColumnWriter = _elementTypeInfo.CreateColumnWriter(_columnName, linearizedList, _columnSettings);

                return(new ArrayColumnWriter <T>(_columnType, linearizedList, elementColumnWriter));
            }
Exemple #4
0
            public NullableColumnWriter(string columnName, string columnType, IReadOnlyList <T> rows, ClickHouseColumnSettings?columnSettings, IClickHouseColumnTypeInfo underlyingTypeInfo)
            {
                if (underlyingTypeInfo == null)
                {
                    throw new ArgumentNullException(nameof(underlyingTypeInfo));
                }
                _rows      = rows ?? throw new ArgumentNullException(nameof(rows));
                ColumnName = columnName ?? throw new ArgumentNullException(nameof(columnName));
                ColumnType = columnType ?? throw new ArgumentNullException(nameof(columnType));

                if (typeof(T).IsValueType && typeof(T).IsGenericType && typeof(T).GetGenericTypeDefinition() == typeof(Nullable <>))
                {
                    var valueType        = typeof(T).GetGenericArguments()[0];
                    var dispatcherType   = typeof(ValueOrDefaultListDispatcher <>).MakeGenericType(valueType);
                    var columnDispatcher = (IValueOrDefaultListDispatcherBase)Activator.CreateInstance(dispatcherType) !;
                    _internalColumnWriter = columnDispatcher.Dispatch(columnName, rows, columnSettings, underlyingTypeInfo);
                }
                else
                {
                    _internalColumnWriter = underlyingTypeInfo.CreateColumnWriter(columnName, rows, columnSettings);
                }
            }