定义在src/backend/parser/parser_expr.c文件中的函数用于分析和转换表达式,包含类型检查和类型转换的工作。该函数将原始语法输出转换为具有完全确             
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-02-13 09:28:55
                            
                                189阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            上文说到 ColumnRef由于 a_expr 回溯到 c_expr。其对应的 makeColumnRef 需要构建 ColumnRef 型Node, 看看 parsenodes.h:00203 typedef struct ColumnRef00204 {00205 NodeTag type;00206 List *fields; /* field names (Value strings) or A_Star */00207 int location; /* token location, or -1 ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2012-09-10 16:21:00
                            
                                60阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            进一步分析 ColumnRef:查了一下, 原来 makeColumnRef 就在 gram.y 里面:static Node * makeColumnRef(char *colname, List *indirection, int location, core_yyscan_t yyscanner){ /*...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2012-09-11 15:18:00
                            
                                152阅读
                            
                                                                                    
                                2评论
                            
                                                 
                 
                
                             
         
            
            
            
            根据 <PostgreSQL 数据库内核分析>200和201页的说法,ResTarget 应该指向 ColumnRef 。这是如何实现的呢?target_list: target_el { $$ = list_make1($1); } | target_list ',' target_el { $$ = lappend($1, $3); } ; ...            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2012-09-10 16:09:00
                            
                                89阅读
                            
                                                                                    
                                2评论