Re: Updating a chkpass column in postgres v8.1.21

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Updating a chkpass column in postgres v8.1.21
Дата
Msg-id 29560.1337280277@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Updating a chkpass column in postgres v8.1.21  ("Nelson, Howard C" <howard.c.nelson@lmco.com>)
Список pgsql-novice
"Nelson, Howard C" <howard.c.nelson@lmco.com> writes:
> I am using the JDBC prepareStatement object to build a SQL statement that should update a users password in a
postgresv8.1.21 database.  (Based on what I have read, chkpass became a "contrib module" starting at 8.3, but I have to
usean older version of postgres.)  Here is my java code/snippet: 

No, it's been in contrib a long time...

> // Build an SQL statement with caller's parameters
> private static final String m_defaultPass = "changeme";
> stmtStr = "UPDATE users SET pwd_date=now(), pwd=? " + "WHERE user_id=?;";
> stmt = con.prepareStatement(stmtStr);
> stmt.setString(1, m_defaultPass);
> stmt.setString(2, userId);

This is telling JDBC that parameter 1 is a string (hence, character
varying); but there is no cast from varchar to chkpass (hence, fail).

It might work to use setObject not setString there, but not sure because
I'm not a Java person.  You might get more help on that from the
pgsql-jdbc list.

In more recent PG versions you could definitely fix it with an explicit
cast in the query, ie "SET pwd=?::chkpass", but I think that will not
work in 8.1.

BTW, 8.1 has been out of support for awhile.  You really need to think
about upgrading.

            regards, tom lane

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

Предыдущее
От: "Nelson, Howard C"
Дата:
Сообщение: Updating a chkpass column in postgres v8.1.21
Следующее
От: Nart Tamash
Дата:
Сообщение: SELECT FROM 'varying_table'