Why do cross-database statements break replication when using filters? For example, say you you have table A and table B on the master and on the slave you've set up replicate-do-db = A.

Now if I do something like this:

USE B;
DROP TABLE A.sometable;


Why should this not work?  I know why it doesn't work in the sense that I've used a database then operated on another one but why has MySQL been implemented this way?
Was it a conscious decision or is there some grander reason why this shouldn't/can't be made to work?
I don't know the rationale, but it is a problem that has bitten many users.

It is not just DDL statements, but also DML:

replicate_do_db = A  or  binlog_do_db = A  or ... (several syntaxes possible)
USE B;
INSERT INTO A ...;


Won't perform the INSERT.