I confirm that this bug exists in the current code. An interesting variation: <code> drop table if exists t; create table t(id integer primary key not null, f integer, b integer); insert into t (f,b) select 1,2 from generate_series(1,50000,1); alter table t drop column f; select count(\*) from t where b<>2; ; -- emits 49867 drop table if exists t; create table t(id integer primary key not null, f integer, b integer); insert into t (f,b) select 123456789,987654321 from generate_series(1,50000,1); alter table t drop column f; select count(\*) from t where b<>987654321; ; -- emits 0 </code> It appears that there is a dependency on the dropped or kept datum size.