Да, драйвер выполняет преобразования.В классе PGResultSet
вы можете найти код, используемый для преобразования (он вызывается, если столбец является текстовым, для двоичных столбцов существуют другие преобразования).
public static double toDouble(String s) throws SQLException {
if (s != null) {
try {
s = s.trim();
return Double.parseDouble(s);
} catch (NumberFormatException e) {
throw new PSQLException(GT.tr("Bad value for type {0} : {1}", new Object[]{"double", s}),
PSQLState.NUMERIC_VALUE_OUT_OF_RANGE);
}
}
return 0; // SQL NULL
}
В спецификации указывается, что такие преобразования должны быть выполненытак что он работает в соответствии со спецификацией.Стоит ли полагаться на эти преобразования - это другой вопрос, как прокомментировал a_horse_with_no_name
, почему означает , что вы храните парные числа как текст?
Производительность не имеет к этому никакого отношения.По сравнению с тем, что на самом деле делает драйвер (то есть чтение и запись данных), выполнение преобразований - это капля в море.
Преобразования по умолчанию, определяемые спецификацией JDBC, можно найти в приложении B.6
в конце.из http://download.oracle.com/otn-pub/jcp/jdbc-4_3-mrel3-eval-spec/jdbc4.3-fr-spec.pdf