------=_Part_48723_20617781.1162843021877
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Tom -
Many thanks for the quick reply. I feel honored to receive email from you
after seeing your name so many times in my web searches on Postgres topics.
That's not how I understood INTERSECT ALL to work. But it's the clear the
spec is right and my understanding is wrong.
This is not a bug.
Unfortunately the INTERSECT ALL as spec'd and implemented doesn't quite give
me what I need. So back to the drawing board for me...
best regards,
Mason
On 11/6/06, Tom Lane <tgl (AT) sss (DOT) pgh.pa.us> wrote:
Quote:
"Mason Hale" <masonhale (AT) gmail (DOT) com> writes:
The query below should return 10 rows,
Not by my reading of the spec. SQL92 7.10 saith:
b) If a set operator is specified, then the result of applying
the set operator is a table containing the following rows:
i) Let R be a row that is a duplicate of some row in T1 or
of
some row in T2 or both. Let m be the number of duplicates
of R in T1 and let n be the number of duplicates of R in
T2, where m >= 0 and n >= 0.
...
iii) If ALL is specified, then
...
3) If INTERSECT is specified, then the number of
duplicates
of R that T contains is the minimum of m and n.
You have m = 1, n = 2 for each distinct row at the INTERSECT step,
ergo you get one copy out.
regards, tom lane |
------=_Part_48723_20617781.1162843021877
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Tom -<br><br>Many thanks for the quick reply. I feel honored to receive email from you after seeing your name so many times in my web searches on Postgres topics.<br><br>That's not how I understood INTERSECT ALL to work. But it's the clear the spec is right and my understanding is wrong.
<br>This is not a bug.<br><br>Unfortunately the INTERSECT ALL as spec'd and implemented doesn't quite give me what I need. So back to the drawing board for me...<br><br>best regards,<br>Mason<br><br><div><span class="gmail_quote">
On 11/6/06, <b class="gmail_sendername">Tom Lane</b> <<a href="mailto:tgl (AT) sss (DOT) pgh.pa.us">tgl (AT) sss (DOT) pgh.pa.us</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
"Mason Hale" <<a href="mailto:masonhale (AT) gmail (DOT) com">masonhale (AT) gmail (DOT) com</a>> writes:<br>> The query below should return 10 rows,<br><br>Not by my reading of the spec. SQL92 7.10 saith:<br><br> b) If a set operator is specified, then the result of applying
<br> &nbs p; the set operator is a table containing the following rows:<br><br> & nbsp; i) Let R be a row that is a duplicate of some row in T1 or of<br> &n bsp; &nbs p; some row in T2 or both. Let m be the number of duplicates
<br> &nbs p; of R in T1 and let n be the number of duplicates of R in<br> &n bsp; &nbs p; T2, where m >= 0 and n >= 0.<br><br>...<br><br>   ; iii) If ALL is specified, then<br><br>...<br><br><br>   ; & nbsp; 3) If INTERSECT is specified, then the number of duplicates
<br> &nbs p; of R that T contains is the minimum of m and n.<br><br>You have m = 1, n = 2 for each distinct row at the INTERSECT step,<br>ergo you get one copy out.<br><br> &n bsp; &nbs p; regards, tom lane
<br></blockquote></div><br>
------=_Part_48723_20617781.1162843021877--