mirror of
https://github.com/postgres/postgres.git
synced 2026-02-03 20:40:14 -05:00
When one side of the join has a NULL, we don't want to uselessly try to match it against every remaining tuple of the other side. While at it, rewrite the comparison machinery to avoid multiple evaluations of the left and right input expressions and to use a btree comparator where available, instead of double operator calls. Also revise the state machine to eliminate redundant comparisons and hopefully make it more readable too.
33 lines
920 B
C
33 lines
920 B
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* execdefs.h
|
|
*
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* $PostgreSQL: pgsql/src/include/executor/execdefs.h,v 1.18 2005/05/13 21:20:16 tgl Exp $
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef EXECDEFS_H
|
|
#define EXECDEFS_H
|
|
|
|
/* ----------------
|
|
* Merge Join states
|
|
* ----------------
|
|
*/
|
|
#define EXEC_MJ_INITIALIZE_OUTER 1
|
|
#define EXEC_MJ_INITIALIZE_INNER 2
|
|
#define EXEC_MJ_JOINTUPLES 3
|
|
#define EXEC_MJ_NEXTOUTER 4
|
|
#define EXEC_MJ_TESTOUTER 5
|
|
#define EXEC_MJ_NEXTINNER 6
|
|
#define EXEC_MJ_SKIP_TEST 7
|
|
#define EXEC_MJ_SKIPOUTER_ADVANCE 8
|
|
#define EXEC_MJ_SKIPINNER_ADVANCE 9
|
|
#define EXEC_MJ_ENDOUTER 10
|
|
#define EXEC_MJ_ENDINNER 11
|
|
|
|
#endif /* EXECDEFS_H */
|