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

Reply via email to