1
1
2
- export interface IcebergMetadata {
2
+ export interface TableMetadata {
3
3
'format-version' : number
4
4
'table-uuid' : string
5
5
location : string
@@ -11,31 +11,34 @@ export interface IcebergMetadata {
11
11
'default-spec-id' : number
12
12
'partition-specs' : PartitionSpec [ ]
13
13
'last-partition-id' : number
14
- 'default-sort-order-id' : number
15
- 'sort-orders' : SortOrder [ ]
16
- properties : object
14
+ properties : Record < string , string >
17
15
'current-snapshot-id' : number
18
- refs : object
19
16
snapshots : Snapshot [ ]
20
- statistics : TableStatistics [ ]
21
17
'snapshot-log' : SnapshotLog [ ]
22
18
'metadata-log' : MetadataLog [ ]
19
+ 'sort-orders' : SortOrder [ ]
20
+ 'default-sort-order-id' : number
21
+ refs : object
22
+ statistics : TableStatistics [ ]
23
+ 'partition-statistics' ?: PartitionStatistics [ ]
24
+ 'next-row-id' ?: bigint
23
25
}
24
26
25
27
export interface Schema {
26
- type : string
28
+ type : 'struct'
27
29
'schema-id' : number
30
+ 'identifier-field-ids' ?: number [ ]
28
31
fields : Field [ ]
29
32
}
30
33
31
34
interface Field {
32
35
id : number
33
36
name : string
34
37
required : boolean
35
- type : string
38
+ type : string // TODO
36
39
doc ?: string
37
- 'initial-default' : string
38
- 'write-default' : string
40
+ 'initial-default' : any
41
+ 'write-default' : any
39
42
}
40
43
41
44
export interface PartitionSpec {
@@ -56,20 +59,34 @@ export type PartitionTransform =
56
59
'year' |
57
60
'month' |
58
61
'day' |
59
- 'hour'
62
+ 'hour' |
63
+ 'void'
64
+ interface PartitionStatistics {
65
+ 'snapshot-id' : bigint
66
+ 'statistics-path' : string
67
+ 'file-size-in-bytes' : bigint
68
+ }
60
69
61
70
interface SortOrder {
62
71
'order-id' : number
63
- 'fields' : unknown [ ]
72
+ 'fields' : SortField [ ]
73
+ }
74
+ interface SortField {
75
+ transform : string
76
+ 'source-id' ?: number
77
+ 'source-ids' ?: number [ ] // V3
78
+ 'direction' : 'asc' | 'desc'
79
+ 'null-order' : 'nulls-first' | 'nulls-last'
64
80
}
65
81
66
82
export interface Snapshot {
67
- 'sequence-number' : number
68
83
'snapshot-id' : number
84
+ 'parent-snapshot-id' ?: number
85
+ 'sequence-number' : number
69
86
'timestamp-ms' : number
70
87
summary : {
71
88
operation : string
72
- 'spark.app.id' : string
89
+ // 'spark.app.id'? : string
73
90
'added-data-files' : string
74
91
'added-records' : string
75
92
'added-files-size' : string
@@ -111,13 +128,15 @@ export interface Manifest {
111
128
sequence_number ?: bigint
112
129
min_sequence_number ?: bigint
113
130
added_snapshot_id : bigint
114
- added_data_files_count : number
115
- existing_data_files_count : number
116
- deleted_data_files_count : number
131
+ added_files_count : number
132
+ existing_files_count : number
133
+ deleted_files_count : number
117
134
added_rows_count : bigint
118
135
existing_rows_count : bigint
119
136
deleted_rows_count : bigint
120
137
partitions ?: FieldSummary [ ]
138
+ // key_metadata?: unknown
139
+ first_row_id ?: bigint
121
140
}
122
141
123
142
export interface ManifestEntry {
@@ -130,18 +149,25 @@ export interface ManifestEntry {
130
149
131
150
interface FieldSummary {
132
151
'contains-null' : boolean
152
+ 'contains-nan' ?: boolean
153
+ 'lower-bound' ?: unknown
154
+ 'upper-bound' ?: unknown
133
155
}
134
156
135
157
export interface DataFile {
136
158
content : 0 | 1 | 2 // 0=data, 1=position_delete, 2=equality_delete
137
159
file_path : string
138
160
file_format : string
139
- partition : Record < number , PartitionSpec > // indexed by field id
161
+ partition : Record < number , unknown > // indexed by field id
140
162
record_count : bigint
141
163
file_size_in_bytes : bigint
142
164
split_offsets : bigint [ ]
143
165
equality_ids ?: number [ ]
144
- sort_order_id : number
166
+ sort_order_id ?: number
167
+ first_row_id ?: bigint
168
+ referenced_data_file ?: string
169
+ content_offset ?: bigint
170
+ content_size_in_bytes ?: bigint
145
171
}
146
172
147
173
export interface FilePositionDelete {
0 commit comments