GridSQL actually does a nice job of breaking up the query and optimizing it appropriately to handle cross node joins. There are agents running on each of the nodes that handles the inter-node communication allowing it to be transparent to the calling application.
--
EnterpriseDB (http://www.enterprisedb.com)