I tried add an column alias in SELECT statement using SQuirrel SQL 3.4 + Firebird 1.5 + Driver JDBC Jaybird 2.2.[0|1] (JVM 1.7.0_03), but doesn’t work. The column aliased appears with the original name of column. In another tool (DBExpert) the same statement works fine.
Statement: SELECT column1 AS alias1, column2 FROM table;
Resultant columns name in SquirrelSQL: column1 - column2
Resultant columns name in DBExpert: alias1 - column2
Tried add ‘ and ” around alias name, but also not work.
Someone have an idea?
Edit: I updated the JDBC Jaybird driver to 2.2.1 version (released Sept/30) and the problem remains.
Edit 2: Problem fixed!
The problenm is caused by default preferences of Squirrel SQL.
To fix it, go to “File” -> “Global Preferences”, in tab “Data Type Controls” find “General (applies to all types)” and mark the combo-box “Use column labels instead of column names in result headers”.
See the screenshot: http://i1-win.softpedia-static.com/screenshots/SQuirrel-SQL-Client_4.png?1345342622
Enjoy.
The problem is due to confusion in the JDBC specs (at least historically) and a change in Jaybird with regard to what it reports as columnNames and columnLabels in the resultset metadata. As far as I am aware in JDBC 2.0 and earlier, the distinction between columnName and columnLabel was not well defined, so in almost all cases
getColumnName()returned the same value asgetColumnLabel()(ie the AS alias if specified).With JDBC 3.0 a sharper distinction was made: the
columnNamewas to be the name of the underlying column in a table (if any), thecolumnLabelis the AS-alias if specified and otherwise thecolumnName. Jaybird 2.1.6 and earlier used to return the same value forgetColumnLabel()andgetColumnName()(ie thecolumnLabel), this was changed in Jaybird 2.2.Apparently Squirrel defaults to the non-JDBC compliant option of
columnName, instead ofcolumnLabel. As you already found out: there is an option to get it to use thecolumnLabelinstead. The other option you have is to use Jaybird 2.2.1 or higher and add the connection propertycolumnLabelForName=true.