Re: ResultSetMetaData.getColumnDisplaySize returns 2147483647 ?

Поиск
Список
Период
Сортировка
От Віталій Тимчишин
Тема Re: ResultSetMetaData.getColumnDisplaySize returns 2147483647 ?
Дата
Msg-id 331e40660903030557l732b7976nebdf5e88d0eb32f1@mail.gmail.com
обсуждение исходный текст
Ответ на Re: ResultSetMetaData.getColumnDisplaySize returns 2147483647 ?  (DGPickett <DGPickett@aol.com>)
Список pgsql-jdbc


2009/3/2 DGPickett <DGPickett@aol.com>
On Mar 2, 4:10 am, oli...@opencloud.com (Oliver Jowett) wrote:
> Or you could change the calling code to
> bounds-check the metadata results before it goes off and tries to
> allocate the entire heap for one column in one row ..

If you have to change calling code to access Postgres, it violates the
original promise of JDBC: use me and be portable.  If you want an 'I
don't know' response built into this API method, sell it to the JDBC
community, but until then, it is a requirement.  Most RDBMS have not
stumbled when delivering on the requirement, so selling it as a
hardship seems difficult.  As the real estate zoning lawyers say,
"This is, at best, a self-imposed hardship."

I'd say it works fairly well here. It is asked a maximum, it don't know - so it tells theoretical maximum possible and that is not precise, but correct value. And the jisql does have a bug - it tries to allocate memory equal to column maximum width. Imagine a varchar(1000000000) column I may use to store long descriptions without limits (or equal PostgreSQL "text" type). My values never larger then, say, 4KB, and jisql would try to allocate 1000000000 size buffer, that is stupid and would lead to problems. It should have some maximum limit (say, 1MB), because even for varchar(many) column, it usually do not have such a long values.

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Kris Jurka
Дата:
Сообщение: Re: ResultSetMetaData.getColumnDisplaySize returns 2147483647 ?
Следующее
От: Thomas Kellerer
Дата:
Сообщение: Inserting into a uuid column