Re: Why is columnNames in Connection.prepareStatement(sql, columnNames[]) automatically quoted

From: Balázs Zsoldos <balazs(dot)zsoldos(at)everit(dot)biz>
To: Dave Cramer <pg(at)fastcrypt(dot)com>
Cc: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: Why is columnNames in Connection.prepareStatement(sql, columnNames[]) automatically quoted
Date: 2015-07-31 01:03:39
Message-ID: CAHEBw=SzXwMXHPZ7Lt0QL0uCcUSsOrbt54tRGsxSZQVvpLYtgQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hi,

As much as I saw in the source code, the original SQL statement is extended
with RETURNING "columnName". This is done by calling
*AbstractJdbc3Statement.addReturning(...)*. If column names are provided,
escape parameter is true, that means the column name will be quoted in the
SQL statement.

Regards,
*Balázs **Zsoldos*

On Fri, Jul 31, 2015 at 2:47 AM, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:

> Hi,
>
> Yes there is a chance to change the driver, but I need more info. What do
> you mean they are automatically quoted ???
>
> Dave Cramer
>
> dave.cramer(at)credativ(dot)ca
> http://www.credativ.ca
>
> On 30 July 2015 at 20:32, Balázs Zsoldos <balazs(dot)zsoldos(at)everit(dot)biz>
> wrote:
>
>> Hi,
>>
>> I would like to write database independent SQL statements. Everything
>> works well, until I call *Connection.prepareStatement(sql,
>> columnNames[])*.
>>
>> In the SQL statement nothing is quoted and it works well. I am wondering,
>> why the values in the columnNames are automatically quoted? Is it a bug or
>> a feature?
>>
>> More info:
>>
>> I create the fields and tables in DDL without quoting them. Table and
>> field names become upper or lower case based on the engine. E.g.: In case
>> of Oracle, they will have upper-case names, in PostgreSQL they will have
>> lower-case names.
>>
>> If I use Oracle, I must provide the *columnNames* parameter for the
>> mentioned function with upper-case letters otherwise it does not work (I
>> think that is a bug, too, but I guess it is harder to send a patch for
>> Oracle than PostgreSQL :-) ). If I use any other database engines (Derby,
>> SQLServer, Hsqldb) everything works well.
>>
>> If I use PostgreSQL, however, I must provide lower-case letters for the
>> parameter as it is quoted inside. I do not think it should be quoted. If
>> someone wants to quote those column names, it would be possible by
>> providing the Strings with quotes like *Connection.prepareStatement(sql,
>> "\"myCamelCaseColumnName\"");*
>>
>> Do you think there is any chance to change this in PostgreSQL JDBC driver
>> or shall I write separate code for Postgres?
>>
>> Regards,
>> *Balázs **Zsoldos*
>>
>>
>

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2015-07-31 01:06:56 Re: Why is columnNames in Connection.prepareStatement(sql, columnNames[]) automatically quoted
Previous Message Dave Cramer 2015-07-31 00:49:27 Re: Why is columnNames in Connection.prepareStatement(sql, columnNames[]) automatically quoted