Here is a diff to info.c in interfaces/odbc that updates SQLForeignKeys to return foreign key information based on the pg_trigger system table.  I have tested the patch with (what I believe) is all possible primary/foreign key combinations -- however I may have missed some, so if anyone feels like taking the patch for a test drive, here are some useful links:
Here is a diff to info.c in interfaces/odbc that updates SQLForeignKeys to
return foreign key information based on the pg_trigger system table.  I
have tested the patch with (what I believe) is all possible
primary/foreign key combinations -- however I may have missed some, so if
anyone feels like taking the patch for a test drive, here are some useful
links:

Michael Fork

janebeckman/gpdb,pavanvd/postgres-xl,tangp3/gpdb,jmcatamney/gpdb,lintzc/gpdb,xinzweb/gpdb,xuegang/gpdb,lintzc/gpdb,ovr/postgres-xl,zeroae/postgres-xl,royc1/gpdb,ashwinstar/gpdb,postmind-net/postgres-xl,oberstet/postgres-xl,adam8157/gpdb,cjcjameson/gpdb,yazun/postgres-xl,CraigHarris/gpdb,lintzc/gpdb,lisakowen/gpdb,xuegang/gpdb,kmjungersen/PostgresXL,50wu/gpdb,janebeckman/gpdb,xinzweb/gpdb,rvs/gpdb,chrishajas/gpdb,atris/gpdb,atris/gpdb,royc1/gpdb,techdragon/Postgres-XL,rvs/gpdb,lpetrov-pivotal/gpdb,Quikling/gpdb,tangp3/gpdb,arcivanov/postgres-xl,janebeckman/gpdb,lpetrov-pivotal/gpdb,kaknikhil/gpdb,yuanzhao/gpdb,0x0FFF/gpdb,Chibin/gpdb,ashwinstar/gpdb,foyzur/gpdb,kaknikhil/gpdb,50wu/gpdb,ovr/postgres-xl,ovr/postgres-xl,yuanzhao/gpdb,rubikloud/gpdb,Quikling/gpdb,pavanvd/postgres-xl,pavanvd/postgres-xl,lintzc/gpdb,Chibin/gpdb,yuanzhao/gpdb,50wu/gpdb,Quikling/gpdb,postmind-net/postgres-xl,0x0FFF/gpdb,CraigHarris/gpdb,jmcatamney/gpdb,zaksoup/gpdb,ovr/postgres-xl,foyzur/gpdb,oberstet/postgres-xl,CraigHarris/gpdb,lintzc/gpdb,randomtask1155/gpdb,xuegang/gpdb,tpostgres-projects/tPostgres,techdragon/Postgres-XL,Quikling/gpdb,rvs/gpdb,zaksoup/gpdb,zeroae/postgres-xl,Quikling/gpdb,snaga/postgres-xl,adam8157/gpdb,cjcjameson/gpdb,janebeckman/gpdb,zeroae/postgres-xl,randomtask1155/gpdb,greenplum-db/gpdb,edespino/gpdb,0x0FFF/gpdb,CraigHarris/gpdb,adam8157/gpdb,rubikloud/gpdb,lintzc/gpdb,CraigHarris/gpdb,kmjungersen/PostgresXL,adam8157/gpdb,kaknikhil/gpdb,adam8157/gpdb,royc1/gpdb,foyzur/gpdb,rvs/gpdb,Chibin/gpdb,edespino/gpdb,Chibin/gpdb,lintzc/gpdb,ahachete/gpdb,zaksoup/gpdb,lisakowen/gpdb,50wu/gpdb,50wu/gpdb,chrishajas/gpdb,xinzweb/gpdb,Quikling/gpdb,yazun/postgres-xl,yuanzhao/gpdb,CraigHarris/gpdb,rubikloud/gpdb,edespino/gpdb,cjcjameson/gpdb,cjcjameson/gpdb,edespino/gpdb,kaknikhil/gpdb,chrishajas/gpdb,xuegang/gpdb,kaknikhil/gpdb,tangp3/gpdb,ashwinstar/gpdb,xuegang/gpdb,Quikling/gpdb,chrishajas/gpdb,lisakowen/gpdb,cjcjameson/gpdb,tpostgres-projects/tPostgres,lpetrov-pivotal/gpdb,lpetrov-pivotal/gpdb,jmcatamney/gpdb,jmcatamney/gpdb,adam8157/gpdb,tpostgres-projects/tPostgres,rvs/gpdb,CraigHarris/gpdb,ovr/postgres-xl,rvs/gpdb,janebeckman/gpdb,yuanzhao/gpdb,zaksoup/gpdb,chrishajas/gpdb,yuanzhao/gpdb,lisakowen/gpdb,greenplum-db/gpdb,50wu/gpdb,snaga/postgres-xl,janebeckman/gpdb,foyzur/gpdb,ahachete/gpdb,atris/gpdb,jmcatamney/gpdb,zaksoup/gpdb,lpetrov-pivotal/gpdb,rubikloud/gpdb,xuegang/gpdb,postmind-net/postgres-xl,greenplum-db/gpdb,pavanvd/postgres-xl,ahachete/gpdb,jmcatamney/gpdb,lpetrov-pivotal/gpdb,rvs/gpdb,chrishajas/gpdb,0x0FFF/gpdb,xinzweb/gpdb,snaga/postgres-xl,edespino/gpdb,50wu/gpdb,zaksoup/gpdb,snaga/postgres-xl,randomtask1155/gpdb,oberstet/postgres-xl,janebeckman/gpdb,yazun/postgres-xl,lisakowen/gpdb,atris/gpdb,xinzweb/gpdb,xinzweb/gpdb,kaknikhil/gpdb,0x0FFF/gpdb,tpostgres-projects/tPostgres,zaksoup/gpdb,snaga/postgres-xl,randomtask1155/gpdb,ashwinstar/gpdb,lpetrov-pivotal/gpdb,rvs/gpdb,chrishajas/gpdb,xuegang/gpdb,Postgres-XL/Postgres-XL,arcivanov/postgres-xl,pavanvd/postgres-xl,yuanzhao/gpdb,tpostgres-projects/tPostgres,lisakowen/gpdb,ashwinstar/gpdb,atris/gpdb,greenplum-db/gpdb,adam8157/gpdb,Quikling/gpdb,adam8157/gpdb,rubikloud/gpdb,randomtask1155/gpdb,ashwinstar/gpdb,Chibin/gpdb,Postgres-XL/Postgres-XL,arcivanov/postgres-xl,lisakowen/gpdb,Chibin/gpdb,rvs/gpdb,xinzweb/gpdb,Chibin/gpdb,atris/gpdb,tangp3/gpdb,0x0FFF/gpdb,cjcjameson/gpdb,techdragon/Postgres-XL,cjcjameson/gpdb,kaknikhil/gpdb,yuanzhao/gpdb,royc1/gpdb,greenplum-db/gpdb,foyzur/gpdb,yuanzhao/gpdb,atris/gpdb,chrishajas/gpdb,foyzur/gpdb,lisakowen/gpdb,zeroae/postgres-xl,ahachete/gpdb,tangp3/gpdb,xuegang/gpdb,Chibin/gpdb,0x0FFF/gpdb,Quikling/gpdb,edespino/gpdb,janebeckman/gpdb,Quikling/gpdb,arcivanov/postgres-xl,CraigHarris/gpdb,zeroae/postgres-xl,jmcatamney/gpdb,ashwinstar/gpdb,arcivanov/postgres-xl,edespino/gpdb,greenplum-db/gpdb,arcivanov/postgres-xl,postmind-net/postgres-xl,cjcjameson/gpdb,royc1/gpdb,cjcjameson/gpdb,tangp3/gpdb,kmjungersen/PostgresXL,ahachete/gpdb,rubikloud/gpdb,xuegang/gpdb,randomtask1155/gpdb,postmind-net/postgres-xl,kaknikhil/gpdb,oberstet/postgres-xl,ahachete/gpdb,kmjungersen/PostgresXL,techdragon/Postgres-XL,CraigHarris/gpdb,Chibin/gpdb,foyzur/gpdb,atris/gpdb,kmjungersen/PostgresXL,royc1/gpdb,lintzc/gpdb,Postgres-XL/Postgres-XL,lpetrov-pivotal/gpdb,randomtask1155/gpdb,yazun/postgres-xl,0x0FFF/gpdb,tangp3/gpdb,edespino/gpdb,rvs/gpdb,tangp3/gpdb,jmcatamney/gpdb,techdragon/Postgres-XL,ahachete/gpdb,zaksoup/gpdb,rubikloud/gpdb,Chibin/gpdb,janebeckman/gpdb,royc1/gpdb,yuanzhao/gpdb,yazun/postgres-xl,janebeckman/gpdb,greenplum-db/gpdb,Postgres-XL/Postgres-XL,greenplum-db/gpdb,oberstet/postgres-xl,royc1/gpdb,kaknikhil/gpdb,rubikloud/gpdb,kaknikhil/gpdb,Postgres-XL/Postgres-XL,edespino/gpdb,ahachete/gpdb,50wu/gpdb,xinzweb/gpdb,randomtask1155/gpdb,edespino/gpdb,ashwinstar/gpdb,foyzur/gpdb,lintzc/gpdb,cjcjameson/gpdb