public LowCardinalityTableColumn(ReadOnlyMemory <byte> keys, int keySize, IClickHouseTableColumn values) { _keys = keys; _keySize = keySize; _values = values; RowCount = _keys.Length / _keySize; }
public LowCardinalityArrayTableColumn(IClickHouseTableColumn reinterpretationRoot, ReadOnlyMemory <byte> keys, int keySize, IClickHouseArrayTableColumn <TElement> values, bool isNullable) { _reinterpretationRoot = reinterpretationRoot; _keys = keys; _keySize = keySize; _values = values; _isNullable = isNullable; RowCount = _keys.Length / _keySize; }
public static Type?TryGetValueType(IClickHouseTableColumn column) { if (column.TryDipatch(ClickHouseTableColumnValueTypeDispatcher.Instance, out var type)) { return(type); } return(null); }
public static IClickHouseTableColumn MakeNullableColumn(BitArray?nullFlags, IClickHouseTableColumn baseColumn) { if (!baseColumn.TryDipatch(new NullableTableColumnDispatcher(nullFlags), out var result) || result == null) { result = new NullableTableColumn(nullFlags, baseColumn); } return(result); }
public static IClickHouseArrayTableColumn <T>?TryMakeNullableArrayColumn <T>(IClickHouseTableColumn reinterpretationRoot, BitArray?nullFlags, IClickHouseTableColumn notNullableColumn) { var notNullableArrayColumn = notNullableColumn as IClickHouseArrayTableColumn <T> ?? notNullableColumn.TryReinterpretAsArray <T>(); if (notNullableArrayColumn == null) { return(null); } return(new NullableArrayTableColumn <T>(reinterpretationRoot, nullFlags, notNullableArrayColumn)); }
public IClickHouseTableColumn?Dispatch(BitArray?nullFlags, IClickHouseTableColumn notNullableColumn, bool reinterpretAsNotNullable) { Debug.Assert(!reinterpretAsNotNullable); var reinterpretedColumn = notNullableColumn as IClickHouseTableColumn <TObj> ?? notNullableColumn.TryReinterpret <TObj>(); if (reinterpretedColumn == null) { return(null); } if (nullFlags == null) { return(reinterpretedColumn); } return(new NullableObjTableColumn <TObj>(nullFlags, reinterpretedColumn)); }
public IClickHouseTableColumn?Dispatch(BitArray?nullFlags, IClickHouseTableColumn notNullableColumn, bool reinterpretAsNotNullable) { var reinterpretedColumn = notNullableColumn as IClickHouseTableColumn <TStruct> ?? notNullableColumn.TryReinterpret <TStruct>(); if (reinterpretedColumn == null) { return(null); } var result = new NullableStructTableColumn <TStruct>(nullFlags, reinterpretedColumn); if (!reinterpretAsNotNullable) { return(result); } return(result.AsNotNullable()); }
public static IClickHouseTableColumn MakeNullableColumn(BitArray?nullFlags, IClickHouseTableColumn baseColumn) { var columnType = baseColumn.GetType(); Type?recognizedElementType = null; foreach (var itf in columnType.GetInterfaces().Where(i => i.IsGenericType)) { var typeDef = itf.GetGenericTypeDefinition(); if (typeDef != typeof(IClickHouseTableColumn <>)) { continue; } if (recognizedElementType == null) { recognizedElementType = itf.GenericTypeArguments[0]; } else { recognizedElementType = null; break; } } IClickHouseTableColumn?result = null; if (recognizedElementType != null) { if (recognizedElementType.IsValueType && !(recognizedElementType.IsGenericType && recognizedElementType.GetGenericTypeDefinition() == typeof(Nullable <>))) { recognizedElementType = typeof(Nullable <>).MakeGenericType(recognizedElementType); } result = TryMakeNullableColumn(recognizedElementType, nullFlags, baseColumn); } return(result ?? new NullableTableColumn(nullFlags, baseColumn)); }
public IClickHouseTableColumn?Dispatch <T>(IClickHouseTableColumn <T> column) { Type type = typeof(T); Type dispatcherType; if (type.IsValueType) { var columnType = Nullable.GetUnderlyingType(type) ?? type; dispatcherType = typeof(NullableStructTableColumnDispatcher <>).MakeGenericType(columnType); } else if (type.IsClass) { dispatcherType = typeof(NullableObjTableColumnDispatcher <>).MakeGenericType(type); } else { return(null); } var dispatcher = (INullableColumnDispatcher)Activator.CreateInstance(dispatcherType) !; return(dispatcher.Dispatch(_nullFlags, column, false)); }
public static IClickHouseTableColumn <T>?TryMakeNullableColumn <T>(BitArray?nullFlags, IClickHouseTableColumn notNullableColumn) { return((IClickHouseTableColumn <T>?)TryMakeNullableColumn(typeof(T), nullFlags, notNullableColumn)); }
public Type Dispatch <T>(IClickHouseTableColumn <T> column) { return(typeof(T)); }
public NullableArrayTableColumn(IClickHouseTableColumn reinterpretationRoot, BitArray?nullFlags, IClickHouseArrayTableColumn <TElement> arrayColumn) { _reinterpretationRoot = reinterpretationRoot; _nullFlags = nullFlags; _arrayColumn = arrayColumn; }
public NullableObjTableColumn(BitArray nullFlags, IClickHouseTableColumn <TObj> baseColumn) { _nullFlags = nullFlags; _baseColumn = baseColumn; }
private NullableTableColumn(BitArray?nullFlags, IClickHouseTableColumn baseColumn) { _nullFlags = nullFlags; _baseColumn = baseColumn; }
public ReinterpretedArrayTableColumn(IClickHouseTableColumn reinterpretationRoot, IClickHouseArrayTableColumn <TElement> arrayColumn) { _reinterpretationRoot = reinterpretationRoot; _arrayColumn = arrayColumn; }
protected override EnumTableColumnDispatcherBase CreateColumnDispatcher(IClickHouseTableColumn <short> column, IReadOnlyDictionary <short, string> reversedEnumMap) { return(new EnumTableColumnDispatcher(column, reversedEnumMap)); }
public ObjectColumnAdapter(IClickHouseTableColumn tableColumn) { _tableColumn = tableColumn; }
private static IClickHouseTableColumn?TryMakeNullableColumn(Type underlyingType, BitArray?nullFlags, IClickHouseTableColumn notNullableColumn) { Type dispatcherType; bool reinterpretAsNotNullable = false; if (underlyingType.IsValueType) { var columnType = Nullable.GetUnderlyingType(underlyingType); if (columnType == null) { reinterpretAsNotNullable = true; columnType = underlyingType; } dispatcherType = typeof(NullableStructTableColumnDispatcher <>).MakeGenericType(columnType); } else if (underlyingType.IsClass) { dispatcherType = typeof(NullableObjTableColumnDispatcher <>).MakeGenericType(underlyingType); } else { return(null); } var dispatcher = (INullableColumnDispatcher)Activator.CreateInstance(dispatcherType) !; return(dispatcher.Dispatch(nullFlags, notNullableColumn, reinterpretAsNotNullable)); }
public ReinterpretedTableColumn(IClickHouseTableColumn reinterpretationRoot, IClickHouseTableColumn <TFrom> sourceColumn, Func <TFrom, TTo> reinterpret) { _reinterpretationRoot = reinterpretationRoot ?? throw new ArgumentNullException(nameof(reinterpretationRoot)); _sourceColumn = sourceColumn ?? throw new ArgumentNullException(nameof(sourceColumn)); _reinterpret = reinterpret ?? throw new ArgumentNullException(nameof(reinterpret)); }
protected abstract EnumTableColumnDispatcherBase CreateColumnDispatcher(IClickHouseTableColumn <TValue> column, IReadOnlyDictionary <TValue, string> reversedEnumMap);
public NullableStructTableColumn(BitArray?nullFlags, IClickHouseTableColumn <TStruct> baseColumn) { _nullFlags = nullFlags; _baseColumn = baseColumn; }
public EnumTableColumnDispatcher(IClickHouseTableColumn <short> column, IReadOnlyDictionary <short, string> reversedEnumMap) : base(column, reversedEnumMap) { }
public NullableStructTableColumnNotNullableAdapter(BitArray nullFlags, IClickHouseTableColumn <TStruct> baseColumn) { _nullFlags = nullFlags; _baseColumn = baseColumn; }
public EnumTableColumn(IClickHouseTableColumn <TKey> internalColumn, IReadOnlyDictionary <TKey, string> valueMap) { _internalColumn = internalColumn; _valueMap = valueMap; }
public KeyValuePairTableColumn(int rowCount, IClickHouseTableColumn <TKey> keyColumn, IClickHouseTableColumn <TValue> valueColumn) : base(rowCount) { _keyColumn = keyColumn; _valueColumn = valueColumn; }