summaryrefslogtreecommitdiff
path: root/contrib/findoidjoins/findoidjoins.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/findoidjoins/findoidjoins.c')
-rw-r--r--contrib/findoidjoins/findoidjoins.c109
1 files changed, 0 insertions, 109 deletions
diff --git a/contrib/findoidjoins/findoidjoins.c b/contrib/findoidjoins/findoidjoins.c
deleted file mode 100644
index c426b5523a3..00000000000
--- a/contrib/findoidjoins/findoidjoins.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * findoidjoins.c, requires src/interfaces/libpgeasy
- *
- */
-#include "postgres_fe.h"
-
-#include "libpq-fe.h"
-#include "halt.h"
-#include "libpgeasy.h"
-
-PGresult *attres,
- *relres;
-
-int
-main(int argc, char **argv)
-{
- char query[4000];
- char relname[256];
- char relname2[256];
- char attname[256];
- char typname[256];
- int count;
- char optstr[256];
-
- if (argc != 2)
- halt("Usage: %s database\n", argv[0]);
-
- snprintf(optstr, 256, "dbname=%s", argv[1]);
- connectdb(optstr);
-
- on_error_continue();
- on_error_stop();
-
- doquery("BEGIN WORK");
- doquery("\
- DECLARE c_attributes BINARY CURSOR FOR \
- SELECT typname, relname, a.attname \
- FROM pg_class c, pg_attribute a, pg_type t \
- WHERE a.attnum > 0 AND \
- relkind = 'r' AND \
- (typname = 'oid' OR \
- typname = 'regproc' OR \
- typname = 'regclass' OR \
- typname = 'regtype') AND \
- a.attrelid = c.oid AND \
- a.atttypid = t.oid \
- ORDER BY 2, a.attnum ; \
- ");
- doquery("FETCH ALL IN c_attributes");
- attres = get_result();
-
- doquery("\
- DECLARE c_relations BINARY CURSOR FOR \
- SELECT relname \
- FROM pg_class c \
- WHERE relkind = 'r' AND relhasoids \
- ORDER BY 1; \
- ");
- doquery("FETCH ALL IN c_relations");
- relres = get_result();
-
- set_result(attres);
- while (fetch(typname, relname, attname) != END_OF_TUPLES)
- {
- set_result(relres);
- reset_fetch();
- while (fetch(relname2) != END_OF_TUPLES)
- {
- unset_result(relres);
- if (strcmp(typname, "oid") == 0)
- sprintf(query, "\
- DECLARE c_matches BINARY CURSOR FOR \
- SELECT count(*)::int4 \
- FROM \"%s\" t1, \"%s\" t2 \
- WHERE t1.\"%s\" = t2.oid ",
- relname, relname2, attname);
- else
- sprintf(query, "\
- DECLARE c_matches BINARY CURSOR FOR \
- SELECT count(*)::int4 \
- FROM \"%s\" t1, \"%s\" t2 \
- WHERE t1.\"%s\"::oid = t2.oid ",
- relname, relname2, attname);
-
- doquery(query);
- doquery("FETCH ALL IN c_matches");
- fetch(&count);
- if (count != 0)
- printf("Join %s.%s => %s.oid\n", relname, attname, relname2);
- doquery("CLOSE c_matches");
- set_result(relres);
- }
- set_result(attres);
- }
-
- set_result(relres);
- doquery("CLOSE c_relations");
- PQclear(relres);
-
- set_result(attres);
- doquery("CLOSE c_attributes");
- PQclear(attres);
- unset_result(attres);
-
- doquery("COMMIT WORK");
-
- disconnectdb();
- return 0;
-}