mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
First cut at full support for OUTER JOINs. There are still a few loose
ends to clean up (see my message of same date to pghackers), but mostly it works. INITDB REQUIRED!
This commit is contained in:
@@ -8,41 +8,26 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: parsetree.h,v 1.10 2000/06/12 19:40:51 momjian Exp $
|
||||
* $Id: parsetree.h,v 1.11 2000/09/12 21:07:12 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef PARSETREE_H
|
||||
#define PARSETREE_H /* include once only */
|
||||
#define PARSETREE_H
|
||||
|
||||
#include "nodes/parsenodes.h"
|
||||
#include "nodes/pg_list.h"
|
||||
|
||||
/* ----------------
|
||||
* need pg_list.h for definitions of CAR(), etc. macros
|
||||
* need pg_list.h for definitions of nth(), etc.
|
||||
* ----------------
|
||||
*/
|
||||
|
||||
/* ----------------
|
||||
* range table macros
|
||||
*
|
||||
* parse tree:
|
||||
* (root targetlist qual)
|
||||
* ^^^^
|
||||
* parse root:
|
||||
* (numlevels cmdtype resrel rangetable priority ruleinfo nestdotinfo)
|
||||
* ^^^^^^^^^^
|
||||
* range table:
|
||||
* (rtentry ...)
|
||||
* rtentry:
|
||||
* ----------------
|
||||
*/
|
||||
|
||||
#define rt_relname(rt_entry) \
|
||||
((!strcmp(((rt_entry)->ref->relname),"*OLD*") ||\
|
||||
!strcmp(((rt_entry)->ref->relname),"*NEW*")) ? ((rt_entry)->ref->relname) : \
|
||||
((char *)(rt_entry)->relname))
|
||||
|
||||
/*
|
||||
* rt_fetch
|
||||
* rt_store
|
||||
@@ -51,22 +36,18 @@
|
||||
*
|
||||
*/
|
||||
#define rt_fetch(rangetable_index, rangetable) \
|
||||
((RangeTblEntry*)nth((rangetable_index)-1, rangetable))
|
||||
((RangeTblEntry*) nth((rangetable_index)-1, rangetable))
|
||||
|
||||
#define rt_store(rangetable_index, rangetable, rt) \
|
||||
set_nth(rangetable, (rangetable_index)-1, rt)
|
||||
|
||||
/*
|
||||
* getrelid
|
||||
* getrelname
|
||||
*
|
||||
* Given the range index of a relation, return the corresponding
|
||||
* relation id or relation name.
|
||||
* relation OID.
|
||||
*/
|
||||
#define getrelid(rangeindex,rangetable) \
|
||||
((RangeTblEntry*)nth((rangeindex)-1, rangetable))->relid
|
||||
|
||||
#define getrelname(rangeindex, rangetable) \
|
||||
rt_relname((RangeTblEntry*)nth((rangeindex)-1, rangetable))
|
||||
(rt_fetch(rangeindex, rangetable)->relid)
|
||||
|
||||
#endif /* PARSETREE_H */
|
||||
|
||||
Reference in New Issue
Block a user