[libattean-perl] 03/42: Quick hack to let the cheaper left-hand-side win in HashJoin plans

Jonas Smedegaard dr at jones.dk
Mon Feb 12 13:16:12 UTC 2018


This is an automated email from the git hooks/post-receive script.

js pushed a commit to annotated tag debian/0.019-1
in repository libattean-perl.

commit 93ba5b5adf9e57d1ebff13cf10dbd21a6cff9101
Author: Kjetil Kjernsmo <kjetil at kjernsmo.net>
Date:   Thu Jul 28 01:53:06 2016 +0200

    Quick hack to let the cheaper left-hand-side win in HashJoin plans
---
 lib/Attean/API/QueryPlanner.pm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/Attean/API/QueryPlanner.pm b/lib/Attean/API/QueryPlanner.pm
index 876cba3..174546a 100644
--- a/lib/Attean/API/QueryPlanner.pm
+++ b/lib/Attean/API/QueryPlanner.pm
@@ -182,6 +182,7 @@ package Attean::API::SimpleCostPlanner 0.017 {
 				my $lcost		= $self->cost_for_plan($children[0], $model);
 				my $rcost		= $self->cost_for_plan($children[1], $model);
 				$cost	= ($lcost + $rcost);
+				$cost += ($lcost > $rcost); # To let the plan with cheaper lhs win
 				$cost	*= 100 unless ($plan->children_are_variable_connected);
 			} elsif ($plan->isa('Attean::Plan::Service')) {
 				my $scost	= 10;
@@ -395,6 +396,7 @@ package Attean::API::IDPJoinPlanner 0.017 {
 					my $mult = $self->_penalize_joins($plan);
 # 					warn "$mult * ($lcost + $rcost)";
 					$cost	= $mult * ($lcost + $rcost);
+					$cost += ($lcost > $rcost); # To let the plan with cheaper lhs win
 				}
 			} elsif ($plan->isa('Attean::Plan::Service')) {
 				my $scost	= 10;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libattean-perl.git



More information about the Pkg-perl-cvs-commits mailing list