Re: Code questions - Mailing list pgsql-hackers

From Gavin Sherry
Subject Re: Code questions
Date
Msg-id Pine.LNX.4.21.0206231842110.29067-100000@linuxworld.com.au
Whole thread Raw
In response to Code questions  ("Christopher Kings-Lynne" <chriskl@familyhealth.com.au>)
List pgsql-hackers
On Sun, 23 Jun 2002, Christopher Kings-Lynne wrote:

> Hi All,
> 
> Whereabouts in the code is the '*' expanded into the list of valid columns 

See the rule 'target_el' in gram.y. The SelectStmt node is processed
further down the parser in analyze.c: see transformStmt(),
transformSelectStmt() and transformTargetList().

> and also where are the columns specified in the select arguments (or
> whereever) checked for validity?

This is pretty easy to discover by working backward from the
elog(ERROR) produced when you select a non-existent attribute from a
relation:

ERROR:  Attribute 'nonexistent' not found

This is generated by transformIdent(), called from transformExpr, called
from transformTargetEntry. The latter is called by transformTargetList()
when it the attribute is not of the form '*' or 'relation.*' or when we
don't know if the attribute is actually an attribute.

> Chris

Gavin



pgsql-hackers by date:

Previous
From: "Christopher Kings-Lynne"
Date:
Subject: Code questions
Next
From: "J. R. Nield"
Date:
Subject: Re: Index Scans become Seq Scans after VACUUM ANALYSE