internal ColumnReader(ParquetHandle handle, RowGroupReader rowGroupReader, ColumnChunkMetaData columnChunkMetaData, int columnIndex) { Handle = handle; RowGroupReader = rowGroupReader; ColumnChunkMetaData = columnChunkMetaData; ColumnIndex = columnIndex; }
internal static ColumnReader Create(IntPtr handle, RowGroupReader rowGroupReader, ColumnChunkMetaData columnChunkMetaData, int columnIndex) { var parquetHandle = new ParquetHandle(handle, ColumnReader_Free); try { var type = ExceptionInfo.Return <PhysicalType>(handle, ColumnReader_Type); switch (type) { case PhysicalType.Boolean: return(new ColumnReader <bool>(parquetHandle, rowGroupReader, columnChunkMetaData, columnIndex)); case PhysicalType.Int32: return(new ColumnReader <int>(parquetHandle, rowGroupReader, columnChunkMetaData, columnIndex)); case PhysicalType.Int64: return(new ColumnReader <long>(parquetHandle, rowGroupReader, columnChunkMetaData, columnIndex)); case PhysicalType.Int96: return(new ColumnReader <Int96>(parquetHandle, rowGroupReader, columnChunkMetaData, columnIndex)); case PhysicalType.Float: return(new ColumnReader <float>(parquetHandle, rowGroupReader, columnChunkMetaData, columnIndex)); case PhysicalType.Double: return(new ColumnReader <double>(parquetHandle, rowGroupReader, columnChunkMetaData, columnIndex)); case PhysicalType.ByteArray: return(new ColumnReader <ByteArray>(parquetHandle, rowGroupReader, columnChunkMetaData, columnIndex)); case PhysicalType.FixedLenByteArray: return(new ColumnReader <FixedLenByteArray>(parquetHandle, rowGroupReader, columnChunkMetaData, columnIndex)); default: throw new NotSupportedException($"Physical type {type} is not supported"); } } catch { parquetHandle.Dispose(); throw; } }