Does having these conditional per-operation fields in the base class either increase performance in some way I'm not finding obvious OR simplify database backend implementations?  If so (especially if it really simplifies backend implementation) its fine to keep them like that, but normally I would be putting these fields in the subclasses that uses them.  Plus it increases the initialization time and ram usage for a new DBOperation -- though until we have performance and stress tests it'll be hard to tell if that matters.