It turns out there there was an ON DELETE trigger on the row that looked a little like this:
create trigger clean_up_other_tables
before delete on sec_sesssions
execute clean_up_other_tables_tr;
Where clean_up_other_tables_tr looked a little like this:
delete from foo where session_id = OLD.session_id;
return NULL;
-----------------
So the return null was breaking the delete and when I think about it, It makes some sense.
Cheers,
Carl C-M