Jurrien's patch has a minor BC problem (if I understand everything correctly):
Currently, if you select only some columns, then only those would be returned, since * is added before converting to string ONLY if no columns are selected.
With Jurrien's patch, * would always be selected, unless explicitly removed using reset(Zend_Db_Select::COLUMNS).
In addition to Jurrien's change, I propose:
- adding a protected variable $_wildcardSelectedByDefault. This would then get set to true in setTable() at the same time as ?$this->from($primary, self::SQL_WILDCARD, $schema)?
- override columns() to remove ?self::SQL_WILDCARD? from columns and set _wildcardSelectedByDefault to false if setting columns for the primary table and $_wildcardSelectedByDefault is true.
This way * is selected unless columns() is called explicitly, and the Zend_Db_Table_Select object always reflects the current "state" (columns that will actually be selected).
I will be testing this solution during the next week. If anyone has any other suggestions/worries, please speak 
Please evaluate and fix/categorize as necessary.