@@ -2090,15 +2090,19 @@ describeOneTableDetails(const char *schemaname,
20902090printfPQExpBuffer (& 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 );
20982101if (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'))" );
21002104else if (pset .sversion >=80300 )
2101- appendPQExpBufferStr (& buf ,"t.tgconstraint = 0" );
2105+ appendPQExpBufferStr (& buf ,"( t.tgconstraint = 0 OR (t.tgconstraint <> 0 AND t.tgenabled = 'D')) " );
21022106else
21032107appendPQExpBufferStr (& 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{
21292133have_heading = false;
21302134for (i = 0 ;i < tuples ;i ++ )
@@ -2133,11 +2137,13 @@ describeOneTableDetails(const char *schemaname,
21332137const char * tgdef ;
21342138const char * usingpos ;
21352139const char * tgenabled ;
2140+ const char * tgisinternal ;
21362141
21372142/*
21382143 * Check if this trigger falls into the current category
21392144 */
21402145tgenabled = PQgetvalue (result ,i ,2 );
2146+ tgisinternal = PQgetvalue (result ,i ,3 );
21412147list_trigger = false;
21422148switch (category )
21432149{
@@ -2146,14 +2152,20 @@ describeOneTableDetails(const char *schemaname,
21462152list_trigger = true;
21472153break ;
21482154case 1 :
2149- if (* tgenabled == 'D' || * tgenabled == 'f' )
2155+ if ((* tgenabled == 'D' || * tgenabled == 'f' )&&
2156+ * tgisinternal == 'f' )
21502157list_trigger = true;
21512158break ;
21522159case 2 :
2153- if (* tgenabled == 'A' )
2160+ if ((* tgenabled == 'D' || * tgenabled == 'f' )&&
2161+ * tgisinternal == 't' )
21542162list_trigger = true;
21552163break ;
21562164case 3 :
2165+ if (* tgenabled == 'A' )
2166+ list_trigger = true;
2167+ break ;
2168+ case 4 :
21572169if (* tgenabled == 'R' )
21582170list_trigger = true;
21592171break ;
@@ -2170,12 +2182,18 @@ describeOneTableDetails(const char *schemaname,
21702182printfPQExpBuffer (& buf ,_ ("Triggers:" ));
21712183break ;
21722184case 1 :
2173- printfPQExpBuffer (& buf ,_ ("Disabled triggers:" ));
2185+ if (pset .sversion >=80300 )
2186+ printfPQExpBuffer (& buf ,_ ("Disabled user triggers:" ));
2187+ else
2188+ printfPQExpBuffer (& buf ,_ ("Disabled triggers:" ));
21742189break ;
21752190case 2 :
2176- printfPQExpBuffer (& buf ,_ ("Triggers firing always :" ));
2191+ printfPQExpBuffer (& buf ,_ ("Disabled internal triggers :" ));
21772192break ;
21782193case 3 :
2194+ printfPQExpBuffer (& buf ,_ ("Triggers firing always:" ));
2195+ break ;
2196+ case 4 :
21792197printfPQExpBuffer (& buf ,_ ("Triggers firing on replica only:" ));
21802198break ;
21812199