Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite0d3fe0

Browse files
committed
fixed update trigger names
1 parent73b8a41 commite0d3fe0

File tree

4 files changed

+17
-44
lines changed

4 files changed

+17
-44
lines changed

‎expected/pathman_basic.out

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1476,7 +1476,7 @@ SELECT pathman.replace_hash_partition('test.hash_rel_0', 'test.hash_rel_extern')
14761476
Indexes:
14771477
"hash_rel_0_pkey" PRIMARY KEY, btree (id)
14781478
Triggers:
1479-
hash_rel_upd_trig BEFORE UPDATE ON test.hash_rel_0 FOR EACH ROW EXECUTE PROCEDURE pathman.update_trigger_func()
1479+
hash_rel_upd_trig BEFORE UPDATEOF valueON test.hash_rel_0 FOR EACH ROW EXECUTE PROCEDURE pathman.update_trigger_func()
14801480

14811481
\d+ test.hash_rel_extern
14821482
Table "test.hash_rel_extern"

‎range.sql

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -992,39 +992,6 @@ END
992992
$$
993993
LANGUAGE plpgsql;
994994

995-
996-
/*
997-
* Creates an update trigger
998-
*/
999-
CREATEOR REPLACE FUNCTION @extschema@.create_range_update_trigger(
1000-
IN parent_relidREGCLASS)
1001-
RETURNSTEXTAS
1002-
$$
1003-
DECLARE
1004-
triggerTEXT :='CREATE TRIGGER %s
1005-
BEFORE UPDATE ON %s
1006-
FOR EACH ROW EXECUTE PROCEDURE
1007-
@extschema@.update_trigger_func()';
1008-
triggernameTEXT;
1009-
recRECORD;
1010-
1011-
BEGIN
1012-
triggername := @extschema@.build_update_trigger_name(parent_relid);
1013-
1014-
/* Create trigger on every partition*/
1015-
FOR recin (SELECT*FROMpg_catalog.pg_inherits
1016-
WHERE inhparent= parent_relid)
1017-
LOOP
1018-
EXECUTE format(trigger,
1019-
triggername,
1020-
rec.inhrelid::REGCLASS::TEXT);
1021-
END LOOP;
1022-
1023-
RETURN'update_trigger_func()';
1024-
END
1025-
$$ LANGUAGE plpgsql;
1026-
1027-
1028995
/*
1029996
* Drops partition and expands the next partition so that it cover dropped
1030997
* one

‎src/pl_funcs.c

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838

3939
staticOidget_partition_for_key(constPartRelationInfo*prel,Datumkey);
4040
staticvoidcreate_single_update_trigger_internal(Oidrelid,
41+
constchar*trigname,
4142
constchar*attname);
4243
staticboolupdate_trigger_exists(Oidrelid,char*trigname);
4344

@@ -540,7 +541,7 @@ build_update_trigger_name(PG_FUNCTION_ARGS)
540541
Oidrelid=PG_GETARG_OID(0);
541542
constchar*result;/* trigger's name can't be qualified */
542543

543-
result=build_update_trigger_name_internal(relid);
544+
result=quote_identifier(build_update_trigger_name_internal(relid));
544545

545546
PG_RETURN_TEXT_P(cstring_to_text(result));
546547
}
@@ -1066,7 +1067,7 @@ create_update_triggers(PG_FUNCTION_ARGS)
10661067
errmsg("trigger \"%s\" for relation \"%s\" already exists",
10671068
trigname,get_rel_name_or_relid(children[i]))));
10681069

1069-
create_single_update_trigger_internal(children[i],attname);
1070+
create_single_update_trigger_internal(children[i],trigname,attname);
10701071
}
10711072

10721073
PG_RETURN_VOID();
@@ -1115,7 +1116,8 @@ create_single_update_trigger(PG_FUNCTION_ARGS)
11151116
Oidpartition=PG_GETARG_OID(0);
11161117
Oidparent;
11171118
PartParentSearchparent_search;
1118-
char*attname;
1119+
char*trigname,
1120+
*attname;
11191121

11201122
/* Get parent's Oid */
11211123
parent=get_parent_of_partition(partition,&parent_search);
@@ -1126,15 +1128,19 @@ create_single_update_trigger(PG_FUNCTION_ARGS)
11261128
/* Determine partitioning key name */
11271129
prel=get_pathman_relation_info(parent);
11281130
shout_if_prel_is_invalid(partition,prel,PT_INDIFFERENT);
1131+
1132+
trigname=build_update_trigger_name_internal(parent);
11291133
attname=get_attname(prel->key,prel->attnum);
11301134

1131-
create_single_update_trigger_internal(partition,attname);
1135+
create_single_update_trigger_internal(partition,trigname,attname);
11321136

11331137
PG_RETURN_VOID();
11341138
}
11351139

11361140
staticvoid
1137-
create_single_update_trigger_internal(Oidrelid,constchar*attname)
1141+
create_single_update_trigger_internal(Oidrelid,
1142+
constchar*trigname,
1143+
constchar*attname)
11381144
{
11391145
CreateTrigStmt*stmt;
11401146
List*func;
@@ -1143,7 +1149,7 @@ create_single_update_trigger_internal(Oid relid, const char *attname)
11431149
makeString("update_trigger_func"));
11441150

11451151
stmt=makeNode(CreateTrigStmt);
1146-
stmt->trigname=build_update_trigger_name_internal(relid);
1152+
stmt->trigname=(char*)trigname;
11471153
stmt->relation=makeRangeVarFromRelid(relid);
11481154
stmt->funcname=func;
11491155
stmt->args=NIL;
@@ -1152,9 +1158,9 @@ create_single_update_trigger_internal(Oid relid, const char *attname)
11521158
stmt->events=TRIGGER_TYPE_UPDATE;
11531159
stmt->columns=list_make1(makeString((char*)attname));
11541160
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;
11581164
stmt->constrrel=NULL;
11591165

11601166
(void)CreateTrigger(stmt,NULL,InvalidOid,InvalidOid,

‎src/utils.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ build_update_trigger_name_internal(Oid relid)
113113
if (!check_relation_exists(relid))
114114
elog(ERROR,"Invalid relation %u",relid);
115115

116-
return (char*)quote_identifier(psprintf("%s_upd_trig",get_rel_name(relid)));
116+
return (char*)psprintf("%s_upd_trig",get_rel_name(relid));
117117
}
118118

119119
/*

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp