Hi, Consider a REST catalog and a user calls "CREATE OR REPLACE <table>" command. When processing the command, engines will usually initiate a "createOrReplace" transaction and add metadata, such as the properties of a new table.
Users expect a table to be replaced with a new one if it exists, including properties. However, I observe the following: 1. RESTSessionCatalog loads previous table metadata, adds new properties (MetadataUpdate.SetProperties), and invokes the backend 2. The backend (e.g., Polaris) will typically invoke "CatalogHandler.updateTable." There, the previous table state, including its properties, is loaded 3. Finally, metadata updates are applied, and old table properties are merged with new ones. That is, if the old table has properties [a=1, b=2], and the new table has properties [b=3, c=4], then the final properties would be [a=1, b=3, c=4], while the user expects [b=3, c=4]. It looks like a bug because the user expects complete property replacement instead of a merge. Shall we explicitly clear all previous properties in RESTSessionCatalog.Builder.replaceTransaction? Regards, Vladimir. -- *Vladimir Ozerov* Founder querifylabs.com