Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
30da344c
Commit
30da344c
authored
Jul 30, 1999
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update comments about clause selectivity estimation.
parent
44763a2b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
27 additions
and
14 deletions
+27
-14
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/path/allpaths.c
+15
-6
src/backend/optimizer/util/pathnode.c
src/backend/optimizer/util/pathnode.c
+12
-8
No files found.
src/backend/optimizer/path/allpaths.c
View file @
30da344c
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.5
1 1999/07/24 23:21:08
tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/optimizer/path/allpaths.c,v 1.5
2 1999/07/30 22:34:17
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -59,6 +59,9 @@ make_one_rel(Query *root, List *rels)
if
(
levels_needed
<=
0
)
return
NULL
;
/*
* Generate access paths for the base rels.
*/
set_base_rel_pathlist
(
root
,
rels
);
if
(
levels_needed
<=
1
)
...
...
@@ -73,8 +76,10 @@ make_one_rel(Query *root, List *rels)
{
/*
* This means that joins or sorts are required. set selectivities
* of clauses that have not been set by an index.
* This means that joins or sorts are required. Set selectivities
* of any clauses not yet set. (I think that this is redundant;
* set_base_rel_pathlist should have set them all already. But
* a scan to check that they are all set doesn't cost much...)
*/
set_rest_relselec
(
root
,
rels
);
...
...
@@ -131,11 +136,15 @@ set_base_rel_pathlist(Query *root, List *rels)
set_cheapest
(
rel
,
rel
->
pathlist
);
/*
*
if there is a qualification of sequential scan the selec. value
*
is not set -- so set it explicitly -- Sunita
/*
Set the selectivity estimates for any restriction clauses that
*
didn't get set as a byproduct of index-path selectivity estimation
*
(see create_index_path()).
*/
set_rest_selec
(
root
,
rel
->
restrictinfo
);
/* Calculate the estimated size (post-restrictions) and tuple width
* for this base rel. This uses the restriction clause selectivities.
*/
rel
->
size
=
compute_rel_size
(
rel
);
rel
->
width
=
compute_rel_width
(
rel
);
}
...
...
src/backend/optimizer/util/pathnode.c
View file @
30da344c
...
...
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.5
1 1999/07/30 04:07:25
tgl Exp $
* $Header: /cvsroot/pgsql/src/backend/optimizer/util/pathnode.c,v 1.5
2 1999/07/30 22:34:19
tgl Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -412,14 +412,18 @@ create_index_path(Query *root,
/*
* Set selectivities of clauses used with index to the selectivity
* of this index, subdividing the selectivity equally over each of
* the clauses.
* the clauses. To the extent that index_selectivity() can make a
* better estimate of the joint selectivity of these clauses than
* the product of individual estimates from compute_clause_selec()
* would be, this should give us a more accurate estimate of the
* total selectivity of all the clauses.
*
* XXX
Can this divide the selectivities in a better way?
*
*
XXX In fact, why the heck are we doing this at all? We already
* s
et the cost for the indexpath, and it's far from obvious that
*
the selectivity of the path should have any effect on estimates
*
made for other contexts..
.
* XXX
If there is more than one useful index for this rel, and the
*
indexes can be used with different but overlapping groups of
*
restriction clauses, we may end up with too optimistic an estimate,
* s
ince set_clause_selectivities() will save the minimum of the
*
per-clause selectivity estimated with each index. But that should
*
be fairly unlikely for typical index usage
.
*/
clausesel
=
pow
(
selec
,
1
.
0
/
(
double
)
length
(
restriction_clauses
));
set_clause_selectivities
(
restriction_clauses
,
clausesel
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment