Esempio n. 1
0
 internal ColumnReader(ParquetHandle handle, RowGroupReader rowGroupReader, ColumnChunkMetaData columnChunkMetaData, int columnIndex)
 {
     Handle              = handle;
     RowGroupReader      = rowGroupReader;
     ColumnChunkMetaData = columnChunkMetaData;
     ColumnIndex         = columnIndex;
 }
Esempio n. 2
0
        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;
            }
        }