@@ -108,19 +108,7 @@ private PartitionStatsHandler() {}
108108 @ Deprecated
109109 public static Schema schema (StructType unifiedPartitionType ) {
110110 Preconditions .checkState (!unifiedPartitionType .fields ().isEmpty (), "Table must be partitioned" );
111- return new Schema (
112- NestedField .required (PARTITION_FIELD_ID , PARTITION_FIELD_NAME , unifiedPartitionType ),
113- SPEC_ID ,
114- DATA_RECORD_COUNT ,
115- DATA_FILE_COUNT ,
116- TOTAL_DATA_FILE_SIZE_IN_BYTES ,
117- POSITION_DELETE_RECORD_COUNT ,
118- POSITION_DELETE_FILE_COUNT ,
119- EQUALITY_DELETE_RECORD_COUNT ,
120- EQUALITY_DELETE_FILE_COUNT ,
121- TOTAL_RECORD_COUNT ,
122- LAST_UPDATED_AT ,
123- LAST_UPDATED_SNAPSHOT_ID );
111+ return v2Schema (unifiedPartitionType );
124112 }
125113
126114 /**
@@ -133,11 +121,35 @@ public static Schema schema(StructType unifiedPartitionType) {
133121 */
134122 public static Schema schema (StructType unifiedPartitionType , int formatVersion ) {
135123 Preconditions .checkState (!unifiedPartitionType .fields ().isEmpty (), "Table must be partitioned" );
124+ Preconditions .checkState (
125+ formatVersion > 0 && formatVersion <= TableMetadata .SUPPORTED_TABLE_FORMAT_VERSION ,
126+ "Invalid format version: %d" ,
127+ formatVersion );
136128
137129 if (formatVersion <= 2 ) {
138- return schema (unifiedPartitionType );
130+ return v2Schema (unifiedPartitionType );
139131 }
140132
133+ return v3Schema (unifiedPartitionType );
134+ }
135+
136+ private static Schema v2Schema (StructType unifiedPartitionType ) {
137+ return new Schema (
138+ NestedField .required (PARTITION_FIELD_ID , PARTITION_FIELD_NAME , unifiedPartitionType ),
139+ SPEC_ID ,
140+ DATA_RECORD_COUNT ,
141+ DATA_FILE_COUNT ,
142+ TOTAL_DATA_FILE_SIZE_IN_BYTES ,
143+ POSITION_DELETE_RECORD_COUNT ,
144+ POSITION_DELETE_FILE_COUNT ,
145+ EQUALITY_DELETE_RECORD_COUNT ,
146+ EQUALITY_DELETE_FILE_COUNT ,
147+ TOTAL_RECORD_COUNT ,
148+ LAST_UPDATED_AT ,
149+ LAST_UPDATED_SNAPSHOT_ID );
150+ }
151+
152+ private static Schema v3Schema (StructType unifiedPartitionType ) {
141153 return new Schema (
142154 NestedField .required (PARTITION_FIELD_ID , PARTITION_FIELD_NAME , unifiedPartitionType ),
143155 SPEC_ID ,
0 commit comments