@@ -240,7 +240,27 @@ func checkNameBasedDependencies(
240
240
_ , _ , viewNS := scpb .FindNamespace (viewElts )
241
241
panic (sqlerrors .NewDependentBlocksOpError ("rename" , "relation" , objectName .String (), "view" , viewNS .Name ))
242
242
case * scpb.FunctionName :
243
- panic (sqlerrors .NewDependentBlocksOpError ("rename" , "relation" , objectName .String (), "function" , backRefElem .Name ))
243
+ funcElem := b .QueryByID (backRefElem .FunctionID ).FilterFunction ().MustGetOneElement ()
244
+ funcType := "function"
245
+ if funcElem .IsProcedure {
246
+ funcType = "procedure"
247
+ }
248
+ panic (sqlerrors .NewDependentBlocksOpError ("rename" , "relation" , objectName .String (), funcType , backRefElem .Name ))
249
+ case * scpb.TriggerDeps :
250
+ for _ , usesRelation := range backRefElem .UsesRelations {
251
+ if usesRelation .ID == descriptorID {
252
+ dependentTableID := backRefElem .TableID
253
+ dependentTriggerID := backRefElem .TriggerID
254
+ dependentTableNS := b .QueryByID (dependentTableID ).FilterNamespace ().MustGetOneElement ()
255
+ dependentTriggerName := backRefs .FilterTriggerName ().Filter (func (_ scpb.Status , _ scpb.TargetStatus , e * scpb.TriggerName ) bool {
256
+ return e .TriggerID == dependentTriggerID && e .TableID == dependentTableID
257
+ }).MustGetOneElement ()
258
+ panic (sqlerrors .NewDependentObjectErrorf (
259
+ "cannot rename relation %q because trigger %q on table %q depends on it" ,
260
+ objectName .String (), dependentTriggerName .Name , dependentTableNS .Name ,
261
+ ))
262
+ }
263
+ }
244
264
}
245
265
})
246
266
}
0 commit comments