Я честно скажу: как-то все очень сложно (во всяком случае при поверхностном осмотре). Вдаваться всерьез не стал, так как не вижу для себя практического применения. В тех схемах, которые я применяю и с теми SQL-запросами, которые в итоге формируются, у меня подобных ошибок не возникает.