On Thu, 4 Jul 2019 at 09:02, James Coleman <jtc...@gmail.com> wrote: > > On Wed, Jul 3, 2019 at 3:46 PM David Fetter <da...@fetter.org> wrote: > > > > On Wed, Jul 03, 2019 at 12:27:09AM +1200, David Rowley wrote: > > > On Tue, 2 Jul 2019 at 21:00, Thomas Munro <thomas.mu...@gmail.com> wrote: > > > > > > The more I think about these UniqueKeys, the more I think they need to > > > be a separate concept to PathKeys. For example, UniqueKeys: { x, y } > > > should be equivalent to { y, x }, but with PathKeys, that's not the > > > case, since the order of each key matters. UniqueKeys equivalent > > > version of pathkeys_contained_in() would not care about the order of > > > individual keys, it would say things like, { a, b, c } is contained in > > > { b, a }, since if the path is unique on columns { b, a } then it must > > > also be unique on { a, b, c }. > > > > Is that actually true, though? I can see unique {a, b, c} => unique > > {a, b}, but for example: > > > > a | b | c > > --|---|-- > > 1 | 2 | 3 > > 1 | 2 | 4 > > 1 | 2 | 5 > > > > is unique on {a, b, c} but not on {a, b}, at least as I understand the > > way "unique" is used here, which is 3 distinct {a, b, c}, but only one > > {a, b}. > > > > Or I could be missing something obvious, and in that case, please > > ignore. > > I think that example is the opposite direction of what David (Rowley) > is saying. Unique on {a, b} implies unique on {a, b, c} while you're > correct that the inverse doesn't hold. > > Unique on {a, b} also implies unique on {b, a} as well as on {b, a, c} > and {c, a, b} and {c, b, a} and {a, c, b}, which is what makes this > different from pathkeys.
Yeah, exactly. A superset of the unique columns is still unique. -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services