Like many I have had reservations about generated SQL, I haven't used DBIx::Recordset, just skiimed the docs. I have used SQL::Abstract to simplify the building of messy SQL queries on a single table. It doesn't do a 'SELECT *' fortunately, it builds a string that you pass yourself to DBI. It has helped a great deal with this one app where I have to offer the end user a great deal of flexibility in getting the data they want.
The jury here is still out on things like DBIx::Recordset that handle more complex stuff.
But it does appear that you really build the query by building a data structure that gets translated. so in fact you have a lot of control.
jdtoronto