kevinjqliu opened a new issue, #919: URL: https://github.com/apache/iceberg-python/issues/919
### Apache Iceberg version None ### Please describe the bug 🐞 ## Issue As shown in #895, setting a property to python's boolean value (`True`/`False`) will end up saving the boolean value as the string value `"True"`/`"False"`. This is because the property dictionary's values are converted to string by [`transform_dict_value_to_str` ](https://github.com/kevinjqliu/iceberg-python/blob/428b894aacb107547ba41433b4b6f37e1ad1914a/pyiceberg/types.py#L65-L70) implemented in #504. So `True` -> `"True"` ## Fix I can see this as a common footgun. Let's add a fix so that any boolean in the properties dictionary values are converted to its lowercase string. ## Example As a concrete example: ``` catalog.create_table( "default.example", schema=Schema( NestedField(1, "created_at", TimestampType(), required=True) ), properties={"write.parquet.bloom-filter-enabled.column.material_id": True}, ) ``` Will set the property as ``` {"write.parquet.bloom-filter-enabled.column.material_id": "True"} ``` But the expected value should be ``` {"write.parquet.bloom-filter-enabled.column.material_id": "true"} ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org