@@ -240,7 +240,27 @@ func checkNameBasedDependencies(
240240 _ , _ , viewNS := scpb .FindNamespace (viewElts )
241241 panic (sqlerrors .NewDependentBlocksOpError ("rename" , "relation" , objectName .String (), "view" , viewNS .Name ))
242242 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+ }
244264 }
245265 })
246266}
0 commit comments