diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-01-05 23:39:54 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-01-05 23:39:54 +0000 |
commit | fa559a86eec2ae90fd63fd7e6563e42f7dc619e0 (patch) | |
tree | a43de4df13060be5df59c38d7b3b9a5e47069e05 /src/backend/nodes/outfuncs.c | |
parent | 5d472f64647346a44af6ab2ab9ca70cadf9fe788 (diff) | |
download | postgresql-fa559a86eec2ae90fd63fd7e6563e42f7dc619e0.tar.gz postgresql-fa559a86eec2ae90fd63fd7e6563e42f7dc619e0.zip |
Adjust indexscan planning logic to keep RestrictInfo nodes associated
with index qual clauses in the Path representation. This saves a little
work during createplan and (probably more importantly) allows reuse of
cached selectivity estimates during indexscan planning. Also fix latent
bug: wrong plan would have been generated for a 'special operator' used
in a nestloop-inner-indexscan join qual, because the special operator
would not have gotten into the list of quals to recheck. This bug is
only latent because at present the special-operator code could never
trigger on a join qual, but sooner or later someone will want to do it.
Diffstat (limited to 'src/backend/nodes/outfuncs.c')
-rw-r--r-- | src/backend/nodes/outfuncs.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index cc466f5ae00..1a78769e8f2 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.227 2004/01/05 18:04:38 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.228 2004/01/05 23:39:53 tgl Exp $ * * NOTES * Every node type that can appear in stored rules' parsetrees *must* @@ -968,8 +968,9 @@ _outIndexPath(StringInfo str, IndexPath *node) _outPathInfo(str, (Path *) node); WRITE_NODE_FIELD(indexinfo); - WRITE_NODE_FIELD(indexqual); - WRITE_NODE_FIELD(indexjoinclauses); + WRITE_NODE_FIELD(indexclauses); + WRITE_NODE_FIELD(indexquals); + WRITE_BOOL_FIELD(isjoininner); WRITE_ENUM_FIELD(indexscandir, ScanDirection); WRITE_FLOAT_FIELD(rows, "%.0f"); } |