@@ -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 else if (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 const char * tgdef ;
21342138 const char * usingpos ;
21352139 const char * tgenabled ;
2140+ const char * 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 case 1 :
2149- if (* tgenabled == 'D' || * tgenabled == 'f' )
2155+ if ((* tgenabled == 'D' || * tgenabled == 'f' ) &&
2156+ * tgisinternal == 'f' )
21502157 list_trigger = true;
21512158 break ;
21522159 case 2 :
2153- if (* tgenabled == 'A' )
2160+ if ((* tgenabled == 'D' || * tgenabled == 'f' ) &&
2161+ * tgisinternal == 't' )
21542162 list_trigger = true;
21552163 break ;
21562164 case 3 :
2165+ if (* tgenabled == 'A' )
2166+ list_trigger = true;
2167+ break ;
2168+ case 4 :
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 case 1 :
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 case 2 :
2176- printfPQExpBuffer (& buf , _ ("Triggers firing always :" ));
2191+ printfPQExpBuffer (& buf , _ ("Disabled internal triggers :" ));
21772192 break ;
21782193 case 3 :
2194+ printfPQExpBuffer (& buf , _ ("Triggers firing always:" ));
2195+ break ;
2196+ case 4 :
21792197 printfPQExpBuffer (& buf , _ ("Triggers firing on replica only:" ));
21802198 break ;
21812199
0 commit comments