Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-17 08:28:55

0001 // Licensed to the Apache Software Foundation (ASF) under one
0002 // or more contributor license agreements.  See the NOTICE file
0003 // distributed with this work for additional information
0004 // regarding copyright ownership.  The ASF licenses this file
0005 // to you under the Apache License, Version 2.0 (the
0006 // "License"); you may not use this file except in compliance
0007 // with the License.  You may obtain a copy of the License at
0008 //
0009 //   http://www.apache.org/licenses/LICENSE-2.0
0010 //
0011 // Unless required by applicable law or agreed to in writing,
0012 // software distributed under the License is distributed on an
0013 // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
0014 // KIND, either express or implied.  See the License for the
0015 // specific language governing permissions and limitations
0016 // under the License.
0017 
0018 #pragma once
0019 
0020 namespace parquet {
0021 
0022 /// \brief Feature selection when writing Parquet files
0023 ///
0024 /// `ParquetVersion::type` governs which data types are allowed and how they
0025 /// are represented. For example, uint32_t data will be written differently
0026 /// depending on this value (as INT64 for PARQUET_1_0, as UINT32 for other
0027 /// versions).
0028 ///
0029 /// However, some features - such as compression algorithms, encryption,
0030 /// or the improved "v2" data page format - must be enabled separately in
0031 /// ArrowWriterProperties.
0032 struct ParquetVersion {
0033   enum type : int {
0034     /// Enable only pre-2.2 Parquet format features when writing
0035     ///
0036     /// This setting is useful for maximum compatibility with legacy readers.
0037     /// Note that logical types may still be emitted, as long they have a
0038     /// corresponding converted type.
0039     PARQUET_1_0,
0040 
0041     /// Enable Parquet format 2.4 and earlier features when writing
0042     ///
0043     /// This enables UINT32 as well as logical types which don't have
0044     /// a corresponding converted type.
0045     ///
0046     /// Note: Parquet format 2.4.0 was released in October 2017.
0047     PARQUET_2_4,
0048 
0049     /// Enable Parquet format 2.6 and earlier features when writing
0050     ///
0051     /// This enables the NANOS time unit in addition to the PARQUET_2_4
0052     /// features.
0053     ///
0054     /// Note: Parquet format 2.6.0 was released in September 2018.
0055     PARQUET_2_6,
0056 
0057     /// Enable latest Parquet format 2.x features
0058     ///
0059     /// This value is equal to the greatest 2.x version supported by
0060     /// this library.
0061     PARQUET_2_LATEST = PARQUET_2_6
0062   };
0063 };
0064 
0065 struct PageIndexLocation;
0066 
0067 class FileMetaData;
0068 class FileCryptoMetaData;
0069 class RowGroupMetaData;
0070 
0071 class ColumnDescriptor;
0072 class SchemaDescriptor;
0073 
0074 class ReaderProperties;
0075 class ArrowReaderProperties;
0076 
0077 class WriterProperties;
0078 class WriterPropertiesBuilder;
0079 class ArrowWriterProperties;
0080 class ArrowWriterPropertiesBuilder;
0081 
0082 class EncodedStatistics;
0083 class Statistics;
0084 struct SizeStatistics;
0085 
0086 namespace geospatial {
0087 class GeoStatistics;
0088 struct EncodedGeoStatistics;
0089 }  // namespace geospatial
0090 
0091 class ColumnIndex;
0092 class OffsetIndex;
0093 
0094 namespace arrow {
0095 
0096 class FileWriter;
0097 class FileReader;
0098 
0099 }  // namespace arrow
0100 
0101 namespace schema {
0102 class ColumnPath;
0103 }  // namespace schema
0104 
0105 }  // namespace parquet