Skip to content

Commit ac2c516

Browse files
author
AWS
committed
Amazon S3 Tables Update: S3 Tables now supports nested types when creating tables. Users can define complex column schemas using struct, list, and map types. These types can be composed together to model complex, hierarchical data structures within table schemas.
1 parent b3b9d7b commit ac2c516

File tree

2 files changed

+88
-2
lines changed

2 files changed

+88
-2
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "feature",
3+
"category": "Amazon S3 Tables",
4+
"contributor": "",
5+
"description": "S3 Tables now supports nested types when creating tables. Users can define complex column schemas using struct, list, and map types. These types can be composed together to model complex, hierarchical data structures within table schemas."
6+
}

services/s3tables/src/main/resources/codegen-resources/service-2.json

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1335,6 +1335,11 @@
13351335
}
13361336
}
13371337
},
1338+
"Document":{
1339+
"type":"structure",
1340+
"members":{},
1341+
"document":true
1342+
},
13381343
"EncryptionConfiguration":{
13391344
"type":"structure",
13401345
"required":["sseAlgorithm"],
@@ -2136,11 +2141,14 @@
21362141
},
21372142
"IcebergMetadata":{
21382143
"type":"structure",
2139-
"required":["schema"],
21402144
"members":{
21412145
"schema":{
21422146
"shape":"IcebergSchema",
2143-
"documentation":"<p>The schema for an Iceberg table.</p>"
2147+
"documentation":"<p>The schema for an Iceberg table. Use this property to define table schemas with primitive types only. For schemas that include nested or complex types such as <code>struct</code>, <code>list</code>, or <code>map</code>, use <code>schemaV2</code> instead.</p>"
2148+
},
2149+
"schemaV2":{
2150+
"shape":"IcebergSchemaV2",
2151+
"documentation":"<p>The schema for an Iceberg table using the V2 format. Use this property to define table schemas that include nested or complex data types such as <code>struct</code>, <code>list</code>, or <code>map</code>, in addition to primitive types. For schemas with only primitive types, you can use either <code>schema</code> or <code>schemaV2</code>.</p>"
21442152
},
21452153
"partitionSpec":{
21462154
"shape":"IcebergPartitionSpec",
@@ -2224,6 +2232,34 @@
22242232
},
22252233
"documentation":"<p>Contains details about the schema for an Iceberg table.</p>"
22262234
},
2235+
"IcebergSchemaV2":{
2236+
"type":"structure",
2237+
"required":[
2238+
"type",
2239+
"fields"
2240+
],
2241+
"members":{
2242+
"type":{
2243+
"shape":"SchemaV2FieldType",
2244+
"documentation":"<p>The type of the top-level schema, which is always a <code>struct</code> type as defined in the <a href=\"https://iceberg.apache.org/spec/#schemas-and-data-types\">Apache Iceberg specification</a>. This value must be <code>struct</code>.</p>"
2245+
},
2246+
"fields":{
2247+
"shape":"SchemaV2FieldList",
2248+
"documentation":"<p>The schema fields for the table. Each field defines a column in the table, including its name, type, and whether it is required.</p>"
2249+
},
2250+
"schemaId":{
2251+
"shape":"Integer",
2252+
"documentation":"<p>An optional unique identifier for the schema. Schema IDs are used by Apache Iceberg to track schema evolution.</p>",
2253+
"locationName":"schema-id"
2254+
},
2255+
"identifierFieldIds":{
2256+
"shape":"IntegerList",
2257+
"documentation":"<p>A list of field IDs that are used as the identifier fields for the table. Identifier fields uniquely identify a row in the table.</p>",
2258+
"locationName":"identifier-field-ids"
2259+
}
2260+
},
2261+
"documentation":"<p>Contains details about the schema for an Iceberg table using the V2 format. This schema format supports nested and complex data types such as <code>struct</code>, <code>list</code>, and <code>map</code>, in addition to primitive types.</p>"
2262+
},
22272263
"IcebergSnapshotManagementSettings":{
22282264
"type":"structure",
22292265
"members":{
@@ -2316,6 +2352,10 @@
23162352
"type":"integer",
23172353
"box":true
23182354
},
2355+
"IntegerList":{
2356+
"type":"list",
2357+
"member":{"shape":"Integer"}
2358+
},
23192359
"InternalServerErrorException":{
23202360
"type":"structure",
23212361
"members":{
@@ -3091,6 +3131,46 @@
30913131
"type":"list",
30923132
"member":{"shape":"SchemaField"}
30933133
},
3134+
"SchemaV2Field":{
3135+
"type":"structure",
3136+
"required":[
3137+
"id",
3138+
"name",
3139+
"type",
3140+
"required"
3141+
],
3142+
"members":{
3143+
"id":{
3144+
"shape":"Integer",
3145+
"documentation":"<p>The unique identifier for the schema field. Field IDs are used by Apache Iceberg to track schema evolution and maintain compatibility across schema changes.</p>"
3146+
},
3147+
"name":{
3148+
"shape":"String",
3149+
"documentation":"<p>The name of the field.</p>"
3150+
},
3151+
"type":{
3152+
"shape":"Document",
3153+
"documentation":"<p>The data type of the field. This can be a primitive type string such as <code>boolean</code>, <code>int</code>, <code>long</code>, <code>float</code>, <code>double</code>, <code>string</code>, <code>binary</code>, <code>date</code>, <code>timestamp</code>, or <code>timestamptz</code>, or a complex type represented as a JSON object for nested types such as <code>struct</code>, <code>list</code>, or <code>map</code>. For more information, see the <a href=\"https://iceberg.apache.org/spec/#schemas-and-data-types\">Apache Iceberg schemas and data types documentation</a>.</p>"
3154+
},
3155+
"required":{
3156+
"shape":"Boolean",
3157+
"documentation":"<p>A Boolean value that specifies whether values are required for each row in this field. If this is <code>true</code>, the field does not allow null values.</p>"
3158+
},
3159+
"doc":{
3160+
"shape":"String",
3161+
"documentation":"<p>An optional description of the field.</p>"
3162+
}
3163+
},
3164+
"documentation":"<p>Contains details about a schema field in the V2 format. This field format supports nested and complex data types such as <code>struct</code>, <code>list</code>, and <code>map</code>, in addition to primitive types.</p>"
3165+
},
3166+
"SchemaV2FieldList":{
3167+
"type":"list",
3168+
"member":{"shape":"SchemaV2Field"}
3169+
},
3170+
"SchemaV2FieldType":{
3171+
"type":"string",
3172+
"enum":["struct"]
3173+
},
30943174
"StorageClass":{
30953175
"type":"string",
30963176
"enum":[

0 commit comments

Comments
 (0)