| From: | Gavin Sherry <swm(at)linuxworld(dot)com(dot)au> |
|---|---|
| To: | Christopher Kings-Lynne <chriskl(at)familyhealth(dot)com(dot)au> |
| Cc: | pgsql-hackers(at)postgresql(dot)org |
| Subject: | Re: Code questions |
| Date: | 2002-06-23 08:55:24 |
| Message-ID: | Pine.LNX.4.21.0206231842110.29067-100000@linuxworld.com.au |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | 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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | J. R. Nield | 2002-06-23 12:37:53 | Re: Index Scans become Seq Scans after VACUUM ANALYSE |
| Previous Message | Christopher Kings-Lynne | 2002-06-23 08:27:04 | Code questions |