mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 00:03:57 -04:00 
			
		
		
		
	Change SeqScan node to contain Scan node
This makes the structure of all Scan-derived nodes the same, independent of whether they have additional fields. Discussion: https://www.postgresql.org/message-id/flat/c1097590-a6a4-486a-64b1-e1f9cc0533ce@enterprisedb.com
This commit is contained in:
		
							parent
							
								
									00116dee5a
								
							
						
					
					
						commit
						2226b4189b
					
				| @ -151,7 +151,7 @@ ExecInitSeqScan(SeqScan *node, EState *estate, int eflags) | ||||
| 	 */ | ||||
| 	scanstate->ss.ss_currentRelation = | ||||
| 		ExecOpenScanRelation(estate, | ||||
| 							 node->scanrelid, | ||||
| 							 node->scan.scanrelid, | ||||
| 							 eflags); | ||||
| 
 | ||||
| 	/* and create slot with the appropriate rowtype */ | ||||
| @ -169,7 +169,7 @@ ExecInitSeqScan(SeqScan *node, EState *estate, int eflags) | ||||
| 	 * initialize child expressions | ||||
| 	 */ | ||||
| 	scanstate->ss.ps.qual = | ||||
| 		ExecInitQual(node->plan.qual, (PlanState *) scanstate); | ||||
| 		ExecInitQual(node->scan.plan.qual, (PlanState *) scanstate); | ||||
| 
 | ||||
| 	return scanstate; | ||||
| } | ||||
|  | ||||
| @ -1833,7 +1833,7 @@ _readSeqScan(void) | ||||
| { | ||||
| 	READ_LOCALS_NO_FIELDS(SeqScan); | ||||
| 
 | ||||
| 	ReadCommonScan(local_node); | ||||
| 	ReadCommonScan(&local_node->scan); | ||||
| 
 | ||||
| 	READ_DONE(); | ||||
| } | ||||
|  | ||||
| @ -2855,7 +2855,7 @@ create_seqscan_plan(PlannerInfo *root, Path *best_path, | ||||
| 							 scan_clauses, | ||||
| 							 scan_relid); | ||||
| 
 | ||||
| 	copy_generic_path_info(&scan_plan->plan, best_path); | ||||
| 	copy_generic_path_info(&scan_plan->scan.plan, best_path); | ||||
| 
 | ||||
| 	return scan_plan; | ||||
| } | ||||
| @ -5369,13 +5369,13 @@ make_seqscan(List *qptlist, | ||||
| 			 Index scanrelid) | ||||
| { | ||||
| 	SeqScan    *node = makeNode(SeqScan); | ||||
| 	Plan	   *plan = &node->plan; | ||||
| 	Plan	   *plan = &node->scan.plan; | ||||
| 
 | ||||
| 	plan->targetlist = qptlist; | ||||
| 	plan->qual = qpqual; | ||||
| 	plan->lefttree = NULL; | ||||
| 	plan->righttree = NULL; | ||||
| 	node->scanrelid = scanrelid; | ||||
| 	node->scan.scanrelid = scanrelid; | ||||
| 
 | ||||
| 	return node; | ||||
| } | ||||
|  | ||||
| @ -516,12 +516,12 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset) | ||||
| 			{ | ||||
| 				SeqScan    *splan = (SeqScan *) plan; | ||||
| 
 | ||||
| 				splan->scanrelid += rtoffset; | ||||
| 				splan->plan.targetlist = | ||||
| 					fix_scan_list(root, splan->plan.targetlist, | ||||
| 				splan->scan.scanrelid += rtoffset; | ||||
| 				splan->scan.plan.targetlist = | ||||
| 					fix_scan_list(root, splan->scan.plan.targetlist, | ||||
| 								  rtoffset, NUM_EXEC_TLIST(plan)); | ||||
| 				splan->plan.qual = | ||||
| 					fix_scan_list(root, splan->plan.qual, | ||||
| 				splan->scan.plan.qual = | ||||
| 					fix_scan_list(root, splan->scan.plan.qual, | ||||
| 								  rtoffset, NUM_EXEC_QUAL(plan)); | ||||
| 			} | ||||
| 			break; | ||||
|  | ||||
| @ -348,7 +348,10 @@ typedef struct Scan | ||||
|  *		sequential scan node | ||||
|  * ---------------- | ||||
|  */ | ||||
| typedef Scan SeqScan; | ||||
| typedef struct SeqScan | ||||
| { | ||||
| 	Scan		scan; | ||||
| } SeqScan; | ||||
| 
 | ||||
| /* ----------------
 | ||||
|  *		table sample scan node | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user