move exception union into CTE and summarize at end for records not inserted
This commit is contained in:
		
							parent
							
								
									144fd62bd8
								
							
						
					
					
						commit
						a18774473b
					
				
							
								
								
									
										40
									
								
								srce.pgsql
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								srce.pgsql
									
									
									
									
									
								
							| @ -89,18 +89,34 @@ WITH pending_list AS ( | ||||
|     ----therefore, records may not be inserted due to ay matches with certain json fields, or if the entire json is a duplicate, reason is not specified | ||||
|     RETURNING * | ||||
| ) | ||||
| ---------raw list of records not inserted---------- | ||||
| , not_inserted AS ( | ||||
|     SELECT | ||||
|         srce | ||||
|         ,rec | ||||
|     FROM | ||||
|         pending_list | ||||
| 
 | ||||
| ----records not inserted------ | ||||
|     EXCEPT ALL | ||||
| 
 | ||||
|     SELECT  | ||||
|         srce | ||||
|         ,rec | ||||
|     FROM  | ||||
|         inserted | ||||
| ) | ||||
| --------summarize records not inserted------------------ | ||||
| SELECT | ||||
|     srce | ||||
|     ,rec | ||||
|     t.srce | ||||
|     ,(ae.e::text[])[1] unq_constr | ||||
|     ,MIN(rec #>> ae.e::text[]) min_text | ||||
|     ,MAX(rec #>> ae.e::text[]) max_text | ||||
|     ,JSONB_PRETTY(JSON_AGG(rec #> ae.e::text[] ORDER BY rec #>> ae.e::text[])::JSONB) | ||||
| FROM | ||||
|     pending_list | ||||
| 
 | ||||
| EXCEPT ALL | ||||
| 
 | ||||
| SELECT  | ||||
|     srce | ||||
|     ,rec | ||||
| FROM  | ||||
|     inserted; | ||||
|     not_inserted t | ||||
|     INNER JOIN tps.srce s ON | ||||
|         s.srce = t.srce | ||||
|     LEFT JOIN LATERAL JSONB_ARRAY_ELEMENTS_TEXT(defn->'unique_constraint'->'fields') WITH ORDINALITY ae(e, rn) ON TRUE | ||||
| GROUP BY | ||||
|     t.srce | ||||
|     ,(ae.e::text[])[1]; | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user