diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2009-03-21 00:04:40 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2009-03-21 00:04:40 +0000 |
commit | 596efd27edce20bba706f50de99a0f15bcc2a567 (patch) | |
tree | 63c07c3c310e1b072f0a29a79220c81254dba3d8 /src/backend/nodes | |
parent | 249d936bed069877923f0369bd2ce51a6f8f925e (diff) | |
download | postgresql-596efd27edce20bba706f50de99a0f15bcc2a567.tar.gz |
Optimize multi-batch hash joins when the outer relation has a nonuniform
distribution, by creating a special fast path for the (first few) most common
values of the outer relation. Tuples having hashvalues matching the MCVs
are effectively forced to be in the first batch, so that we never write
them out to the batch temp files.
Bryce Cutt and Ramon Lawrence, with some editorialization by me.
Diffstat (limited to 'src/backend/nodes')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 6 | ||||
-rw-r--r-- | src/backend/nodes/outfuncs.c | 7 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 3c8bf6fb69..f9a1efdc44 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -15,7 +15,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.426 2009/03/10 22:09:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/copyfuncs.c,v 1.427 2009/03/21 00:04:39 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -735,6 +735,10 @@ _copyHash(Hash *from) /* * copy remainder of node */ + COPY_SCALAR_FIELD(skewTable); + COPY_SCALAR_FIELD(skewColumn); + COPY_SCALAR_FIELD(skewColType); + COPY_SCALAR_FIELD(skewColTypmod); return newnode; } diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index d64f0ad042..212fc0673c 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.354 2009/03/10 22:09:25 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.355 2009/03/21 00:04:39 tgl Exp $ * * NOTES * Every node type that can appear in stored rules' parsetrees *must* @@ -675,6 +675,11 @@ _outHash(StringInfo str, Hash *node) WRITE_NODE_TYPE("HASH"); _outPlanInfo(str, (Plan *) node); + + WRITE_OID_FIELD(skewTable); + WRITE_INT_FIELD(skewColumn); + WRITE_OID_FIELD(skewColType); + WRITE_INT_FIELD(skewColTypmod); } static void |