The problem is probably due to the fact that ec_items has empty strings in style_choice, color_choice, and size_choice. This is probably a porting bug caused by oracle's non-standard method of converting empty strings to nulls whereas postgresql correctly inserts an empty string in the db. Try this from psql:
acspg=# update ec_items set style_choice = null, color_choice = null, size_choice = null;
UPDATE 3
Now try reloading the page and playing around with decreasing the quantities. It should now work. The true bug is probably at the point of insert for ec_items. I'll look around for it later when I have more time, unless you want to try and track it down.