in crates/catalog/glue/src/schema.rs [229:339]
fn test_schema_with_simple_fields() -> Result<()> {
let record = r#"{
"type": "struct",
"schema-id": 1,
"fields": [
{
"id": 1,
"name": "c1",
"required": true,
"type": "boolean"
},
{
"id": 2,
"name": "c2",
"required": true,
"type": "int"
},
{
"id": 3,
"name": "c3",
"required": true,
"type": "long"
},
{
"id": 4,
"name": "c4",
"required": true,
"type": "float"
},
{
"id": 5,
"name": "c5",
"required": true,
"type": "double"
},
{
"id": 6,
"name": "c6",
"required": true,
"type": "decimal(2,2)"
},
{
"id": 7,
"name": "c7",
"required": true,
"type": "date"
},
{
"id": 8,
"name": "c8",
"required": true,
"type": "time"
},
{
"id": 9,
"name": "c9",
"required": true,
"type": "timestamp"
},
{
"id": 10,
"name": "c10",
"required": true,
"type": "string"
},
{
"id": 11,
"name": "c11",
"required": true,
"type": "uuid"
},
{
"id": 12,
"name": "c12",
"required": true,
"type": "fixed[4]"
},
{
"id": 13,
"name": "c13",
"required": true,
"type": "binary"
}
]
}"#;
let schema = serde_json::from_str::<Schema>(record)?;
let metadata = create_metadata(schema)?;
let result = GlueSchemaBuilder::from_iceberg(&metadata)?.build();
let expected = vec![
create_column("c1", "boolean", "1")?,
create_column("c2", "int", "2")?,
create_column("c3", "bigint", "3")?,
create_column("c4", "float", "4")?,
create_column("c5", "double", "5")?,
create_column("c6", "decimal(2,2)", "6")?,
create_column("c7", "date", "7")?,
create_column("c8", "string", "8")?,
create_column("c9", "timestamp", "9")?,
create_column("c10", "string", "10")?,
create_column("c11", "string", "11")?,
create_column("c12", "binary", "12")?,
create_column("c13", "binary", "13")?,
];
assert_eq!(result, expected);
Ok(())
}