projects
/
postgresql.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
f41803b
)
List disabled triggers separately in psql's "\d
" output.
author
Neil Conway
Sat, 20 Jan 2007 21:17:30 +0000
(21:17 +0000)
committer
Neil Conway
Sat, 20 Jan 2007 21:17:30 +0000
(21:17 +0000)
Previously, disabled triggers were not displayed any differently than
enabled ones, which was quite misleading. Patch from Brendan Jurd.
src/bin/psql/describe.c
patch
|
blob
|
blame
|
history
diff --git
a/src/bin/psql/describe.c
b/src/bin/psql/describe.c
index 2fa9a75b9ffeba23ebb690441d95b4e735cd6175..6469b6aee4103ab32e794b23fadd39cb8c5efcae 100644
(file)
--- a/
src/bin/psql/describe.c
+++ b/
src/bin/psql/describe.c
@@
-3,7
+3,7
@@
*
* Copyright (c) 2000-2007, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.1
49 2007/01/05 22:19:49 momjian
Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/describe.c,v 1.1
50 2007/01/20 21:17:30 neilc
Exp $
*/
#include "postgres_fe.h"
#include "describe.h"
@@
-1054,12
+1054,14
@@
describeOneTableDetails(const char *schemaname,
*result3 = NULL,
*result4 = NULL,
*result5 = NULL,
- *result6 = NULL;
+ *result6 = NULL,
+ *result7 = NULL;
int check_count = 0,
index_count = 0,
foreignkey_count = 0,
rule_count = 0,
trigger_count = 0,
+ disabled_trigger_count = 0,
inherits_count = 0;
int count_footers = 0;
@@
-1125,7
+1127,8
@@
describeOneTableDetails(const char *schemaname,
"SELECT t.tgname, pg_catalog.pg_get_triggerdef(t.oid)\n"
"FROM pg_catalog.pg_trigger t\n"
"WHERE t.tgrelid = '%s' "
- "AND (not tgisconstraint "
+ "AND t.tgenabled "
+ "AND (NOT t.tgisconstraint "
" OR NOT EXISTS"
" (SELECT 1 FROM pg_catalog.pg_depend d "
" JOIN pg_catalog.pg_constraint c ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) "
@@
-1142,6
+1145,31
@@
describeOneTableDetails(const char *schemaname,
}
else
trigger_count = PQntuples(result4);
+
+ /* acquire disabled triggers as a separate list */
+ printfPQExpBuffer(&buf,
+ "SELECT t.tgname, pg_catalog.pg_get_triggerdef(t.oid)\n"
+ "FROM pg_catalog.pg_trigger t\n"
+ "WHERE t.tgrelid = '%s' "
+ "AND NOT t.tgenabled "
+ "AND (NOT t.tgisconstraint "
+ " OR NOT EXISTS"
+ " (SELECT 1 FROM pg_catalog.pg_depend d "
+ " JOIN pg_catalog.pg_constraint c ON (d.refclassid = c.tableoid AND d.refobjid = c.oid) "
+ " WHERE d.classid = t.tableoid AND d.objid = t.oid AND d.deptype = 'i' AND c.contype = 'f'))"
+ " ORDER BY 1",
+ oid);
+ result7 = PSQLexec(buf.data, false);
+ if (!result7)
+ {
+ PQclear(result1);
+ PQclear(result2);
+ PQclear(result3);
+ PQclear(result4);
+ goto error_return;
+ }
+ else
+ disabled_trigger_count = PQntuples(result7);
}
/* count foreign-key constraints (there are none if no triggers) */
@@
-1160,6
+1188,7
@@
describeOneTableDetails(const char *schemaname,
PQclear(result2);
PQclear(result3);
PQclear(result4);
+ PQclear(result7);
goto error_return;
}
else
@@
-1177,6
+1206,7
@@
describeOneTableDetails(const char *schemaname,
PQclear(result3);
PQclear(result4);
PQclear(result5);
+ PQclear(result7);
goto error_return;
}
else
@@
-1312,6
+1342,28
@@
describeOneTableDetails(const char *schemaname,
}
}
+ /* print disabled triggers */
+ if (disabled_trigger_count > 0)
+ {
+ printfPQExpBuffer(&buf, _("Disabled triggers:"));
+ footers[count_footers++] = pg_strdup(buf.data);
+ for (i = 0; i < disabled_trigger_count; i++)
+ {
+ const char *tgdef;
+ const char *usingpos;
+
+ /* Everything after "TRIGGER" is echoed verbatim */
+ tgdef = PQgetvalue(result7, i, 1);
+ usingpos = strstr(tgdef, " TRIGGER ");
+ if (usingpos)
+ tgdef = usingpos + 9;
+
+ printfPQExpBuffer(&buf, " %s", tgdef);
+
+ footers[count_footers++] = pg_strdup(buf.data);
+ }
+ }
+
/* print inherits */
for (i = 0; i < inherits_count; i++)
{
@@
-1347,6
+1399,7
@@
describeOneTableDetails(const char *schemaname,
PQclear(result4);
PQclear(result5);
PQclear(result6);
+ PQclear(result7);
}
printTable(title.data, headers,