I believe these TODO items can now be marked "done":
* SELECT foo UNION SELECT foo is incorrectly simplified to SELECT foo
* Be smarter about promoting types when UNION merges different data types
[ actually UNION is now exactly as smart as CASE, which is still not good enough, but it's no longer a UNION problem
---the issue is how much knowledge we have of type promotion ]
* redesign INSERT ... SELECT to have two levels of target list
* have INTERSECT/EXCEPT prevent duplicates unless ALL is specified
* Views containing aggregates sometimes fail(Jan)
* SELECT ... UNION ... ORDER BY fails when sort expr not in result list
[ this is now disallowed, rather than misbehaving ]
* SELECT ... UNION ... GROUP BY fails if column types disagree, no type promotion occurs
* Allow long tuples by chaining or auto-storing outside db (TOAST)(Jan)
* Allow compression of large fields or a compressed field type
* Large objectso Fix large object mapping scheme, own typeid or reltype(Peter)o Not to stuff everything as files in a
singledirectory, hash dirso Allow large object vacuumingo Tables that start with xinv confused to be large objects
* Allow DISTINCT on views
* Allow views of aggregate columns
* Allow views with subselects
* Support UNION/INTERSECT/EXCEPT in sub-selects
* Redesign the function call interface to handle NULLs better[function](Tom)
* redesign UNION structures to have separarate target lists
* Allow multi-level query trees for INSERT INTO ... SELECT
* use fmgr_info()/fmgr_faddr() instead of fmgr() calls in high-traffic places, like GROUP BY, UNIQUE, index processing,
etc.
* In WHERE tab1.x=3 AND tab1.x=tab2.y, add tab2.y=3
* Remove ANALYZE from VACUUM so it can be run separately without locks
Also, this is no longer relevant for large objects, though perhaps still
of interest for sort files:
* Put sort files, large objects in their own directory
regards, tom lane