if (conn->schema_support)
{
schema_strcat(schema_needed, "%.*s", szFkTableOwner, cbFkTableOwner, szFkTableName, cbFkTableName, conn);
- sprintf(tables_query, "SELECT pt.tgargs, "
- " pt.tgnargs, "
- " pt.tgdeferrable, "
- " pt.tginitdeferred, "
- " pp1.proname, "
+ sprintf(tables_query,
+ "SELECT pt.tgargs, "
+ " pt1.tgnargs, "
+ " pt1.tgdeferrable, "
+ " pt1.tginitdeferred, "
" pp2.proname, "
- " pc.oid, "
+ " pp3.proname, "
" pc1.oid, "
- " pc1.relname, "
- " pn.nspname "
- "FROM pg_class pc, "
+ " pc2.oid, "
+ " pc2.relname, "
+ " pn2.nspname "
+ "FROM pg_class pc1, "
+ " pg_class pc2, "
" pg_proc pp1, "
" pg_proc pp2, "
+ " pg_proc pp3, "
" pg_trigger pt1, "
" pg_trigger pt2, "
- " pg_proc pp, "
- " pg_trigger pt, "
- " pg_class pc1, "
- " pg_namespace pn "
- "WHERE pt.tgrelid = pc.oid "
- "AND pp.oid = pt.tgfoid "
- "AND pt1.tgconstrrelid = pc.oid "
+ " pg_trigger pt3, "
+ " pg_namespace pn1, "
+ " pg_namespace pn2 "
+ "WHERE pt1.tgrelid = pc1.oid "
"AND pp1.oid = pt1.tgfoid "
- "AND pt2.tgfoid = pp2.oid "
- "AND pt2.tgconstrrelid = pc.oid "
- "AND ((pc.relname='%s') "
- "AND (pn.oid = pc.relnamespace) "
- "AND (pn.nspname = '%s') "
- "AND (pp.proname LIKE '%%ins') "
- "AND (pp1.proname LIKE '%%upd') "
- "AND (pp2.proname LIKE '%%del') "
- "AND (pt1.tgrelid=pt.tgconstrrelid) "
- "AND (pt1.tgconstrname=pt.tgconstrname) "
- "AND (pt2.tgrelid=pt.tgconstrrelid) "
- "AND (pt2.tgconstrname=pt.tgconstrname) "
- "AND (pt.tgconstrrelid=pc1.oid) "
- "AND (pc1.relnamespace=pn.oid))",
+ "AND pt2.tgconstrrelid = pc1.oid "
+ "AND pp2.oid = pt2.tgfoid "
+ "AND pt3.tgfoid = pp3.oid "
+ "AND pt3.tgconstrrelid = pc1.oid "
+ "AND pc1.relname='%s' "
+ "AND pn1.oid = pc1.relnamespace "
+ "AND pn1.nspname = '%s' "
+ "AND pp1.proname LIKE '%%ins' "
+ "AND pp2.proname LIKE '%%upd' "
+ "AND pp3.proname LIKE '%%del' "
+ "AND pt2.tgrelid=pt1.tgconstrrelid "
+ "AND pt2.tgconstrname=pt1.tgconstrname "
+ "AND pt3.tgrelid=pt1.tgconstrrelid "
+ "AND pt3.tgconstrname=pt1.tgconstrname "
+ "AND pt1.tgconstrrelid=pc2.oid "
+ "AND pc2.relnamespace=pn2.oid ",
fk_table_needed, schema_needed);
}
else
- sprintf(tables_query, "SELECT pt.tgargs, "
- " pt.tgnargs, "
- " pt.tgdeferrable, "
- " pt.tginitdeferred, "
- " pp1.proname, "
+ sprintf(tables_query,
+ "SELECT pt1.tgargs, "
+ " pt1.tgnargs, "
+ " pt1.tgdeferrable, "
+ " pt1.tginitdeferred, "
" pp2.proname, "
- " pc.oid, "
+ " pp3.proname, "
" pc1.oid, "
- " pc1.relname "
- "FROM pg_class pc, "
+ " pc2.oid, "
+ " pc2.relname "
+ "FROM pg_class pc1, "
+ " pg_class pc2, "
" pg_proc pp1, "
" pg_proc pp2, "
- " pg_trigger pt1, "
+ " pg_proc pp3, "
+ " pg_trigger pt1 "
" pg_trigger pt2, "
- " pg_proc pp, "
- " pg_trigger pt, "
- " pg_class pc1 "
- "WHERE pt.tgrelid = pc.oid "
- "AND pp.oid = pt.tgfoid "
- "AND pt1.tgconstrrelid = pc.oid "
+ " pg_trigger pt3 "
+ "WHERE pt1.tgrelid = pc1.oid "
"AND pp1.oid = pt1.tgfoid "
- "AND pt2.tgfoid = pp2.oid "
- "AND pt2.tgconstrrelid = pc.oid "
- "AND ((pc.relname='%s') "
- "AND (pp.proname LIKE '%%ins') "
- "AND (pp1.proname LIKE '%%upd') "
- "AND (pp2.proname LIKE '%%del') "
- "AND (pt1.tgrelid=pt.tgconstrrelid) "
- "AND (pt1.tgconstrname=pt.tgconstrname) "
- "AND (pt2.tgrelid=pt.tgconstrrelid) "
- "AND (pt2.tgconstrname=pt.tgconstrname) "
- "AND (pt.tgconstrrelid=pc1.oid)) ",
+ "AND pt2.tgconstrrelid = pc1.oid "
+ "AND pp2.oid = pt2.tgfoid "
+ "AND pt3.tgfoid = pp3.oid "
+ "AND pt3.tgconstrrelid = pc1.oid "
+ "AND pc1.relname='%s' "
+ "AND pp1.proname LIKE '%%ins' "
+ "AND pp2.proname LIKE '%%upd' "
+ "AND pp3.proname LIKE '%%del' "
+ "AND pt2.tgrelid=pt1.tgconstrrelid "
+ "AND pt2.tgconstrname=pt1.tgconstrname "
+ "AND pt3.tgrelid=pt1.tgconstrrelid "
+ "AND pt3.tgconstrname=pt1.tgconstrname "
+ "AND pt1.tgconstrrelid=pc2.oid ",
fk_table_needed);
result = PGAPI_ExecDirect(htbl_stmt, tables_query, strlen(tables_query));
if (conn->schema_support)
{
schema_strcat(schema_needed, "%.*s", szPkTableOwner, cbPkTableOwner, szPkTableName, cbPkTableName, conn);
- sprintf(tables_query, "SELECT pt.tgargs, "
- " pt.tgnargs, "
- " pt.tgdeferrable, "
- " pt.tginitdeferred, "
- " pp.proname, "
+ sprintf(tables_query,
+ "SELECT pt1.tgargs, "
+ " pt1.tgnargs, "
+ " pt1.tgdeferrable, "
+ " pt1.tginitdeferred, "
" pp1.proname, "
- " pc.oid, "
+ " pp2.proname, "
" pc1.oid, "
- " pc1.relname, "
- " pn.nspname "
- "FROM pg_class pc, "
- " pg_class pc1, "
+ " pc2.oid, "
+ " pc2.relname, "
+ " pn2.nspname "
+ "FROM pg_class pc1, "
" pg_class pc2, "
- " pg_proc pp, "
+ " pg_class pc3, "
" pg_proc pp1, "
- " pg_trigger pt, "
+ " pg_proc pp2, "
" pg_trigger pt1, "
" pg_trigger pt2, "
- " pg_namespace pn "
- "WHERE pt.tgconstrrelid = pc.oid "
- " AND pt.tgrelid = pc1.oid "
- " AND pt1.tgfoid = pp1.oid "
- " AND pt1.tgconstrrelid = pc1.oid "
+ " pg_trigger pt3, "
+ " pg_namespace pn1, "
+ " pg_namespace pn2 "
+ "WHERE pt1.tgconstrrelid = pc1.oid "
+ " AND pt1.tgrelid = pc2.oid "
+ " AND pt2.tgfoid = pp2.oid "
" AND pt2.tgconstrrelid = pc2.oid "
- " AND pt2.tgfoid = pp.oid "
- " AND pc2.oid = pt.tgrelid "
- " AND ("
- " (pc.relname='%s') "
- " AND (pn.oid = pc.relnamespace) "
- " AND (pn.nspname = '%s') "
- " AND (pp.proname Like '%%upd') "
- " AND (pp1.proname Like '%%del')"
- " AND (pt1.tgrelid = pt.tgconstrrelid) "
- " AND (pt2.tgrelid = pt.tgconstrrelid) "
- " AND (pn.oid = pc1.relnamespace) "
- " )",
+ " AND pt3.tgconstrrelid = pc3.oid "
+ " AND pt3.tgfoid = pp1.oid "
+ " AND pc3.oid = pt1.tgrelid "
+ " AND pc1.relname='%s' "
+ " AND pn1.oid = pc1.relnamespace "
+ " AND pn1.nspname = '%s' "
+ " AND pp1.proname LIKE '%%upd' "
+ " AND pp2.proname LIKE '%%del'"
+ " AND pt2.tgrelid = pt1.tgconstrrelid "
+ " AND pt3.tgrelid = pt1.tgconstrrelid "
+ " AND pn2.oid = pc2.relnamespace ",
pk_table_needed, schema_needed);
}
else
- sprintf(tables_query, "SELECT pt.tgargs, "
- " pt.tgnargs, "
- " pt.tgdeferrable, "
- " pt.tginitdeferred, "
- " pp.proname, "
+ sprintf(tables_query,
+ "SELECT pt1.tgargs, "
+ " pt1.tgnargs, "
+ " pt1.tgdeferrable, "
+ " pt1.tginitdeferred, "
" pp1.proname, "
- " pc.oid, "
+ " pp2.proname, "
" pc1.oid, "
- " pc1.relname "
- "FROM pg_class pc, "
- " pg_class pc1, "
+ " pc2.oid, "
+ " pc2.relname "
+ "FROM pg_class pc1, "
" pg_class pc2, "
- " pg_proc pp, "
+ " pg_class pc3, "
" pg_proc pp1, "
- " pg_trigger pt, "
+ " pg_proc pp2, "
" pg_trigger pt1, "
- " pg_trigger pt2 "
- "WHERE pt.tgconstrrelid = pc.oid "
- " AND pt.tgrelid = pc1.oid "
- " AND pt1.tgfoid = pp1.oid "
- " AND pt1.tgconstrrelid = pc1.oid "
+ " pg_trigger pt2, "
+ " pg_trigger pt3 "
+ "WHERE pt1.tgconstrrelid = pc1.oid "
+ " AND pt1.tgrelid = pc2.oid "
+ " AND pt2.tgfoid = pp2.oid "
" AND pt2.tgconstrrelid = pc2.oid "
- " AND pt2.tgfoid = pp.oid "
- " AND pc2.oid = pt.tgrelid "
- " AND ("
- " (pc.relname='%s') "
- " AND (pp.proname Like '%%upd') "
- " AND (pp1.proname Like '%%del')"
- " AND (pt1.tgrelid = pt.tgconstrrelid) "
- " AND (pt2.tgrelid = pt.tgconstrrelid) "
- " )",
+ " AND pt3.tgconstrrelid = pc3.oid "
+ " AND pt3.tgfoid = pp1.oid "
+ " AND pc3.oid = pt1.tgrelid "
+ " AND pc1.relname='%s' "
+ " AND pp1.proname Like '%%upd' "
+ " AND pp2.proname Like '%%del' "
+ " AND pt2.tgrelid = pt1.tgconstrrelid "
+ " AND pt3.tgrelid = pt1.tgconstrrelid ",
pk_table_needed);
result = PGAPI_ExecDirect(htbl_stmt, tables_query, strlen(tables_query));