// Code generated by Thrift Compiler (0.21.0). DO NOT EDIT.

package parquet

import (
	
	
	
	
	
	
	
	thrift 
	
	
)

// (needed to ensure safety because of naive import list construction.)
var _ = bytes.Equal
var _ = context.Background
var _ = errors.New
var _ = fmt.Printf
var _ = slog.Log
var _ = time.Now
var _ = thrift.ZERO
// (needed by validator.)
var _ = strings.Contains
var _ = regexp.MatchString

//Types supported by Parquet.  These types are intended to be used in combination
//with the encodings to control the on disk storage format.
//For example INT16 is not included as a type since a good encoding of INT32
//would handle this.
type Type int64
const (
	Type_BOOLEAN Type = 0
	Type_INT32 Type = 1
	Type_INT64 Type = 2
	Type_INT96 Type = 3
	Type_FLOAT Type = 4
	Type_DOUBLE Type = 5
	Type_BYTE_ARRAY Type = 6
	Type_FIXED_LEN_BYTE_ARRAY Type = 7
)

func ( Type) () string {
	switch  {
	case Type_BOOLEAN: return "BOOLEAN"
	case Type_INT32: return "INT32"
	case Type_INT64: return "INT64"
	case Type_INT96: return "INT96"
	case Type_FLOAT: return "FLOAT"
	case Type_DOUBLE: return "DOUBLE"
	case Type_BYTE_ARRAY: return "BYTE_ARRAY"
	case Type_FIXED_LEN_BYTE_ARRAY: return "FIXED_LEN_BYTE_ARRAY"
	}
	return "<UNSET>"
}

func ( string) (Type, error) {
	switch  {
	case "BOOLEAN": return Type_BOOLEAN, nil
	case "INT32": return Type_INT32, nil
	case "INT64": return Type_INT64, nil
	case "INT96": return Type_INT96, nil
	case "FLOAT": return Type_FLOAT, nil
	case "DOUBLE": return Type_DOUBLE, nil
	case "BYTE_ARRAY": return Type_BYTE_ARRAY, nil
	case "FIXED_LEN_BYTE_ARRAY": return Type_FIXED_LEN_BYTE_ARRAY, nil
	}
	return Type(0), fmt.Errorf("not a valid Type string")
}


func ( Type) *Type { return & }

func ( Type) () ([]byte, error) {
	return []byte(.String()), nil
}

func ( *Type) ( []byte) error {
	,  := TypeFromString(string())
	if  != nil {
		return 
	}
	* = 
	return nil
}

func ( *Type) ( interface{}) error {
	,  := .(int64)
	if ! {
		return errors.New("Scan value is not int64")
	}
	* = Type()
	return nil
}

func ( *Type) () (driver.Value, error) {
	if  == nil {
		return nil, nil
	}
	return int64(*), nil
}

//DEPRECATED: Common types used by frameworks(e.g. hive, pig) using parquet.
//ConvertedType is superseded by LogicalType.  This enum should not be extended.
//
//See LogicalTypes.md for conversion between ConvertedType and LogicalType.
type ConvertedType int64
const (
	ConvertedType_UTF8 ConvertedType = 0
	ConvertedType_MAP ConvertedType = 1
	ConvertedType_MAP_KEY_VALUE ConvertedType = 2
	ConvertedType_LIST ConvertedType = 3
	ConvertedType_ENUM ConvertedType = 4
	ConvertedType_DECIMAL ConvertedType = 5
	ConvertedType_DATE ConvertedType = 6
	ConvertedType_TIME_MILLIS ConvertedType = 7
	ConvertedType_TIME_MICROS ConvertedType = 8
	ConvertedType_TIMESTAMP_MILLIS ConvertedType = 9
	ConvertedType_TIMESTAMP_MICROS ConvertedType = 10
	ConvertedType_UINT_8 ConvertedType = 11
	ConvertedType_UINT_16 ConvertedType = 12
	ConvertedType_UINT_32 ConvertedType = 13
	ConvertedType_UINT_64 ConvertedType = 14
	ConvertedType_INT_8 ConvertedType = 15
	ConvertedType_INT_16 ConvertedType = 16
	ConvertedType_INT_32 ConvertedType = 17
	ConvertedType_INT_64 ConvertedType = 18
	ConvertedType_JSON ConvertedType = 19
	ConvertedType_BSON ConvertedType = 20
	ConvertedType_INTERVAL ConvertedType = 21
)

func ( ConvertedType) () string {
	switch  {
	case ConvertedType_UTF8: return "UTF8"
	case ConvertedType_MAP: return "MAP"
	case ConvertedType_MAP_KEY_VALUE: return "MAP_KEY_VALUE"
	case ConvertedType_LIST: return "LIST"
	case ConvertedType_ENUM: return "ENUM"
	case ConvertedType_DECIMAL: return "DECIMAL"
	case ConvertedType_DATE: return "DATE"
	case ConvertedType_TIME_MILLIS: return "TIME_MILLIS"
	case ConvertedType_TIME_MICROS: return "TIME_MICROS"
	case ConvertedType_TIMESTAMP_MILLIS: return "TIMESTAMP_MILLIS"
	case ConvertedType_TIMESTAMP_MICROS: return "TIMESTAMP_MICROS"
	case ConvertedType_UINT_8: return "UINT_8"
	case ConvertedType_UINT_16: return "UINT_16"
	case ConvertedType_UINT_32: return "UINT_32"
	case ConvertedType_UINT_64: return "UINT_64"
	case ConvertedType_INT_8: return "INT_8"
	case ConvertedType_INT_16: return "INT_16"
	case ConvertedType_INT_32: return "INT_32"
	case ConvertedType_INT_64: return "INT_64"
	case ConvertedType_JSON: return "JSON"
	case ConvertedType_BSON: return "BSON"
	case ConvertedType_INTERVAL: return "INTERVAL"
	}
	return "<UNSET>"
}

func ( string) (ConvertedType, error) {
	switch  {
	case "UTF8": return ConvertedType_UTF8, nil
	case "MAP": return ConvertedType_MAP, nil
	case "MAP_KEY_VALUE": return ConvertedType_MAP_KEY_VALUE, nil
	case "LIST": return ConvertedType_LIST, nil
	case "ENUM": return ConvertedType_ENUM, nil
	case "DECIMAL": return ConvertedType_DECIMAL, nil
	case "DATE": return ConvertedType_DATE, nil
	case "TIME_MILLIS": return ConvertedType_TIME_MILLIS, nil
	case "TIME_MICROS": return ConvertedType_TIME_MICROS, nil
	case "TIMESTAMP_MILLIS": return ConvertedType_TIMESTAMP_MILLIS, nil
	case "TIMESTAMP_MICROS": return ConvertedType_TIMESTAMP_MICROS, nil
	case "UINT_8": return ConvertedType_UINT_8, nil
	case "UINT_16": return ConvertedType_UINT_16, nil
	case "UINT_32": return ConvertedType_UINT_32, nil
	case "UINT_64": return ConvertedType_UINT_64, nil
	case "INT_8": return ConvertedType_INT_8, nil
	case "INT_16": return ConvertedType_INT_16, nil
	case "INT_32": return ConvertedType_INT_32, nil
	case "INT_64": return ConvertedType_INT_64, nil
	case "JSON": return ConvertedType_JSON, nil
	case "BSON": return ConvertedType_BSON, nil
	case "INTERVAL": return ConvertedType_INTERVAL, nil
	}
	return ConvertedType(0), fmt.Errorf("not a valid ConvertedType string")
}


func ( ConvertedType) *ConvertedType { return & }

func ( ConvertedType) () ([]byte, error) {
	return []byte(.String()), nil
}

func ( *ConvertedType) ( []byte) error {
	,  := ConvertedTypeFromString(string())
	if  != nil {
		return 
	}
	* = 
	return nil
}

func ( *ConvertedType) ( interface{}) error {
	,  := .(int64)
	if ! {
		return errors.New("Scan value is not int64")
	}
	* = ConvertedType()
	return nil
}

func ( *ConvertedType) () (driver.Value, error) {
	if  == nil {
		return nil, nil
	}
	return int64(*), nil
}

//Representation of Schemas
type FieldRepetitionType int64
const (
	FieldRepetitionType_REQUIRED FieldRepetitionType = 0
	FieldRepetitionType_OPTIONAL FieldRepetitionType = 1
	FieldRepetitionType_REPEATED FieldRepetitionType = 2
)

func ( FieldRepetitionType) () string {
	switch  {
	case FieldRepetitionType_REQUIRED: return "REQUIRED"
	case FieldRepetitionType_OPTIONAL: return "OPTIONAL"
	case FieldRepetitionType_REPEATED: return "REPEATED"
	}
	return "<UNSET>"
}

func ( string) (FieldRepetitionType, error) {
	switch  {
	case "REQUIRED": return FieldRepetitionType_REQUIRED, nil
	case "OPTIONAL": return FieldRepetitionType_OPTIONAL, nil
	case "REPEATED": return FieldRepetitionType_REPEATED, nil
	}
	return FieldRepetitionType(0), fmt.Errorf("not a valid FieldRepetitionType string")
}


func ( FieldRepetitionType) *FieldRepetitionType { return & }

func ( FieldRepetitionType) () ([]byte, error) {
	return []byte(.String()), nil
}

func ( *FieldRepetitionType) ( []byte) error {
	,  := FieldRepetitionTypeFromString(string())
	if  != nil {
		return 
	}
	* = 
	return nil
}

func ( *FieldRepetitionType) ( interface{}) error {
	,  := .(int64)
	if ! {
		return errors.New("Scan value is not int64")
	}
	* = FieldRepetitionType()
	return nil
}

func ( *FieldRepetitionType) () (driver.Value, error) {
	if  == nil {
		return nil, nil
	}
	return int64(*), nil
}

//Edge interpolation algorithm for Geography logical type
type EdgeInterpolationAlgorithm int64
const (
	EdgeInterpolationAlgorithm_SPHERICAL EdgeInterpolationAlgorithm = 0
	EdgeInterpolationAlgorithm_VINCENTY EdgeInterpolationAlgorithm = 1
	EdgeInterpolationAlgorithm_THOMAS EdgeInterpolationAlgorithm = 2
	EdgeInterpolationAlgorithm_ANDOYER EdgeInterpolationAlgorithm = 3
	EdgeInterpolationAlgorithm_KARNEY EdgeInterpolationAlgorithm = 4
)

func ( EdgeInterpolationAlgorithm) () string {
	switch  {
	case EdgeInterpolationAlgorithm_SPHERICAL: return "SPHERICAL"
	case EdgeInterpolationAlgorithm_VINCENTY: return "VINCENTY"
	case EdgeInterpolationAlgorithm_THOMAS: return "THOMAS"
	case EdgeInterpolationAlgorithm_ANDOYER: return "ANDOYER"
	case EdgeInterpolationAlgorithm_KARNEY: return "KARNEY"
	}
	return "<UNSET>"
}

func ( string) (EdgeInterpolationAlgorithm, error) {
	switch  {
	case "SPHERICAL": return EdgeInterpolationAlgorithm_SPHERICAL, nil
	case "VINCENTY": return EdgeInterpolationAlgorithm_VINCENTY, nil
	case "THOMAS": return EdgeInterpolationAlgorithm_THOMAS, nil
	case "ANDOYER": return EdgeInterpolationAlgorithm_ANDOYER, nil
	case "KARNEY": return EdgeInterpolationAlgorithm_KARNEY, nil
	}
	return EdgeInterpolationAlgorithm(0), fmt.Errorf("not a valid EdgeInterpolationAlgorithm string")
}


func ( EdgeInterpolationAlgorithm) *EdgeInterpolationAlgorithm { return & }

func ( EdgeInterpolationAlgorithm) () ([]byte, error) {
	return []byte(.String()), nil
}

func ( *EdgeInterpolationAlgorithm) ( []byte) error {
	,  := EdgeInterpolationAlgorithmFromString(string())
	if  != nil {
		return 
	}
	* = 
	return nil
}

func ( *EdgeInterpolationAlgorithm) ( interface{}) error {
	,  := .(int64)
	if ! {
		return errors.New("Scan value is not int64")
	}
	* = EdgeInterpolationAlgorithm()
	return nil
}

func ( *EdgeInterpolationAlgorithm) () (driver.Value, error) {
	if  == nil {
		return nil, nil
	}
	return int64(*), nil
}

//Encodings supported by Parquet.  Not all encodings are valid for all types.  These
//enums are also used to specify the encoding of definition and repetition levels.
//See the accompanying doc for the details of the more complicated encodings.
type Encoding int64
const (
	Encoding_PLAIN Encoding = 0
	Encoding_PLAIN_DICTIONARY Encoding = 2
	Encoding_RLE Encoding = 3
	Encoding_BIT_PACKED Encoding = 4
	Encoding_DELTA_BINARY_PACKED Encoding = 5
	Encoding_DELTA_LENGTH_BYTE_ARRAY Encoding = 6
	Encoding_DELTA_BYTE_ARRAY Encoding = 7
	Encoding_RLE_DICTIONARY Encoding = 8
	Encoding_BYTE_STREAM_SPLIT Encoding = 9
)

func ( Encoding) () string {
	switch  {
	case Encoding_PLAIN: return "PLAIN"
	case Encoding_PLAIN_DICTIONARY: return "PLAIN_DICTIONARY"
	case Encoding_RLE: return "RLE"
	case Encoding_BIT_PACKED: return "BIT_PACKED"
	case Encoding_DELTA_BINARY_PACKED: return "DELTA_BINARY_PACKED"
	case Encoding_DELTA_LENGTH_BYTE_ARRAY: return "DELTA_LENGTH_BYTE_ARRAY"
	case Encoding_DELTA_BYTE_ARRAY: return "DELTA_BYTE_ARRAY"
	case Encoding_RLE_DICTIONARY: return "RLE_DICTIONARY"
	case Encoding_BYTE_STREAM_SPLIT: return "BYTE_STREAM_SPLIT"
	}
	return "<UNSET>"
}

func ( string) (Encoding, error) {
	switch  {
	case "PLAIN": return Encoding_PLAIN, nil
	case "PLAIN_DICTIONARY": return Encoding_PLAIN_DICTIONARY, nil
	case "RLE": return Encoding_RLE, nil
	case "BIT_PACKED": return Encoding_BIT_PACKED, nil
	case "DELTA_BINARY_PACKED": return Encoding_DELTA_BINARY_PACKED, nil
	case "DELTA_LENGTH_BYTE_ARRAY": return Encoding_DELTA_LENGTH_BYTE_ARRAY, nil
	case "DELTA_BYTE_ARRAY": return Encoding_DELTA_BYTE_ARRAY, nil
	case "RLE_DICTIONARY": return Encoding_RLE_DICTIONARY, nil
	case "BYTE_STREAM_SPLIT": return Encoding_BYTE_STREAM_SPLIT, nil
	}
	return Encoding(0), fmt.Errorf("not a valid Encoding string")
}


func ( Encoding) *Encoding { return & }

func ( Encoding) () ([]byte, error) {
	return []byte(.String()), nil
}

func ( *Encoding) ( []byte) error {
	,  := EncodingFromString(string())
	if  != nil {
		return 
	}
	* = 
	return nil
}

func ( *Encoding) ( interface{}) error {
	,  := .(int64)
	if ! {
		return errors.New("Scan value is not int64")
	}
	* = Encoding()
	return nil
}

func ( *Encoding) () (driver.Value, error) {
	if  == nil {
		return nil, nil
	}
	return int64(*), nil
}

//Supported compression algorithms.
//
//Codecs added in format version X.Y can be read by readers based on X.Y and later.
//Codec support may vary between readers based on the format version and
//libraries available at runtime.
//
//See Compression.md for a detailed specification of these algorithms.
type CompressionCodec int64
const (
	CompressionCodec_UNCOMPRESSED CompressionCodec = 0
	CompressionCodec_SNAPPY CompressionCodec = 1
	CompressionCodec_GZIP CompressionCodec = 2
	CompressionCodec_LZO CompressionCodec = 3
	CompressionCodec_BROTLI CompressionCodec = 4
	CompressionCodec_LZ4 CompressionCodec = 5
	CompressionCodec_ZSTD CompressionCodec = 6
	CompressionCodec_LZ4_RAW CompressionCodec = 7
)

func ( CompressionCodec) () string {
	switch  {
	case CompressionCodec_UNCOMPRESSED: return "UNCOMPRESSED"
	case CompressionCodec_SNAPPY: return "SNAPPY"
	case CompressionCodec_GZIP: return "GZIP"
	case CompressionCodec_LZO: return "LZO"
	case CompressionCodec_BROTLI: return "BROTLI"
	case CompressionCodec_LZ4: return "LZ4"
	case CompressionCodec_ZSTD: return "ZSTD"
	case CompressionCodec_LZ4_RAW: return "LZ4_RAW"
	}
	return "<UNSET>"
}

func ( string) (CompressionCodec, error) {
	switch  {
	case "UNCOMPRESSED": return CompressionCodec_UNCOMPRESSED, nil
	case "SNAPPY": return CompressionCodec_SNAPPY, nil
	case "GZIP": return CompressionCodec_GZIP, nil
	case "LZO": return CompressionCodec_LZO, nil
	case "BROTLI": return CompressionCodec_BROTLI, nil
	case "LZ4": return CompressionCodec_LZ4, nil
	case "ZSTD": return CompressionCodec_ZSTD, nil
	case "LZ4_RAW": return CompressionCodec_LZ4_RAW, nil
	}
	return CompressionCodec(0), fmt.Errorf("not a valid CompressionCodec string")
}


func ( CompressionCodec) *CompressionCodec { return & }

func ( CompressionCodec) () ([]byte, error) {
	return []byte(.String()), nil
}

func ( *CompressionCodec) ( []byte) error {
	,  := CompressionCodecFromString(string())
	if  != nil {
		return 
	}
	* = 
	return nil
}

func ( *CompressionCodec) ( interface{}) error {
	,  := .(int64)
	if ! {
		return errors.New("Scan value is not int64")
	}
	* = CompressionCodec()
	return nil
}

func ( *CompressionCodec) () (driver.Value, error) {
	if  == nil {
		return nil, nil
	}
	return int64(*), nil
}

type PageType int64
const (
	PageType_DATA_PAGE PageType = 0
	PageType_INDEX_PAGE PageType = 1
	PageType_DICTIONARY_PAGE PageType = 2
	PageType_DATA_PAGE_V2 PageType = 3
)

func ( PageType) () string {
	switch  {
	case PageType_DATA_PAGE: return "DATA_PAGE"
	case PageType_INDEX_PAGE: return "INDEX_PAGE"
	case PageType_DICTIONARY_PAGE: return "DICTIONARY_PAGE"
	case PageType_DATA_PAGE_V2: return "DATA_PAGE_V2"
	}
	return "<UNSET>"
}

func ( string) (PageType, error) {
	switch  {
	case "DATA_PAGE": return PageType_DATA_PAGE, nil
	case "INDEX_PAGE": return PageType_INDEX_PAGE, nil
	case "DICTIONARY_PAGE": return PageType_DICTIONARY_PAGE, nil
	case "DATA_PAGE_V2": return PageType_DATA_PAGE_V2, nil
	}
	return PageType(0), fmt.Errorf("not a valid PageType string")
}


func ( PageType) *PageType { return & }

func ( PageType) () ([]byte, error) {
	return []byte(.String()), nil
}

func ( *PageType) ( []byte) error {
	,  := PageTypeFromString(string())
	if  != nil {
		return 
	}
	* = 
	return nil
}

func ( *PageType) ( interface{}) error {
	,  := .(int64)
	if ! {
		return errors.New("Scan value is not int64")
	}
	* = PageType()
	return nil
}

func ( *PageType) () (driver.Value, error) {
	if  == nil {
		return nil, nil
	}
	return int64(*), nil
}

//Enum to annotate whether lists of min/max elements inside ColumnIndex
//are ordered and if so, in which direction.
type BoundaryOrder int64
const (
	BoundaryOrder_UNORDERED BoundaryOrder = 0
	BoundaryOrder_ASCENDING BoundaryOrder = 1
	BoundaryOrder_DESCENDING BoundaryOrder = 2
)

func ( BoundaryOrder) () string {
	switch  {
	case BoundaryOrder_UNORDERED: return "UNORDERED"
	case BoundaryOrder_ASCENDING: return "ASCENDING"
	case BoundaryOrder_DESCENDING: return "DESCENDING"
	}
	return "<UNSET>"
}

func ( string) (BoundaryOrder, error) {
	switch  {
	case "UNORDERED": return BoundaryOrder_UNORDERED, nil
	case "ASCENDING": return BoundaryOrder_ASCENDING, nil
	case "DESCENDING": return BoundaryOrder_DESCENDING, nil
	}
	return BoundaryOrder(0), fmt.Errorf("not a valid BoundaryOrder string")
}


func ( BoundaryOrder) *BoundaryOrder { return & }

func ( BoundaryOrder) () ([]byte, error) {
	return []byte(.String()), nil
}

func ( *BoundaryOrder) ( []byte) error {
	,  := BoundaryOrderFromString(string())
	if  != nil {
		return 
	}
	* = 
	return nil
}

func ( *BoundaryOrder) ( interface{}) error {
	,  := .(int64)
	if ! {
		return errors.New("Scan value is not int64")
	}
	* = BoundaryOrder()
	return nil
}

func ( *BoundaryOrder) () (driver.Value, error) {
	if  == nil {
		return nil, nil
	}
	return int64(*), nil
}

// A structure for capturing metadata for estimating the unencoded,
// uncompressed size of data written. This is useful for readers to estimate
// how much memory is needed to reconstruct data in their memory model and for
// fine grained filter pushdown on nested structures (the histograms contained
// in this structure can help determine the number of nulls at a particular
// nesting level and maximum length of lists).
// 
// Attributes:
//  - UnencodedByteArrayDataBytes: The number of physical bytes stored for BYTE_ARRAY data values assuming
// no encoding. This is exclusive of the bytes needed to store the length of
// each byte array. In other words, this field is equivalent to the `(size
// of PLAIN-ENCODING the byte array values) - (4 bytes * number of values
// written)`. To determine unencoded sizes of other types readers can use
// schema information multiplied by the number of non-null and null values.
// The number of null/non-null values can be inferred from the histograms
// below.
// 
// For example, if a column chunk is dictionary-encoded with dictionary
// ["a", "bc", "cde"], and a data page contains the indices [0, 0, 1, 2],
// then this value for that data page should be 7 (1 + 1 + 2 + 3).
// 
// This field should only be set for types that use BYTE_ARRAY as their
// physical type.
//  - RepetitionLevelHistogram: When present, there is expected to be one element corresponding to each
// repetition (i.e. size=max repetition_level+1) where each element
// represents the number of times the repetition level was observed in the
// data.
// 
// This field may be omitted if max_repetition_level is 0 without loss
// of information.
// 
//  - DefinitionLevelHistogram: Same as repetition_level_histogram except for definition levels.
// 
// This field may be omitted if max_definition_level is 0 or 1 without
// loss of information.
// 
// 
type SizeStatistics struct {
	UnencodedByteArrayDataBytes *int64 `thrift:"unencoded_byte_array_data_bytes,1" db:"unencoded_byte_array_data_bytes" json:"unencoded_byte_array_data_bytes,omitempty"`
	RepetitionLevelHistogram []int64 `thrift:"repetition_level_histogram,2" db:"repetition_level_histogram" json:"repetition_level_histogram,omitempty"`
	DefinitionLevelHistogram []int64 `thrift:"definition_level_histogram,3" db:"definition_level_histogram" json:"definition_level_histogram,omitempty"`
}

func () *SizeStatistics {
	return &SizeStatistics{}
}

var SizeStatistics_UnencodedByteArrayDataBytes_DEFAULT int64

func ( *SizeStatistics) () int64 {
	if !.IsSetUnencodedByteArrayDataBytes() {
		return SizeStatistics_UnencodedByteArrayDataBytes_DEFAULT
	}
	return *.UnencodedByteArrayDataBytes
}

var SizeStatistics_RepetitionLevelHistogram_DEFAULT []int64


func ( *SizeStatistics) () []int64 {
	return .RepetitionLevelHistogram
}

var SizeStatistics_DefinitionLevelHistogram_DEFAULT []int64


func ( *SizeStatistics) () []int64 {
	return .DefinitionLevelHistogram
}

func ( *SizeStatistics) () bool {
	return .UnencodedByteArrayDataBytes != nil
}

func ( *SizeStatistics) () bool {
	return .RepetitionLevelHistogram != nil
}

func ( *SizeStatistics) () bool {
	return .DefinitionLevelHistogram != nil
}

func ( *SizeStatistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I64 {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.LIST {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.LIST {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *SizeStatistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.UnencodedByteArrayDataBytes = &
	}
	return nil
}

func ( *SizeStatistics) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]int64, 0, )
	.RepetitionLevelHistogram = 
	for  := 0;  < ; ++ {
		var  int64
		if ,  := .ReadI64();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.RepetitionLevelHistogram = append(.RepetitionLevelHistogram, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *SizeStatistics) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]int64, 0, )
	.DefinitionLevelHistogram = 
	for  := 0;  < ; ++ {
		var  int64
		if ,  := .ReadI64();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.DefinitionLevelHistogram = append(.DefinitionLevelHistogram, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *SizeStatistics) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "SizeStatistics");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *SizeStatistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetUnencodedByteArrayDataBytes() {
		if  := .WriteFieldBegin(, "unencoded_byte_array_data_bytes", thrift.I64, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:unencoded_byte_array_data_bytes: ", ), )
		}
		if  := .WriteI64(, int64(*.UnencodedByteArrayDataBytes));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.unencoded_byte_array_data_bytes (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:unencoded_byte_array_data_bytes: ", ), )
		}
	}
	return 
}

func ( *SizeStatistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetRepetitionLevelHistogram() {
		if  := .WriteFieldBegin(, "repetition_level_histogram", thrift.LIST, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:repetition_level_histogram: ", ), )
		}
		if  := .WriteListBegin(, thrift.I64, len(.RepetitionLevelHistogram));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .RepetitionLevelHistogram {
			if  := .WriteI64(, int64());  != nil {
				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:repetition_level_histogram: ", ), )
		}
	}
	return 
}

func ( *SizeStatistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDefinitionLevelHistogram() {
		if  := .WriteFieldBegin(, "definition_level_histogram", thrift.LIST, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:definition_level_histogram: ", ), )
		}
		if  := .WriteListBegin(, thrift.I64, len(.DefinitionLevelHistogram));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .DefinitionLevelHistogram {
			if  := .WriteI64(, int64());  != nil {
				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:definition_level_histogram: ", ), )
		}
	}
	return 
}

func ( *SizeStatistics) ( *SizeStatistics) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .UnencodedByteArrayDataBytes != .UnencodedByteArrayDataBytes {
		if .UnencodedByteArrayDataBytes == nil || .UnencodedByteArrayDataBytes == nil {
			return false
		}
		if (*.UnencodedByteArrayDataBytes) != (*.UnencodedByteArrayDataBytes) { return false }
	}
	if len(.RepetitionLevelHistogram) != len(.RepetitionLevelHistogram) { return false }
	for ,  := range .RepetitionLevelHistogram {
		 := .RepetitionLevelHistogram[]
		if  !=  { return false }
	}
	if len(.DefinitionLevelHistogram) != len(.DefinitionLevelHistogram) { return false }
	for ,  := range .DefinitionLevelHistogram {
		 := .DefinitionLevelHistogram[]
		if  !=  { return false }
	}
	return true
}

func ( *SizeStatistics) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("SizeStatistics(%+v)", *)
}

func ( *SizeStatistics) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.SizeStatistics",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*SizeStatistics)(nil)

func ( *SizeStatistics) () error {
	return nil
}

// Bounding box for GEOMETRY or GEOGRAPHY type in the representation of min/max
// value pair of coordinates from each axis.
// 
// Attributes:
//  - Xmin
//  - Xmax
//  - Ymin
//  - Ymax
//  - Zmin
//  - Zmax
//  - Mmin
//  - Mmax
// 
type BoundingBox struct {
	Xmin float64 `thrift:"xmin,1,required" db:"xmin" json:"xmin"`
	Xmax float64 `thrift:"xmax,2,required" db:"xmax" json:"xmax"`
	Ymin float64 `thrift:"ymin,3,required" db:"ymin" json:"ymin"`
	Ymax float64 `thrift:"ymax,4,required" db:"ymax" json:"ymax"`
	Zmin *float64 `thrift:"zmin,5" db:"zmin" json:"zmin,omitempty"`
	Zmax *float64 `thrift:"zmax,6" db:"zmax" json:"zmax,omitempty"`
	Mmin *float64 `thrift:"mmin,7" db:"mmin" json:"mmin,omitempty"`
	Mmax *float64 `thrift:"mmax,8" db:"mmax" json:"mmax,omitempty"`
}

func () *BoundingBox {
	return &BoundingBox{}
}



func ( *BoundingBox) () float64 {
	return .Xmin
}



func ( *BoundingBox) () float64 {
	return .Xmax
}



func ( *BoundingBox) () float64 {
	return .Ymin
}



func ( *BoundingBox) () float64 {
	return .Ymax
}

var BoundingBox_Zmin_DEFAULT float64

func ( *BoundingBox) () float64 {
	if !.IsSetZmin() {
		return BoundingBox_Zmin_DEFAULT
	}
	return *.Zmin
}

var BoundingBox_Zmax_DEFAULT float64

func ( *BoundingBox) () float64 {
	if !.IsSetZmax() {
		return BoundingBox_Zmax_DEFAULT
	}
	return *.Zmax
}

var BoundingBox_Mmin_DEFAULT float64

func ( *BoundingBox) () float64 {
	if !.IsSetMmin() {
		return BoundingBox_Mmin_DEFAULT
	}
	return *.Mmin
}

var BoundingBox_Mmax_DEFAULT float64

func ( *BoundingBox) () float64 {
	if !.IsSetMmax() {
		return BoundingBox_Mmax_DEFAULT
	}
	return *.Mmax
}

func ( *BoundingBox) () bool {
	return .Zmin != nil
}

func ( *BoundingBox) () bool {
	return .Zmax != nil
}

func ( *BoundingBox) () bool {
	return .Mmin != nil
}

func ( *BoundingBox) () bool {
	return .Mmax != nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.DOUBLE {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.DOUBLE {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.DOUBLE {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.DOUBLE {
				if  := .ReadField4(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.DOUBLE {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.DOUBLE {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.DOUBLE {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.DOUBLE {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Xmin is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Xmax is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Ymin is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Ymax is not set"));
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadDouble();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.Xmin = 
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadDouble();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.Xmax = 
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadDouble();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.Ymin = 
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadDouble();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		.Ymax = 
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadDouble();  != nil {
		return thrift.PrependError("error reading field 5: ", )
	} else {
		.Zmin = &
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadDouble();  != nil {
		return thrift.PrependError("error reading field 6: ", )
	} else {
		.Zmax = &
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadDouble();  != nil {
		return thrift.PrependError("error reading field 7: ", )
	} else {
		.Mmin = &
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadDouble();  != nil {
		return thrift.PrependError("error reading field 8: ", )
	} else {
		.Mmax = &
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "BoundingBox");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "xmin", thrift.DOUBLE, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:xmin: ", ), )
	}
	if  := .WriteDouble(, float64(.Xmin));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.xmin (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:xmin: ", ), )
	}
	return 
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "xmax", thrift.DOUBLE, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:xmax: ", ), )
	}
	if  := .WriteDouble(, float64(.Xmax));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.xmax (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:xmax: ", ), )
	}
	return 
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "ymin", thrift.DOUBLE, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:ymin: ", ), )
	}
	if  := .WriteDouble(, float64(.Ymin));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.ymin (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:ymin: ", ), )
	}
	return 
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "ymax", thrift.DOUBLE, 4);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:ymax: ", ), )
	}
	if  := .WriteDouble(, float64(.Ymax));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.ymax (4) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:ymax: ", ), )
	}
	return 
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetZmin() {
		if  := .WriteFieldBegin(, "zmin", thrift.DOUBLE, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:zmin: ", ), )
		}
		if  := .WriteDouble(, float64(*.Zmin));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.zmin (5) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:zmin: ", ), )
		}
	}
	return 
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetZmax() {
		if  := .WriteFieldBegin(, "zmax", thrift.DOUBLE, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:zmax: ", ), )
		}
		if  := .WriteDouble(, float64(*.Zmax));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.zmax (6) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:zmax: ", ), )
		}
	}
	return 
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMmin() {
		if  := .WriteFieldBegin(, "mmin", thrift.DOUBLE, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:mmin: ", ), )
		}
		if  := .WriteDouble(, float64(*.Mmin));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.mmin (7) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:mmin: ", ), )
		}
	}
	return 
}

func ( *BoundingBox) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMmax() {
		if  := .WriteFieldBegin(, "mmax", thrift.DOUBLE, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:mmax: ", ), )
		}
		if  := .WriteDouble(, float64(*.Mmax));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.mmax (8) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:mmax: ", ), )
		}
	}
	return 
}

func ( *BoundingBox) ( *BoundingBox) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Xmin != .Xmin { return false }
	if .Xmax != .Xmax { return false }
	if .Ymin != .Ymin { return false }
	if .Ymax != .Ymax { return false }
	if .Zmin != .Zmin {
		if .Zmin == nil || .Zmin == nil {
			return false
		}
		if (*.Zmin) != (*.Zmin) { return false }
	}
	if .Zmax != .Zmax {
		if .Zmax == nil || .Zmax == nil {
			return false
		}
		if (*.Zmax) != (*.Zmax) { return false }
	}
	if .Mmin != .Mmin {
		if .Mmin == nil || .Mmin == nil {
			return false
		}
		if (*.Mmin) != (*.Mmin) { return false }
	}
	if .Mmax != .Mmax {
		if .Mmax == nil || .Mmax == nil {
			return false
		}
		if (*.Mmax) != (*.Mmax) { return false }
	}
	return true
}

func ( *BoundingBox) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("BoundingBox(%+v)", *)
}

func ( *BoundingBox) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.BoundingBox",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*BoundingBox)(nil)

func ( *BoundingBox) () error {
	return nil
}

// Statistics specific to Geometry and Geography logical types
// 
// Attributes:
//  - Bbox: A bounding box of geospatial instances
//  - GeospatialTypes: Geospatial type codes of all instances, or an empty list if not known
// 
type GeospatialStatistics struct {
	Bbox *BoundingBox `thrift:"bbox,1" db:"bbox" json:"bbox,omitempty"`
	GeospatialTypes []int32 `thrift:"geospatial_types,2" db:"geospatial_types" json:"geospatial_types,omitempty"`
}

func () *GeospatialStatistics {
	return &GeospatialStatistics{}
}

var GeospatialStatistics_Bbox_DEFAULT *BoundingBox

func ( *GeospatialStatistics) () *BoundingBox {
	if !.IsSetBbox() {
		return GeospatialStatistics_Bbox_DEFAULT
	}
	return .Bbox
}

var GeospatialStatistics_GeospatialTypes_DEFAULT []int32


func ( *GeospatialStatistics) () []int32 {
	return .GeospatialTypes
}

func ( *GeospatialStatistics) () bool {
	return .Bbox != nil
}

func ( *GeospatialStatistics) () bool {
	return .GeospatialTypes != nil
}

func ( *GeospatialStatistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.LIST {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *GeospatialStatistics) ( context.Context,  thrift.TProtocol) error {
	.Bbox = &BoundingBox{}
	if  := .Bbox.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Bbox), )
	}
	return nil
}

func ( *GeospatialStatistics) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]int32, 0, )
	.GeospatialTypes = 
	for  := 0;  < ; ++ {
		var  int32
		if ,  := .ReadI32();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.GeospatialTypes = append(.GeospatialTypes, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *GeospatialStatistics) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "GeospatialStatistics");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *GeospatialStatistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetBbox() {
		if  := .WriteFieldBegin(, "bbox", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:bbox: ", ), )
		}
		if  := .Bbox.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Bbox), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:bbox: ", ), )
		}
	}
	return 
}

func ( *GeospatialStatistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetGeospatialTypes() {
		if  := .WriteFieldBegin(, "geospatial_types", thrift.LIST, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:geospatial_types: ", ), )
		}
		if  := .WriteListBegin(, thrift.I32, len(.GeospatialTypes));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .GeospatialTypes {
			if  := .WriteI32(, int32());  != nil {
				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:geospatial_types: ", ), )
		}
	}
	return 
}

func ( *GeospatialStatistics) ( *GeospatialStatistics) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.Bbox.Equals(.Bbox) { return false }
	if len(.GeospatialTypes) != len(.GeospatialTypes) { return false }
	for ,  := range .GeospatialTypes {
		 := .GeospatialTypes[]
		if  !=  { return false }
	}
	return true
}

func ( *GeospatialStatistics) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("GeospatialStatistics(%+v)", *)
}

func ( *GeospatialStatistics) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.GeospatialStatistics",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*GeospatialStatistics)(nil)

func ( *GeospatialStatistics) () error {
	return nil
}

// Statistics per row group and per page
// All fields are optional.
// 
// Attributes:
//  - Max: DEPRECATED: min and max value of the column. Use min_value and max_value.
// 
// Values are encoded using PLAIN encoding, except that variable-length byte
// arrays do not include a length prefix.
// 
// These fields encode min and max values determined by signed comparison
// only. New files should use the correct order for a column's logical type
// and store the values in the min_value and max_value fields.
// 
// To support older readers, these may be set when the column order is
// signed.
//  - Min
//  - NullCount: Count of null values in the column.
// 
// Writers SHOULD always write this field even if it is zero (i.e. no null value)
// or the column is not nullable.
// Readers MUST distinguish between null_count not being present and null_count == 0.
// If null_count is not present, readers MUST NOT assume null_count == 0.
//  - DistinctCount: count of distinct values occurring
//  - MaxValue: Lower and upper bound values for the column, determined by its ColumnOrder.
// 
// These may be the actual minimum and maximum values found on a page or column
// chunk, but can also be (more compact) values that do not exist on a page or
// column chunk. For example, instead of storing "Blart Versenwald III", a writer
// may set min_value="B", max_value="C". Such more compact values must still be
// valid values within the column's logical type.
// 
// Values are encoded using PLAIN encoding, except that variable-length byte
// arrays do not include a length prefix.
//  - MinValue
//  - IsMaxValueExact: If true, max_value is the actual maximum value for a column
//  - IsMinValueExact: If true, min_value is the actual minimum value for a column
// 
type Statistics struct {
	Max []byte `thrift:"max,1" db:"max" json:"max,omitempty"`
	Min []byte `thrift:"min,2" db:"min" json:"min,omitempty"`
	NullCount *int64 `thrift:"null_count,3" db:"null_count" json:"null_count,omitempty"`
	DistinctCount *int64 `thrift:"distinct_count,4" db:"distinct_count" json:"distinct_count,omitempty"`
	MaxValue []byte `thrift:"max_value,5" db:"max_value" json:"max_value,omitempty"`
	MinValue []byte `thrift:"min_value,6" db:"min_value" json:"min_value,omitempty"`
	IsMaxValueExact *bool `thrift:"is_max_value_exact,7" db:"is_max_value_exact" json:"is_max_value_exact,omitempty"`
	IsMinValueExact *bool `thrift:"is_min_value_exact,8" db:"is_min_value_exact" json:"is_min_value_exact,omitempty"`
}

func () *Statistics {
	return &Statistics{}
}

var Statistics_Max_DEFAULT []byte


func ( *Statistics) () []byte {
	return .Max
}

var Statistics_Min_DEFAULT []byte


func ( *Statistics) () []byte {
	return .Min
}

var Statistics_NullCount_DEFAULT int64

func ( *Statistics) () int64 {
	if !.IsSetNullCount() {
		return Statistics_NullCount_DEFAULT
	}
	return *.NullCount
}

var Statistics_DistinctCount_DEFAULT int64

func ( *Statistics) () int64 {
	if !.IsSetDistinctCount() {
		return Statistics_DistinctCount_DEFAULT
	}
	return *.DistinctCount
}

var Statistics_MaxValue_DEFAULT []byte


func ( *Statistics) () []byte {
	return .MaxValue
}

var Statistics_MinValue_DEFAULT []byte


func ( *Statistics) () []byte {
	return .MinValue
}

var Statistics_IsMaxValueExact_DEFAULT bool

func ( *Statistics) () bool {
	if !.IsSetIsMaxValueExact() {
		return Statistics_IsMaxValueExact_DEFAULT
	}
	return *.IsMaxValueExact
}

var Statistics_IsMinValueExact_DEFAULT bool

func ( *Statistics) () bool {
	if !.IsSetIsMinValueExact() {
		return Statistics_IsMinValueExact_DEFAULT
	}
	return *.IsMinValueExact
}

func ( *Statistics) () bool {
	return .Max != nil
}

func ( *Statistics) () bool {
	return .Min != nil
}

func ( *Statistics) () bool {
	return .NullCount != nil
}

func ( *Statistics) () bool {
	return .DistinctCount != nil
}

func ( *Statistics) () bool {
	return .MaxValue != nil
}

func ( *Statistics) () bool {
	return .MinValue != nil
}

func ( *Statistics) () bool {
	return .IsMaxValueExact != nil
}

func ( *Statistics) () bool {
	return .IsMinValueExact != nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRING {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRING {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I64 {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.I64 {
				if  := .ReadField4(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.STRING {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.STRING {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.BOOL {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.BOOL {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.Max = 
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.Min = 
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.NullCount = &
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		.DistinctCount = &
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 5: ", )
	} else {
		.MaxValue = 
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 6: ", )
	} else {
		.MinValue = 
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 7: ", )
	} else {
		.IsMaxValueExact = &
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 8: ", )
	} else {
		.IsMinValueExact = &
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "Statistics");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMax() {
		if  := .WriteFieldBegin(, "max", thrift.STRING, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:max: ", ), )
		}
		if  := .WriteBinary(, .Max);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.max (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:max: ", ), )
		}
	}
	return 
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMin() {
		if  := .WriteFieldBegin(, "min", thrift.STRING, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:min: ", ), )
		}
		if  := .WriteBinary(, .Min);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.min (2) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:min: ", ), )
		}
	}
	return 
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetNullCount() {
		if  := .WriteFieldBegin(, "null_count", thrift.I64, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:null_count: ", ), )
		}
		if  := .WriteI64(, int64(*.NullCount));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.null_count (3) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:null_count: ", ), )
		}
	}
	return 
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDistinctCount() {
		if  := .WriteFieldBegin(, "distinct_count", thrift.I64, 4);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:distinct_count: ", ), )
		}
		if  := .WriteI64(, int64(*.DistinctCount));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.distinct_count (4) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:distinct_count: ", ), )
		}
	}
	return 
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMaxValue() {
		if  := .WriteFieldBegin(, "max_value", thrift.STRING, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:max_value: ", ), )
		}
		if  := .WriteBinary(, .MaxValue);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.max_value (5) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:max_value: ", ), )
		}
	}
	return 
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMinValue() {
		if  := .WriteFieldBegin(, "min_value", thrift.STRING, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:min_value: ", ), )
		}
		if  := .WriteBinary(, .MinValue);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.min_value (6) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:min_value: ", ), )
		}
	}
	return 
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetIsMaxValueExact() {
		if  := .WriteFieldBegin(, "is_max_value_exact", thrift.BOOL, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:is_max_value_exact: ", ), )
		}
		if  := .WriteBool(, bool(*.IsMaxValueExact));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.is_max_value_exact (7) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:is_max_value_exact: ", ), )
		}
	}
	return 
}

func ( *Statistics) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetIsMinValueExact() {
		if  := .WriteFieldBegin(, "is_min_value_exact", thrift.BOOL, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:is_min_value_exact: ", ), )
		}
		if  := .WriteBool(, bool(*.IsMinValueExact));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.is_min_value_exact (8) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:is_min_value_exact: ", ), )
		}
	}
	return 
}

func ( *Statistics) ( *Statistics) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if bytes.Compare(.Max, .Max) != 0 { return false }
	if bytes.Compare(.Min, .Min) != 0 { return false }
	if .NullCount != .NullCount {
		if .NullCount == nil || .NullCount == nil {
			return false
		}
		if (*.NullCount) != (*.NullCount) { return false }
	}
	if .DistinctCount != .DistinctCount {
		if .DistinctCount == nil || .DistinctCount == nil {
			return false
		}
		if (*.DistinctCount) != (*.DistinctCount) { return false }
	}
	if bytes.Compare(.MaxValue, .MaxValue) != 0 { return false }
	if bytes.Compare(.MinValue, .MinValue) != 0 { return false }
	if .IsMaxValueExact != .IsMaxValueExact {
		if .IsMaxValueExact == nil || .IsMaxValueExact == nil {
			return false
		}
		if (*.IsMaxValueExact) != (*.IsMaxValueExact) { return false }
	}
	if .IsMinValueExact != .IsMinValueExact {
		if .IsMinValueExact == nil || .IsMinValueExact == nil {
			return false
		}
		if (*.IsMinValueExact) != (*.IsMinValueExact) { return false }
	}
	return true
}

func ( *Statistics) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Statistics(%+v)", *)
}

func ( *Statistics) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.Statistics",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*Statistics)(nil)

func ( *Statistics) () error {
	return nil
}

// Empty structs to use as logical type annotations
type StringType struct {
}

func () *StringType {
	return &StringType{}
}

func ( *StringType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *StringType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "StringType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *StringType) ( *StringType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *StringType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("StringType(%+v)", *)
}

func ( *StringType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.StringType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*StringType)(nil)

func ( *StringType) () error {
	return nil
}

type UUIDType struct {
}

func () *UUIDType {
	return &UUIDType{}
}

func ( *UUIDType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *UUIDType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "UUIDType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *UUIDType) ( *UUIDType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *UUIDType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("UUIDType(%+v)", *)
}

func ( *UUIDType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.UUIDType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*UUIDType)(nil)

func ( *UUIDType) () error {
	return nil
}

type MapType struct {
}

func () *MapType {
	return &MapType{}
}

func ( *MapType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *MapType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "MapType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *MapType) ( *MapType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *MapType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("MapType(%+v)", *)
}

func ( *MapType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.MapType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*MapType)(nil)

func ( *MapType) () error {
	return nil
}

type ListType struct {
}

func () *ListType {
	return &ListType{}
}

func ( *ListType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *ListType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "ListType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *ListType) ( *ListType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *ListType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ListType(%+v)", *)
}

func ( *ListType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.ListType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*ListType)(nil)

func ( *ListType) () error {
	return nil
}

type EnumType struct {
}

func () *EnumType {
	return &EnumType{}
}

func ( *EnumType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *EnumType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "EnumType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *EnumType) ( *EnumType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *EnumType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("EnumType(%+v)", *)
}

func ( *EnumType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.EnumType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*EnumType)(nil)

func ( *EnumType) () error {
	return nil
}

type DateType struct {
}

func () *DateType {
	return &DateType{}
}

func ( *DateType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *DateType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "DateType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *DateType) ( *DateType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *DateType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("DateType(%+v)", *)
}

func ( *DateType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.DateType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*DateType)(nil)

func ( *DateType) () error {
	return nil
}

type Float16Type struct {
}

func () *Float16Type {
	return &Float16Type{}
}

func ( *Float16Type) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *Float16Type) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "Float16Type");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *Float16Type) ( *Float16Type) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *Float16Type) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Float16Type(%+v)", *)
}

func ( *Float16Type) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.Float16Type",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*Float16Type)(nil)

func ( *Float16Type) () error {
	return nil
}

// Logical type to annotate a column that is always null.
// 
// Sometimes when discovering the schema of existing data, values are always
// null and the physical type can't be determined. This annotation signals
// the case where the physical type was guessed from all null values.
type NullType struct {
}

func () *NullType {
	return &NullType{}
}

func ( *NullType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *NullType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "NullType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *NullType) ( *NullType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *NullType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("NullType(%+v)", *)
}

func ( *NullType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.NullType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*NullType)(nil)

func ( *NullType) () error {
	return nil
}

// Decimal logical type annotation
// 
// Scale must be zero or a positive integer less than or equal to the precision.
// Precision must be a non-zero positive integer.
// 
// To maintain forward-compatibility in v1, implementations using this logical
// type must also set scale and precision on the annotated SchemaElement.
// 
// Allowed for physical types: INT32, INT64, FIXED_LEN_BYTE_ARRAY, and BYTE_ARRAY.
// 
// Attributes:
//  - Scale
//  - Precision
// 
type DecimalType struct {
	Scale int32 `thrift:"scale,1,required" db:"scale" json:"scale"`
	Precision int32 `thrift:"precision,2,required" db:"precision" json:"precision"`
}

func () *DecimalType {
	return &DecimalType{}
}



func ( *DecimalType) () int32 {
	return .Scale
}



func ( *DecimalType) () int32 {
	return .Precision
}

func ( *DecimalType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Scale is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Precision is not set"));
	}
	return nil
}

func ( *DecimalType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.Scale = 
	}
	return nil
}

func ( *DecimalType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.Precision = 
	}
	return nil
}

func ( *DecimalType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "DecimalType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *DecimalType) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "scale", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:scale: ", ), )
	}
	if  := .WriteI32(, int32(.Scale));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.scale (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:scale: ", ), )
	}
	return 
}

func ( *DecimalType) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "precision", thrift.I32, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:precision: ", ), )
	}
	if  := .WriteI32(, int32(.Precision));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.precision (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:precision: ", ), )
	}
	return 
}

func ( *DecimalType) ( *DecimalType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Scale != .Scale { return false }
	if .Precision != .Precision { return false }
	return true
}

func ( *DecimalType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("DecimalType(%+v)", *)
}

func ( *DecimalType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.DecimalType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*DecimalType)(nil)

func ( *DecimalType) () error {
	return nil
}

// Time units for logical types
type MilliSeconds struct {
}

func () *MilliSeconds {
	return &MilliSeconds{}
}

func ( *MilliSeconds) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *MilliSeconds) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "MilliSeconds");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *MilliSeconds) ( *MilliSeconds) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *MilliSeconds) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("MilliSeconds(%+v)", *)
}

func ( *MilliSeconds) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.MilliSeconds",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*MilliSeconds)(nil)

func ( *MilliSeconds) () error {
	return nil
}

type MicroSeconds struct {
}

func () *MicroSeconds {
	return &MicroSeconds{}
}

func ( *MicroSeconds) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *MicroSeconds) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "MicroSeconds");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *MicroSeconds) ( *MicroSeconds) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *MicroSeconds) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("MicroSeconds(%+v)", *)
}

func ( *MicroSeconds) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.MicroSeconds",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*MicroSeconds)(nil)

func ( *MicroSeconds) () error {
	return nil
}

type NanoSeconds struct {
}

func () *NanoSeconds {
	return &NanoSeconds{}
}

func ( *NanoSeconds) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *NanoSeconds) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "NanoSeconds");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *NanoSeconds) ( *NanoSeconds) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *NanoSeconds) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("NanoSeconds(%+v)", *)
}

func ( *NanoSeconds) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.NanoSeconds",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*NanoSeconds)(nil)

func ( *NanoSeconds) () error {
	return nil
}

// Attributes:
//  - MILLIS
//  - MICROS
//  - NANOS
// 
type TimeUnit struct {
	MILLIS *MilliSeconds `thrift:"MILLIS,1" db:"MILLIS" json:"MILLIS,omitempty"`
	MICROS *MicroSeconds `thrift:"MICROS,2" db:"MICROS" json:"MICROS,omitempty"`
	NANOS *NanoSeconds `thrift:"NANOS,3" db:"NANOS" json:"NANOS,omitempty"`
}

func () *TimeUnit {
	return &TimeUnit{}
}

var TimeUnit_MILLIS_DEFAULT *MilliSeconds

func ( *TimeUnit) () *MilliSeconds {
	if !.IsSetMILLIS() {
		return TimeUnit_MILLIS_DEFAULT
	}
	return .MILLIS
}

var TimeUnit_MICROS_DEFAULT *MicroSeconds

func ( *TimeUnit) () *MicroSeconds {
	if !.IsSetMICROS() {
		return TimeUnit_MICROS_DEFAULT
	}
	return .MICROS
}

var TimeUnit_NANOS_DEFAULT *NanoSeconds

func ( *TimeUnit) () *NanoSeconds {
	if !.IsSetNANOS() {
		return TimeUnit_NANOS_DEFAULT
	}
	return .NANOS
}

func ( *TimeUnit) () int {
	 := 0
	if (.IsSetMILLIS()) {
		++
	}
	if (.IsSetMICROS()) {
		++
	}
	if (.IsSetNANOS()) {
		++
	}
	return 

}

func ( *TimeUnit) () bool {
	return .MILLIS != nil
}

func ( *TimeUnit) () bool {
	return .MICROS != nil
}

func ( *TimeUnit) () bool {
	return .NANOS != nil
}

func ( *TimeUnit) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRUCT {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.STRUCT {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *TimeUnit) ( context.Context,  thrift.TProtocol) error {
	.MILLIS = &MilliSeconds{}
	if  := .MILLIS.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .MILLIS), )
	}
	return nil
}

func ( *TimeUnit) ( context.Context,  thrift.TProtocol) error {
	.MICROS = &MicroSeconds{}
	if  := .MICROS.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .MICROS), )
	}
	return nil
}

func ( *TimeUnit) ( context.Context,  thrift.TProtocol) error {
	.NANOS = &NanoSeconds{}
	if  := .NANOS.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .NANOS), )
	}
	return nil
}

func ( *TimeUnit) ( context.Context,  thrift.TProtocol) error {
	if  := .CountSetFieldsTimeUnit();  != 1 {
		return fmt.Errorf("%T write union: exactly one field must be set (%d set)", , )
	}
	if  := .WriteStructBegin(, "TimeUnit");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *TimeUnit) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMILLIS() {
		if  := .WriteFieldBegin(, "MILLIS", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:MILLIS: ", ), )
		}
		if  := .MILLIS.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .MILLIS), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:MILLIS: ", ), )
		}
	}
	return 
}

func ( *TimeUnit) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMICROS() {
		if  := .WriteFieldBegin(, "MICROS", thrift.STRUCT, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:MICROS: ", ), )
		}
		if  := .MICROS.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .MICROS), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:MICROS: ", ), )
		}
	}
	return 
}

func ( *TimeUnit) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetNANOS() {
		if  := .WriteFieldBegin(, "NANOS", thrift.STRUCT, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:NANOS: ", ), )
		}
		if  := .NANOS.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .NANOS), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:NANOS: ", ), )
		}
	}
	return 
}

func ( *TimeUnit) ( *TimeUnit) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.MILLIS.Equals(.MILLIS) { return false }
	if !.MICROS.Equals(.MICROS) { return false }
	if !.NANOS.Equals(.NANOS) { return false }
	return true
}

func ( *TimeUnit) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("TimeUnit(%+v)", *)
}

func ( *TimeUnit) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.TimeUnit",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*TimeUnit)(nil)

func ( *TimeUnit) () error {
	return nil
}

// Timestamp logical type annotation
// 
// Allowed for physical types: INT64
// 
// Attributes:
//  - IsAdjustedToUTC
//  - Unit
// 
type TimestampType struct {
	IsAdjustedToUTC bool `thrift:"isAdjustedToUTC,1,required" db:"isAdjustedToUTC" json:"isAdjustedToUTC"`
	Unit *TimeUnit `thrift:"unit,2,required" db:"unit" json:"unit"`
}

func () *TimestampType {
	return &TimestampType{}
}



func ( *TimestampType) () bool {
	return .IsAdjustedToUTC
}

var TimestampType_Unit_DEFAULT *TimeUnit

func ( *TimestampType) () *TimeUnit {
	if !.IsSetUnit() {
		return TimestampType_Unit_DEFAULT
	}
	return .Unit
}

func ( *TimestampType) () bool {
	return .Unit != nil
}

func ( *TimestampType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.BOOL {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRUCT {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field IsAdjustedToUTC is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Unit is not set"));
	}
	return nil
}

func ( *TimestampType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.IsAdjustedToUTC = 
	}
	return nil
}

func ( *TimestampType) ( context.Context,  thrift.TProtocol) error {
	.Unit = &TimeUnit{}
	if  := .Unit.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Unit), )
	}
	return nil
}

func ( *TimestampType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "TimestampType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *TimestampType) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "isAdjustedToUTC", thrift.BOOL, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:isAdjustedToUTC: ", ), )
	}
	if  := .WriteBool(, bool(.IsAdjustedToUTC));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.isAdjustedToUTC (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:isAdjustedToUTC: ", ), )
	}
	return 
}

func ( *TimestampType) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "unit", thrift.STRUCT, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:unit: ", ), )
	}
	if  := .Unit.Write(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Unit), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:unit: ", ), )
	}
	return 
}

func ( *TimestampType) ( *TimestampType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .IsAdjustedToUTC != .IsAdjustedToUTC { return false }
	if !.Unit.Equals(.Unit) { return false }
	return true
}

func ( *TimestampType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("TimestampType(%+v)", *)
}

func ( *TimestampType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.TimestampType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*TimestampType)(nil)

func ( *TimestampType) () error {
	return nil
}

// Time logical type annotation
// 
// Allowed for physical types: INT32 (millis), INT64 (micros, nanos)
// 
// Attributes:
//  - IsAdjustedToUTC
//  - Unit
// 
type TimeType struct {
	IsAdjustedToUTC bool `thrift:"isAdjustedToUTC,1,required" db:"isAdjustedToUTC" json:"isAdjustedToUTC"`
	Unit *TimeUnit `thrift:"unit,2,required" db:"unit" json:"unit"`
}

func () *TimeType {
	return &TimeType{}
}



func ( *TimeType) () bool {
	return .IsAdjustedToUTC
}

var TimeType_Unit_DEFAULT *TimeUnit

func ( *TimeType) () *TimeUnit {
	if !.IsSetUnit() {
		return TimeType_Unit_DEFAULT
	}
	return .Unit
}

func ( *TimeType) () bool {
	return .Unit != nil
}

func ( *TimeType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.BOOL {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRUCT {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field IsAdjustedToUTC is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Unit is not set"));
	}
	return nil
}

func ( *TimeType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.IsAdjustedToUTC = 
	}
	return nil
}

func ( *TimeType) ( context.Context,  thrift.TProtocol) error {
	.Unit = &TimeUnit{}
	if  := .Unit.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Unit), )
	}
	return nil
}

func ( *TimeType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "TimeType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *TimeType) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "isAdjustedToUTC", thrift.BOOL, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:isAdjustedToUTC: ", ), )
	}
	if  := .WriteBool(, bool(.IsAdjustedToUTC));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.isAdjustedToUTC (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:isAdjustedToUTC: ", ), )
	}
	return 
}

func ( *TimeType) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "unit", thrift.STRUCT, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:unit: ", ), )
	}
	if  := .Unit.Write(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Unit), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:unit: ", ), )
	}
	return 
}

func ( *TimeType) ( *TimeType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .IsAdjustedToUTC != .IsAdjustedToUTC { return false }
	if !.Unit.Equals(.Unit) { return false }
	return true
}

func ( *TimeType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("TimeType(%+v)", *)
}

func ( *TimeType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.TimeType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*TimeType)(nil)

func ( *TimeType) () error {
	return nil
}

// Integer logical type annotation
// 
// bitWidth must be 8, 16, 32, or 64.
// 
// Allowed for physical types: INT32, INT64
// 
// Attributes:
//  - BitWidth
//  - IsSigned
// 
type IntType struct {
	BitWidth int8 `thrift:"bitWidth,1,required" db:"bitWidth" json:"bitWidth"`
	IsSigned bool `thrift:"isSigned,2,required" db:"isSigned" json:"isSigned"`
}

func () *IntType {
	return &IntType{}
}



func ( *IntType) () int8 {
	return .BitWidth
}



func ( *IntType) () bool {
	return .IsSigned
}

func ( *IntType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.BYTE {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.BOOL {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field BitWidth is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field IsSigned is not set"));
	}
	return nil
}

func ( *IntType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadByte();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		 := int8()
		.BitWidth = 
	}
	return nil
}

func ( *IntType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.IsSigned = 
	}
	return nil
}

func ( *IntType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "IntType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *IntType) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "bitWidth", thrift.BYTE, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:bitWidth: ", ), )
	}
	if  := .WriteByte(, int8(.BitWidth));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.bitWidth (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:bitWidth: ", ), )
	}
	return 
}

func ( *IntType) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "isSigned", thrift.BOOL, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:isSigned: ", ), )
	}
	if  := .WriteBool(, bool(.IsSigned));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.isSigned (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:isSigned: ", ), )
	}
	return 
}

func ( *IntType) ( *IntType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .BitWidth != .BitWidth { return false }
	if .IsSigned != .IsSigned { return false }
	return true
}

func ( *IntType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("IntType(%+v)", *)
}

func ( *IntType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.IntType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*IntType)(nil)

func ( *IntType) () error {
	return nil
}

// Embedded JSON logical type annotation
// 
// Allowed for physical types: BYTE_ARRAY
type JsonType struct {
}

func () *JsonType {
	return &JsonType{}
}

func ( *JsonType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *JsonType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "JsonType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *JsonType) ( *JsonType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *JsonType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("JsonType(%+v)", *)
}

func ( *JsonType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.JsonType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*JsonType)(nil)

func ( *JsonType) () error {
	return nil
}

// Embedded BSON logical type annotation
// 
// Allowed for physical types: BYTE_ARRAY
type BsonType struct {
}

func () *BsonType {
	return &BsonType{}
}

func ( *BsonType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *BsonType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "BsonType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *BsonType) ( *BsonType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *BsonType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("BsonType(%+v)", *)
}

func ( *BsonType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.BsonType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*BsonType)(nil)

func ( *BsonType) () error {
	return nil
}

// Embedded Variant logical type annotation
// 
// Attributes:
//  - SpecificationVersion
// 
type VariantType struct {
	SpecificationVersion *int8 `thrift:"specification_version,1" db:"specification_version" json:"specification_version,omitempty"`
}

func () *VariantType {
	return &VariantType{}
}

var VariantType_SpecificationVersion_DEFAULT int8

func ( *VariantType) () int8 {
	if !.IsSetSpecificationVersion() {
		return VariantType_SpecificationVersion_DEFAULT
	}
	return *.SpecificationVersion
}

func ( *VariantType) () bool {
	return .SpecificationVersion != nil
}

func ( *VariantType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.BYTE {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *VariantType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadByte();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		 := int8()
		.SpecificationVersion = &
	}
	return nil
}

func ( *VariantType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "VariantType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *VariantType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetSpecificationVersion() {
		if  := .WriteFieldBegin(, "specification_version", thrift.BYTE, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:specification_version: ", ), )
		}
		if  := .WriteByte(, int8(*.SpecificationVersion));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.specification_version (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:specification_version: ", ), )
		}
	}
	return 
}

func ( *VariantType) ( *VariantType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .SpecificationVersion != .SpecificationVersion {
		if .SpecificationVersion == nil || .SpecificationVersion == nil {
			return false
		}
		if (*.SpecificationVersion) != (*.SpecificationVersion) { return false }
	}
	return true
}

func ( *VariantType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("VariantType(%+v)", *)
}

func ( *VariantType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.VariantType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*VariantType)(nil)

func ( *VariantType) () error {
	return nil
}

// Embedded Geometry logical type annotation
// 
// Geospatial features in the Well-Known Binary (WKB) format and edges interpolation
// is always linear/planar.
// 
// A custom CRS can be set by the crs field. If unset, it defaults to "OGC:CRS84",
// which means that the geometries must be stored in longitude, latitude based on
// the WGS84 datum.
// 
// Allowed for physical type: BYTE_ARRAY.
// 
// See Geospatial.md for details.
// 
// Attributes:
//  - Crs
// 
type GeometryType struct {
	Crs *string `thrift:"crs,1" db:"crs" json:"crs,omitempty"`
}

func () *GeometryType {
	return &GeometryType{}
}

var GeometryType_Crs_DEFAULT string

func ( *GeometryType) () string {
	if !.IsSetCrs() {
		return GeometryType_Crs_DEFAULT
	}
	return *.Crs
}

func ( *GeometryType) () bool {
	return .Crs != nil
}

func ( *GeometryType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRING {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *GeometryType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadString();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.Crs = &
	}
	return nil
}

func ( *GeometryType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "GeometryType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *GeometryType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetCrs() {
		if  := .WriteFieldBegin(, "crs", thrift.STRING, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:crs: ", ), )
		}
		if  := .WriteString(, string(*.Crs));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.crs (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:crs: ", ), )
		}
	}
	return 
}

func ( *GeometryType) ( *GeometryType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Crs != .Crs {
		if .Crs == nil || .Crs == nil {
			return false
		}
		if (*.Crs) != (*.Crs) { return false }
	}
	return true
}

func ( *GeometryType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("GeometryType(%+v)", *)
}

func ( *GeometryType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.GeometryType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*GeometryType)(nil)

func ( *GeometryType) () error {
	return nil
}

// Embedded Geography logical type annotation
// 
// Geospatial features in the WKB format with an explicit (non-linear/non-planar)
// edges interpolation algorithm.
// 
// A custom geographic CRS can be set by the crs field, where longitudes are
// bound by [-180, 180] and latitudes are bound by [-90, 90]. If unset, the CRS
// defaults to "OGC:CRS84".
// 
// An optional algorithm can be set to correctly interpret edges interpolation
// of the geometries. If unset, the algorithm defaults to SPHERICAL.
// 
// Allowed for physical type: BYTE_ARRAY.
// 
// See Geospatial.md for details.
// 
// Attributes:
//  - Crs
//  - Algorithm
// 
type GeographyType struct {
	Crs *string `thrift:"crs,1" db:"crs" json:"crs,omitempty"`
	Algorithm *EdgeInterpolationAlgorithm `thrift:"algorithm,2" db:"algorithm" json:"algorithm,omitempty"`
}

func () *GeographyType {
	return &GeographyType{}
}

var GeographyType_Crs_DEFAULT string

func ( *GeographyType) () string {
	if !.IsSetCrs() {
		return GeographyType_Crs_DEFAULT
	}
	return *.Crs
}

var GeographyType_Algorithm_DEFAULT EdgeInterpolationAlgorithm

func ( *GeographyType) () EdgeInterpolationAlgorithm {
	if !.IsSetAlgorithm() {
		return GeographyType_Algorithm_DEFAULT
	}
	return *.Algorithm
}

func ( *GeographyType) () bool {
	return .Crs != nil
}

func ( *GeographyType) () bool {
	return .Algorithm != nil
}

func ( *GeographyType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRING {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *GeographyType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadString();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.Crs = &
	}
	return nil
}

func ( *GeographyType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		 := EdgeInterpolationAlgorithm()
		.Algorithm = &
	}
	return nil
}

func ( *GeographyType) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "GeographyType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *GeographyType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetCrs() {
		if  := .WriteFieldBegin(, "crs", thrift.STRING, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:crs: ", ), )
		}
		if  := .WriteString(, string(*.Crs));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.crs (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:crs: ", ), )
		}
	}
	return 
}

func ( *GeographyType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetAlgorithm() {
		if  := .WriteFieldBegin(, "algorithm", thrift.I32, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:algorithm: ", ), )
		}
		if  := .WriteI32(, int32(*.Algorithm));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.algorithm (2) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:algorithm: ", ), )
		}
	}
	return 
}

func ( *GeographyType) ( *GeographyType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Crs != .Crs {
		if .Crs == nil || .Crs == nil {
			return false
		}
		if (*.Crs) != (*.Crs) { return false }
	}
	if .Algorithm != .Algorithm {
		if .Algorithm == nil || .Algorithm == nil {
			return false
		}
		if (*.Algorithm) != (*.Algorithm) { return false }
	}
	return true
}

func ( *GeographyType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("GeographyType(%+v)", *)
}

func ( *GeographyType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.GeographyType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*GeographyType)(nil)

func ( *GeographyType) () error {
	return nil
}

// LogicalType annotations to replace ConvertedType.
// 
// To maintain compatibility, implementations using LogicalType for a
// SchemaElement must also set the corresponding ConvertedType (if any)
// from the following table.
// 
// Attributes:
//  - STRING
//  - MAP
//  - LIST
//  - ENUM
//  - DECIMAL
//  - DATE
//  - TIME
//  - TIMESTAMP
//  - INTEGER
//  - UNKNOWN
//  - JSON
//  - BSON
//  - UUID
//  - FLOAT16
//  - VARIANT
//  - GEOMETRY
//  - GEOGRAPHY
// 
type LogicalType struct {
	STRING *StringType `thrift:"STRING,1" db:"STRING" json:"STRING,omitempty"`
	MAP *MapType `thrift:"MAP,2" db:"MAP" json:"MAP,omitempty"`
	LIST *ListType `thrift:"LIST,3" db:"LIST" json:"LIST,omitempty"`
	ENUM *EnumType `thrift:"ENUM,4" db:"ENUM" json:"ENUM,omitempty"`
	DECIMAL *DecimalType `thrift:"DECIMAL,5" db:"DECIMAL" json:"DECIMAL,omitempty"`
	DATE *DateType `thrift:"DATE,6" db:"DATE" json:"DATE,omitempty"`
	TIME *TimeType `thrift:"TIME,7" db:"TIME" json:"TIME,omitempty"`
	TIMESTAMP *TimestampType `thrift:"TIMESTAMP,8" db:"TIMESTAMP" json:"TIMESTAMP,omitempty"`
	// unused field # 9
	INTEGER *IntType `thrift:"INTEGER,10" db:"INTEGER" json:"INTEGER,omitempty"`
	UNKNOWN *NullType `thrift:"UNKNOWN,11" db:"UNKNOWN" json:"UNKNOWN,omitempty"`
	JSON *JsonType `thrift:"JSON,12" db:"JSON" json:"JSON,omitempty"`
	BSON *BsonType `thrift:"BSON,13" db:"BSON" json:"BSON,omitempty"`
	UUID *UUIDType `thrift:"UUID,14" db:"UUID" json:"UUID,omitempty"`
	FLOAT16 *Float16Type `thrift:"FLOAT16,15" db:"FLOAT16" json:"FLOAT16,omitempty"`
	VARIANT *VariantType `thrift:"VARIANT,16" db:"VARIANT" json:"VARIANT,omitempty"`
	GEOMETRY *GeometryType `thrift:"GEOMETRY,17" db:"GEOMETRY" json:"GEOMETRY,omitempty"`
	GEOGRAPHY *GeographyType `thrift:"GEOGRAPHY,18" db:"GEOGRAPHY" json:"GEOGRAPHY,omitempty"`
}

func () *LogicalType {
	return &LogicalType{}
}

var LogicalType_STRING_DEFAULT *StringType

func ( *LogicalType) () *StringType {
	if !.IsSetSTRING() {
		return LogicalType_STRING_DEFAULT
	}
	return .STRING
}

var LogicalType_MAP_DEFAULT *MapType

func ( *LogicalType) () *MapType {
	if !.IsSetMAP() {
		return LogicalType_MAP_DEFAULT
	}
	return .MAP
}

var LogicalType_LIST_DEFAULT *ListType

func ( *LogicalType) () *ListType {
	if !.IsSetLIST() {
		return LogicalType_LIST_DEFAULT
	}
	return .LIST
}

var LogicalType_ENUM_DEFAULT *EnumType

func ( *LogicalType) () *EnumType {
	if !.IsSetENUM() {
		return LogicalType_ENUM_DEFAULT
	}
	return .ENUM
}

var LogicalType_DECIMAL_DEFAULT *DecimalType

func ( *LogicalType) () *DecimalType {
	if !.IsSetDECIMAL() {
		return LogicalType_DECIMAL_DEFAULT
	}
	return .DECIMAL
}

var LogicalType_DATE_DEFAULT *DateType

func ( *LogicalType) () *DateType {
	if !.IsSetDATE() {
		return LogicalType_DATE_DEFAULT
	}
	return .DATE
}

var LogicalType_TIME_DEFAULT *TimeType

func ( *LogicalType) () *TimeType {
	if !.IsSetTIME() {
		return LogicalType_TIME_DEFAULT
	}
	return .TIME
}

var LogicalType_TIMESTAMP_DEFAULT *TimestampType

func ( *LogicalType) () *TimestampType {
	if !.IsSetTIMESTAMP() {
		return LogicalType_TIMESTAMP_DEFAULT
	}
	return .TIMESTAMP
}

var LogicalType_INTEGER_DEFAULT *IntType

func ( *LogicalType) () *IntType {
	if !.IsSetINTEGER() {
		return LogicalType_INTEGER_DEFAULT
	}
	return .INTEGER
}

var LogicalType_UNKNOWN_DEFAULT *NullType

func ( *LogicalType) () *NullType {
	if !.IsSetUNKNOWN() {
		return LogicalType_UNKNOWN_DEFAULT
	}
	return .UNKNOWN
}

var LogicalType_JSON_DEFAULT *JsonType

func ( *LogicalType) () *JsonType {
	if !.IsSetJSON() {
		return LogicalType_JSON_DEFAULT
	}
	return .JSON
}

var LogicalType_BSON_DEFAULT *BsonType

func ( *LogicalType) () *BsonType {
	if !.IsSetBSON() {
		return LogicalType_BSON_DEFAULT
	}
	return .BSON
}

var LogicalType_UUID_DEFAULT *UUIDType

func ( *LogicalType) () *UUIDType {
	if !.IsSetUUID() {
		return LogicalType_UUID_DEFAULT
	}
	return .UUID
}

var LogicalType_FLOAT16_DEFAULT *Float16Type

func ( *LogicalType) () *Float16Type {
	if !.IsSetFLOAT16() {
		return LogicalType_FLOAT16_DEFAULT
	}
	return .FLOAT16
}

var LogicalType_VARIANT_DEFAULT *VariantType

func ( *LogicalType) () *VariantType {
	if !.IsSetVARIANT() {
		return LogicalType_VARIANT_DEFAULT
	}
	return .VARIANT
}

var LogicalType_GEOMETRY_DEFAULT *GeometryType

func ( *LogicalType) () *GeometryType {
	if !.IsSetGEOMETRY() {
		return LogicalType_GEOMETRY_DEFAULT
	}
	return .GEOMETRY
}

var LogicalType_GEOGRAPHY_DEFAULT *GeographyType

func ( *LogicalType) () *GeographyType {
	if !.IsSetGEOGRAPHY() {
		return LogicalType_GEOGRAPHY_DEFAULT
	}
	return .GEOGRAPHY
}

func ( *LogicalType) () int {
	 := 0
	if (.IsSetSTRING()) {
		++
	}
	if (.IsSetMAP()) {
		++
	}
	if (.IsSetLIST()) {
		++
	}
	if (.IsSetENUM()) {
		++
	}
	if (.IsSetDECIMAL()) {
		++
	}
	if (.IsSetDATE()) {
		++
	}
	if (.IsSetTIME()) {
		++
	}
	if (.IsSetTIMESTAMP()) {
		++
	}
	if (.IsSetINTEGER()) {
		++
	}
	if (.IsSetUNKNOWN()) {
		++
	}
	if (.IsSetJSON()) {
		++
	}
	if (.IsSetBSON()) {
		++
	}
	if (.IsSetUUID()) {
		++
	}
	if (.IsSetFLOAT16()) {
		++
	}
	if (.IsSetVARIANT()) {
		++
	}
	if (.IsSetGEOMETRY()) {
		++
	}
	if (.IsSetGEOGRAPHY()) {
		++
	}
	return 

}

func ( *LogicalType) () bool {
	return .STRING != nil
}

func ( *LogicalType) () bool {
	return .MAP != nil
}

func ( *LogicalType) () bool {
	return .LIST != nil
}

func ( *LogicalType) () bool {
	return .ENUM != nil
}

func ( *LogicalType) () bool {
	return .DECIMAL != nil
}

func ( *LogicalType) () bool {
	return .DATE != nil
}

func ( *LogicalType) () bool {
	return .TIME != nil
}

func ( *LogicalType) () bool {
	return .TIMESTAMP != nil
}

func ( *LogicalType) () bool {
	return .INTEGER != nil
}

func ( *LogicalType) () bool {
	return .UNKNOWN != nil
}

func ( *LogicalType) () bool {
	return .JSON != nil
}

func ( *LogicalType) () bool {
	return .BSON != nil
}

func ( *LogicalType) () bool {
	return .UUID != nil
}

func ( *LogicalType) () bool {
	return .FLOAT16 != nil
}

func ( *LogicalType) () bool {
	return .VARIANT != nil
}

func ( *LogicalType) () bool {
	return .GEOMETRY != nil
}

func ( *LogicalType) () bool {
	return .GEOGRAPHY != nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRUCT {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.STRUCT {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.STRUCT {
				if  := .ReadField4(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.STRUCT {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.STRUCT {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.STRUCT {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.STRUCT {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 10:
			if  == thrift.STRUCT {
				if  := .ReadField10(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 11:
			if  == thrift.STRUCT {
				if  := .ReadField11(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 12:
			if  == thrift.STRUCT {
				if  := .ReadField12(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 13:
			if  == thrift.STRUCT {
				if  := .ReadField13(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 14:
			if  == thrift.STRUCT {
				if  := .ReadField14(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 15:
			if  == thrift.STRUCT {
				if  := .ReadField15(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 16:
			if  == thrift.STRUCT {
				if  := .ReadField16(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 17:
			if  == thrift.STRUCT {
				if  := .ReadField17(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 18:
			if  == thrift.STRUCT {
				if  := .ReadField18(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.STRING = &StringType{}
	if  := .STRING.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .STRING), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.MAP = &MapType{}
	if  := .MAP.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .MAP), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.LIST = &ListType{}
	if  := .LIST.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .LIST), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.ENUM = &EnumType{}
	if  := .ENUM.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .ENUM), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.DECIMAL = &DecimalType{}
	if  := .DECIMAL.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .DECIMAL), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.DATE = &DateType{}
	if  := .DATE.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .DATE), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.TIME = &TimeType{}
	if  := .TIME.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .TIME), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.TIMESTAMP = &TimestampType{}
	if  := .TIMESTAMP.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .TIMESTAMP), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.INTEGER = &IntType{}
	if  := .INTEGER.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .INTEGER), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.UNKNOWN = &NullType{}
	if  := .UNKNOWN.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .UNKNOWN), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.JSON = &JsonType{}
	if  := .JSON.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .JSON), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.BSON = &BsonType{}
	if  := .BSON.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .BSON), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.UUID = &UUIDType{}
	if  := .UUID.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .UUID), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.FLOAT16 = &Float16Type{}
	if  := .FLOAT16.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .FLOAT16), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.VARIANT = &VariantType{}
	if  := .VARIANT.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .VARIANT), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.GEOMETRY = &GeometryType{}
	if  := .GEOMETRY.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .GEOMETRY), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	.GEOGRAPHY = &GeographyType{}
	if  := .GEOGRAPHY.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .GEOGRAPHY), )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) error {
	if  := .CountSetFieldsLogicalType();  != 1 {
		return fmt.Errorf("%T write union: exactly one field must be set (%d set)", , )
	}
	if  := .WriteStructBegin(, "LogicalType");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
		if  := .writeField10(, );  != nil { return  }
		if  := .writeField11(, );  != nil { return  }
		if  := .writeField12(, );  != nil { return  }
		if  := .writeField13(, );  != nil { return  }
		if  := .writeField14(, );  != nil { return  }
		if  := .writeField15(, );  != nil { return  }
		if  := .writeField16(, );  != nil { return  }
		if  := .writeField17(, );  != nil { return  }
		if  := .writeField18(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetSTRING() {
		if  := .WriteFieldBegin(, "STRING", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:STRING: ", ), )
		}
		if  := .STRING.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .STRING), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:STRING: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMAP() {
		if  := .WriteFieldBegin(, "MAP", thrift.STRUCT, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:MAP: ", ), )
		}
		if  := .MAP.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .MAP), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:MAP: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetLIST() {
		if  := .WriteFieldBegin(, "LIST", thrift.STRUCT, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:LIST: ", ), )
		}
		if  := .LIST.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .LIST), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:LIST: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetENUM() {
		if  := .WriteFieldBegin(, "ENUM", thrift.STRUCT, 4);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:ENUM: ", ), )
		}
		if  := .ENUM.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .ENUM), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:ENUM: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDECIMAL() {
		if  := .WriteFieldBegin(, "DECIMAL", thrift.STRUCT, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:DECIMAL: ", ), )
		}
		if  := .DECIMAL.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .DECIMAL), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:DECIMAL: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDATE() {
		if  := .WriteFieldBegin(, "DATE", thrift.STRUCT, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:DATE: ", ), )
		}
		if  := .DATE.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .DATE), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:DATE: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetTIME() {
		if  := .WriteFieldBegin(, "TIME", thrift.STRUCT, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:TIME: ", ), )
		}
		if  := .TIME.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .TIME), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:TIME: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetTIMESTAMP() {
		if  := .WriteFieldBegin(, "TIMESTAMP", thrift.STRUCT, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:TIMESTAMP: ", ), )
		}
		if  := .TIMESTAMP.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .TIMESTAMP), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:TIMESTAMP: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetINTEGER() {
		if  := .WriteFieldBegin(, "INTEGER", thrift.STRUCT, 10);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:INTEGER: ", ), )
		}
		if  := .INTEGER.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .INTEGER), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 10:INTEGER: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetUNKNOWN() {
		if  := .WriteFieldBegin(, "UNKNOWN", thrift.STRUCT, 11);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 11:UNKNOWN: ", ), )
		}
		if  := .UNKNOWN.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .UNKNOWN), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 11:UNKNOWN: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetJSON() {
		if  := .WriteFieldBegin(, "JSON", thrift.STRUCT, 12);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 12:JSON: ", ), )
		}
		if  := .JSON.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .JSON), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 12:JSON: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetBSON() {
		if  := .WriteFieldBegin(, "BSON", thrift.STRUCT, 13);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 13:BSON: ", ), )
		}
		if  := .BSON.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .BSON), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 13:BSON: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetUUID() {
		if  := .WriteFieldBegin(, "UUID", thrift.STRUCT, 14);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 14:UUID: ", ), )
		}
		if  := .UUID.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .UUID), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 14:UUID: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetFLOAT16() {
		if  := .WriteFieldBegin(, "FLOAT16", thrift.STRUCT, 15);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 15:FLOAT16: ", ), )
		}
		if  := .FLOAT16.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .FLOAT16), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 15:FLOAT16: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetVARIANT() {
		if  := .WriteFieldBegin(, "VARIANT", thrift.STRUCT, 16);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 16:VARIANT: ", ), )
		}
		if  := .VARIANT.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .VARIANT), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 16:VARIANT: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetGEOMETRY() {
		if  := .WriteFieldBegin(, "GEOMETRY", thrift.STRUCT, 17);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 17:GEOMETRY: ", ), )
		}
		if  := .GEOMETRY.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .GEOMETRY), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 17:GEOMETRY: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetGEOGRAPHY() {
		if  := .WriteFieldBegin(, "GEOGRAPHY", thrift.STRUCT, 18);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 18:GEOGRAPHY: ", ), )
		}
		if  := .GEOGRAPHY.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .GEOGRAPHY), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 18:GEOGRAPHY: ", ), )
		}
	}
	return 
}

func ( *LogicalType) ( *LogicalType) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.STRING.Equals(.STRING) { return false }
	if !.MAP.Equals(.MAP) { return false }
	if !.LIST.Equals(.LIST) { return false }
	if !.ENUM.Equals(.ENUM) { return false }
	if !.DECIMAL.Equals(.DECIMAL) { return false }
	if !.DATE.Equals(.DATE) { return false }
	if !.TIME.Equals(.TIME) { return false }
	if !.TIMESTAMP.Equals(.TIMESTAMP) { return false }
	if !.INTEGER.Equals(.INTEGER) { return false }
	if !.UNKNOWN.Equals(.UNKNOWN) { return false }
	if !.JSON.Equals(.JSON) { return false }
	if !.BSON.Equals(.BSON) { return false }
	if !.UUID.Equals(.UUID) { return false }
	if !.FLOAT16.Equals(.FLOAT16) { return false }
	if !.VARIANT.Equals(.VARIANT) { return false }
	if !.GEOMETRY.Equals(.GEOMETRY) { return false }
	if !.GEOGRAPHY.Equals(.GEOGRAPHY) { return false }
	return true
}

func ( *LogicalType) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("LogicalType(%+v)", *)
}

func ( *LogicalType) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.LogicalType",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*LogicalType)(nil)

func ( *LogicalType) () error {
	return nil
}

// Represents a element inside a schema definition.
//  - if it is a group (inner node) then type is undefined and num_children is defined
//  - if it is a primitive type (leaf) then type is defined and num_children is undefined
// the nodes are listed in depth first traversal order.
// 
// Attributes:
//  - Type: Data type for this field. Not set if the current element is a non-leaf node
//  - TypeLength: If type is FIXED_LEN_BYTE_ARRAY, this is the byte length of the values.
// Otherwise, if specified, this is the maximum bit length to store any of the values.
// (e.g. a low cardinality INT col could have this set to 3).  Note that this is
// in the schema, and therefore fixed for the entire file.
//  - RepetitionType: repetition of the field. The root of the schema does not have a repetition_type.
// All other nodes must have one
//  - Name: Name of the field in the schema
//  - NumChildren: Nested fields.  Since thrift does not support nested fields,
// the nesting is flattened to a single list by a depth-first traversal.
// The children count is used to construct the nested relationship.
// This field is not set when the element is a primitive type
//  - ConvertedType: DEPRECATED: When the schema is the result of a conversion from another model.
// Used to record the original type to help with cross conversion.
// 
// This is superseded by logicalType.
//  - Scale: DEPRECATED: Used when this column contains decimal data.
// See the DECIMAL converted type for more details.
// 
// This is superseded by using the DecimalType annotation in logicalType.
//  - Precision
//  - FieldID: When the original schema supports field ids, this will save the
// original field id in the parquet schema
//  - LogicalType: The logical type of this SchemaElement
// 
// LogicalType replaces ConvertedType, but ConvertedType is still required
// for some logical types to ensure forward-compatibility in format v1.
// 
type SchemaElement struct {
	Type *Type `thrift:"type,1" db:"type" json:"type,omitempty"`
	TypeLength *int32 `thrift:"type_length,2" db:"type_length" json:"type_length,omitempty"`
	RepetitionType *FieldRepetitionType `thrift:"repetition_type,3" db:"repetition_type" json:"repetition_type,omitempty"`
	Name string `thrift:"name,4,required" db:"name" json:"name"`
	NumChildren *int32 `thrift:"num_children,5" db:"num_children" json:"num_children,omitempty"`
	ConvertedType *ConvertedType `thrift:"converted_type,6" db:"converted_type" json:"converted_type,omitempty"`
	Scale *int32 `thrift:"scale,7" db:"scale" json:"scale,omitempty"`
	Precision *int32 `thrift:"precision,8" db:"precision" json:"precision,omitempty"`
	FieldID *int32 `thrift:"field_id,9" db:"field_id" json:"field_id,omitempty"`
	LogicalType *LogicalType `thrift:"logicalType,10" db:"logicalType" json:"logicalType,omitempty"`
}

func () *SchemaElement {
	return &SchemaElement{}
}

var SchemaElement_Type_DEFAULT Type

func ( *SchemaElement) () Type {
	if !.IsSetType() {
		return SchemaElement_Type_DEFAULT
	}
	return *.Type
}

var SchemaElement_TypeLength_DEFAULT int32

func ( *SchemaElement) () int32 {
	if !.IsSetTypeLength() {
		return SchemaElement_TypeLength_DEFAULT
	}
	return *.TypeLength
}

var SchemaElement_RepetitionType_DEFAULT FieldRepetitionType

func ( *SchemaElement) () FieldRepetitionType {
	if !.IsSetRepetitionType() {
		return SchemaElement_RepetitionType_DEFAULT
	}
	return *.RepetitionType
}



func ( *SchemaElement) () string {
	return .Name
}

var SchemaElement_NumChildren_DEFAULT int32

func ( *SchemaElement) () int32 {
	if !.IsSetNumChildren() {
		return SchemaElement_NumChildren_DEFAULT
	}
	return *.NumChildren
}

var SchemaElement_ConvertedType_DEFAULT ConvertedType

func ( *SchemaElement) () ConvertedType {
	if !.IsSetConvertedType() {
		return SchemaElement_ConvertedType_DEFAULT
	}
	return *.ConvertedType
}

var SchemaElement_Scale_DEFAULT int32

func ( *SchemaElement) () int32 {
	if !.IsSetScale() {
		return SchemaElement_Scale_DEFAULT
	}
	return *.Scale
}

var SchemaElement_Precision_DEFAULT int32

func ( *SchemaElement) () int32 {
	if !.IsSetPrecision() {
		return SchemaElement_Precision_DEFAULT
	}
	return *.Precision
}

var SchemaElement_FieldID_DEFAULT int32

func ( *SchemaElement) () int32 {
	if !.IsSetFieldID() {
		return SchemaElement_FieldID_DEFAULT
	}
	return *.FieldID
}

var SchemaElement_LogicalType_DEFAULT *LogicalType

func ( *SchemaElement) () *LogicalType {
	if !.IsSetLogicalType() {
		return SchemaElement_LogicalType_DEFAULT
	}
	return .LogicalType
}

func ( *SchemaElement) () bool {
	return .Type != nil
}

func ( *SchemaElement) () bool {
	return .TypeLength != nil
}

func ( *SchemaElement) () bool {
	return .RepetitionType != nil
}

func ( *SchemaElement) () bool {
	return .NumChildren != nil
}

func ( *SchemaElement) () bool {
	return .ConvertedType != nil
}

func ( *SchemaElement) () bool {
	return .Scale != nil
}

func ( *SchemaElement) () bool {
	return .Precision != nil
}

func ( *SchemaElement) () bool {
	return .FieldID != nil
}

func ( *SchemaElement) () bool {
	return .LogicalType != nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I32 {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.STRING {
				if  := .ReadField4(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.I32 {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.I32 {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.I32 {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.I32 {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 9:
			if  == thrift.I32 {
				if  := .ReadField9(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 10:
			if  == thrift.STRUCT {
				if  := .ReadField10(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Name is not set"));
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		 := Type()
		.Type = &
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.TypeLength = &
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		 := FieldRepetitionType()
		.RepetitionType = &
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadString();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		.Name = 
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 5: ", )
	} else {
		.NumChildren = &
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 6: ", )
	} else {
		 := ConvertedType()
		.ConvertedType = &
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 7: ", )
	} else {
		.Scale = &
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 8: ", )
	} else {
		.Precision = &
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 9: ", )
	} else {
		.FieldID = &
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	.LogicalType = &LogicalType{}
	if  := .LogicalType.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .LogicalType), )
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "SchemaElement");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
		if  := .writeField9(, );  != nil { return  }
		if  := .writeField10(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetType() {
		if  := .WriteFieldBegin(, "type", thrift.I32, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:type: ", ), )
		}
		if  := .WriteI32(, int32(*.Type));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.type (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:type: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetTypeLength() {
		if  := .WriteFieldBegin(, "type_length", thrift.I32, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:type_length: ", ), )
		}
		if  := .WriteI32(, int32(*.TypeLength));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.type_length (2) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:type_length: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetRepetitionType() {
		if  := .WriteFieldBegin(, "repetition_type", thrift.I32, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:repetition_type: ", ), )
		}
		if  := .WriteI32(, int32(*.RepetitionType));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.repetition_type (3) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:repetition_type: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "name", thrift.STRING, 4);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:name: ", ), )
	}
	if  := .WriteString(, string(.Name));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.name (4) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:name: ", ), )
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetNumChildren() {
		if  := .WriteFieldBegin(, "num_children", thrift.I32, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:num_children: ", ), )
		}
		if  := .WriteI32(, int32(*.NumChildren));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.num_children (5) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:num_children: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetConvertedType() {
		if  := .WriteFieldBegin(, "converted_type", thrift.I32, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:converted_type: ", ), )
		}
		if  := .WriteI32(, int32(*.ConvertedType));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.converted_type (6) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:converted_type: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetScale() {
		if  := .WriteFieldBegin(, "scale", thrift.I32, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:scale: ", ), )
		}
		if  := .WriteI32(, int32(*.Scale));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.scale (7) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:scale: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetPrecision() {
		if  := .WriteFieldBegin(, "precision", thrift.I32, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:precision: ", ), )
		}
		if  := .WriteI32(, int32(*.Precision));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.precision (8) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:precision: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetFieldID() {
		if  := .WriteFieldBegin(, "field_id", thrift.I32, 9);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:field_id: ", ), )
		}
		if  := .WriteI32(, int32(*.FieldID));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.field_id (9) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 9:field_id: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetLogicalType() {
		if  := .WriteFieldBegin(, "logicalType", thrift.STRUCT, 10);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:logicalType: ", ), )
		}
		if  := .LogicalType.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .LogicalType), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 10:logicalType: ", ), )
		}
	}
	return 
}

func ( *SchemaElement) ( *SchemaElement) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Type != .Type {
		if .Type == nil || .Type == nil {
			return false
		}
		if (*.Type) != (*.Type) { return false }
	}
	if .TypeLength != .TypeLength {
		if .TypeLength == nil || .TypeLength == nil {
			return false
		}
		if (*.TypeLength) != (*.TypeLength) { return false }
	}
	if .RepetitionType != .RepetitionType {
		if .RepetitionType == nil || .RepetitionType == nil {
			return false
		}
		if (*.RepetitionType) != (*.RepetitionType) { return false }
	}
	if .Name != .Name { return false }
	if .NumChildren != .NumChildren {
		if .NumChildren == nil || .NumChildren == nil {
			return false
		}
		if (*.NumChildren) != (*.NumChildren) { return false }
	}
	if .ConvertedType != .ConvertedType {
		if .ConvertedType == nil || .ConvertedType == nil {
			return false
		}
		if (*.ConvertedType) != (*.ConvertedType) { return false }
	}
	if .Scale != .Scale {
		if .Scale == nil || .Scale == nil {
			return false
		}
		if (*.Scale) != (*.Scale) { return false }
	}
	if .Precision != .Precision {
		if .Precision == nil || .Precision == nil {
			return false
		}
		if (*.Precision) != (*.Precision) { return false }
	}
	if .FieldID != .FieldID {
		if .FieldID == nil || .FieldID == nil {
			return false
		}
		if (*.FieldID) != (*.FieldID) { return false }
	}
	if !.LogicalType.Equals(.LogicalType) { return false }
	return true
}

func ( *SchemaElement) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("SchemaElement(%+v)", *)
}

func ( *SchemaElement) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.SchemaElement",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*SchemaElement)(nil)

func ( *SchemaElement) () error {
	return nil
}

// Data page header
// 
// Attributes:
//  - NumValues: Number of values, including NULLs, in this data page.
// 
// If a OffsetIndex is present, a page must begin at a row
// boundary (repetition_level = 0). Otherwise, pages may begin
// within a row (repetition_level > 0).
// 
//  - Encoding: Encoding used for this data page *
//  - DefinitionLevelEncoding: Encoding used for definition levels *
//  - RepetitionLevelEncoding: Encoding used for repetition levels *
//  - Statistics: Optional statistics for the data in this page *
// 
type DataPageHeader struct {
	NumValues int32 `thrift:"num_values,1,required" db:"num_values" json:"num_values"`
	Encoding Encoding `thrift:"encoding,2,required" db:"encoding" json:"encoding"`
	DefinitionLevelEncoding Encoding `thrift:"definition_level_encoding,3,required" db:"definition_level_encoding" json:"definition_level_encoding"`
	RepetitionLevelEncoding Encoding `thrift:"repetition_level_encoding,4,required" db:"repetition_level_encoding" json:"repetition_level_encoding"`
	Statistics *Statistics `thrift:"statistics,5" db:"statistics" json:"statistics,omitempty"`
}

func () *DataPageHeader {
	return &DataPageHeader{}
}



func ( *DataPageHeader) () int32 {
	return .NumValues
}



func ( *DataPageHeader) () Encoding {
	return .Encoding
}



func ( *DataPageHeader) () Encoding {
	return .DefinitionLevelEncoding
}



func ( *DataPageHeader) () Encoding {
	return .RepetitionLevelEncoding
}

var DataPageHeader_Statistics_DEFAULT *Statistics

func ( *DataPageHeader) () *Statistics {
	if !.IsSetStatistics() {
		return DataPageHeader_Statistics_DEFAULT
	}
	return .Statistics
}

func ( *DataPageHeader) () bool {
	return .Statistics != nil
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I32 {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.I32 {
				if  := .ReadField4(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.STRUCT {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumValues is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Encoding is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field DefinitionLevelEncoding is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field RepetitionLevelEncoding is not set"));
	}
	return nil
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.NumValues = 
	}
	return nil
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		 := Encoding()
		.Encoding = 
	}
	return nil
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		 := Encoding()
		.DefinitionLevelEncoding = 
	}
	return nil
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		 := Encoding()
		.RepetitionLevelEncoding = 
	}
	return nil
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) error {
	.Statistics = &Statistics{}
	if  := .Statistics.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Statistics), )
	}
	return nil
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "DataPageHeader");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "num_values", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:num_values: ", ), )
	}
	if  := .WriteI32(, int32(.NumValues));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.num_values (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:num_values: ", ), )
	}
	return 
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "encoding", thrift.I32, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:encoding: ", ), )
	}
	if  := .WriteI32(, int32(.Encoding));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.encoding (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:encoding: ", ), )
	}
	return 
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "definition_level_encoding", thrift.I32, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:definition_level_encoding: ", ), )
	}
	if  := .WriteI32(, int32(.DefinitionLevelEncoding));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.definition_level_encoding (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:definition_level_encoding: ", ), )
	}
	return 
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "repetition_level_encoding", thrift.I32, 4);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:repetition_level_encoding: ", ), )
	}
	if  := .WriteI32(, int32(.RepetitionLevelEncoding));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.repetition_level_encoding (4) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:repetition_level_encoding: ", ), )
	}
	return 
}

func ( *DataPageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetStatistics() {
		if  := .WriteFieldBegin(, "statistics", thrift.STRUCT, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:statistics: ", ), )
		}
		if  := .Statistics.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Statistics), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:statistics: ", ), )
		}
	}
	return 
}

func ( *DataPageHeader) ( *DataPageHeader) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .NumValues != .NumValues { return false }
	if .Encoding != .Encoding { return false }
	if .DefinitionLevelEncoding != .DefinitionLevelEncoding { return false }
	if .RepetitionLevelEncoding != .RepetitionLevelEncoding { return false }
	if !.Statistics.Equals(.Statistics) { return false }
	return true
}

func ( *DataPageHeader) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("DataPageHeader(%+v)", *)
}

func ( *DataPageHeader) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.DataPageHeader",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*DataPageHeader)(nil)

func ( *DataPageHeader) () error {
	return nil
}

type IndexPageHeader struct {
}

func () *IndexPageHeader {
	return &IndexPageHeader{}
}

func ( *IndexPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *IndexPageHeader) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "IndexPageHeader");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *IndexPageHeader) ( *IndexPageHeader) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *IndexPageHeader) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("IndexPageHeader(%+v)", *)
}

func ( *IndexPageHeader) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.IndexPageHeader",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*IndexPageHeader)(nil)

func ( *IndexPageHeader) () error {
	return nil
}

// The dictionary page must be placed at the first position of the column chunk
// if it is partly or completely dictionary encoded. At most one dictionary page
// can be placed in a column chunk.
// 
// 
// Attributes:
//  - NumValues: Number of values in the dictionary *
//  - Encoding: Encoding using this dictionary page *
//  - IsSorted: If true, the entries in the dictionary are sorted in ascending order *
// 
type DictionaryPageHeader struct {
	NumValues int32 `thrift:"num_values,1,required" db:"num_values" json:"num_values"`
	Encoding Encoding `thrift:"encoding,2,required" db:"encoding" json:"encoding"`
	IsSorted *bool `thrift:"is_sorted,3" db:"is_sorted" json:"is_sorted,omitempty"`
}

func () *DictionaryPageHeader {
	return &DictionaryPageHeader{}
}



func ( *DictionaryPageHeader) () int32 {
	return .NumValues
}



func ( *DictionaryPageHeader) () Encoding {
	return .Encoding
}

var DictionaryPageHeader_IsSorted_DEFAULT bool

func ( *DictionaryPageHeader) () bool {
	if !.IsSetIsSorted() {
		return DictionaryPageHeader_IsSorted_DEFAULT
	}
	return *.IsSorted
}

func ( *DictionaryPageHeader) () bool {
	return .IsSorted != nil
}

func ( *DictionaryPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.BOOL {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumValues is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Encoding is not set"));
	}
	return nil
}

func ( *DictionaryPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.NumValues = 
	}
	return nil
}

func ( *DictionaryPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		 := Encoding()
		.Encoding = 
	}
	return nil
}

func ( *DictionaryPageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.IsSorted = &
	}
	return nil
}

func ( *DictionaryPageHeader) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "DictionaryPageHeader");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *DictionaryPageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "num_values", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:num_values: ", ), )
	}
	if  := .WriteI32(, int32(.NumValues));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.num_values (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:num_values: ", ), )
	}
	return 
}

func ( *DictionaryPageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "encoding", thrift.I32, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:encoding: ", ), )
	}
	if  := .WriteI32(, int32(.Encoding));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.encoding (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:encoding: ", ), )
	}
	return 
}

func ( *DictionaryPageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetIsSorted() {
		if  := .WriteFieldBegin(, "is_sorted", thrift.BOOL, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:is_sorted: ", ), )
		}
		if  := .WriteBool(, bool(*.IsSorted));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.is_sorted (3) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:is_sorted: ", ), )
		}
	}
	return 
}

func ( *DictionaryPageHeader) ( *DictionaryPageHeader) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .NumValues != .NumValues { return false }
	if .Encoding != .Encoding { return false }
	if .IsSorted != .IsSorted {
		if .IsSorted == nil || .IsSorted == nil {
			return false
		}
		if (*.IsSorted) != (*.IsSorted) { return false }
	}
	return true
}

func ( *DictionaryPageHeader) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("DictionaryPageHeader(%+v)", *)
}

func ( *DictionaryPageHeader) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.DictionaryPageHeader",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*DictionaryPageHeader)(nil)

func ( *DictionaryPageHeader) () error {
	return nil
}

// New page format allowing reading levels without decompressing the data
// Repetition and definition levels are uncompressed
// The remaining section containing the data is compressed if is_compressed is true
// 
// 
// Attributes:
//  - NumValues: Number of values, including NULLs, in this data page. *
//  - NumNulls: Number of NULL values, in this data page.
// Number of non-null = num_values - num_nulls which is also the number of values in the data section *
//  - NumRows: Number of rows in this data page. Every page must begin at a
// row boundary (repetition_level = 0): rows must **not** be
// split across page boundaries when using V2 data pages.
// 
//  - Encoding: Encoding used for data in this page *
//  - DefinitionLevelsByteLength: Length of the definition levels
//  - RepetitionLevelsByteLength: Length of the repetition levels
//  - IsCompressed: Whether the values are compressed.
// Which means the section of the page between
// definition_levels_byte_length + repetition_levels_byte_length + 1 and compressed_page_size (included)
// is compressed with the compression_codec.
// If missing it is considered compressed
//  - Statistics: Optional statistics for the data in this page *
// 
type DataPageHeaderV2 struct {
	NumValues int32 `thrift:"num_values,1,required" db:"num_values" json:"num_values"`
	NumNulls int32 `thrift:"num_nulls,2,required" db:"num_nulls" json:"num_nulls"`
	NumRows int32 `thrift:"num_rows,3,required" db:"num_rows" json:"num_rows"`
	Encoding Encoding `thrift:"encoding,4,required" db:"encoding" json:"encoding"`
	DefinitionLevelsByteLength int32 `thrift:"definition_levels_byte_length,5,required" db:"definition_levels_byte_length" json:"definition_levels_byte_length"`
	RepetitionLevelsByteLength int32 `thrift:"repetition_levels_byte_length,6,required" db:"repetition_levels_byte_length" json:"repetition_levels_byte_length"`
	IsCompressed bool `thrift:"is_compressed,7" db:"is_compressed" json:"is_compressed"`
	Statistics *Statistics `thrift:"statistics,8" db:"statistics" json:"statistics,omitempty"`
}

func () *DataPageHeaderV2 {
	return &DataPageHeaderV2{
		IsCompressed: true,
	}
}



func ( *DataPageHeaderV2) () int32 {
	return .NumValues
}



func ( *DataPageHeaderV2) () int32 {
	return .NumNulls
}



func ( *DataPageHeaderV2) () int32 {
	return .NumRows
}



func ( *DataPageHeaderV2) () Encoding {
	return .Encoding
}



func ( *DataPageHeaderV2) () int32 {
	return .DefinitionLevelsByteLength
}



func ( *DataPageHeaderV2) () int32 {
	return .RepetitionLevelsByteLength
}

var DataPageHeaderV2_IsCompressed_DEFAULT bool = true


func ( *DataPageHeaderV2) () bool {
	return .IsCompressed
}

var DataPageHeaderV2_Statistics_DEFAULT *Statistics

func ( *DataPageHeaderV2) () *Statistics {
	if !.IsSetStatistics() {
		return DataPageHeaderV2_Statistics_DEFAULT
	}
	return .Statistics
}

func ( *DataPageHeaderV2) () bool {
	return .IsCompressed != DataPageHeaderV2_IsCompressed_DEFAULT
}

func ( *DataPageHeaderV2) () bool {
	return .Statistics != nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I32 {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.I32 {
				if  := .ReadField4(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.I32 {
				if  := .ReadField5(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.I32 {
				if  := .ReadField6(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.BOOL {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.STRUCT {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumValues is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumNulls is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumRows is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Encoding is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field DefinitionLevelsByteLength is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field RepetitionLevelsByteLength is not set"));
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.NumValues = 
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.NumNulls = 
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.NumRows = 
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		 := Encoding()
		.Encoding = 
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 5: ", )
	} else {
		.DefinitionLevelsByteLength = 
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 6: ", )
	} else {
		.RepetitionLevelsByteLength = 
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 7: ", )
	} else {
		.IsCompressed = 
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	.Statistics = &Statistics{}
	if  := .Statistics.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Statistics), )
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "DataPageHeaderV2");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "num_values", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:num_values: ", ), )
	}
	if  := .WriteI32(, int32(.NumValues));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.num_values (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:num_values: ", ), )
	}
	return 
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "num_nulls", thrift.I32, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:num_nulls: ", ), )
	}
	if  := .WriteI32(, int32(.NumNulls));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.num_nulls (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:num_nulls: ", ), )
	}
	return 
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "num_rows", thrift.I32, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:num_rows: ", ), )
	}
	if  := .WriteI32(, int32(.NumRows));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.num_rows (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:num_rows: ", ), )
	}
	return 
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "encoding", thrift.I32, 4);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:encoding: ", ), )
	}
	if  := .WriteI32(, int32(.Encoding));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.encoding (4) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:encoding: ", ), )
	}
	return 
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "definition_levels_byte_length", thrift.I32, 5);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:definition_levels_byte_length: ", ), )
	}
	if  := .WriteI32(, int32(.DefinitionLevelsByteLength));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.definition_levels_byte_length (5) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:definition_levels_byte_length: ", ), )
	}
	return 
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "repetition_levels_byte_length", thrift.I32, 6);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:repetition_levels_byte_length: ", ), )
	}
	if  := .WriteI32(, int32(.RepetitionLevelsByteLength));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.repetition_levels_byte_length (6) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 6:repetition_levels_byte_length: ", ), )
	}
	return 
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetIsCompressed() {
		if  := .WriteFieldBegin(, "is_compressed", thrift.BOOL, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:is_compressed: ", ), )
		}
		if  := .WriteBool(, bool(.IsCompressed));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.is_compressed (7) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:is_compressed: ", ), )
		}
	}
	return 
}

func ( *DataPageHeaderV2) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetStatistics() {
		if  := .WriteFieldBegin(, "statistics", thrift.STRUCT, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:statistics: ", ), )
		}
		if  := .Statistics.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Statistics), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:statistics: ", ), )
		}
	}
	return 
}

func ( *DataPageHeaderV2) ( *DataPageHeaderV2) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .NumValues != .NumValues { return false }
	if .NumNulls != .NumNulls { return false }
	if .NumRows != .NumRows { return false }
	if .Encoding != .Encoding { return false }
	if .DefinitionLevelsByteLength != .DefinitionLevelsByteLength { return false }
	if .RepetitionLevelsByteLength != .RepetitionLevelsByteLength { return false }
	if .IsCompressed != .IsCompressed { return false }
	if !.Statistics.Equals(.Statistics) { return false }
	return true
}

func ( *DataPageHeaderV2) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("DataPageHeaderV2(%+v)", *)
}

func ( *DataPageHeaderV2) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.DataPageHeaderV2",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*DataPageHeaderV2)(nil)

func ( *DataPageHeaderV2) () error {
	return nil
}

// Block-based algorithm type annotation. *
type SplitBlockAlgorithm struct {
}

func () *SplitBlockAlgorithm {
	return &SplitBlockAlgorithm{}
}

func ( *SplitBlockAlgorithm) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *SplitBlockAlgorithm) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "SplitBlockAlgorithm");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *SplitBlockAlgorithm) ( *SplitBlockAlgorithm) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *SplitBlockAlgorithm) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("SplitBlockAlgorithm(%+v)", *)
}

func ( *SplitBlockAlgorithm) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.SplitBlockAlgorithm",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*SplitBlockAlgorithm)(nil)

func ( *SplitBlockAlgorithm) () error {
	return nil
}

// The algorithm used in Bloom filter. *
// 
// Attributes:
//  - BLOCK: Block-based Bloom filter. *
// 
type BloomFilterAlgorithm struct {
	BLOCK *SplitBlockAlgorithm `thrift:"BLOCK,1" db:"BLOCK" json:"BLOCK,omitempty"`
}

func () *BloomFilterAlgorithm {
	return &BloomFilterAlgorithm{}
}

var BloomFilterAlgorithm_BLOCK_DEFAULT *SplitBlockAlgorithm

func ( *BloomFilterAlgorithm) () *SplitBlockAlgorithm {
	if !.IsSetBLOCK() {
		return BloomFilterAlgorithm_BLOCK_DEFAULT
	}
	return .BLOCK
}

func ( *BloomFilterAlgorithm) () int {
	 := 0
	if (.IsSetBLOCK()) {
		++
	}
	return 

}

func ( *BloomFilterAlgorithm) () bool {
	return .BLOCK != nil
}

func ( *BloomFilterAlgorithm) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *BloomFilterAlgorithm) ( context.Context,  thrift.TProtocol) error {
	.BLOCK = &SplitBlockAlgorithm{}
	if  := .BLOCK.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .BLOCK), )
	}
	return nil
}

func ( *BloomFilterAlgorithm) ( context.Context,  thrift.TProtocol) error {
	if  := .CountSetFieldsBloomFilterAlgorithm();  != 1 {
		return fmt.Errorf("%T write union: exactly one field must be set (%d set)", , )
	}
	if  := .WriteStructBegin(, "BloomFilterAlgorithm");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *BloomFilterAlgorithm) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetBLOCK() {
		if  := .WriteFieldBegin(, "BLOCK", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:BLOCK: ", ), )
		}
		if  := .BLOCK.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .BLOCK), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:BLOCK: ", ), )
		}
	}
	return 
}

func ( *BloomFilterAlgorithm) ( *BloomFilterAlgorithm) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.BLOCK.Equals(.BLOCK) { return false }
	return true
}

func ( *BloomFilterAlgorithm) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("BloomFilterAlgorithm(%+v)", *)
}

func ( *BloomFilterAlgorithm) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.BloomFilterAlgorithm",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*BloomFilterAlgorithm)(nil)

func ( *BloomFilterAlgorithm) () error {
	return nil
}

// Hash strategy type annotation. xxHash is an extremely fast non-cryptographic hash
// algorithm. It uses 64 bits version of xxHash.
// 
type XxHash struct {
}

func () *XxHash {
	return &XxHash{}
}

func ( *XxHash) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *XxHash) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "XxHash");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *XxHash) ( *XxHash) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *XxHash) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("XxHash(%+v)", *)
}

func ( *XxHash) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.XxHash",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*XxHash)(nil)

func ( *XxHash) () error {
	return nil
}

// The hash function used in Bloom filter. This function takes the hash of a column value
// using plain encoding.
// 
// 
// Attributes:
//  - XXHASH: xxHash Strategy. *
// 
type BloomFilterHash struct {
	XXHASH *XxHash `thrift:"XXHASH,1" db:"XXHASH" json:"XXHASH,omitempty"`
}

func () *BloomFilterHash {
	return &BloomFilterHash{}
}

var BloomFilterHash_XXHASH_DEFAULT *XxHash

func ( *BloomFilterHash) () *XxHash {
	if !.IsSetXXHASH() {
		return BloomFilterHash_XXHASH_DEFAULT
	}
	return .XXHASH
}

func ( *BloomFilterHash) () int {
	 := 0
	if (.IsSetXXHASH()) {
		++
	}
	return 

}

func ( *BloomFilterHash) () bool {
	return .XXHASH != nil
}

func ( *BloomFilterHash) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *BloomFilterHash) ( context.Context,  thrift.TProtocol) error {
	.XXHASH = &XxHash{}
	if  := .XXHASH.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .XXHASH), )
	}
	return nil
}

func ( *BloomFilterHash) ( context.Context,  thrift.TProtocol) error {
	if  := .CountSetFieldsBloomFilterHash();  != 1 {
		return fmt.Errorf("%T write union: exactly one field must be set (%d set)", , )
	}
	if  := .WriteStructBegin(, "BloomFilterHash");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *BloomFilterHash) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetXXHASH() {
		if  := .WriteFieldBegin(, "XXHASH", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:XXHASH: ", ), )
		}
		if  := .XXHASH.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .XXHASH), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:XXHASH: ", ), )
		}
	}
	return 
}

func ( *BloomFilterHash) ( *BloomFilterHash) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.XXHASH.Equals(.XXHASH) { return false }
	return true
}

func ( *BloomFilterHash) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("BloomFilterHash(%+v)", *)
}

func ( *BloomFilterHash) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.BloomFilterHash",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*BloomFilterHash)(nil)

func ( *BloomFilterHash) () error {
	return nil
}

// The compression used in the Bloom filter.
// 
type Uncompressed struct {
}

func () *Uncompressed {
	return &Uncompressed{}
}

func ( *Uncompressed) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *Uncompressed) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "Uncompressed");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *Uncompressed) ( *Uncompressed) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *Uncompressed) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("Uncompressed(%+v)", *)
}

func ( *Uncompressed) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.Uncompressed",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*Uncompressed)(nil)

func ( *Uncompressed) () error {
	return nil
}

// Attributes:
//  - UNCOMPRESSED
// 
type BloomFilterCompression struct {
	UNCOMPRESSED *Uncompressed `thrift:"UNCOMPRESSED,1" db:"UNCOMPRESSED" json:"UNCOMPRESSED,omitempty"`
}

func () *BloomFilterCompression {
	return &BloomFilterCompression{}
}

var BloomFilterCompression_UNCOMPRESSED_DEFAULT *Uncompressed

func ( *BloomFilterCompression) () *Uncompressed {
	if !.IsSetUNCOMPRESSED() {
		return BloomFilterCompression_UNCOMPRESSED_DEFAULT
	}
	return .UNCOMPRESSED
}

func ( *BloomFilterCompression) () int {
	 := 0
	if (.IsSetUNCOMPRESSED()) {
		++
	}
	return 

}

func ( *BloomFilterCompression) () bool {
	return .UNCOMPRESSED != nil
}

func ( *BloomFilterCompression) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *BloomFilterCompression) ( context.Context,  thrift.TProtocol) error {
	.UNCOMPRESSED = &Uncompressed{}
	if  := .UNCOMPRESSED.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .UNCOMPRESSED), )
	}
	return nil
}

func ( *BloomFilterCompression) ( context.Context,  thrift.TProtocol) error {
	if  := .CountSetFieldsBloomFilterCompression();  != 1 {
		return fmt.Errorf("%T write union: exactly one field must be set (%d set)", , )
	}
	if  := .WriteStructBegin(, "BloomFilterCompression");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *BloomFilterCompression) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetUNCOMPRESSED() {
		if  := .WriteFieldBegin(, "UNCOMPRESSED", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:UNCOMPRESSED: ", ), )
		}
		if  := .UNCOMPRESSED.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .UNCOMPRESSED), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:UNCOMPRESSED: ", ), )
		}
	}
	return 
}

func ( *BloomFilterCompression) ( *BloomFilterCompression) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.UNCOMPRESSED.Equals(.UNCOMPRESSED) { return false }
	return true
}

func ( *BloomFilterCompression) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("BloomFilterCompression(%+v)", *)
}

func ( *BloomFilterCompression) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.BloomFilterCompression",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*BloomFilterCompression)(nil)

func ( *BloomFilterCompression) () error {
	return nil
}

// Bloom filter header is stored at beginning of Bloom filter data of each column
// and followed by its bitset.
// 
// 
// Attributes:
//  - NumBytes: The size of bitset in bytes *
//  - Algorithm: The algorithm for setting bits. *
//  - Hash: The hash function used for Bloom filter. *
//  - Compression: The compression used in the Bloom filter *
// 
type BloomFilterHeader struct {
	NumBytes int32 `thrift:"numBytes,1,required" db:"numBytes" json:"numBytes"`
	Algorithm *BloomFilterAlgorithm `thrift:"algorithm,2,required" db:"algorithm" json:"algorithm"`
	Hash *BloomFilterHash `thrift:"hash,3,required" db:"hash" json:"hash"`
	Compression *BloomFilterCompression `thrift:"compression,4,required" db:"compression" json:"compression"`
}

func () *BloomFilterHeader {
	return &BloomFilterHeader{}
}



func ( *BloomFilterHeader) () int32 {
	return .NumBytes
}

var BloomFilterHeader_Algorithm_DEFAULT *BloomFilterAlgorithm

func ( *BloomFilterHeader) () *BloomFilterAlgorithm {
	if !.IsSetAlgorithm() {
		return BloomFilterHeader_Algorithm_DEFAULT
	}
	return .Algorithm
}

var BloomFilterHeader_Hash_DEFAULT *BloomFilterHash

func ( *BloomFilterHeader) () *BloomFilterHash {
	if !.IsSetHash() {
		return BloomFilterHeader_Hash_DEFAULT
	}
	return .Hash
}

var BloomFilterHeader_Compression_DEFAULT *BloomFilterCompression

func ( *BloomFilterHeader) () *BloomFilterCompression {
	if !.IsSetCompression() {
		return BloomFilterHeader_Compression_DEFAULT
	}
	return .Compression
}

func ( *BloomFilterHeader) () bool {
	return .Algorithm != nil
}

func ( *BloomFilterHeader) () bool {
	return .Hash != nil
}

func ( *BloomFilterHeader) () bool {
	return .Compression != nil
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRUCT {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.STRUCT {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.STRUCT {
				if  := .ReadField4(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumBytes is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Algorithm is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Hash is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Compression is not set"));
	}
	return nil
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.NumBytes = 
	}
	return nil
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) error {
	.Algorithm = &BloomFilterAlgorithm{}
	if  := .Algorithm.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Algorithm), )
	}
	return nil
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) error {
	.Hash = &BloomFilterHash{}
	if  := .Hash.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Hash), )
	}
	return nil
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) error {
	.Compression = &BloomFilterCompression{}
	if  := .Compression.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Compression), )
	}
	return nil
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "BloomFilterHeader");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "numBytes", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:numBytes: ", ), )
	}
	if  := .WriteI32(, int32(.NumBytes));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.numBytes (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:numBytes: ", ), )
	}
	return 
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "algorithm", thrift.STRUCT, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:algorithm: ", ), )
	}
	if  := .Algorithm.Write(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Algorithm), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:algorithm: ", ), )
	}
	return 
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "hash", thrift.STRUCT, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:hash: ", ), )
	}
	if  := .Hash.Write(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Hash), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:hash: ", ), )
	}
	return 
}

func ( *BloomFilterHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "compression", thrift.STRUCT, 4);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:compression: ", ), )
	}
	if  := .Compression.Write(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Compression), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:compression: ", ), )
	}
	return 
}

func ( *BloomFilterHeader) ( *BloomFilterHeader) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .NumBytes != .NumBytes { return false }
	if !.Algorithm.Equals(.Algorithm) { return false }
	if !.Hash.Equals(.Hash) { return false }
	if !.Compression.Equals(.Compression) { return false }
	return true
}

func ( *BloomFilterHeader) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("BloomFilterHeader(%+v)", *)
}

func ( *BloomFilterHeader) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.BloomFilterHeader",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*BloomFilterHeader)(nil)

func ( *BloomFilterHeader) () error {
	return nil
}

// Attributes:
//  - Type: the type of the page: indicates which of the *_header fields is set *
//  - UncompressedPageSize: Uncompressed page size in bytes (not including this header) *
//  - CompressedPageSize: Compressed (and potentially encrypted) page size in bytes, not including this header *
//  - Crc: The 32-bit CRC checksum for the page, to be be calculated as follows:
// 
// - The standard CRC32 algorithm is used (with polynomial 0x04C11DB7,
//   the same as in e.g. GZip).
// - All page types can have a CRC (v1 and v2 data pages, dictionary pages,
//   etc.).
// - The CRC is computed on the serialization binary representation of the page
//   (as written to disk), excluding the page header. For example, for v1
//   data pages, the CRC is computed on the concatenation of repetition levels,
//   definition levels and column values (optionally compressed, optionally
//   encrypted).
// - The CRC computation therefore takes place after any compression
//   and encryption steps, if any.
// 
// If enabled, this allows for disabling checksumming in HDFS if only a few
// pages need to be read.
//  - DataPageHeader
//  - IndexPageHeader
//  - DictionaryPageHeader
//  - DataPageHeaderV2
// 
type PageHeader struct {
	Type PageType `thrift:"type,1,required" db:"type" json:"type"`
	UncompressedPageSize int32 `thrift:"uncompressed_page_size,2,required" db:"uncompressed_page_size" json:"uncompressed_page_size"`
	CompressedPageSize int32 `thrift:"compressed_page_size,3,required" db:"compressed_page_size" json:"compressed_page_size"`
	Crc *int32 `thrift:"crc,4" db:"crc" json:"crc,omitempty"`
	DataPageHeader *DataPageHeader `thrift:"data_page_header,5" db:"data_page_header" json:"data_page_header,omitempty"`
	IndexPageHeader *IndexPageHeader `thrift:"index_page_header,6" db:"index_page_header" json:"index_page_header,omitempty"`
	DictionaryPageHeader *DictionaryPageHeader `thrift:"dictionary_page_header,7" db:"dictionary_page_header" json:"dictionary_page_header,omitempty"`
	DataPageHeaderV2 *DataPageHeaderV2 `thrift:"data_page_header_v2,8" db:"data_page_header_v2" json:"data_page_header_v2,omitempty"`
}

func () *PageHeader {
	return &PageHeader{}
}



func ( *PageHeader) () PageType {
	return .Type
}



func ( *PageHeader) () int32 {
	return .UncompressedPageSize
}



func ( *PageHeader) () int32 {
	return .CompressedPageSize
}

var PageHeader_Crc_DEFAULT int32

func ( *PageHeader) () int32 {
	if !.IsSetCrc() {
		return PageHeader_Crc_DEFAULT
	}
	return *.Crc
}

var PageHeader_DataPageHeader_DEFAULT *DataPageHeader

func ( *PageHeader) () *DataPageHeader {
	if !.IsSetDataPageHeader() {
		return PageHeader_DataPageHeader_DEFAULT
	}
	return .DataPageHeader
}

var PageHeader_IndexPageHeader_DEFAULT *IndexPageHeader

func ( *PageHeader) () *IndexPageHeader {
	if !.IsSetIndexPageHeader() {
		return PageHeader_IndexPageHeader_DEFAULT
	}
	return .IndexPageHeader
}

var PageHeader_DictionaryPageHeader_DEFAULT *DictionaryPageHeader

func ( *PageHeader) () *DictionaryPageHeader {
	if !.IsSetDictionaryPageHeader() {
		return PageHeader_DictionaryPageHeader_DEFAULT
	}
	return .DictionaryPageHeader
}

var PageHeader_DataPageHeaderV2_DEFAULT *DataPageHeaderV2

func ( *PageHeader) () *DataPageHeaderV2 {
	if !.IsSetDataPageHeaderV2() {
		return PageHeader_DataPageHeaderV2_DEFAULT
	}
	return .DataPageHeaderV2
}

func ( *PageHeader) () bool {
	return .Crc != nil
}

func ( *PageHeader) () bool {
	return .DataPageHeader != nil
}

func ( *PageHeader) () bool {
	return .IndexPageHeader != nil
}

func ( *PageHeader) () bool {
	return .DictionaryPageHeader != nil
}

func ( *PageHeader) () bool {
	return .DataPageHeaderV2 != nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I32 {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.I32 {
				if  := .ReadField4(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.STRUCT {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.STRUCT {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.STRUCT {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.STRUCT {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Type is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field UncompressedPageSize is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field CompressedPageSize is not set"));
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		 := PageType()
		.Type = 
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.UncompressedPageSize = 
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.CompressedPageSize = 
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		.Crc = &
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	.DataPageHeader = &DataPageHeader{}
	if  := .DataPageHeader.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .DataPageHeader), )
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	.IndexPageHeader = &IndexPageHeader{}
	if  := .IndexPageHeader.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .IndexPageHeader), )
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	.DictionaryPageHeader = &DictionaryPageHeader{}
	if  := .DictionaryPageHeader.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .DictionaryPageHeader), )
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	.DataPageHeaderV2 = &DataPageHeaderV2{
		IsCompressed: true,
	}
	if  := .DataPageHeaderV2.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .DataPageHeaderV2), )
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "PageHeader");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "type", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:type: ", ), )
	}
	if  := .WriteI32(, int32(.Type));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.type (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:type: ", ), )
	}
	return 
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "uncompressed_page_size", thrift.I32, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:uncompressed_page_size: ", ), )
	}
	if  := .WriteI32(, int32(.UncompressedPageSize));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.uncompressed_page_size (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:uncompressed_page_size: ", ), )
	}
	return 
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "compressed_page_size", thrift.I32, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:compressed_page_size: ", ), )
	}
	if  := .WriteI32(, int32(.CompressedPageSize));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.compressed_page_size (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:compressed_page_size: ", ), )
	}
	return 
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetCrc() {
		if  := .WriteFieldBegin(, "crc", thrift.I32, 4);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:crc: ", ), )
		}
		if  := .WriteI32(, int32(*.Crc));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.crc (4) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:crc: ", ), )
		}
	}
	return 
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDataPageHeader() {
		if  := .WriteFieldBegin(, "data_page_header", thrift.STRUCT, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:data_page_header: ", ), )
		}
		if  := .DataPageHeader.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .DataPageHeader), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:data_page_header: ", ), )
		}
	}
	return 
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetIndexPageHeader() {
		if  := .WriteFieldBegin(, "index_page_header", thrift.STRUCT, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:index_page_header: ", ), )
		}
		if  := .IndexPageHeader.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .IndexPageHeader), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:index_page_header: ", ), )
		}
	}
	return 
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDictionaryPageHeader() {
		if  := .WriteFieldBegin(, "dictionary_page_header", thrift.STRUCT, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:dictionary_page_header: ", ), )
		}
		if  := .DictionaryPageHeader.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .DictionaryPageHeader), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:dictionary_page_header: ", ), )
		}
	}
	return 
}

func ( *PageHeader) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDataPageHeaderV2() {
		if  := .WriteFieldBegin(, "data_page_header_v2", thrift.STRUCT, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:data_page_header_v2: ", ), )
		}
		if  := .DataPageHeaderV2.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .DataPageHeaderV2), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:data_page_header_v2: ", ), )
		}
	}
	return 
}

func ( *PageHeader) ( *PageHeader) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Type != .Type { return false }
	if .UncompressedPageSize != .UncompressedPageSize { return false }
	if .CompressedPageSize != .CompressedPageSize { return false }
	if .Crc != .Crc {
		if .Crc == nil || .Crc == nil {
			return false
		}
		if (*.Crc) != (*.Crc) { return false }
	}
	if !.DataPageHeader.Equals(.DataPageHeader) { return false }
	if !.IndexPageHeader.Equals(.IndexPageHeader) { return false }
	if !.DictionaryPageHeader.Equals(.DictionaryPageHeader) { return false }
	if !.DataPageHeaderV2.Equals(.DataPageHeaderV2) { return false }
	return true
}

func ( *PageHeader) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("PageHeader(%+v)", *)
}

func ( *PageHeader) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.PageHeader",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*PageHeader)(nil)

func ( *PageHeader) () error {
	return nil
}

// Wrapper struct to store key values
// 
// Attributes:
//  - Key
//  - Value
// 
type KeyValue struct {
	Key string `thrift:"key,1,required" db:"key" json:"key"`
	Value *string `thrift:"value,2" db:"value" json:"value,omitempty"`
}

func () *KeyValue {
	return &KeyValue{}
}



func ( *KeyValue) () string {
	return .Key
}

var KeyValue_Value_DEFAULT string

func ( *KeyValue) () string {
	if !.IsSetValue() {
		return KeyValue_Value_DEFAULT
	}
	return *.Value
}

func ( *KeyValue) () bool {
	return .Value != nil
}

func ( *KeyValue) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRING {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRING {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Key is not set"));
	}
	return nil
}

func ( *KeyValue) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadString();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.Key = 
	}
	return nil
}

func ( *KeyValue) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadString();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.Value = &
	}
	return nil
}

func ( *KeyValue) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "KeyValue");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *KeyValue) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "key", thrift.STRING, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:key: ", ), )
	}
	if  := .WriteString(, string(.Key));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.key (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:key: ", ), )
	}
	return 
}

func ( *KeyValue) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetValue() {
		if  := .WriteFieldBegin(, "value", thrift.STRING, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:value: ", ), )
		}
		if  := .WriteString(, string(*.Value));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.value (2) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:value: ", ), )
		}
	}
	return 
}

func ( *KeyValue) ( *KeyValue) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Key != .Key { return false }
	if .Value != .Value {
		if .Value == nil || .Value == nil {
			return false
		}
		if (*.Value) != (*.Value) { return false }
	}
	return true
}

func ( *KeyValue) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("KeyValue(%+v)", *)
}

func ( *KeyValue) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.KeyValue",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*KeyValue)(nil)

func ( *KeyValue) () error {
	return nil
}

// Sort order within a RowGroup of a leaf column
// 
// Attributes:
//  - ColumnIdx: The ordinal position of the column (in this row group) *
//  - Descending: If true, indicates this column is sorted in descending order. *
//  - NullsFirst: If true, nulls will come before non-null values, otherwise,
// nulls go at the end.
// 
type SortingColumn struct {
	ColumnIdx int32 `thrift:"column_idx,1,required" db:"column_idx" json:"column_idx"`
	Descending bool `thrift:"descending,2,required" db:"descending" json:"descending"`
	NullsFirst bool `thrift:"nulls_first,3,required" db:"nulls_first" json:"nulls_first"`
}

func () *SortingColumn {
	return &SortingColumn{}
}



func ( *SortingColumn) () int32 {
	return .ColumnIdx
}



func ( *SortingColumn) () bool {
	return .Descending
}



func ( *SortingColumn) () bool {
	return .NullsFirst
}

func ( *SortingColumn) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.BOOL {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.BOOL {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field ColumnIdx is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Descending is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NullsFirst is not set"));
	}
	return nil
}

func ( *SortingColumn) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.ColumnIdx = 
	}
	return nil
}

func ( *SortingColumn) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.Descending = 
	}
	return nil
}

func ( *SortingColumn) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.NullsFirst = 
	}
	return nil
}

func ( *SortingColumn) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "SortingColumn");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *SortingColumn) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "column_idx", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:column_idx: ", ), )
	}
	if  := .WriteI32(, int32(.ColumnIdx));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.column_idx (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:column_idx: ", ), )
	}
	return 
}

func ( *SortingColumn) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "descending", thrift.BOOL, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:descending: ", ), )
	}
	if  := .WriteBool(, bool(.Descending));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.descending (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:descending: ", ), )
	}
	return 
}

func ( *SortingColumn) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "nulls_first", thrift.BOOL, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:nulls_first: ", ), )
	}
	if  := .WriteBool(, bool(.NullsFirst));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.nulls_first (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:nulls_first: ", ), )
	}
	return 
}

func ( *SortingColumn) ( *SortingColumn) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .ColumnIdx != .ColumnIdx { return false }
	if .Descending != .Descending { return false }
	if .NullsFirst != .NullsFirst { return false }
	return true
}

func ( *SortingColumn) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("SortingColumn(%+v)", *)
}

func ( *SortingColumn) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.SortingColumn",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*SortingColumn)(nil)

func ( *SortingColumn) () error {
	return nil
}

// statistics of a given page type and encoding
// 
// Attributes:
//  - PageType: the page type (data/dic/...) *
//  - Encoding: encoding of the page *
//  - Count: number of pages of this type with this encoding *
// 
type PageEncodingStats struct {
	PageType PageType `thrift:"page_type,1,required" db:"page_type" json:"page_type"`
	Encoding Encoding `thrift:"encoding,2,required" db:"encoding" json:"encoding"`
	Count int32 `thrift:"count,3,required" db:"count" json:"count"`
}

func () *PageEncodingStats {
	return &PageEncodingStats{}
}



func ( *PageEncodingStats) () PageType {
	return .PageType
}



func ( *PageEncodingStats) () Encoding {
	return .Encoding
}



func ( *PageEncodingStats) () int32 {
	return .Count
}

func ( *PageEncodingStats) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I32 {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field PageType is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Encoding is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Count is not set"));
	}
	return nil
}

func ( *PageEncodingStats) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		 := PageType()
		.PageType = 
	}
	return nil
}

func ( *PageEncodingStats) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		 := Encoding()
		.Encoding = 
	}
	return nil
}

func ( *PageEncodingStats) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.Count = 
	}
	return nil
}

func ( *PageEncodingStats) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "PageEncodingStats");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *PageEncodingStats) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "page_type", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:page_type: ", ), )
	}
	if  := .WriteI32(, int32(.PageType));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.page_type (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:page_type: ", ), )
	}
	return 
}

func ( *PageEncodingStats) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "encoding", thrift.I32, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:encoding: ", ), )
	}
	if  := .WriteI32(, int32(.Encoding));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.encoding (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:encoding: ", ), )
	}
	return 
}

func ( *PageEncodingStats) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "count", thrift.I32, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:count: ", ), )
	}
	if  := .WriteI32(, int32(.Count));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.count (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:count: ", ), )
	}
	return 
}

func ( *PageEncodingStats) ( *PageEncodingStats) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .PageType != .PageType { return false }
	if .Encoding != .Encoding { return false }
	if .Count != .Count { return false }
	return true
}

func ( *PageEncodingStats) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("PageEncodingStats(%+v)", *)
}

func ( *PageEncodingStats) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.PageEncodingStats",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*PageEncodingStats)(nil)

func ( *PageEncodingStats) () error {
	return nil
}

// Description for column metadata
// 
// Attributes:
//  - Type: Type of this column *
//  - Encodings: Set of all encodings used for this column. The purpose is to validate
// whether we can decode those pages. *
//  - PathInSchema: Path in schema *
//  - Codec: Compression codec *
//  - NumValues: Number of values in this column *
//  - TotalUncompressedSize: total byte size of all uncompressed pages in this column chunk (including the headers) *
//  - TotalCompressedSize: total byte size of all compressed, and potentially encrypted, pages
// in this column chunk (including the headers) *
//  - KeyValueMetadata: Optional key/value metadata *
//  - DataPageOffset: Byte offset from beginning of file to first data page *
//  - IndexPageOffset: Byte offset from beginning of file to root index page *
//  - DictionaryPageOffset: Byte offset from the beginning of file to first (only) dictionary page *
//  - Statistics: optional statistics for this column chunk
//  - EncodingStats: Set of all encodings used for pages in this column chunk.
// This information can be used to determine if all data pages are
// dictionary encoded for example *
//  - BloomFilterOffset: Byte offset from beginning of file to Bloom filter data. *
//  - BloomFilterLength: Size of Bloom filter data including the serialized header, in bytes.
// Added in 2.10 so readers may not read this field from old files and
// it can be obtained after the BloomFilterHeader has been deserialized.
// Writers should write this field so readers can read the bloom filter
// in a single I/O.
//  - SizeStatistics: Optional statistics to help estimate total memory when converted to in-memory
// representations. The histograms contained in these statistics can
// also be useful in some cases for more fine-grained nullability/list length
// filter pushdown.
//  - GeospatialStatistics: Optional statistics specific for Geometry and Geography logical types
// 
type ColumnMetaData struct {
	Type Type `thrift:"type,1,required" db:"type" json:"type"`
	Encodings []Encoding `thrift:"encodings,2,required" db:"encodings" json:"encodings"`
	PathInSchema []string `thrift:"path_in_schema,3,required" db:"path_in_schema" json:"path_in_schema"`
	Codec CompressionCodec `thrift:"codec,4,required" db:"codec" json:"codec"`
	NumValues int64 `thrift:"num_values,5,required" db:"num_values" json:"num_values"`
	TotalUncompressedSize int64 `thrift:"total_uncompressed_size,6,required" db:"total_uncompressed_size" json:"total_uncompressed_size"`
	TotalCompressedSize int64 `thrift:"total_compressed_size,7,required" db:"total_compressed_size" json:"total_compressed_size"`
	KeyValueMetadata []*KeyValue `thrift:"key_value_metadata,8" db:"key_value_metadata" json:"key_value_metadata,omitempty"`
	DataPageOffset int64 `thrift:"data_page_offset,9,required" db:"data_page_offset" json:"data_page_offset"`
	IndexPageOffset *int64 `thrift:"index_page_offset,10" db:"index_page_offset" json:"index_page_offset,omitempty"`
	DictionaryPageOffset *int64 `thrift:"dictionary_page_offset,11" db:"dictionary_page_offset" json:"dictionary_page_offset,omitempty"`
	Statistics *Statistics `thrift:"statistics,12" db:"statistics" json:"statistics,omitempty"`
	EncodingStats []*PageEncodingStats `thrift:"encoding_stats,13" db:"encoding_stats" json:"encoding_stats,omitempty"`
	BloomFilterOffset *int64 `thrift:"bloom_filter_offset,14" db:"bloom_filter_offset" json:"bloom_filter_offset,omitempty"`
	BloomFilterLength *int32 `thrift:"bloom_filter_length,15" db:"bloom_filter_length" json:"bloom_filter_length,omitempty"`
	SizeStatistics *SizeStatistics `thrift:"size_statistics,16" db:"size_statistics" json:"size_statistics,omitempty"`
	GeospatialStatistics *GeospatialStatistics `thrift:"geospatial_statistics,17" db:"geospatial_statistics" json:"geospatial_statistics,omitempty"`
}

func () *ColumnMetaData {
	return &ColumnMetaData{}
}



func ( *ColumnMetaData) () Type {
	return .Type
}



func ( *ColumnMetaData) () []Encoding {
	return .Encodings
}



func ( *ColumnMetaData) () []string {
	return .PathInSchema
}



func ( *ColumnMetaData) () CompressionCodec {
	return .Codec
}



func ( *ColumnMetaData) () int64 {
	return .NumValues
}



func ( *ColumnMetaData) () int64 {
	return .TotalUncompressedSize
}



func ( *ColumnMetaData) () int64 {
	return .TotalCompressedSize
}

var ColumnMetaData_KeyValueMetadata_DEFAULT []*KeyValue


func ( *ColumnMetaData) () []*KeyValue {
	return .KeyValueMetadata
}



func ( *ColumnMetaData) () int64 {
	return .DataPageOffset
}

var ColumnMetaData_IndexPageOffset_DEFAULT int64

func ( *ColumnMetaData) () int64 {
	if !.IsSetIndexPageOffset() {
		return ColumnMetaData_IndexPageOffset_DEFAULT
	}
	return *.IndexPageOffset
}

var ColumnMetaData_DictionaryPageOffset_DEFAULT int64

func ( *ColumnMetaData) () int64 {
	if !.IsSetDictionaryPageOffset() {
		return ColumnMetaData_DictionaryPageOffset_DEFAULT
	}
	return *.DictionaryPageOffset
}

var ColumnMetaData_Statistics_DEFAULT *Statistics

func ( *ColumnMetaData) () *Statistics {
	if !.IsSetStatistics() {
		return ColumnMetaData_Statistics_DEFAULT
	}
	return .Statistics
}

var ColumnMetaData_EncodingStats_DEFAULT []*PageEncodingStats


func ( *ColumnMetaData) () []*PageEncodingStats {
	return .EncodingStats
}

var ColumnMetaData_BloomFilterOffset_DEFAULT int64

func ( *ColumnMetaData) () int64 {
	if !.IsSetBloomFilterOffset() {
		return ColumnMetaData_BloomFilterOffset_DEFAULT
	}
	return *.BloomFilterOffset
}

var ColumnMetaData_BloomFilterLength_DEFAULT int32

func ( *ColumnMetaData) () int32 {
	if !.IsSetBloomFilterLength() {
		return ColumnMetaData_BloomFilterLength_DEFAULT
	}
	return *.BloomFilterLength
}

var ColumnMetaData_SizeStatistics_DEFAULT *SizeStatistics

func ( *ColumnMetaData) () *SizeStatistics {
	if !.IsSetSizeStatistics() {
		return ColumnMetaData_SizeStatistics_DEFAULT
	}
	return .SizeStatistics
}

var ColumnMetaData_GeospatialStatistics_DEFAULT *GeospatialStatistics

func ( *ColumnMetaData) () *GeospatialStatistics {
	if !.IsSetGeospatialStatistics() {
		return ColumnMetaData_GeospatialStatistics_DEFAULT
	}
	return .GeospatialStatistics
}

func ( *ColumnMetaData) () bool {
	return .KeyValueMetadata != nil
}

func ( *ColumnMetaData) () bool {
	return .IndexPageOffset != nil
}

func ( *ColumnMetaData) () bool {
	return .DictionaryPageOffset != nil
}

func ( *ColumnMetaData) () bool {
	return .Statistics != nil
}

func ( *ColumnMetaData) () bool {
	return .EncodingStats != nil
}

func ( *ColumnMetaData) () bool {
	return .BloomFilterOffset != nil
}

func ( *ColumnMetaData) () bool {
	return .BloomFilterLength != nil
}

func ( *ColumnMetaData) () bool {
	return .SizeStatistics != nil
}

func ( *ColumnMetaData) () bool {
	return .GeospatialStatistics != nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.LIST {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.LIST {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.I32 {
				if  := .ReadField4(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.I64 {
				if  := .ReadField5(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.I64 {
				if  := .ReadField6(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.I64 {
				if  := .ReadField7(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.LIST {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 9:
			if  == thrift.I64 {
				if  := .ReadField9(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 10:
			if  == thrift.I64 {
				if  := .ReadField10(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 11:
			if  == thrift.I64 {
				if  := .ReadField11(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 12:
			if  == thrift.STRUCT {
				if  := .ReadField12(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 13:
			if  == thrift.LIST {
				if  := .ReadField13(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 14:
			if  == thrift.I64 {
				if  := .ReadField14(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 15:
			if  == thrift.I32 {
				if  := .ReadField15(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 16:
			if  == thrift.STRUCT {
				if  := .ReadField16(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 17:
			if  == thrift.STRUCT {
				if  := .ReadField17(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Type is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Encodings is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field PathInSchema is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Codec is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumValues is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field TotalUncompressedSize is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field TotalCompressedSize is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field DataPageOffset is not set"));
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		 := Type()
		.Type = 
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]Encoding, 0, )
	.Encodings = 
	for  := 0;  < ; ++ {
		var  Encoding
		if ,  := .ReadI32();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 := Encoding()
			 = 
		}
		.Encodings = append(.Encodings, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]string, 0, )
	.PathInSchema = 
	for  := 0;  < ; ++ {
		var  string
		if ,  := .ReadString();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.PathInSchema = append(.PathInSchema, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		 := CompressionCodec()
		.Codec = 
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 5: ", )
	} else {
		.NumValues = 
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 6: ", )
	} else {
		.TotalUncompressedSize = 
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 7: ", )
	} else {
		.TotalCompressedSize = 
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*KeyValue, 0, )
	.KeyValueMetadata = 
	for  := 0;  < ; ++ {
		 := &KeyValue{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.KeyValueMetadata = append(.KeyValueMetadata, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 9: ", )
	} else {
		.DataPageOffset = 
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 10: ", )
	} else {
		.IndexPageOffset = &
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 11: ", )
	} else {
		.DictionaryPageOffset = &
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	.Statistics = &Statistics{}
	if  := .Statistics.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .Statistics), )
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*PageEncodingStats, 0, )
	.EncodingStats = 
	for  := 0;  < ; ++ {
		 := &PageEncodingStats{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.EncodingStats = append(.EncodingStats, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 14: ", )
	} else {
		.BloomFilterOffset = &
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 15: ", )
	} else {
		.BloomFilterLength = &
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	.SizeStatistics = &SizeStatistics{}
	if  := .SizeStatistics.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .SizeStatistics), )
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	.GeospatialStatistics = &GeospatialStatistics{}
	if  := .GeospatialStatistics.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .GeospatialStatistics), )
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "ColumnMetaData");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
		if  := .writeField9(, );  != nil { return  }
		if  := .writeField10(, );  != nil { return  }
		if  := .writeField11(, );  != nil { return  }
		if  := .writeField12(, );  != nil { return  }
		if  := .writeField13(, );  != nil { return  }
		if  := .writeField14(, );  != nil { return  }
		if  := .writeField15(, );  != nil { return  }
		if  := .writeField16(, );  != nil { return  }
		if  := .writeField17(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "type", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:type: ", ), )
	}
	if  := .WriteI32(, int32(.Type));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.type (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:type: ", ), )
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "encodings", thrift.LIST, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:encodings: ", ), )
	}
	if  := .WriteListBegin(, thrift.I32, len(.Encodings));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .Encodings {
		if  := .WriteI32(, int32());  != nil {
			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:encodings: ", ), )
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "path_in_schema", thrift.LIST, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:path_in_schema: ", ), )
	}
	if  := .WriteListBegin(, thrift.STRING, len(.PathInSchema));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .PathInSchema {
		if  := .WriteString(, string());  != nil {
			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:path_in_schema: ", ), )
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "codec", thrift.I32, 4);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:codec: ", ), )
	}
	if  := .WriteI32(, int32(.Codec));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.codec (4) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:codec: ", ), )
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "num_values", thrift.I64, 5);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:num_values: ", ), )
	}
	if  := .WriteI64(, int64(.NumValues));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.num_values (5) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 5:num_values: ", ), )
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "total_uncompressed_size", thrift.I64, 6);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:total_uncompressed_size: ", ), )
	}
	if  := .WriteI64(, int64(.TotalUncompressedSize));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.total_uncompressed_size (6) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 6:total_uncompressed_size: ", ), )
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "total_compressed_size", thrift.I64, 7);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:total_compressed_size: ", ), )
	}
	if  := .WriteI64(, int64(.TotalCompressedSize));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.total_compressed_size (7) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 7:total_compressed_size: ", ), )
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetKeyValueMetadata() {
		if  := .WriteFieldBegin(, "key_value_metadata", thrift.LIST, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:key_value_metadata: ", ), )
		}
		if  := .WriteListBegin(, thrift.STRUCT, len(.KeyValueMetadata));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .KeyValueMetadata {
			if  := .Write(, );  != nil {
				return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:key_value_metadata: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "data_page_offset", thrift.I64, 9);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:data_page_offset: ", ), )
	}
	if  := .WriteI64(, int64(.DataPageOffset));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.data_page_offset (9) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 9:data_page_offset: ", ), )
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetIndexPageOffset() {
		if  := .WriteFieldBegin(, "index_page_offset", thrift.I64, 10);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 10:index_page_offset: ", ), )
		}
		if  := .WriteI64(, int64(*.IndexPageOffset));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.index_page_offset (10) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 10:index_page_offset: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDictionaryPageOffset() {
		if  := .WriteFieldBegin(, "dictionary_page_offset", thrift.I64, 11);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 11:dictionary_page_offset: ", ), )
		}
		if  := .WriteI64(, int64(*.DictionaryPageOffset));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.dictionary_page_offset (11) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 11:dictionary_page_offset: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetStatistics() {
		if  := .WriteFieldBegin(, "statistics", thrift.STRUCT, 12);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 12:statistics: ", ), )
		}
		if  := .Statistics.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .Statistics), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 12:statistics: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetEncodingStats() {
		if  := .WriteFieldBegin(, "encoding_stats", thrift.LIST, 13);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 13:encoding_stats: ", ), )
		}
		if  := .WriteListBegin(, thrift.STRUCT, len(.EncodingStats));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .EncodingStats {
			if  := .Write(, );  != nil {
				return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 13:encoding_stats: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetBloomFilterOffset() {
		if  := .WriteFieldBegin(, "bloom_filter_offset", thrift.I64, 14);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 14:bloom_filter_offset: ", ), )
		}
		if  := .WriteI64(, int64(*.BloomFilterOffset));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.bloom_filter_offset (14) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 14:bloom_filter_offset: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetBloomFilterLength() {
		if  := .WriteFieldBegin(, "bloom_filter_length", thrift.I32, 15);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 15:bloom_filter_length: ", ), )
		}
		if  := .WriteI32(, int32(*.BloomFilterLength));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.bloom_filter_length (15) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 15:bloom_filter_length: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetSizeStatistics() {
		if  := .WriteFieldBegin(, "size_statistics", thrift.STRUCT, 16);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 16:size_statistics: ", ), )
		}
		if  := .SizeStatistics.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .SizeStatistics), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 16:size_statistics: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetGeospatialStatistics() {
		if  := .WriteFieldBegin(, "geospatial_statistics", thrift.STRUCT, 17);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 17:geospatial_statistics: ", ), )
		}
		if  := .GeospatialStatistics.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .GeospatialStatistics), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 17:geospatial_statistics: ", ), )
		}
	}
	return 
}

func ( *ColumnMetaData) ( *ColumnMetaData) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Type != .Type { return false }
	if len(.Encodings) != len(.Encodings) { return false }
	for ,  := range .Encodings {
		 := .Encodings[]
		if  !=  { return false }
	}
	if len(.PathInSchema) != len(.PathInSchema) { return false }
	for ,  := range .PathInSchema {
		 := .PathInSchema[]
		if  !=  { return false }
	}
	if .Codec != .Codec { return false }
	if .NumValues != .NumValues { return false }
	if .TotalUncompressedSize != .TotalUncompressedSize { return false }
	if .TotalCompressedSize != .TotalCompressedSize { return false }
	if len(.KeyValueMetadata) != len(.KeyValueMetadata) { return false }
	for ,  := range .KeyValueMetadata {
		 := .KeyValueMetadata[]
		if !.Equals() { return false }
	}
	if .DataPageOffset != .DataPageOffset { return false }
	if .IndexPageOffset != .IndexPageOffset {
		if .IndexPageOffset == nil || .IndexPageOffset == nil {
			return false
		}
		if (*.IndexPageOffset) != (*.IndexPageOffset) { return false }
	}
	if .DictionaryPageOffset != .DictionaryPageOffset {
		if .DictionaryPageOffset == nil || .DictionaryPageOffset == nil {
			return false
		}
		if (*.DictionaryPageOffset) != (*.DictionaryPageOffset) { return false }
	}
	if !.Statistics.Equals(.Statistics) { return false }
	if len(.EncodingStats) != len(.EncodingStats) { return false }
	for ,  := range .EncodingStats {
		 := .EncodingStats[]
		if !.Equals() { return false }
	}
	if .BloomFilterOffset != .BloomFilterOffset {
		if .BloomFilterOffset == nil || .BloomFilterOffset == nil {
			return false
		}
		if (*.BloomFilterOffset) != (*.BloomFilterOffset) { return false }
	}
	if .BloomFilterLength != .BloomFilterLength {
		if .BloomFilterLength == nil || .BloomFilterLength == nil {
			return false
		}
		if (*.BloomFilterLength) != (*.BloomFilterLength) { return false }
	}
	if !.SizeStatistics.Equals(.SizeStatistics) { return false }
	if !.GeospatialStatistics.Equals(.GeospatialStatistics) { return false }
	return true
}

func ( *ColumnMetaData) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ColumnMetaData(%+v)", *)
}

func ( *ColumnMetaData) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.ColumnMetaData",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*ColumnMetaData)(nil)

func ( *ColumnMetaData) () error {
	return nil
}

type EncryptionWithFooterKey struct {
}

func () *EncryptionWithFooterKey {
	return &EncryptionWithFooterKey{}
}

func ( *EncryptionWithFooterKey) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *EncryptionWithFooterKey) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "EncryptionWithFooterKey");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *EncryptionWithFooterKey) ( *EncryptionWithFooterKey) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *EncryptionWithFooterKey) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("EncryptionWithFooterKey(%+v)", *)
}

func ( *EncryptionWithFooterKey) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.EncryptionWithFooterKey",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*EncryptionWithFooterKey)(nil)

func ( *EncryptionWithFooterKey) () error {
	return nil
}

// Attributes:
//  - PathInSchema: Column path in schema *
//  - KeyMetadata: Retrieval metadata of column encryption key *
// 
type EncryptionWithColumnKey struct {
	PathInSchema []string `thrift:"path_in_schema,1,required" db:"path_in_schema" json:"path_in_schema"`
	KeyMetadata []byte `thrift:"key_metadata,2" db:"key_metadata" json:"key_metadata,omitempty"`
}

func () *EncryptionWithColumnKey {
	return &EncryptionWithColumnKey{}
}



func ( *EncryptionWithColumnKey) () []string {
	return .PathInSchema
}

var EncryptionWithColumnKey_KeyMetadata_DEFAULT []byte


func ( *EncryptionWithColumnKey) () []byte {
	return .KeyMetadata
}

func ( *EncryptionWithColumnKey) () bool {
	return .KeyMetadata != nil
}

func ( *EncryptionWithColumnKey) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.LIST {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRING {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field PathInSchema is not set"));
	}
	return nil
}

func ( *EncryptionWithColumnKey) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]string, 0, )
	.PathInSchema = 
	for  := 0;  < ; ++ {
		var  string
		if ,  := .ReadString();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.PathInSchema = append(.PathInSchema, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *EncryptionWithColumnKey) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.KeyMetadata = 
	}
	return nil
}

func ( *EncryptionWithColumnKey) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "EncryptionWithColumnKey");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *EncryptionWithColumnKey) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "path_in_schema", thrift.LIST, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:path_in_schema: ", ), )
	}
	if  := .WriteListBegin(, thrift.STRING, len(.PathInSchema));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .PathInSchema {
		if  := .WriteString(, string());  != nil {
			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:path_in_schema: ", ), )
	}
	return 
}

func ( *EncryptionWithColumnKey) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetKeyMetadata() {
		if  := .WriteFieldBegin(, "key_metadata", thrift.STRING, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:key_metadata: ", ), )
		}
		if  := .WriteBinary(, .KeyMetadata);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.key_metadata (2) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:key_metadata: ", ), )
		}
	}
	return 
}

func ( *EncryptionWithColumnKey) ( *EncryptionWithColumnKey) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if len(.PathInSchema) != len(.PathInSchema) { return false }
	for ,  := range .PathInSchema {
		 := .PathInSchema[]
		if  !=  { return false }
	}
	if bytes.Compare(.KeyMetadata, .KeyMetadata) != 0 { return false }
	return true
}

func ( *EncryptionWithColumnKey) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("EncryptionWithColumnKey(%+v)", *)
}

func ( *EncryptionWithColumnKey) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.EncryptionWithColumnKey",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*EncryptionWithColumnKey)(nil)

func ( *EncryptionWithColumnKey) () error {
	return nil
}

// Attributes:
//  - ENCRYPTION_WITH_FOOTER_KEY
//  - ENCRYPTION_WITH_COLUMN_KEY
// 
type ColumnCryptoMetaData struct {
	ENCRYPTION_WITH_FOOTER_KEY *EncryptionWithFooterKey `thrift:"ENCRYPTION_WITH_FOOTER_KEY,1" db:"ENCRYPTION_WITH_FOOTER_KEY" json:"ENCRYPTION_WITH_FOOTER_KEY,omitempty"`
	ENCRYPTION_WITH_COLUMN_KEY *EncryptionWithColumnKey `thrift:"ENCRYPTION_WITH_COLUMN_KEY,2" db:"ENCRYPTION_WITH_COLUMN_KEY" json:"ENCRYPTION_WITH_COLUMN_KEY,omitempty"`
}

func () *ColumnCryptoMetaData {
	return &ColumnCryptoMetaData{}
}

var ColumnCryptoMetaData_ENCRYPTION_WITH_FOOTER_KEY_DEFAULT *EncryptionWithFooterKey

func ( *ColumnCryptoMetaData) () *EncryptionWithFooterKey {
	if !.IsSetENCRYPTION_WITH_FOOTER_KEY() {
		return ColumnCryptoMetaData_ENCRYPTION_WITH_FOOTER_KEY_DEFAULT
	}
	return .ENCRYPTION_WITH_FOOTER_KEY
}

var ColumnCryptoMetaData_ENCRYPTION_WITH_COLUMN_KEY_DEFAULT *EncryptionWithColumnKey

func ( *ColumnCryptoMetaData) () *EncryptionWithColumnKey {
	if !.IsSetENCRYPTION_WITH_COLUMN_KEY() {
		return ColumnCryptoMetaData_ENCRYPTION_WITH_COLUMN_KEY_DEFAULT
	}
	return .ENCRYPTION_WITH_COLUMN_KEY
}

func ( *ColumnCryptoMetaData) () int {
	 := 0
	if (.IsSetENCRYPTION_WITH_FOOTER_KEY()) {
		++
	}
	if (.IsSetENCRYPTION_WITH_COLUMN_KEY()) {
		++
	}
	return 

}

func ( *ColumnCryptoMetaData) () bool {
	return .ENCRYPTION_WITH_FOOTER_KEY != nil
}

func ( *ColumnCryptoMetaData) () bool {
	return .ENCRYPTION_WITH_COLUMN_KEY != nil
}

func ( *ColumnCryptoMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRUCT {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *ColumnCryptoMetaData) ( context.Context,  thrift.TProtocol) error {
	.ENCRYPTION_WITH_FOOTER_KEY = &EncryptionWithFooterKey{}
	if  := .ENCRYPTION_WITH_FOOTER_KEY.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .ENCRYPTION_WITH_FOOTER_KEY), )
	}
	return nil
}

func ( *ColumnCryptoMetaData) ( context.Context,  thrift.TProtocol) error {
	.ENCRYPTION_WITH_COLUMN_KEY = &EncryptionWithColumnKey{}
	if  := .ENCRYPTION_WITH_COLUMN_KEY.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .ENCRYPTION_WITH_COLUMN_KEY), )
	}
	return nil
}

func ( *ColumnCryptoMetaData) ( context.Context,  thrift.TProtocol) error {
	if  := .CountSetFieldsColumnCryptoMetaData();  != 1 {
		return fmt.Errorf("%T write union: exactly one field must be set (%d set)", , )
	}
	if  := .WriteStructBegin(, "ColumnCryptoMetaData");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *ColumnCryptoMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetENCRYPTION_WITH_FOOTER_KEY() {
		if  := .WriteFieldBegin(, "ENCRYPTION_WITH_FOOTER_KEY", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:ENCRYPTION_WITH_FOOTER_KEY: ", ), )
		}
		if  := .ENCRYPTION_WITH_FOOTER_KEY.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .ENCRYPTION_WITH_FOOTER_KEY), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:ENCRYPTION_WITH_FOOTER_KEY: ", ), )
		}
	}
	return 
}

func ( *ColumnCryptoMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetENCRYPTION_WITH_COLUMN_KEY() {
		if  := .WriteFieldBegin(, "ENCRYPTION_WITH_COLUMN_KEY", thrift.STRUCT, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:ENCRYPTION_WITH_COLUMN_KEY: ", ), )
		}
		if  := .ENCRYPTION_WITH_COLUMN_KEY.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .ENCRYPTION_WITH_COLUMN_KEY), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:ENCRYPTION_WITH_COLUMN_KEY: ", ), )
		}
	}
	return 
}

func ( *ColumnCryptoMetaData) ( *ColumnCryptoMetaData) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.ENCRYPTION_WITH_FOOTER_KEY.Equals(.ENCRYPTION_WITH_FOOTER_KEY) { return false }
	if !.ENCRYPTION_WITH_COLUMN_KEY.Equals(.ENCRYPTION_WITH_COLUMN_KEY) { return false }
	return true
}

func ( *ColumnCryptoMetaData) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ColumnCryptoMetaData(%+v)", *)
}

func ( *ColumnCryptoMetaData) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.ColumnCryptoMetaData",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*ColumnCryptoMetaData)(nil)

func ( *ColumnCryptoMetaData) () error {
	return nil
}

// Attributes:
//  - FilePath: File where column data is stored.  If not set, assumed to be same file as
// metadata.  This path is relative to the current file.
// 
//  - FileOffset: Deprecated: Byte offset in file_path to the ColumnMetaData
// 
// Past use of this field has been inconsistent, with some implementations
// using it to point to the ColumnMetaData and some using it to point to
// the first page in the column chunk. In many cases, the ColumnMetaData at this
// location is wrong. This field is now deprecated and should not be used.
// Writers should set this field to 0 if no ColumnMetaData has been written outside
// the footer.
//  - MetaData: Column metadata for this chunk. Some writers may also replicate this at the
// location pointed to by file_path/file_offset.
// Note: while marked as optional, this field is in fact required by most major
// Parquet implementations. As such, writers MUST populate this field.
// 
//  - OffsetIndexOffset: File offset of ColumnChunk's OffsetIndex *
//  - OffsetIndexLength: Size of ColumnChunk's OffsetIndex, in bytes *
//  - ColumnIndexOffset: File offset of ColumnChunk's ColumnIndex *
//  - ColumnIndexLength: Size of ColumnChunk's ColumnIndex, in bytes *
//  - CryptoMetadata: Crypto metadata of encrypted columns *
//  - EncryptedColumnMetadata: Encrypted column metadata for this chunk *
// 
type ColumnChunk struct {
	FilePath *string `thrift:"file_path,1" db:"file_path" json:"file_path,omitempty"`
	FileOffset int64 `thrift:"file_offset,2,required" db:"file_offset" json:"file_offset"`
	MetaData *ColumnMetaData `thrift:"meta_data,3" db:"meta_data" json:"meta_data,omitempty"`
	OffsetIndexOffset *int64 `thrift:"offset_index_offset,4" db:"offset_index_offset" json:"offset_index_offset,omitempty"`
	OffsetIndexLength *int32 `thrift:"offset_index_length,5" db:"offset_index_length" json:"offset_index_length,omitempty"`
	ColumnIndexOffset *int64 `thrift:"column_index_offset,6" db:"column_index_offset" json:"column_index_offset,omitempty"`
	ColumnIndexLength *int32 `thrift:"column_index_length,7" db:"column_index_length" json:"column_index_length,omitempty"`
	CryptoMetadata *ColumnCryptoMetaData `thrift:"crypto_metadata,8" db:"crypto_metadata" json:"crypto_metadata,omitempty"`
	EncryptedColumnMetadata []byte `thrift:"encrypted_column_metadata,9" db:"encrypted_column_metadata" json:"encrypted_column_metadata,omitempty"`
}

func () *ColumnChunk {
	return &ColumnChunk{}
}

var ColumnChunk_FilePath_DEFAULT string

func ( *ColumnChunk) () string {
	if !.IsSetFilePath() {
		return ColumnChunk_FilePath_DEFAULT
	}
	return *.FilePath
}



func ( *ColumnChunk) () int64 {
	return .FileOffset
}

var ColumnChunk_MetaData_DEFAULT *ColumnMetaData

func ( *ColumnChunk) () *ColumnMetaData {
	if !.IsSetMetaData() {
		return ColumnChunk_MetaData_DEFAULT
	}
	return .MetaData
}

var ColumnChunk_OffsetIndexOffset_DEFAULT int64

func ( *ColumnChunk) () int64 {
	if !.IsSetOffsetIndexOffset() {
		return ColumnChunk_OffsetIndexOffset_DEFAULT
	}
	return *.OffsetIndexOffset
}

var ColumnChunk_OffsetIndexLength_DEFAULT int32

func ( *ColumnChunk) () int32 {
	if !.IsSetOffsetIndexLength() {
		return ColumnChunk_OffsetIndexLength_DEFAULT
	}
	return *.OffsetIndexLength
}

var ColumnChunk_ColumnIndexOffset_DEFAULT int64

func ( *ColumnChunk) () int64 {
	if !.IsSetColumnIndexOffset() {
		return ColumnChunk_ColumnIndexOffset_DEFAULT
	}
	return *.ColumnIndexOffset
}

var ColumnChunk_ColumnIndexLength_DEFAULT int32

func ( *ColumnChunk) () int32 {
	if !.IsSetColumnIndexLength() {
		return ColumnChunk_ColumnIndexLength_DEFAULT
	}
	return *.ColumnIndexLength
}

var ColumnChunk_CryptoMetadata_DEFAULT *ColumnCryptoMetaData

func ( *ColumnChunk) () *ColumnCryptoMetaData {
	if !.IsSetCryptoMetadata() {
		return ColumnChunk_CryptoMetadata_DEFAULT
	}
	return .CryptoMetadata
}

var ColumnChunk_EncryptedColumnMetadata_DEFAULT []byte


func ( *ColumnChunk) () []byte {
	return .EncryptedColumnMetadata
}

func ( *ColumnChunk) () bool {
	return .FilePath != nil
}

func ( *ColumnChunk) () bool {
	return .MetaData != nil
}

func ( *ColumnChunk) () bool {
	return .OffsetIndexOffset != nil
}

func ( *ColumnChunk) () bool {
	return .OffsetIndexLength != nil
}

func ( *ColumnChunk) () bool {
	return .ColumnIndexOffset != nil
}

func ( *ColumnChunk) () bool {
	return .ColumnIndexLength != nil
}

func ( *ColumnChunk) () bool {
	return .CryptoMetadata != nil
}

func ( *ColumnChunk) () bool {
	return .EncryptedColumnMetadata != nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRING {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I64 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.STRUCT {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.I64 {
				if  := .ReadField4(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.I32 {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.I64 {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.I32 {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.STRUCT {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 9:
			if  == thrift.STRING {
				if  := .ReadField9(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field FileOffset is not set"));
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadString();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.FilePath = &
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.FileOffset = 
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	.MetaData = &ColumnMetaData{}
	if  := .MetaData.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .MetaData), )
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		.OffsetIndexOffset = &
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 5: ", )
	} else {
		.OffsetIndexLength = &
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 6: ", )
	} else {
		.ColumnIndexOffset = &
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 7: ", )
	} else {
		.ColumnIndexLength = &
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	.CryptoMetadata = &ColumnCryptoMetaData{}
	if  := .CryptoMetadata.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .CryptoMetadata), )
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 9: ", )
	} else {
		.EncryptedColumnMetadata = 
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "ColumnChunk");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
		if  := .writeField9(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetFilePath() {
		if  := .WriteFieldBegin(, "file_path", thrift.STRING, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:file_path: ", ), )
		}
		if  := .WriteString(, string(*.FilePath));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.file_path (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:file_path: ", ), )
		}
	}
	return 
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "file_offset", thrift.I64, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:file_offset: ", ), )
	}
	if  := .WriteI64(, int64(.FileOffset));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.file_offset (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:file_offset: ", ), )
	}
	return 
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetMetaData() {
		if  := .WriteFieldBegin(, "meta_data", thrift.STRUCT, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:meta_data: ", ), )
		}
		if  := .MetaData.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .MetaData), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:meta_data: ", ), )
		}
	}
	return 
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetOffsetIndexOffset() {
		if  := .WriteFieldBegin(, "offset_index_offset", thrift.I64, 4);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:offset_index_offset: ", ), )
		}
		if  := .WriteI64(, int64(*.OffsetIndexOffset));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.offset_index_offset (4) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:offset_index_offset: ", ), )
		}
	}
	return 
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetOffsetIndexLength() {
		if  := .WriteFieldBegin(, "offset_index_length", thrift.I32, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:offset_index_length: ", ), )
		}
		if  := .WriteI32(, int32(*.OffsetIndexLength));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.offset_index_length (5) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:offset_index_length: ", ), )
		}
	}
	return 
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetColumnIndexOffset() {
		if  := .WriteFieldBegin(, "column_index_offset", thrift.I64, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:column_index_offset: ", ), )
		}
		if  := .WriteI64(, int64(*.ColumnIndexOffset));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.column_index_offset (6) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:column_index_offset: ", ), )
		}
	}
	return 
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetColumnIndexLength() {
		if  := .WriteFieldBegin(, "column_index_length", thrift.I32, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:column_index_length: ", ), )
		}
		if  := .WriteI32(, int32(*.ColumnIndexLength));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.column_index_length (7) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:column_index_length: ", ), )
		}
	}
	return 
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetCryptoMetadata() {
		if  := .WriteFieldBegin(, "crypto_metadata", thrift.STRUCT, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:crypto_metadata: ", ), )
		}
		if  := .CryptoMetadata.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .CryptoMetadata), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:crypto_metadata: ", ), )
		}
	}
	return 
}

func ( *ColumnChunk) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetEncryptedColumnMetadata() {
		if  := .WriteFieldBegin(, "encrypted_column_metadata", thrift.STRING, 9);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:encrypted_column_metadata: ", ), )
		}
		if  := .WriteBinary(, .EncryptedColumnMetadata);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.encrypted_column_metadata (9) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 9:encrypted_column_metadata: ", ), )
		}
	}
	return 
}

func ( *ColumnChunk) ( *ColumnChunk) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .FilePath != .FilePath {
		if .FilePath == nil || .FilePath == nil {
			return false
		}
		if (*.FilePath) != (*.FilePath) { return false }
	}
	if .FileOffset != .FileOffset { return false }
	if !.MetaData.Equals(.MetaData) { return false }
	if .OffsetIndexOffset != .OffsetIndexOffset {
		if .OffsetIndexOffset == nil || .OffsetIndexOffset == nil {
			return false
		}
		if (*.OffsetIndexOffset) != (*.OffsetIndexOffset) { return false }
	}
	if .OffsetIndexLength != .OffsetIndexLength {
		if .OffsetIndexLength == nil || .OffsetIndexLength == nil {
			return false
		}
		if (*.OffsetIndexLength) != (*.OffsetIndexLength) { return false }
	}
	if .ColumnIndexOffset != .ColumnIndexOffset {
		if .ColumnIndexOffset == nil || .ColumnIndexOffset == nil {
			return false
		}
		if (*.ColumnIndexOffset) != (*.ColumnIndexOffset) { return false }
	}
	if .ColumnIndexLength != .ColumnIndexLength {
		if .ColumnIndexLength == nil || .ColumnIndexLength == nil {
			return false
		}
		if (*.ColumnIndexLength) != (*.ColumnIndexLength) { return false }
	}
	if !.CryptoMetadata.Equals(.CryptoMetadata) { return false }
	if bytes.Compare(.EncryptedColumnMetadata, .EncryptedColumnMetadata) != 0 { return false }
	return true
}

func ( *ColumnChunk) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ColumnChunk(%+v)", *)
}

func ( *ColumnChunk) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.ColumnChunk",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*ColumnChunk)(nil)

func ( *ColumnChunk) () error {
	return nil
}

// Attributes:
//  - Columns: Metadata for each column chunk in this row group.
// This list must have the same order as the SchemaElement list in FileMetaData.
// 
//  - TotalByteSize: Total byte size of all the uncompressed column data in this row group *
//  - NumRows: Number of rows in this row group *
//  - SortingColumns: If set, specifies a sort ordering of the rows in this RowGroup.
// The sorting columns can be a subset of all the columns.
//  - FileOffset: Byte offset from beginning of file to first page (data or dictionary)
// in this row group *
//  - TotalCompressedSize: Total byte size of all compressed (and potentially encrypted) column data
// in this row group *
//  - Ordinal: Row group ordinal in the file *
// 
type RowGroup struct {
	Columns []*ColumnChunk `thrift:"columns,1,required" db:"columns" json:"columns"`
	TotalByteSize int64 `thrift:"total_byte_size,2,required" db:"total_byte_size" json:"total_byte_size"`
	NumRows int64 `thrift:"num_rows,3,required" db:"num_rows" json:"num_rows"`
	SortingColumns []*SortingColumn `thrift:"sorting_columns,4" db:"sorting_columns" json:"sorting_columns,omitempty"`
	FileOffset *int64 `thrift:"file_offset,5" db:"file_offset" json:"file_offset,omitempty"`
	TotalCompressedSize *int64 `thrift:"total_compressed_size,6" db:"total_compressed_size" json:"total_compressed_size,omitempty"`
	Ordinal *int16 `thrift:"ordinal,7" db:"ordinal" json:"ordinal,omitempty"`
}

func () *RowGroup {
	return &RowGroup{}
}



func ( *RowGroup) () []*ColumnChunk {
	return .Columns
}



func ( *RowGroup) () int64 {
	return .TotalByteSize
}



func ( *RowGroup) () int64 {
	return .NumRows
}

var RowGroup_SortingColumns_DEFAULT []*SortingColumn


func ( *RowGroup) () []*SortingColumn {
	return .SortingColumns
}

var RowGroup_FileOffset_DEFAULT int64

func ( *RowGroup) () int64 {
	if !.IsSetFileOffset() {
		return RowGroup_FileOffset_DEFAULT
	}
	return *.FileOffset
}

var RowGroup_TotalCompressedSize_DEFAULT int64

func ( *RowGroup) () int64 {
	if !.IsSetTotalCompressedSize() {
		return RowGroup_TotalCompressedSize_DEFAULT
	}
	return *.TotalCompressedSize
}

var RowGroup_Ordinal_DEFAULT int16

func ( *RowGroup) () int16 {
	if !.IsSetOrdinal() {
		return RowGroup_Ordinal_DEFAULT
	}
	return *.Ordinal
}

func ( *RowGroup) () bool {
	return .SortingColumns != nil
}

func ( *RowGroup) () bool {
	return .FileOffset != nil
}

func ( *RowGroup) () bool {
	return .TotalCompressedSize != nil
}

func ( *RowGroup) () bool {
	return .Ordinal != nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.LIST {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I64 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I64 {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.LIST {
				if  := .ReadField4(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.I64 {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.I64 {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.I16 {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Columns is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field TotalByteSize is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumRows is not set"));
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*ColumnChunk, 0, )
	.Columns = 
	for  := 0;  < ; ++ {
		 := &ColumnChunk{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.Columns = append(.Columns, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.TotalByteSize = 
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.NumRows = 
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*SortingColumn, 0, )
	.SortingColumns = 
	for  := 0;  < ; ++ {
		 := &SortingColumn{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.SortingColumns = append(.SortingColumns, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 5: ", )
	} else {
		.FileOffset = &
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 6: ", )
	} else {
		.TotalCompressedSize = &
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI16();  != nil {
		return thrift.PrependError("error reading field 7: ", )
	} else {
		.Ordinal = &
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "RowGroup");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "columns", thrift.LIST, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:columns: ", ), )
	}
	if  := .WriteListBegin(, thrift.STRUCT, len(.Columns));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .Columns {
		if  := .Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:columns: ", ), )
	}
	return 
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "total_byte_size", thrift.I64, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:total_byte_size: ", ), )
	}
	if  := .WriteI64(, int64(.TotalByteSize));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.total_byte_size (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:total_byte_size: ", ), )
	}
	return 
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "num_rows", thrift.I64, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:num_rows: ", ), )
	}
	if  := .WriteI64(, int64(.NumRows));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.num_rows (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:num_rows: ", ), )
	}
	return 
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetSortingColumns() {
		if  := .WriteFieldBegin(, "sorting_columns", thrift.LIST, 4);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:sorting_columns: ", ), )
		}
		if  := .WriteListBegin(, thrift.STRUCT, len(.SortingColumns));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .SortingColumns {
			if  := .Write(, );  != nil {
				return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 4:sorting_columns: ", ), )
		}
	}
	return 
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetFileOffset() {
		if  := .WriteFieldBegin(, "file_offset", thrift.I64, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:file_offset: ", ), )
		}
		if  := .WriteI64(, int64(*.FileOffset));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.file_offset (5) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:file_offset: ", ), )
		}
	}
	return 
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetTotalCompressedSize() {
		if  := .WriteFieldBegin(, "total_compressed_size", thrift.I64, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:total_compressed_size: ", ), )
		}
		if  := .WriteI64(, int64(*.TotalCompressedSize));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.total_compressed_size (6) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:total_compressed_size: ", ), )
		}
	}
	return 
}

func ( *RowGroup) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetOrdinal() {
		if  := .WriteFieldBegin(, "ordinal", thrift.I16, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:ordinal: ", ), )
		}
		if  := .WriteI16(, int16(*.Ordinal));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.ordinal (7) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:ordinal: ", ), )
		}
	}
	return 
}

func ( *RowGroup) ( *RowGroup) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if len(.Columns) != len(.Columns) { return false }
	for ,  := range .Columns {
		 := .Columns[]
		if !.Equals() { return false }
	}
	if .TotalByteSize != .TotalByteSize { return false }
	if .NumRows != .NumRows { return false }
	if len(.SortingColumns) != len(.SortingColumns) { return false }
	for ,  := range .SortingColumns {
		 := .SortingColumns[]
		if !.Equals() { return false }
	}
	if .FileOffset != .FileOffset {
		if .FileOffset == nil || .FileOffset == nil {
			return false
		}
		if (*.FileOffset) != (*.FileOffset) { return false }
	}
	if .TotalCompressedSize != .TotalCompressedSize {
		if .TotalCompressedSize == nil || .TotalCompressedSize == nil {
			return false
		}
		if (*.TotalCompressedSize) != (*.TotalCompressedSize) { return false }
	}
	if .Ordinal != .Ordinal {
		if .Ordinal == nil || .Ordinal == nil {
			return false
		}
		if (*.Ordinal) != (*.Ordinal) { return false }
	}
	return true
}

func ( *RowGroup) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("RowGroup(%+v)", *)
}

func ( *RowGroup) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.RowGroup",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*RowGroup)(nil)

func ( *RowGroup) () error {
	return nil
}

// Empty struct to signal the order defined by the physical or logical type
type TypeDefinedOrder struct {
}

func () *TypeDefinedOrder {
	return &TypeDefinedOrder{}
}

func ( *TypeDefinedOrder) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		if  := .Skip(, );  != nil {
			return 
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *TypeDefinedOrder) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "TypeDefinedOrder");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *TypeDefinedOrder) ( *TypeDefinedOrder) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	return true
}

func ( *TypeDefinedOrder) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("TypeDefinedOrder(%+v)", *)
}

func ( *TypeDefinedOrder) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.TypeDefinedOrder",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*TypeDefinedOrder)(nil)

func ( *TypeDefinedOrder) () error {
	return nil
}

// Union to specify the order used for the min_value and max_value fields for a
// column. This union takes the role of an enhanced enum that allows rich
// elements (which will be needed for a collation-based ordering in the future).
// 
// Possible values are:
// * TypeDefinedOrder - the column uses the order defined by its logical or
//                      physical type (if there is no logical type).
// 
// If the reader does not support the value of this union, min and max stats
// for this column should be ignored.
// 
// Attributes:
//  - TYPE_ORDER: The sort orders for logical types are:
//   UTF8 - unsigned byte-wise comparison
//   INT8 - signed comparison
//   INT16 - signed comparison
//   INT32 - signed comparison
//   INT64 - signed comparison
//   UINT8 - unsigned comparison
//   UINT16 - unsigned comparison
//   UINT32 - unsigned comparison
//   UINT64 - unsigned comparison
//   DECIMAL - signed comparison of the represented value
//   DATE - signed comparison
//   TIME_MILLIS - signed comparison
//   TIME_MICROS - signed comparison
//   TIMESTAMP_MILLIS - signed comparison
//   TIMESTAMP_MICROS - signed comparison
//   INTERVAL - undefined
//   JSON - unsigned byte-wise comparison
//   BSON - unsigned byte-wise comparison
//   ENUM - unsigned byte-wise comparison
//   LIST - undefined
//   MAP - undefined
//   VARIANT - undefined
//   GEOMETRY - undefined
//   GEOGRAPHY - undefined
// 
// In the absence of logical types, the sort order is determined by the physical type:
//   BOOLEAN - false, true
//   INT32 - signed comparison
//   INT64 - signed comparison
//   INT96 (only used for legacy timestamps) - undefined
//   FLOAT - signed comparison of the represented value (*)
//   DOUBLE - signed comparison of the represented value (*)
//   BYTE_ARRAY - unsigned byte-wise comparison
//   FIXED_LEN_BYTE_ARRAY - unsigned byte-wise comparison
// 
// (*) Because the sorting order is not specified properly for floating
//     point values (relations vs. total ordering) the following
//     compatibility rules should be applied when reading statistics:
//     - If the min is a NaN, it should be ignored.
//     - If the max is a NaN, it should be ignored.
//     - If the min is +0, the row group may contain -0 values as well.
//     - If the max is -0, the row group may contain +0 values as well.
//     - When looking for NaN values, min and max should be ignored.
// 
//     When writing statistics the following rules should be followed:
//     - NaNs should not be written to min or max statistics fields.
//     - If the computed max value is zero (whether negative or positive),
//       `+0.0` should be written into the max statistics field.
//     - If the computed min value is zero (whether negative or positive),
//       `-0.0` should be written into the min statistics field.
// 
type ColumnOrder struct {
	TYPE_ORDER *TypeDefinedOrder `thrift:"TYPE_ORDER,1" db:"TYPE_ORDER" json:"TYPE_ORDER,omitempty"`
}

func () *ColumnOrder {
	return &ColumnOrder{}
}

var ColumnOrder_TYPE_ORDER_DEFAULT *TypeDefinedOrder

func ( *ColumnOrder) () *TypeDefinedOrder {
	if !.IsSetTYPE_ORDER() {
		return ColumnOrder_TYPE_ORDER_DEFAULT
	}
	return .TYPE_ORDER
}

func ( *ColumnOrder) () int {
	 := 0
	if (.IsSetTYPE_ORDER()) {
		++
	}
	return 

}

func ( *ColumnOrder) () bool {
	return .TYPE_ORDER != nil
}

func ( *ColumnOrder) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *ColumnOrder) ( context.Context,  thrift.TProtocol) error {
	.TYPE_ORDER = &TypeDefinedOrder{}
	if  := .TYPE_ORDER.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .TYPE_ORDER), )
	}
	return nil
}

func ( *ColumnOrder) ( context.Context,  thrift.TProtocol) error {
	if  := .CountSetFieldsColumnOrder();  != 1 {
		return fmt.Errorf("%T write union: exactly one field must be set (%d set)", , )
	}
	if  := .WriteStructBegin(, "ColumnOrder");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *ColumnOrder) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetTYPE_ORDER() {
		if  := .WriteFieldBegin(, "TYPE_ORDER", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:TYPE_ORDER: ", ), )
		}
		if  := .TYPE_ORDER.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .TYPE_ORDER), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:TYPE_ORDER: ", ), )
		}
	}
	return 
}

func ( *ColumnOrder) ( *ColumnOrder) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.TYPE_ORDER.Equals(.TYPE_ORDER) { return false }
	return true
}

func ( *ColumnOrder) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ColumnOrder(%+v)", *)
}

func ( *ColumnOrder) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.ColumnOrder",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*ColumnOrder)(nil)

func ( *ColumnOrder) () error {
	return nil
}

// Attributes:
//  - Offset: Offset of the page in the file *
//  - CompressedPageSize: Size of the page, including header. Sum of compressed_page_size and header
// length
//  - FirstRowIndex: Index within the RowGroup of the first row of the page. When an
// OffsetIndex is present, pages must begin on row boundaries
// (repetition_level = 0).
// 
type PageLocation struct {
	Offset int64 `thrift:"offset,1,required" db:"offset" json:"offset"`
	CompressedPageSize int32 `thrift:"compressed_page_size,2,required" db:"compressed_page_size" json:"compressed_page_size"`
	FirstRowIndex int64 `thrift:"first_row_index,3,required" db:"first_row_index" json:"first_row_index"`
}

func () *PageLocation {
	return &PageLocation{}
}



func ( *PageLocation) () int64 {
	return .Offset
}



func ( *PageLocation) () int32 {
	return .CompressedPageSize
}



func ( *PageLocation) () int64 {
	return .FirstRowIndex
}

func ( *PageLocation) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I64 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.I32 {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I64 {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Offset is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field CompressedPageSize is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field FirstRowIndex is not set"));
	}
	return nil
}

func ( *PageLocation) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.Offset = 
	}
	return nil
}

func ( *PageLocation) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.CompressedPageSize = 
	}
	return nil
}

func ( *PageLocation) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.FirstRowIndex = 
	}
	return nil
}

func ( *PageLocation) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "PageLocation");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *PageLocation) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "offset", thrift.I64, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:offset: ", ), )
	}
	if  := .WriteI64(, int64(.Offset));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.offset (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:offset: ", ), )
	}
	return 
}

func ( *PageLocation) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "compressed_page_size", thrift.I32, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:compressed_page_size: ", ), )
	}
	if  := .WriteI32(, int32(.CompressedPageSize));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.compressed_page_size (2) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:compressed_page_size: ", ), )
	}
	return 
}

func ( *PageLocation) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "first_row_index", thrift.I64, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:first_row_index: ", ), )
	}
	if  := .WriteI64(, int64(.FirstRowIndex));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.first_row_index (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:first_row_index: ", ), )
	}
	return 
}

func ( *PageLocation) ( *PageLocation) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Offset != .Offset { return false }
	if .CompressedPageSize != .CompressedPageSize { return false }
	if .FirstRowIndex != .FirstRowIndex { return false }
	return true
}

func ( *PageLocation) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("PageLocation(%+v)", *)
}

func ( *PageLocation) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.PageLocation",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*PageLocation)(nil)

func ( *PageLocation) () error {
	return nil
}

// Optional offsets for each data page in a ColumnChunk.
// 
// Forms part of the page index, along with ColumnIndex.
// 
// OffsetIndex may be present even if ColumnIndex is not.
// 
// Attributes:
//  - PageLocations: PageLocations, ordered by increasing PageLocation.offset. It is required
// that page_locations[i].first_row_index < page_locations[i+1].first_row_index.
//  - UnencodedByteArrayDataBytes: Unencoded/uncompressed size for BYTE_ARRAY types.
// 
// See documention for unencoded_byte_array_data_bytes in SizeStatistics for
// more details on this field.
// 
type OffsetIndex struct {
	PageLocations []*PageLocation `thrift:"page_locations,1,required" db:"page_locations" json:"page_locations"`
	UnencodedByteArrayDataBytes []int64 `thrift:"unencoded_byte_array_data_bytes,2" db:"unencoded_byte_array_data_bytes" json:"unencoded_byte_array_data_bytes,omitempty"`
}

func () *OffsetIndex {
	return &OffsetIndex{}
}



func ( *OffsetIndex) () []*PageLocation {
	return .PageLocations
}

var OffsetIndex_UnencodedByteArrayDataBytes_DEFAULT []int64


func ( *OffsetIndex) () []int64 {
	return .UnencodedByteArrayDataBytes
}

func ( *OffsetIndex) () bool {
	return .UnencodedByteArrayDataBytes != nil
}

func ( *OffsetIndex) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.LIST {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.LIST {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field PageLocations is not set"));
	}
	return nil
}

func ( *OffsetIndex) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*PageLocation, 0, )
	.PageLocations = 
	for  := 0;  < ; ++ {
		 := &PageLocation{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.PageLocations = append(.PageLocations, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *OffsetIndex) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]int64, 0, )
	.UnencodedByteArrayDataBytes = 
	for  := 0;  < ; ++ {
		var  int64
		if ,  := .ReadI64();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.UnencodedByteArrayDataBytes = append(.UnencodedByteArrayDataBytes, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *OffsetIndex) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "OffsetIndex");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *OffsetIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "page_locations", thrift.LIST, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:page_locations: ", ), )
	}
	if  := .WriteListBegin(, thrift.STRUCT, len(.PageLocations));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .PageLocations {
		if  := .Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:page_locations: ", ), )
	}
	return 
}

func ( *OffsetIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetUnencodedByteArrayDataBytes() {
		if  := .WriteFieldBegin(, "unencoded_byte_array_data_bytes", thrift.LIST, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:unencoded_byte_array_data_bytes: ", ), )
		}
		if  := .WriteListBegin(, thrift.I64, len(.UnencodedByteArrayDataBytes));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .UnencodedByteArrayDataBytes {
			if  := .WriteI64(, int64());  != nil {
				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:unencoded_byte_array_data_bytes: ", ), )
		}
	}
	return 
}

func ( *OffsetIndex) ( *OffsetIndex) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if len(.PageLocations) != len(.PageLocations) { return false }
	for ,  := range .PageLocations {
		 := .PageLocations[]
		if !.Equals() { return false }
	}
	if len(.UnencodedByteArrayDataBytes) != len(.UnencodedByteArrayDataBytes) { return false }
	for ,  := range .UnencodedByteArrayDataBytes {
		 := .UnencodedByteArrayDataBytes[]
		if  !=  { return false }
	}
	return true
}

func ( *OffsetIndex) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("OffsetIndex(%+v)", *)
}

func ( *OffsetIndex) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.OffsetIndex",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*OffsetIndex)(nil)

func ( *OffsetIndex) () error {
	return nil
}

// Optional statistics for each data page in a ColumnChunk.
// 
// Forms part the page index, along with OffsetIndex.
// 
// If this structure is present, OffsetIndex must also be present.
// 
// For each field in this structure, <field>[i] refers to the page at
// OffsetIndex.page_locations[i]
// 
// Attributes:
//  - NullPages: A list of Boolean values to determine the validity of the corresponding
// min and max values. If true, a page contains only null values, and writers
// have to set the corresponding entries in min_values and max_values to
// byte[0], so that all lists have the same length. If false, the
// corresponding entries in min_values and max_values must be valid.
//  - MinValues: Two lists containing lower and upper bounds for the values of each page
// determined by the ColumnOrder of the column. These may be the actual
// minimum and maximum values found on a page, but can also be (more compact)
// values that do not exist on a page. For example, instead of storing ""Blart
// Versenwald III", a writer may set min_values[i]="B", max_values[i]="C".
// Such more compact values must still be valid values within the column's
// logical type. Readers must make sure that list entries are populated before
// using them by inspecting null_pages.
//  - MaxValues
//  - BoundaryOrder: Stores whether both min_values and max_values are ordered and if so, in
// which direction. This allows readers to perform binary searches in both
// lists. Readers cannot assume that max_values[i] <= min_values[i+1], even
// if the lists are ordered.
//  - NullCounts: A list containing the number of null values for each page
// 
// Writers SHOULD always write this field even if no null values
// are present or the column is not nullable.
// Readers MUST distinguish between null_counts not being present
// and null_count being 0.
// If null_counts are not present, readers MUST NOT assume all
// null counts are 0.
//  - RepetitionLevelHistograms: Contains repetition level histograms for each page
// concatenated together.  The repetition_level_histogram field on
// SizeStatistics contains more details.
// 
// When present the length should always be (number of pages *
// (max_repetition_level + 1)) elements.
// 
// Element 0 is the first element of the histogram for the first page.
// Element (max_repetition_level + 1) is the first element of the histogram
// for the second page.
// 
//  - DefinitionLevelHistograms: Same as repetition_level_histograms except for definitions levels.
// 
// 
type ColumnIndex struct {
	NullPages []bool `thrift:"null_pages,1,required" db:"null_pages" json:"null_pages"`
	MinValues [][]byte `thrift:"min_values,2,required" db:"min_values" json:"min_values"`
	MaxValues [][]byte `thrift:"max_values,3,required" db:"max_values" json:"max_values"`
	BoundaryOrder BoundaryOrder `thrift:"boundary_order,4,required" db:"boundary_order" json:"boundary_order"`
	NullCounts []int64 `thrift:"null_counts,5" db:"null_counts" json:"null_counts,omitempty"`
	RepetitionLevelHistograms []int64 `thrift:"repetition_level_histograms,6" db:"repetition_level_histograms" json:"repetition_level_histograms,omitempty"`
	DefinitionLevelHistograms []int64 `thrift:"definition_level_histograms,7" db:"definition_level_histograms" json:"definition_level_histograms,omitempty"`
}

func () *ColumnIndex {
	return &ColumnIndex{}
}



func ( *ColumnIndex) () []bool {
	return .NullPages
}



func ( *ColumnIndex) () [][]byte {
	return .MinValues
}



func ( *ColumnIndex) () [][]byte {
	return .MaxValues
}



func ( *ColumnIndex) () BoundaryOrder {
	return .BoundaryOrder
}

var ColumnIndex_NullCounts_DEFAULT []int64


func ( *ColumnIndex) () []int64 {
	return .NullCounts
}

var ColumnIndex_RepetitionLevelHistograms_DEFAULT []int64


func ( *ColumnIndex) () []int64 {
	return .RepetitionLevelHistograms
}

var ColumnIndex_DefinitionLevelHistograms_DEFAULT []int64


func ( *ColumnIndex) () []int64 {
	return .DefinitionLevelHistograms
}

func ( *ColumnIndex) () bool {
	return .NullCounts != nil
}

func ( *ColumnIndex) () bool {
	return .RepetitionLevelHistograms != nil
}

func ( *ColumnIndex) () bool {
	return .DefinitionLevelHistograms != nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.LIST {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.LIST {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.LIST {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.I32 {
				if  := .ReadField4(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.LIST {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.LIST {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.LIST {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NullPages is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field MinValues is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field MaxValues is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field BoundaryOrder is not set"));
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]bool, 0, )
	.NullPages = 
	for  := 0;  < ; ++ {
		var  bool
		if ,  := .ReadBool();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.NullPages = append(.NullPages, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([][]byte, 0, )
	.MinValues = 
	for  := 0;  < ; ++ {
		var  []byte
		if ,  := .ReadBinary();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.MinValues = append(.MinValues, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([][]byte, 0, )
	.MaxValues = 
	for  := 0;  < ; ++ {
		var  []byte
		if ,  := .ReadBinary();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.MaxValues = append(.MaxValues, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 4: ", )
	} else {
		 := BoundaryOrder()
		.BoundaryOrder = 
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]int64, 0, )
	.NullCounts = 
	for  := 0;  < ; ++ {
		var  int64
		if ,  := .ReadI64();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.NullCounts = append(.NullCounts, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]int64, 0, )
	.RepetitionLevelHistograms = 
	for  := 0;  < ; ++ {
		var  int64
		if ,  := .ReadI64();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.RepetitionLevelHistograms = append(.RepetitionLevelHistograms, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]int64, 0, )
	.DefinitionLevelHistograms = 
	for  := 0;  < ; ++ {
		var  int64
		if ,  := .ReadI64();  != nil {
			return thrift.PrependError("error reading field 0: ", )
		} else {
			 = 
		}
		.DefinitionLevelHistograms = append(.DefinitionLevelHistograms, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "ColumnIndex");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "null_pages", thrift.LIST, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:null_pages: ", ), )
	}
	if  := .WriteListBegin(, thrift.BOOL, len(.NullPages));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .NullPages {
		if  := .WriteBool(, bool());  != nil {
			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:null_pages: ", ), )
	}
	return 
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "min_values", thrift.LIST, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:min_values: ", ), )
	}
	if  := .WriteListBegin(, thrift.STRING, len(.MinValues));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .MinValues {
		if  := .WriteBinary(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:min_values: ", ), )
	}
	return 
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "max_values", thrift.LIST, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:max_values: ", ), )
	}
	if  := .WriteListBegin(, thrift.STRING, len(.MaxValues));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .MaxValues {
		if  := .WriteBinary(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:max_values: ", ), )
	}
	return 
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "boundary_order", thrift.I32, 4);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:boundary_order: ", ), )
	}
	if  := .WriteI32(, int32(.BoundaryOrder));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.boundary_order (4) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:boundary_order: ", ), )
	}
	return 
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetNullCounts() {
		if  := .WriteFieldBegin(, "null_counts", thrift.LIST, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:null_counts: ", ), )
		}
		if  := .WriteListBegin(, thrift.I64, len(.NullCounts));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .NullCounts {
			if  := .WriteI64(, int64());  != nil {
				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:null_counts: ", ), )
		}
	}
	return 
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetRepetitionLevelHistograms() {
		if  := .WriteFieldBegin(, "repetition_level_histograms", thrift.LIST, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:repetition_level_histograms: ", ), )
		}
		if  := .WriteListBegin(, thrift.I64, len(.RepetitionLevelHistograms));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .RepetitionLevelHistograms {
			if  := .WriteI64(, int64());  != nil {
				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:repetition_level_histograms: ", ), )
		}
	}
	return 
}

func ( *ColumnIndex) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetDefinitionLevelHistograms() {
		if  := .WriteFieldBegin(, "definition_level_histograms", thrift.LIST, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:definition_level_histograms: ", ), )
		}
		if  := .WriteListBegin(, thrift.I64, len(.DefinitionLevelHistograms));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .DefinitionLevelHistograms {
			if  := .WriteI64(, int64());  != nil {
				return thrift.PrependError(fmt.Sprintf("%T. (0) field write error: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:definition_level_histograms: ", ), )
		}
	}
	return 
}

func ( *ColumnIndex) ( *ColumnIndex) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if len(.NullPages) != len(.NullPages) { return false }
	for ,  := range .NullPages {
		 := .NullPages[]
		if  !=  { return false }
	}
	if len(.MinValues) != len(.MinValues) { return false }
	for ,  := range .MinValues {
		 := .MinValues[]
		if bytes.Compare(, ) != 0 { return false }
	}
	if len(.MaxValues) != len(.MaxValues) { return false }
	for ,  := range .MaxValues {
		 := .MaxValues[]
		if bytes.Compare(, ) != 0 { return false }
	}
	if .BoundaryOrder != .BoundaryOrder { return false }
	if len(.NullCounts) != len(.NullCounts) { return false }
	for ,  := range .NullCounts {
		 := .NullCounts[]
		if  !=  { return false }
	}
	if len(.RepetitionLevelHistograms) != len(.RepetitionLevelHistograms) { return false }
	for ,  := range .RepetitionLevelHistograms {
		 := .RepetitionLevelHistograms[]
		if  !=  { return false }
	}
	if len(.DefinitionLevelHistograms) != len(.DefinitionLevelHistograms) { return false }
	for ,  := range .DefinitionLevelHistograms {
		 := .DefinitionLevelHistograms[]
		if  !=  { return false }
	}
	return true
}

func ( *ColumnIndex) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("ColumnIndex(%+v)", *)
}

func ( *ColumnIndex) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.ColumnIndex",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*ColumnIndex)(nil)

func ( *ColumnIndex) () error {
	return nil
}

// Attributes:
//  - AadPrefix: AAD prefix *
//  - AadFileUnique: Unique file identifier part of AAD suffix *
//  - SupplyAadPrefix: In files encrypted with AAD prefix without storing it,
// readers must supply the prefix *
// 
type AesGcmV1 struct {
	AadPrefix []byte `thrift:"aad_prefix,1" db:"aad_prefix" json:"aad_prefix,omitempty"`
	AadFileUnique []byte `thrift:"aad_file_unique,2" db:"aad_file_unique" json:"aad_file_unique,omitempty"`
	SupplyAadPrefix *bool `thrift:"supply_aad_prefix,3" db:"supply_aad_prefix" json:"supply_aad_prefix,omitempty"`
}

func () *AesGcmV1 {
	return &AesGcmV1{}
}

var AesGcmV1_AadPrefix_DEFAULT []byte


func ( *AesGcmV1) () []byte {
	return .AadPrefix
}

var AesGcmV1_AadFileUnique_DEFAULT []byte


func ( *AesGcmV1) () []byte {
	return .AadFileUnique
}

var AesGcmV1_SupplyAadPrefix_DEFAULT bool

func ( *AesGcmV1) () bool {
	if !.IsSetSupplyAadPrefix() {
		return AesGcmV1_SupplyAadPrefix_DEFAULT
	}
	return *.SupplyAadPrefix
}

func ( *AesGcmV1) () bool {
	return .AadPrefix != nil
}

func ( *AesGcmV1) () bool {
	return .AadFileUnique != nil
}

func ( *AesGcmV1) () bool {
	return .SupplyAadPrefix != nil
}

func ( *AesGcmV1) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRING {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRING {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.BOOL {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *AesGcmV1) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.AadPrefix = 
	}
	return nil
}

func ( *AesGcmV1) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.AadFileUnique = 
	}
	return nil
}

func ( *AesGcmV1) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.SupplyAadPrefix = &
	}
	return nil
}

func ( *AesGcmV1) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "AesGcmV1");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *AesGcmV1) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetAadPrefix() {
		if  := .WriteFieldBegin(, "aad_prefix", thrift.STRING, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:aad_prefix: ", ), )
		}
		if  := .WriteBinary(, .AadPrefix);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.aad_prefix (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:aad_prefix: ", ), )
		}
	}
	return 
}

func ( *AesGcmV1) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetAadFileUnique() {
		if  := .WriteFieldBegin(, "aad_file_unique", thrift.STRING, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:aad_file_unique: ", ), )
		}
		if  := .WriteBinary(, .AadFileUnique);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.aad_file_unique (2) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:aad_file_unique: ", ), )
		}
	}
	return 
}

func ( *AesGcmV1) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetSupplyAadPrefix() {
		if  := .WriteFieldBegin(, "supply_aad_prefix", thrift.BOOL, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:supply_aad_prefix: ", ), )
		}
		if  := .WriteBool(, bool(*.SupplyAadPrefix));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.supply_aad_prefix (3) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:supply_aad_prefix: ", ), )
		}
	}
	return 
}

func ( *AesGcmV1) ( *AesGcmV1) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if bytes.Compare(.AadPrefix, .AadPrefix) != 0 { return false }
	if bytes.Compare(.AadFileUnique, .AadFileUnique) != 0 { return false }
	if .SupplyAadPrefix != .SupplyAadPrefix {
		if .SupplyAadPrefix == nil || .SupplyAadPrefix == nil {
			return false
		}
		if (*.SupplyAadPrefix) != (*.SupplyAadPrefix) { return false }
	}
	return true
}

func ( *AesGcmV1) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("AesGcmV1(%+v)", *)
}

func ( *AesGcmV1) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.AesGcmV1",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*AesGcmV1)(nil)

func ( *AesGcmV1) () error {
	return nil
}

// Attributes:
//  - AadPrefix: AAD prefix *
//  - AadFileUnique: Unique file identifier part of AAD suffix *
//  - SupplyAadPrefix: In files encrypted with AAD prefix without storing it,
// readers must supply the prefix *
// 
type AesGcmCtrV1 struct {
	AadPrefix []byte `thrift:"aad_prefix,1" db:"aad_prefix" json:"aad_prefix,omitempty"`
	AadFileUnique []byte `thrift:"aad_file_unique,2" db:"aad_file_unique" json:"aad_file_unique,omitempty"`
	SupplyAadPrefix *bool `thrift:"supply_aad_prefix,3" db:"supply_aad_prefix" json:"supply_aad_prefix,omitempty"`
}

func () *AesGcmCtrV1 {
	return &AesGcmCtrV1{}
}

var AesGcmCtrV1_AadPrefix_DEFAULT []byte


func ( *AesGcmCtrV1) () []byte {
	return .AadPrefix
}

var AesGcmCtrV1_AadFileUnique_DEFAULT []byte


func ( *AesGcmCtrV1) () []byte {
	return .AadFileUnique
}

var AesGcmCtrV1_SupplyAadPrefix_DEFAULT bool

func ( *AesGcmCtrV1) () bool {
	if !.IsSetSupplyAadPrefix() {
		return AesGcmCtrV1_SupplyAadPrefix_DEFAULT
	}
	return *.SupplyAadPrefix
}

func ( *AesGcmCtrV1) () bool {
	return .AadPrefix != nil
}

func ( *AesGcmCtrV1) () bool {
	return .AadFileUnique != nil
}

func ( *AesGcmCtrV1) () bool {
	return .SupplyAadPrefix != nil
}

func ( *AesGcmCtrV1) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRING {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRING {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.BOOL {
				if  := .ReadField3(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *AesGcmCtrV1) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.AadPrefix = 
	}
	return nil
}

func ( *AesGcmCtrV1) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.AadFileUnique = 
	}
	return nil
}

func ( *AesGcmCtrV1) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBool();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.SupplyAadPrefix = &
	}
	return nil
}

func ( *AesGcmCtrV1) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "AesGcmCtrV1");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *AesGcmCtrV1) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetAadPrefix() {
		if  := .WriteFieldBegin(, "aad_prefix", thrift.STRING, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:aad_prefix: ", ), )
		}
		if  := .WriteBinary(, .AadPrefix);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.aad_prefix (1) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:aad_prefix: ", ), )
		}
	}
	return 
}

func ( *AesGcmCtrV1) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetAadFileUnique() {
		if  := .WriteFieldBegin(, "aad_file_unique", thrift.STRING, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:aad_file_unique: ", ), )
		}
		if  := .WriteBinary(, .AadFileUnique);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.aad_file_unique (2) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:aad_file_unique: ", ), )
		}
	}
	return 
}

func ( *AesGcmCtrV1) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetSupplyAadPrefix() {
		if  := .WriteFieldBegin(, "supply_aad_prefix", thrift.BOOL, 3);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:supply_aad_prefix: ", ), )
		}
		if  := .WriteBool(, bool(*.SupplyAadPrefix));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.supply_aad_prefix (3) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 3:supply_aad_prefix: ", ), )
		}
	}
	return 
}

func ( *AesGcmCtrV1) ( *AesGcmCtrV1) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if bytes.Compare(.AadPrefix, .AadPrefix) != 0 { return false }
	if bytes.Compare(.AadFileUnique, .AadFileUnique) != 0 { return false }
	if .SupplyAadPrefix != .SupplyAadPrefix {
		if .SupplyAadPrefix == nil || .SupplyAadPrefix == nil {
			return false
		}
		if (*.SupplyAadPrefix) != (*.SupplyAadPrefix) { return false }
	}
	return true
}

func ( *AesGcmCtrV1) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("AesGcmCtrV1(%+v)", *)
}

func ( *AesGcmCtrV1) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.AesGcmCtrV1",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*AesGcmCtrV1)(nil)

func ( *AesGcmCtrV1) () error {
	return nil
}

// Attributes:
//  - AES_GCM_V1
//  - AES_GCM_CTR_V1
// 
type EncryptionAlgorithm struct {
	AES_GCM_V1 *AesGcmV1 `thrift:"AES_GCM_V1,1" db:"AES_GCM_V1" json:"AES_GCM_V1,omitempty"`
	AES_GCM_CTR_V1 *AesGcmCtrV1 `thrift:"AES_GCM_CTR_V1,2" db:"AES_GCM_CTR_V1" json:"AES_GCM_CTR_V1,omitempty"`
}

func () *EncryptionAlgorithm {
	return &EncryptionAlgorithm{}
}

var EncryptionAlgorithm_AES_GCM_V1_DEFAULT *AesGcmV1

func ( *EncryptionAlgorithm) () *AesGcmV1 {
	if !.IsSetAES_GCM_V1() {
		return EncryptionAlgorithm_AES_GCM_V1_DEFAULT
	}
	return .AES_GCM_V1
}

var EncryptionAlgorithm_AES_GCM_CTR_V1_DEFAULT *AesGcmCtrV1

func ( *EncryptionAlgorithm) () *AesGcmCtrV1 {
	if !.IsSetAES_GCM_CTR_V1() {
		return EncryptionAlgorithm_AES_GCM_CTR_V1_DEFAULT
	}
	return .AES_GCM_CTR_V1
}

func ( *EncryptionAlgorithm) () int {
	 := 0
	if (.IsSetAES_GCM_V1()) {
		++
	}
	if (.IsSetAES_GCM_CTR_V1()) {
		++
	}
	return 

}

func ( *EncryptionAlgorithm) () bool {
	return .AES_GCM_V1 != nil
}

func ( *EncryptionAlgorithm) () bool {
	return .AES_GCM_CTR_V1 != nil
}

func ( *EncryptionAlgorithm) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}


	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRUCT {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	return nil
}

func ( *EncryptionAlgorithm) ( context.Context,  thrift.TProtocol) error {
	.AES_GCM_V1 = &AesGcmV1{}
	if  := .AES_GCM_V1.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .AES_GCM_V1), )
	}
	return nil
}

func ( *EncryptionAlgorithm) ( context.Context,  thrift.TProtocol) error {
	.AES_GCM_CTR_V1 = &AesGcmCtrV1{}
	if  := .AES_GCM_CTR_V1.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .AES_GCM_CTR_V1), )
	}
	return nil
}

func ( *EncryptionAlgorithm) ( context.Context,  thrift.TProtocol) error {
	if  := .CountSetFieldsEncryptionAlgorithm();  != 1 {
		return fmt.Errorf("%T write union: exactly one field must be set (%d set)", , )
	}
	if  := .WriteStructBegin(, "EncryptionAlgorithm");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *EncryptionAlgorithm) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetAES_GCM_V1() {
		if  := .WriteFieldBegin(, "AES_GCM_V1", thrift.STRUCT, 1);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:AES_GCM_V1: ", ), )
		}
		if  := .AES_GCM_V1.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .AES_GCM_V1), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 1:AES_GCM_V1: ", ), )
		}
	}
	return 
}

func ( *EncryptionAlgorithm) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetAES_GCM_CTR_V1() {
		if  := .WriteFieldBegin(, "AES_GCM_CTR_V1", thrift.STRUCT, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:AES_GCM_CTR_V1: ", ), )
		}
		if  := .AES_GCM_CTR_V1.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .AES_GCM_CTR_V1), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:AES_GCM_CTR_V1: ", ), )
		}
	}
	return 
}

func ( *EncryptionAlgorithm) ( *EncryptionAlgorithm) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.AES_GCM_V1.Equals(.AES_GCM_V1) { return false }
	if !.AES_GCM_CTR_V1.Equals(.AES_GCM_CTR_V1) { return false }
	return true
}

func ( *EncryptionAlgorithm) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("EncryptionAlgorithm(%+v)", *)
}

func ( *EncryptionAlgorithm) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.EncryptionAlgorithm",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*EncryptionAlgorithm)(nil)

func ( *EncryptionAlgorithm) () error {
	return nil
}

// Description for file metadata
// 
// Attributes:
//  - Version: Version of this file *
//  - Schema: Parquet schema for this file.  This schema contains metadata for all the columns.
// The schema is represented as a tree with a single root.  The nodes of the tree
// are flattened to a list by doing a depth-first traversal.
// The column metadata contains the path in the schema for that column which can be
// used to map columns to nodes in the schema.
// The first element is the root *
//  - NumRows: Number of rows in this file *
//  - RowGroups: Row groups in this file *
//  - KeyValueMetadata: Optional key/value metadata *
//  - CreatedBy: String for application that wrote this file.  This should be in the format
// <Application> version <App Version> (build <App Build Hash>).
// e.g. impala version 1.0 (build 6cf94d29b2b7115df4de2c06e2ab4326d721eb55)
// 
//  - ColumnOrders: Sort order used for the min_value and max_value fields in the Statistics
// objects and the min_values and max_values fields in the ColumnIndex
// objects of each column in this file. Sort orders are listed in the order
// matching the columns in the schema. The indexes are not necessary the same
// though, because only leaf nodes of the schema are represented in the list
// of sort orders.
// 
// Without column_orders, the meaning of the min_value and max_value fields
// in the Statistics object and the ColumnIndex object is undefined. To ensure
// well-defined behaviour, if these fields are written to a Parquet file,
// column_orders must be written as well.
// 
// The obsolete min and max fields in the Statistics object are always sorted
// by signed comparison regardless of column_orders.
//  - EncryptionAlgorithm: Encryption algorithm. This field is set only in encrypted files
// with plaintext footer. Files with encrypted footer store algorithm id
// in FileCryptoMetaData structure.
//  - FooterSigningKeyMetadata: Retrieval metadata of key used for signing the footer.
// Used only in encrypted files with plaintext footer.
// 
type FileMetaData struct {
	Version int32 `thrift:"version,1,required" db:"version" json:"version"`
	Schema []*SchemaElement `thrift:"schema,2,required" db:"schema" json:"schema"`
	NumRows int64 `thrift:"num_rows,3,required" db:"num_rows" json:"num_rows"`
	RowGroups []*RowGroup `thrift:"row_groups,4,required" db:"row_groups" json:"row_groups"`
	KeyValueMetadata []*KeyValue `thrift:"key_value_metadata,5" db:"key_value_metadata" json:"key_value_metadata,omitempty"`
	CreatedBy *string `thrift:"created_by,6" db:"created_by" json:"created_by,omitempty"`
	ColumnOrders []*ColumnOrder `thrift:"column_orders,7" db:"column_orders" json:"column_orders,omitempty"`
	EncryptionAlgorithm *EncryptionAlgorithm `thrift:"encryption_algorithm,8" db:"encryption_algorithm" json:"encryption_algorithm,omitempty"`
	FooterSigningKeyMetadata []byte `thrift:"footer_signing_key_metadata,9" db:"footer_signing_key_metadata" json:"footer_signing_key_metadata,omitempty"`
}

func () *FileMetaData {
	return &FileMetaData{}
}



func ( *FileMetaData) () int32 {
	return .Version
}



func ( *FileMetaData) () []*SchemaElement {
	return .Schema
}



func ( *FileMetaData) () int64 {
	return .NumRows
}



func ( *FileMetaData) () []*RowGroup {
	return .RowGroups
}

var FileMetaData_KeyValueMetadata_DEFAULT []*KeyValue


func ( *FileMetaData) () []*KeyValue {
	return .KeyValueMetadata
}

var FileMetaData_CreatedBy_DEFAULT string

func ( *FileMetaData) () string {
	if !.IsSetCreatedBy() {
		return FileMetaData_CreatedBy_DEFAULT
	}
	return *.CreatedBy
}

var FileMetaData_ColumnOrders_DEFAULT []*ColumnOrder


func ( *FileMetaData) () []*ColumnOrder {
	return .ColumnOrders
}

var FileMetaData_EncryptionAlgorithm_DEFAULT *EncryptionAlgorithm

func ( *FileMetaData) () *EncryptionAlgorithm {
	if !.IsSetEncryptionAlgorithm() {
		return FileMetaData_EncryptionAlgorithm_DEFAULT
	}
	return .EncryptionAlgorithm
}

var FileMetaData_FooterSigningKeyMetadata_DEFAULT []byte


func ( *FileMetaData) () []byte {
	return .FooterSigningKeyMetadata
}

func ( *FileMetaData) () bool {
	return .KeyValueMetadata != nil
}

func ( *FileMetaData) () bool {
	return .CreatedBy != nil
}

func ( *FileMetaData) () bool {
	return .ColumnOrders != nil
}

func ( *FileMetaData) () bool {
	return .EncryptionAlgorithm != nil
}

func ( *FileMetaData) () bool {
	return .FooterSigningKeyMetadata != nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;
	var  bool = false;
	var  bool = false;
	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.I32 {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.LIST {
				if  := .ReadField2(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 3:
			if  == thrift.I64 {
				if  := .ReadField3(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 4:
			if  == thrift.LIST {
				if  := .ReadField4(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 5:
			if  == thrift.LIST {
				if  := .ReadField5(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 6:
			if  == thrift.STRING {
				if  := .ReadField6(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 7:
			if  == thrift.LIST {
				if  := .ReadField7(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 8:
			if  == thrift.STRUCT {
				if  := .ReadField8(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 9:
			if  == thrift.STRING {
				if  := .ReadField9(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Version is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field Schema is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field NumRows is not set"));
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field RowGroups is not set"));
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI32();  != nil {
		return thrift.PrependError("error reading field 1: ", )
	} else {
		.Version = 
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*SchemaElement, 0, )
	.Schema = 
	for  := 0;  < ; ++ {
		 := &SchemaElement{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.Schema = append(.Schema, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadI64();  != nil {
		return thrift.PrependError("error reading field 3: ", )
	} else {
		.NumRows = 
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*RowGroup, 0, )
	.RowGroups = 
	for  := 0;  < ; ++ {
		 := &RowGroup{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.RowGroups = append(.RowGroups, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*KeyValue, 0, )
	.KeyValueMetadata = 
	for  := 0;  < ; ++ {
		 := &KeyValue{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.KeyValueMetadata = append(.KeyValueMetadata, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadString();  != nil {
		return thrift.PrependError("error reading field 6: ", )
	} else {
		.CreatedBy = &
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	, ,  := .ReadListBegin()
	if  != nil {
		return thrift.PrependError("error reading list begin: ", )
	}
	 := make([]*ColumnOrder, 0, )
	.ColumnOrders = 
	for  := 0;  < ; ++ {
		 := &ColumnOrder{}
		if  := .Read(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", ), )
		}
		.ColumnOrders = append(.ColumnOrders, )
	}
	if  := .ReadListEnd();  != nil {
		return thrift.PrependError("error reading list end: ", )
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	.EncryptionAlgorithm = &EncryptionAlgorithm{}
	if  := .EncryptionAlgorithm.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .EncryptionAlgorithm), )
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 9: ", )
	} else {
		.FooterSigningKeyMetadata = 
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "FileMetaData");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
		if  := .writeField3(, );  != nil { return  }
		if  := .writeField4(, );  != nil { return  }
		if  := .writeField5(, );  != nil { return  }
		if  := .writeField6(, );  != nil { return  }
		if  := .writeField7(, );  != nil { return  }
		if  := .writeField8(, );  != nil { return  }
		if  := .writeField9(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "version", thrift.I32, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:version: ", ), )
	}
	if  := .WriteI32(, int32(.Version));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.version (1) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:version: ", ), )
	}
	return 
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "schema", thrift.LIST, 2);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:schema: ", ), )
	}
	if  := .WriteListBegin(, thrift.STRUCT, len(.Schema));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .Schema {
		if  := .Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 2:schema: ", ), )
	}
	return 
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "num_rows", thrift.I64, 3);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 3:num_rows: ", ), )
	}
	if  := .WriteI64(, int64(.NumRows));  != nil {
		return thrift.PrependError(fmt.Sprintf("%T.num_rows (3) field write error: ", ), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 3:num_rows: ", ), )
	}
	return 
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "row_groups", thrift.LIST, 4);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 4:row_groups: ", ), )
	}
	if  := .WriteListBegin(, thrift.STRUCT, len(.RowGroups));  != nil {
		return thrift.PrependError("error writing list begin: ", )
	}
	for ,  := range .RowGroups {
		if  := .Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
		}
	}
	if  := .WriteListEnd();  != nil {
		return thrift.PrependError("error writing list end: ", )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 4:row_groups: ", ), )
	}
	return 
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetKeyValueMetadata() {
		if  := .WriteFieldBegin(, "key_value_metadata", thrift.LIST, 5);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 5:key_value_metadata: ", ), )
		}
		if  := .WriteListBegin(, thrift.STRUCT, len(.KeyValueMetadata));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .KeyValueMetadata {
			if  := .Write(, );  != nil {
				return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 5:key_value_metadata: ", ), )
		}
	}
	return 
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetCreatedBy() {
		if  := .WriteFieldBegin(, "created_by", thrift.STRING, 6);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 6:created_by: ", ), )
		}
		if  := .WriteString(, string(*.CreatedBy));  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.created_by (6) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 6:created_by: ", ), )
		}
	}
	return 
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetColumnOrders() {
		if  := .WriteFieldBegin(, "column_orders", thrift.LIST, 7);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 7:column_orders: ", ), )
		}
		if  := .WriteListBegin(, thrift.STRUCT, len(.ColumnOrders));  != nil {
			return thrift.PrependError("error writing list begin: ", )
		}
		for ,  := range .ColumnOrders {
			if  := .Write(, );  != nil {
				return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", ), )
			}
		}
		if  := .WriteListEnd();  != nil {
			return thrift.PrependError("error writing list end: ", )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 7:column_orders: ", ), )
		}
	}
	return 
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetEncryptionAlgorithm() {
		if  := .WriteFieldBegin(, "encryption_algorithm", thrift.STRUCT, 8);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 8:encryption_algorithm: ", ), )
		}
		if  := .EncryptionAlgorithm.Write(, );  != nil {
			return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .EncryptionAlgorithm), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 8:encryption_algorithm: ", ), )
		}
	}
	return 
}

func ( *FileMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetFooterSigningKeyMetadata() {
		if  := .WriteFieldBegin(, "footer_signing_key_metadata", thrift.STRING, 9);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 9:footer_signing_key_metadata: ", ), )
		}
		if  := .WriteBinary(, .FooterSigningKeyMetadata);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.footer_signing_key_metadata (9) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 9:footer_signing_key_metadata: ", ), )
		}
	}
	return 
}

func ( *FileMetaData) ( *FileMetaData) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if .Version != .Version { return false }
	if len(.Schema) != len(.Schema) { return false }
	for ,  := range .Schema {
		 := .Schema[]
		if !.Equals() { return false }
	}
	if .NumRows != .NumRows { return false }
	if len(.RowGroups) != len(.RowGroups) { return false }
	for ,  := range .RowGroups {
		 := .RowGroups[]
		if !.Equals() { return false }
	}
	if len(.KeyValueMetadata) != len(.KeyValueMetadata) { return false }
	for ,  := range .KeyValueMetadata {
		 := .KeyValueMetadata[]
		if !.Equals() { return false }
	}
	if .CreatedBy != .CreatedBy {
		if .CreatedBy == nil || .CreatedBy == nil {
			return false
		}
		if (*.CreatedBy) != (*.CreatedBy) { return false }
	}
	if len(.ColumnOrders) != len(.ColumnOrders) { return false }
	for ,  := range .ColumnOrders {
		 := .ColumnOrders[]
		if !.Equals() { return false }
	}
	if !.EncryptionAlgorithm.Equals(.EncryptionAlgorithm) { return false }
	if bytes.Compare(.FooterSigningKeyMetadata, .FooterSigningKeyMetadata) != 0 { return false }
	return true
}

func ( *FileMetaData) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("FileMetaData(%+v)", *)
}

func ( *FileMetaData) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.FileMetaData",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*FileMetaData)(nil)

func ( *FileMetaData) () error {
	return nil
}

// Crypto metadata for files with encrypted footer *
// 
// Attributes:
//  - EncryptionAlgorithm: Encryption algorithm. This field is only used for files
// with encrypted footer. Files with plaintext footer store algorithm id
// inside footer (FileMetaData structure).
//  - KeyMetadata: Retrieval metadata of key used for encryption of footer,
// and (possibly) columns *
// 
type FileCryptoMetaData struct {
	EncryptionAlgorithm *EncryptionAlgorithm `thrift:"encryption_algorithm,1,required" db:"encryption_algorithm" json:"encryption_algorithm"`
	KeyMetadata []byte `thrift:"key_metadata,2" db:"key_metadata" json:"key_metadata,omitempty"`
}

func () *FileCryptoMetaData {
	return &FileCryptoMetaData{}
}

var FileCryptoMetaData_EncryptionAlgorithm_DEFAULT *EncryptionAlgorithm

func ( *FileCryptoMetaData) () *EncryptionAlgorithm {
	if !.IsSetEncryptionAlgorithm() {
		return FileCryptoMetaData_EncryptionAlgorithm_DEFAULT
	}
	return .EncryptionAlgorithm
}

var FileCryptoMetaData_KeyMetadata_DEFAULT []byte


func ( *FileCryptoMetaData) () []byte {
	return .KeyMetadata
}

func ( *FileCryptoMetaData) () bool {
	return .EncryptionAlgorithm != nil
}

func ( *FileCryptoMetaData) () bool {
	return .KeyMetadata != nil
}

func ( *FileCryptoMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadStructBegin();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read error: ", ), )
	}

	var  bool = false;

	for {
		, , ,  := .ReadFieldBegin()
		if  != nil {
			return thrift.PrependError(fmt.Sprintf("%T field %d read error: ", , ), )
		}
		if  == thrift.STOP {
			break
		}
		switch  {
		case 1:
			if  == thrift.STRUCT {
				if  := .ReadField1(, );  != nil {
					return 
				}
				 = true
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		case 2:
			if  == thrift.STRING {
				if  := .ReadField2(, );  != nil {
					return 
				}
			} else {
				if  := .Skip(, );  != nil {
					return 
				}
			}
		default:
			if  := .Skip(, );  != nil {
				return 
			}
		}
		if  := .ReadFieldEnd();  != nil {
			return 
		}
	}
	if  := .ReadStructEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T read struct end error: ", ), )
	}
	if !{
		return thrift.NewTProtocolExceptionWithType(thrift.INVALID_DATA, fmt.Errorf("Required field EncryptionAlgorithm is not set"));
	}
	return nil
}

func ( *FileCryptoMetaData) ( context.Context,  thrift.TProtocol) error {
	.EncryptionAlgorithm = &EncryptionAlgorithm{}
	if  := .EncryptionAlgorithm.Read(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error reading struct: ", .EncryptionAlgorithm), )
	}
	return nil
}

func ( *FileCryptoMetaData) ( context.Context,  thrift.TProtocol) error {
	if ,  := .ReadBinary();  != nil {
		return thrift.PrependError("error reading field 2: ", )
	} else {
		.KeyMetadata = 
	}
	return nil
}

func ( *FileCryptoMetaData) ( context.Context,  thrift.TProtocol) error {
	if  := .WriteStructBegin(, "FileCryptoMetaData");  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write struct begin error: ", ), )
	}
	if  != nil {
		if  := .writeField1(, );  != nil { return  }
		if  := .writeField2(, );  != nil { return  }
	}
	if  := .WriteFieldStop();  != nil {
		return thrift.PrependError("write field stop error: ", )
	}
	if  := .WriteStructEnd();  != nil {
		return thrift.PrependError("write struct stop error: ", )
	}
	return nil
}

func ( *FileCryptoMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if  := .WriteFieldBegin(, "encryption_algorithm", thrift.STRUCT, 1);  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field begin error 1:encryption_algorithm: ", ), )
	}
	if  := .EncryptionAlgorithm.Write(, );  != nil {
		return thrift.PrependError(fmt.Sprintf("%T error writing struct: ", .EncryptionAlgorithm), )
	}
	if  := .WriteFieldEnd();  != nil {
		return thrift.PrependError(fmt.Sprintf("%T write field end error 1:encryption_algorithm: ", ), )
	}
	return 
}

func ( *FileCryptoMetaData) ( context.Context,  thrift.TProtocol) ( error) {
	if .IsSetKeyMetadata() {
		if  := .WriteFieldBegin(, "key_metadata", thrift.STRING, 2);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field begin error 2:key_metadata: ", ), )
		}
		if  := .WriteBinary(, .KeyMetadata);  != nil {
			return thrift.PrependError(fmt.Sprintf("%T.key_metadata (2) field write error: ", ), )
		}
		if  := .WriteFieldEnd();  != nil {
			return thrift.PrependError(fmt.Sprintf("%T write field end error 2:key_metadata: ", ), )
		}
	}
	return 
}

func ( *FileCryptoMetaData) ( *FileCryptoMetaData) bool {
	if  ==  {
		return true
	} else if  == nil ||  == nil {
		return false
	}
	if !.EncryptionAlgorithm.Equals(.EncryptionAlgorithm) { return false }
	if bytes.Compare(.KeyMetadata, .KeyMetadata) != 0 { return false }
	return true
}

func ( *FileCryptoMetaData) () string {
	if  == nil {
		return "<nil>"
	}
	return fmt.Sprintf("FileCryptoMetaData(%+v)", *)
}

func ( *FileCryptoMetaData) () slog.Value {
	if  == nil {
		return slog.AnyValue(nil)
	}
	 := thrift.SlogTStructWrapper{
		Type: "*parquet.FileCryptoMetaData",
		Value: ,
	}
	return slog.AnyValue()
}

var _ slog.LogValuer = (*FileCryptoMetaData)(nil)

func ( *FileCryptoMetaData) () error {
	return nil
}