Обсуждение: OUTER joins
How do you propose doing outer joins in non-mergejoin situations? Mergejoins can only be used currently in equal joins. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
> > How do you propose doing outer joins in non-mergejoin situations? > Mergejoins can only be used currently in equal joins. Is your solution going to be to make sure the OUTER table is always a MergeJoin, or on the outside of a join loop? That could work. That could get tricky if the table is joined to _two_ other tables. With the cleaned-up optimizer, we can disable non-merge joins in certain circumstances, and prevent OUTER tables from being inner in the others. Is that the plan? -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
(back from a short vacation...) > How do you propose doing outer joins in non-mergejoin situations? > Mergejoins can only be used currently in equal joins. Hadn't thought about it, other than figuring that implementing the equi-join first was a good start. There is a class of outer join syntax (the USING clause) which is implicitly an equi-join... - Tom
> (back from a short vacation...) > > > How do you propose doing outer joins in non-mergejoin situations? > > Mergejoins can only be used currently in equal joins. > > Hadn't thought about it, other than figuring that implementing the > equi-join first was a good start. There is a class of outer join syntax > (the USING clause) which is implicitly an equi-join... Not that easy. You don't automatically get a mergejoin from an equijoin. I will have to force outer's to be either mergejoins, or inners of non-merge joins. Can you add code to non-merge joins in the executor to throw out a null row if it does not find an inner match for the outer row, and I will handle the optimizer so it doesn't throw a non-conforming plan to the executor. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
> > Hadn't thought about it, other than figuring that implementing the > > equi-join first was a good start. There is a class of outer join > > syntax (the USING clause) which is implicitly an equi-join... > Not that easy. You don't automatically get a mergejoin from an > equijoin. I will have to force outer's to be either mergejoins, or > inners of non-merge joins. Can you add code to non-merge joins in the > executor to throw out a null row if it does not find an inner match > for the outer row, and I will handle the optimizer so it doesn't throw > a non-conforming plan to the executor. So far I don't have enough info in the parser to get the planner/optimizer going. Should we work from the front to the back, or should I go ahead and look at the non-merge joins? It's painfully obvious that I don't know anything about the middle parts of this to proceed without lots more research. - Tom
> > > Hadn't thought about it, other than figuring that implementing the > > > equi-join first was a good start. There is a class of outer join > > > syntax (the USING clause) which is implicitly an equi-join... > > Not that easy. You don't automatically get a mergejoin from an > > equijoin. I will have to force outer's to be either mergejoins, or > > inners of non-merge joins. Can you add code to non-merge joins in the > > executor to throw out a null row if it does not find an inner match > > for the outer row, and I will handle the optimizer so it doesn't throw > > a non-conforming plan to the executor. > > So far I don't have enough info in the parser to get the > planner/optimizer going. Should we work from the front to the back, or > should I go ahead and look at the non-merge joins? It's painfully > obvious that I don't know anything about the middle parts of this to > proceed without lots more research. We need to do phone or IRC to discuss this. Let me know when. -- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026