Re: Updating a chkpass column in postgres v8.1.21 - Mailing list pgsql-novice

From Tom Lane
Subject Re: Updating a chkpass column in postgres v8.1.21
Date
Msg-id 29560.1337280277@sss.pgh.pa.us
Whole thread Raw
In response to Updating a chkpass column in postgres v8.1.21  ("Nelson, Howard C" <howard.c.nelson@lmco.com>)
List 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 by date:

Previous
From: "Nelson, Howard C"
Date:
Subject: Updating a chkpass column in postgres v8.1.21
Next
From: Nart Tamash
Date:
Subject: SELECT FROM 'varying_table'