38
38
39
39
static Oid get_partition_for_key (const PartRelationInfo * prel , Datum key );
40
40
static void create_single_update_trigger_internal (Oid relid ,
41
+ const char * trigname ,
41
42
const char * attname );
42
43
static bool update_trigger_exists (Oid relid , char * trigname );
43
44
@@ -540,7 +541,7 @@ build_update_trigger_name(PG_FUNCTION_ARGS)
540
541
Oid relid = PG_GETARG_OID (0 );
541
542
const char * result ; /* trigger's name can't be qualified */
542
543
543
- result = build_update_trigger_name_internal (relid );
544
+ result = quote_identifier ( build_update_trigger_name_internal (relid ) );
544
545
545
546
PG_RETURN_TEXT_P (cstring_to_text (result ));
546
547
}
@@ -1066,7 +1067,7 @@ create_update_triggers(PG_FUNCTION_ARGS)
1066
1067
errmsg ("trigger \"%s\" for relation \"%s\" already exists" ,
1067
1068
trigname , get_rel_name_or_relid (children [i ]))));
1068
1069
1069
- create_single_update_trigger_internal (children [i ], attname );
1070
+ create_single_update_trigger_internal (children [i ], trigname , attname );
1070
1071
}
1071
1072
1072
1073
PG_RETURN_VOID ();
@@ -1115,7 +1116,8 @@ create_single_update_trigger(PG_FUNCTION_ARGS)
1115
1116
Oid partition = PG_GETARG_OID (0 );
1116
1117
Oid parent ;
1117
1118
PartParentSearch parent_search ;
1118
- char * attname ;
1119
+ char * trigname ,
1120
+ * attname ;
1119
1121
1120
1122
/* Get parent's Oid */
1121
1123
parent = get_parent_of_partition (partition , & parent_search );
@@ -1126,15 +1128,19 @@ create_single_update_trigger(PG_FUNCTION_ARGS)
1126
1128
/* Determine partitioning key name */
1127
1129
prel = get_pathman_relation_info (parent );
1128
1130
shout_if_prel_is_invalid (partition , prel , PT_INDIFFERENT );
1131
+
1132
+ trigname = build_update_trigger_name_internal (parent );
1129
1133
attname = get_attname (prel -> key , prel -> attnum );
1130
1134
1131
- create_single_update_trigger_internal (partition , attname );
1135
+ create_single_update_trigger_internal (partition , trigname , attname );
1132
1136
1133
1137
PG_RETURN_VOID ();
1134
1138
}
1135
1139
1136
1140
static void
1137
- create_single_update_trigger_internal (Oid relid , const char * attname )
1141
+ create_single_update_trigger_internal (Oid relid ,
1142
+ const char * trigname ,
1143
+ const char * attname )
1138
1144
{
1139
1145
CreateTrigStmt * stmt ;
1140
1146
List * func ;
@@ -1143,7 +1149,7 @@ create_single_update_trigger_internal(Oid relid, const char *attname)
1143
1149
makeString ("update_trigger_func" ));
1144
1150
1145
1151
stmt = makeNode (CreateTrigStmt );
1146
- stmt -> trigname = build_update_trigger_name_internal ( relid ) ;
1152
+ stmt -> trigname = ( char * ) trigname ;
1147
1153
stmt -> relation = makeRangeVarFromRelid (relid );
1148
1154
stmt -> funcname = func ;
1149
1155
stmt -> args = NIL ;
@@ -1152,9 +1158,9 @@ create_single_update_trigger_internal(Oid relid, const char *attname)
1152
1158
stmt -> events = TRIGGER_TYPE_UPDATE ;
1153
1159
stmt -> columns = list_make1 (makeString ((char * ) attname ));
1154
1160
stmt -> whenClause = NULL ;
1155
- stmt -> isconstraint = false;
1156
- stmt -> deferrable = false;
1157
- stmt -> initdeferred = false;
1161
+ stmt -> isconstraint = false;
1162
+ stmt -> deferrable = false;
1163
+ stmt -> initdeferred = false;
1158
1164
stmt -> constrrel = NULL ;
1159
1165
1160
1166
(void ) CreateTrigger (stmt , NULL , InvalidOid , InvalidOid ,
0 commit comments