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

Commit4bad548

Browse files
committed
psql: add separate \d display for disabled system triggers
Previously if you disabled all triggers, only user triggers wouldshow as disabledPer report from Andres Freund
1 parentd613861 commit4bad548

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

‎src/bin/psql/describe.c

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2090,15 +2090,19 @@ describeOneTableDetails(const char *schemaname,
20902090
printfPQExpBuffer(&buf,
20912091
"SELECT t.tgname, "
20922092
"pg_catalog.pg_get_triggerdef(t.oid%s), "
2093-
"t.tgenabled\n"
2093+
"t.tgenabled, %s\n"
20942094
"FROM pg_catalog.pg_trigger t\n"
20952095
"WHERE t.tgrelid = '%s' AND ",
20962096
(pset.sversion >=90000 ?", true" :""),
2097-
oid);
2097+
(pset.sversion >=90000 ?"t.tgisinternal" :
2098+
pset.sversion >=80300 ?
2099+
"t.tgconstraint <> 0 AS tgisinternal" :
2100+
"false AS tgisinternal"),oid);
20982101
if (pset.sversion >=90000)
2099-
appendPQExpBufferStr(&buf,"NOT t.tgisinternal");
2102+
/* display/warn about disabled internal triggers */
2103+
appendPQExpBuffer(&buf,"(NOT t.tgisinternal OR (t.tgisinternal AND t.tgenabled = 'D'))");
21002104
elseif (pset.sversion >=80300)
2101-
appendPQExpBufferStr(&buf,"t.tgconstraint = 0");
2105+
appendPQExpBufferStr(&buf,"(t.tgconstraint = 0 OR (t.tgconstraint <> 0 AND t.tgenabled = 'D'))");
21022106
else
21032107
appendPQExpBufferStr(&buf,
21042108
"(NOT tgisconstraint "
@@ -2124,7 +2128,7 @@ describeOneTableDetails(const char *schemaname,
21242128
* disabled triggers and the two special ALWAYS and REPLICA
21252129
* configurations.
21262130
*/
2127-
for (category=0;category<4;category++)
2131+
for (category=0;category <=4;category++)
21282132
{
21292133
have_heading= false;
21302134
for (i=0;i<tuples;i++)
@@ -2133,11 +2137,13 @@ describeOneTableDetails(const char *schemaname,
21332137
constchar*tgdef;
21342138
constchar*usingpos;
21352139
constchar*tgenabled;
2140+
constchar*tgisinternal;
21362141

21372142
/*
21382143
* Check if this trigger falls into the current category
21392144
*/
21402145
tgenabled=PQgetvalue(result,i,2);
2146+
tgisinternal=PQgetvalue(result,i,3);
21412147
list_trigger= false;
21422148
switch (category)
21432149
{
@@ -2146,14 +2152,20 @@ describeOneTableDetails(const char *schemaname,
21462152
list_trigger= true;
21472153
break;
21482154
case1:
2149-
if (*tgenabled=='D'||*tgenabled=='f')
2155+
if ((*tgenabled=='D'||*tgenabled=='f')&&
2156+
*tgisinternal=='f')
21502157
list_trigger= true;
21512158
break;
21522159
case2:
2153-
if (*tgenabled=='A')
2160+
if ((*tgenabled=='D'||*tgenabled=='f')&&
2161+
*tgisinternal=='t')
21542162
list_trigger= true;
21552163
break;
21562164
case3:
2165+
if (*tgenabled=='A')
2166+
list_trigger= true;
2167+
break;
2168+
case4:
21572169
if (*tgenabled=='R')
21582170
list_trigger= true;
21592171
break;
@@ -2170,12 +2182,18 @@ describeOneTableDetails(const char *schemaname,
21702182
printfPQExpBuffer(&buf,_("Triggers:"));
21712183
break;
21722184
case1:
2173-
printfPQExpBuffer(&buf,_("Disabled triggers:"));
2185+
if (pset.sversion >=80300)
2186+
printfPQExpBuffer(&buf,_("Disabled user triggers:"));
2187+
else
2188+
printfPQExpBuffer(&buf,_("Disabled triggers:"));
21742189
break;
21752190
case2:
2176-
printfPQExpBuffer(&buf,_("Triggers firing always:"));
2191+
printfPQExpBuffer(&buf,_("Disabled internal triggers:"));
21772192
break;
21782193
case3:
2194+
printfPQExpBuffer(&buf,_("Triggers firing always:"));
2195+
break;
2196+
case4:
21792197
printfPQExpBuffer(&buf,_("Triggers firing on replica only:"));
21802198
break;
21812199

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp