On Tue, Sep 29, 2020 at 2:01 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > Amit Langote <amitlangot...@gmail.com> writes: > > On Fri, Sep 25, 2020 at 12:02 AM Tom Lane <t...@sss.pgh.pa.us> wrote: > >> Well, I agree with Peter to that extent, but my opinion is that *none* > >> of these cases ought to be errors. What we're doing here is performing > >> an implicit assignment-level coercion of the expression to the type of > >> the column, and changing the collation is allowed as part of that: > >> > >> regression=# create table foo (f1 text collate "C"); > >> CREATE TABLE > >> regression=# insert into foo values ('a' COLLATE "POSIX"); > >> INSERT 0 1 > >> regression=# update foo set f1 = 'b' COLLATE "POSIX"; > >> UPDATE 1 > >> > >> So I find it completely inconsistent that the partitioning logic > >> complains about equivalent cases. > > > My perhaps wrong impression was that the bound expression that is > > specified when creating a partition is not as such being *assigned* to > > the key column, but now that I think about it some more, that doesn't > > matter. > > >> I think we should just rip the > >> whole thing out, as per the attached draft. This causes several > >> regression test results to change, but AFAICS those are only there > >> to exercise the error tests that I think we should get rid of. > > > Yeah, I can see no other misbehavior resulting from this. > > OK, I'll clean up the regression test cases and push that.
Thanks. > (Although this could be claimed to be a bug, I do not feel > a need to back-patch the behavioral change.) Agreed. The assign_expr_collations() omission was indeed a bug. -- Amit Langote EnterpriseDB: http://www.enterprisedb.com