Re: should check collations when creating partitioned index
От | Peter Eisentraut |
---|---|
Тема | Re: should check collations when creating partitioned index |
Дата | |
Msg-id | 6a86e6ba-3a45-4764-bd01-069a0933b4ca@eisentraut.org обсуждение исходный текст |
Ответ на | Re: should check collations when creating partitioned index (Peter Eisentraut <peter@eisentraut.org>) |
Ответы |
Re: should check collations when creating partitioned index
|
Список | pgsql-hackers |
On 23.11.23 11:01, Peter Eisentraut wrote: > On 20.11.23 17:25, Tom Lane wrote: >> Peter Eisentraut <peter@eisentraut.org> writes: >>> On 14.11.23 17:15, Tom Lane wrote: >>>> I don't love the patch details though. It seems entirely wrong to >>>> check >>>> this before we check the opclass match. >> >>> Not sure why? The order doesn't seem to matter? >> >> The case that was bothering me was if we had a non-collated type >> versus a collated type. That would result in throwing an error >> about collation mismatch, when complaining about the opclass seems >> more apropos. However, if we do this: >> >>> I see. That means we shouldn't raise an error on a mismatch but just do >>> if (key->partcollation[i] != collationIds[j]) >>> continue; >> >> it might not matter much. > > Here is an updated patch that works as indicated above. > > The behavior if you try to create an index with mismatching collations > now is that it will skip over the column and complain at the end with > something like > > ERROR: 0A000: unique constraint on partitioned table must include all > partitioning columns > DETAIL: UNIQUE constraint on table "t1" lacks column "b" which is part > of the partition key. > > which perhaps isn't intuitive, but I think it would be the same if you > somehow tried to build an index with different operator classes than the > partitioning. I think these less-specific error messages are ok in such > edge cases. If there are no further comments on this patch version, I plan to go ahead and commit it soon.
В списке pgsql-hackers по дате отправления: