Re: [ltree] Should `SELECT LCA('1.2', '1.2.3');` return '1.2' instead of '1'?

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: Julien Grillot <julien(dot)grillot(at)gmail(dot)com>
Cc: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: [ltree] Should `SELECT LCA('1.2', '1.2.3');` return '1.2' instead of '1'?
Date: 2017-12-01 16:17:23
Message-ID: CAKFQuwbWHohLPZ-USaNPXozVtzCRu41e8A7DSoeOD-LHmxn6kg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Fri, Dec 1, 2017 at 8:32 AM, Julien Grillot <julien(dot)grillot(at)gmail(dot)com>
wrote:

> At the moment, both SELECT LCA('1.2', '1.2'); and SELECT LCA('1.2',
> '1.2.3'); return ‘1’.
>
> According to the Wikipedia1 definition of LCA:
> “[…] the lowest common ancestor (LCA) of two nodes v and w […] is the
> lowest (i.e. deepest) node that has both v and w as descendants, where we
> define each node to be a descendant of itself (so if v has a direct
> connection from w, w is the lowest common ancestor).”
>
> So, in my understanding, both SELECT LCA('1.2', '1.2'); and SELECT
> LCA('1.2', '1.2.3'); should return ‘1.2’. What do you think about it?
>

​If indeed one defines "each node to be a descendant of itself" then you
are correct. Unfortunately your example indicates that this implementation
does not define ancestry that way. While you may not agree with the
definition at this point changing the existing function's behavior in this
manner seems highly undesirable - too much existing code would silently
break. Adding a leading (due to varargs) boolean argument that specifies
"end node is ancestor of itself" behavior might be a workable solution.

Regardless, the docs should be clarified on this point, though, and maybe
add a code comment somewhere.

David J.

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tomas Vondra 2017-12-01 17:07:08 Re: BUG #14940: Duplicated records inspite of primary key and unique constraint
Previous Message lyes.amd 2017-12-01 16:09:07 BUG #14941: Vacuum crashes