>
> Spec is an interesting topic we did not discuss. Robert, how do you
> envision this to be used?
> In my mind, if a new table format v3 is launched, there are 2 approaches
> we can go with, taking CreateTable as an example:
> (1) increment the related operation version, which means that POST
> /v2/{prefix}/namespaces/{ns}/tables will be created and allow creating
> tables in the v3 version.
> (2) update the existing table metadata model to support both v2 and v3
> fields, and the server enforces the payload differently based on the
> TableMetadata.format-version field. If the server does not support v3, it
> can return unsupported at that time.
> Either way we go, the table-spec version does not need to be a capability.
> (1) seems to be cleaner, but has some overhead in provisioning a new
> endpoint compared to (2).
> Do you see another way to do this leveraging the table-spec version?


2 is cleaner but maybe inconsistent with current behavior, since /v1/tables
operation supports both v1 and v3. We should only go to 2 only when we have
incompatible fields/break changes according to discussion.

Generally I agree with adding table-spec into capabilities. For example, we
can expose this to user in api so that user could choose a supported table
format version without throwing exception.

On Wed, Jul 3, 2024 at 12:18 AM Jack Ye <yezhao...@gmail.com> wrote:

> Spec is an interesting topic we did not discuss. Robert, how do you
> envision this to be used?
>
> In my mind, if a new table format v3 is launched, there are 2 approaches
> we can go with, taking CreateTable as an example:
>
> (1) increment the related operation version, which means that POST
> /v2/{prefix}/namespaces/{ns}/tables will be created and allow creating
> tables in the v3 version.
>
> (2) update the existing table metadata model to support both v2 and v3
> fields, and the server enforces the payload differently based on the
> TableMetadata.format-version field. If the server does not support v3, it
> can return unsupported at that time.
>
> Either way we go, the table-spec version does not need to be a capability.
> (1) seems to be cleaner, but has some overhead in provisioning a new
> endpoint compared to (2).
>
> Do you see another way to do this leveraging the table-spec version?
>
> -Jack
>
>
>
>
>
> On Tue, Jul 2, 2024 at 6:03 AM Eduard Tudenhöfner
> <eduard.tudenhoef...@databricks.com.invalid> wrote:
>
>>
>> I couldn't make it to the catalog sync meeting yesterday but I watched
>> the recording today (thanks for providing that).
>>
>> The missing piece is how (new, capabilities-aware) clients handle the
>>> case when a service does _not_ return the capabilities field (absent). My
>>> proposal would be that a client should in this case assume that all
>>> _currently_ existing capabilities are supported.
>>>
>>> - tables: [1]
>>> - views: [1]
>>> - remote-signing: [1]
>>> - multi-table-commit: [1]
>>> - register-table: [1]
>>> - table-metrics: [1]
>>> - table-spec: [1,2]
>>> - view-spec: [1,2]
>>>
>>>
>>> The one thing I would like to add here is that the current PR uses the
>> *tables* capability (as version 1) as the default when a server doesn't
>> return *capabilities *but it might be also ok to include *views *(as
>> version 1) because the current client impl has *some* code to deal with
>> errors in case endpoints don't exist.
>>
>> Unless we agree that the currently existing functionality in the REST
>> spec is the *default* behavior to be assumed for older server, I'm not
>> sure about including *remote-signing / multi-table-commit /
>> register-table / table-metrics* as it has been indicated in earlier
>> comments on the PR/ML that not every REST server supports these.
>>
>> That being said, we should discuss whether we want the *default*
>> behavior (when an older server doesn't send back *capabilities*) to be
>> a) *tables* (version 1) only
>> b) the currently existing functionality as defined in the REST spec (as
>> version 1)
>>
>>
>> On another note: Including *table-spec / view-spec* seems to be more
>> informative in its nature as I don't think a client would act differently
>> right now when seeing these.
>>
>> Thanks
>> Eduard
>>
>>

Reply via email to