after st_union() PgSQL returns a note:
NOTE: TopologyException: side location conflict at 226.001 39.5158
And in the results there are two rows with empty geometry and other rows are ok.
What causes that problem? How to solve it?
I've found the problem. It was a self intersecting polygon.
Googling found this related post: http://lists.refractions.net/pipermail/jts-devel/2009-March/002939.html
So it seems your features may be suffering from rounding errors, and it may be solvable by cleaning up the geometry a bit.
It might be worth creating a minimum reproducible case, and post a message on the postgis mailing list.