diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2004-01-06 04:31:01 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2004-01-06 04:31:01 +0000 |
commit | b0c4a50bbbbd62c444cb3806a97c1e51e2249cfd (patch) | |
tree | 0816cf1d1cc2a28665e5de740a20c80afbc4f5e7 /src/backend/nodes/outfuncs.c | |
parent | fa559a86eec2ae90fd63fd7e6563e42f7dc619e0 (diff) | |
download | postgresql-b0c4a50bbbbd62c444cb3806a97c1e51e2249cfd.tar.gz postgresql-b0c4a50bbbbd62c444cb3806a97c1e51e2249cfd.zip |
Instead of rechecking lossy index operators by putting them into the
regular qpqual ('filter condition'), add special-purpose code to
nodeIndexscan.c to recheck them. This ends being almost no net addition
of code, because the removal of planner code balances out the extra
executor code, but it is significantly more efficient when a lossy
operator is involved in an OR indexscan. The old implementation had
to recheck the entire indexqual in such cases.
Diffstat (limited to 'src/backend/nodes/outfuncs.c')
-rw-r--r-- | src/backend/nodes/outfuncs.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index 1a78769e8f2..ce80cae4bdb 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.228 2004/01/05 23:39:53 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.229 2004/01/06 04:31:01 tgl Exp $ * * NOTES * Every node type that can appear in stored rules' parsetrees *must* @@ -356,6 +356,16 @@ _outIndexScan(StringInfo str, IndexScan *node) _outOidList(str, lfirst(tmp)); } } + /* this can become WRITE_NODE_FIELD when intlists are normal objects: */ + { + List *tmp; + + appendStringInfo(str, " :indxlossy "); + foreach(tmp, node->indxlossy) + { + _outIntList(str, lfirst(tmp)); + } + } WRITE_ENUM_FIELD(indxorderdir, ScanDirection); } |