Brandon Craig Rhodes <brandon@oit.gatech.edu> writes:
> The `working' test case omits the
> AND (account, policy) NOT IN
> (SELECT account, policy FROM policy_accounts_active)
> condition from the end of executor_active, which magically makes the
> executor_hamlet rule start firing as it should.
I don't think this is a bug. The executor_hamlet rule fires after the
executor_active rule does; therefore the (account, policy) pair *has
already been inserted into policy_accounts_active*, and will be found
when executor_hamlet re-executes the select to look for it.
My advice to you is to use triggers, not rules, for pushing data from
one table to another; especially when you need logic this complex to
decide what to do.
regards, tom lane