JDBC escaped scalar functions fail when used in function definition

From: Adam Rauch <adam(at)labkey(dot)com>
To: "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org>
Subject: JDBC escaped scalar functions fail when used in function definition
Date: 2016-03-10 23:10:34
Message-ID: 56E1FEEA.1010302@labkey.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

While testing postgresql-9.4.1208.jar with our system, code is now
failing when it attempts to use {fn now()} in the body of a PostgreSQL
CREATE FUNCTION statement. This worked fine on 1207 and all previous
versions of the driver.

In other words, the code below succeeds on 1207 but fails on 1208
(passing in server, port, database, username, and password as parameters):

import java.sql.*;

public class PGTest
{
public static void main(String[] args)throws SQLException
{
try (Connection conn = DriverManager.getConnection("jdbc:postgresql://" + args[0] +":" + args[1] +"/" + args[2], args[3], args[4]))
{
try (PreparedStatement stmt = conn.prepareStatement(
"CREATE FUNCTION public.fn_now() RETURNS VOID AS $$\n" +
" BEGIN\n" +
" SELECT {fn now()};" +
" END;\n" +
"$$ LANGUAGE plpgsql;" +
"DROP FUNCTION public.fn_now();")) {
stmt.execute();
}
}
}
}

Bug? Intentional change in behavior? Thanks, Adam

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message David G. Johnston 2016-03-11 01:05:31 Re: JDBC escaped scalar functions fail when used in function definition
Previous Message Craig Ringer 2016-03-10 14:08:18 Re: Complicated re-distribution of pgjdbc the "open source way"