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 ---------------------------(end of broadcast)--------------------------- TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]