Псевдоним столбца в инструкциях SELECT не работает с SQuirrel SQL + Firebird

Я попытался добавить псевдоним столбца в операторе SELECT, используя SQuirrel SQL 3.4 + Firebird 1.5 + драйвер JDBC Jaybird 2.2.[0|1] (JVM 1.7.0_03), но не работает. Появится псевдоним столбца с исходным именем столбца. В другом инструменте (DBExpert) тот же оператор работает отлично.

Заявление: SELECT column1 AS alias1, column2 FROM table;
Имя результирующего столбца в SquirrelSQL: column1 - column2
Имя результирующего столбца в DBExpert: alias1 - column2

Пробовал добавлять 'и' вокруг псевдонима, но тоже не работает.

У кого-нибудь есть идея?

Изменить: Я обновил драйвер JDBC Jaybird до версии 2.2.1 (выпущена 30 сентября), и проблема остается.

Редактировать 2: проблема исправлена!

Проблема вызвана настройками Squirrel SQL по умолчанию.

Чтобы исправить это, перейдите в "Файл" -> "Глобальные настройки", во вкладке "Элементы управления типами данных" найдите "Общие (относится ко всем типам)" и отметьте поле со списком "Использовать метки столбцов вместо имен столбцов в заголовках результатов". ".

См. Скриншот: http://i1-win.softpedia-static.com/screenshots/SQuirrel-SQL-Client_4.png?1345342622

Наслаждаться.

2 ответа

Решение

Проблема связана с путаницей в спецификациях JDBC (по крайней мере, исторически) и изменениями в Jaybird относительно того, что он сообщает как columnNames и columnLabels в метаданных набора результатов. Насколько мне известно, в JDBC 2.0 и более ранних версиях различие между columnName и columnLabel не было четко определено, поэтому почти во всех случаях getColumnName() вернул то же значение, что и getColumnLabel() (т.е. псевдоним AS, если указан).

В JDBC 3.0 было сделано более четкое различие: columnName должен был быть именем основного столбца в таблице (если есть), columnLabel AS-псевдоним, если указан, и в противном случае columnName, Jaybird 2.1.6 и более ранние версии возвращали одно и то же значение для getColumnLabel() а также getColumnName() (т.е. columnLabel), это было изменено в Jaybird 2.2.

По-видимому, Squirrel по умолчанию использует не-JDBC-совместимую опцию columnName, вместо columnLabel, Как вы уже узнали: есть возможность заставить его использовать columnLabel вместо. Другой вариант - использовать Jaybird 2.2.1 или выше и добавить свойство подключения. columnLabelForName=true,

В Squirrel это должно быть настроено на:

Файл> Глобальные настройки> Элементы управления типами данных> Проверить: использовать заголовки столбцов вместо имен столбцов в заголовках результатов

Другие вопросы по тегам