Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit368df30

Browse files
committed
Support hashing for duplicate-elimination in INTERSECT and EXCEPT queries.
This completes my project of improving usage of hashing for duplicateelimination (aggregate functions with DISTINCT remain undone, but that'sfor some other day).As with the previous patches, this means we can INTERSECT/EXCEPT on datatypesthat can hash but not sort, and it means that INTERSECT/EXCEPT without ORDERBY are no longer certain to produce sorted output.
1 parent2d1d96b commit368df30

File tree

11 files changed

+593
-203
lines changed

11 files changed

+593
-203
lines changed

‎src/backend/commands/explain.c

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Portions Copyright (c) 1994-5, Regents of the University of California
88
*
99
* IDENTIFICATION
10-
* $PostgreSQL: pgsql/src/backend/commands/explain.c,v 1.175 2008/05/14 19:10:29 tgl Exp $
10+
* $PostgreSQL: pgsql/src/backend/commands/explain.c,v 1.176 2008/08/07 03:04:03 tgl Exp $
1111
*
1212
*-------------------------------------------------------------------------
1313
*/
@@ -558,19 +558,47 @@ explain_outNode(StringInfo str,
558558
pname="Unique";
559559
break;
560560
caseT_SetOp:
561-
switch (((SetOp*)plan)->cmd)
561+
switch (((SetOp*)plan)->strategy)
562562
{
563-
caseSETOPCMD_INTERSECT:
564-
pname="SetOp Intersect";
563+
caseSETOP_SORTED:
564+
switch (((SetOp*)plan)->cmd)
565+
{
566+
caseSETOPCMD_INTERSECT:
567+
pname="SetOp Intersect";
568+
break;
569+
caseSETOPCMD_INTERSECT_ALL:
570+
pname="SetOp Intersect All";
571+
break;
572+
caseSETOPCMD_EXCEPT:
573+
pname="SetOp Except";
574+
break;
575+
caseSETOPCMD_EXCEPT_ALL:
576+
pname="SetOp Except All";
577+
break;
578+
default:
579+
pname="SetOp ???";
580+
break;
581+
}
565582
break;
566-
caseSETOPCMD_INTERSECT_ALL:
567-
pname="SetOp Intersect All";
568-
break;
569-
caseSETOPCMD_EXCEPT:
570-
pname="SetOp Except";
571-
break;
572-
caseSETOPCMD_EXCEPT_ALL:
573-
pname="SetOp Except All";
583+
caseSETOP_HASHED:
584+
switch (((SetOp*)plan)->cmd)
585+
{
586+
caseSETOPCMD_INTERSECT:
587+
pname="HashSetOp Intersect";
588+
break;
589+
caseSETOPCMD_INTERSECT_ALL:
590+
pname="HashSetOp Intersect All";
591+
break;
592+
caseSETOPCMD_EXCEPT:
593+
pname="HashSetOp Except";
594+
break;
595+
caseSETOPCMD_EXCEPT_ALL:
596+
pname="HashSetOp Except All";
597+
break;
598+
default:
599+
pname="HashSetOp ???";
600+
break;
601+
}
574602
break;
575603
default:
576604
pname="SetOp ???";

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp