Обсуждение: BUG #2224: unlogical syntax error
The following bug has been logged online: Bug reference: 2224 Logged by: Hervé Hénoch Email address: h.henoch@isc84.org PostgreSQL version: 8.1.2 Operating system: Linux FC4 Description: unlogical syntax error Details: I do this request : select id_caisse as caisse from adm_pat where nip = '20020523' ; Under PgAdmin this request work fine but via JDBC I have the following messages server side : CETLOG: statement: PREPARE <unnamed> AS SELECT id_caisse AS caisse FROM adm_pat WHERE nip = '20020523' CETLOG: statement: EXECUTE <unnamed> [PREPARE: SELECT id_caisse AS caisse FROM adm_pat WHERE nip = '20020523'] CETLOG: statement: PREPARE <unnamed> AS SELECT adm_pat."nip", id_caisse caisse FROM adm_pat WHERE nip = '20020523' CETERROR: syntax error at or near "caisse" at character 33 CETLOG: statement: PREPARE <unnamed> AS SELECT id_caisse AS caisse FROM adm_pat WHERE nip = '20020523' CETLOG: statement: EXECUTE <unnamed> [PREPARE: SELECT id_caisse AS caisse FROM adm_pat WHERE nip = '20020523'] The table adm_pat does not have another column named caisse. So what is the problem (if problem). Thanks a lot.
"Hervé Hénoch" <h.henoch@isc84.org> writes:
> CETLOG: statement: PREPARE <unnamed> AS SELECT adm_pat."nip", id_caisse
> caisse FROM adm_pat WHERE nip = '20020523'
> CETERROR: syntax error at or near "caisse" at character 33
"AS" before a column alias is not optional in Postgres.
regards, tom lane
On Mon, Jan 30, 2006 at 10:47:10AM +0000, Herv Hnoch wrote:
> CETLOG: statement: PREPARE <unnamed> AS SELECT adm_pat."nip", id_caisse
> caisse FROM adm_pat WHERE nip = '20020523'
>
> CETERROR: syntax error at or near "caisse" at character 33
Are you writing this query or is JDBC generating it? The AS keyword
is required for column aliases; its absence is causing the syntax
error.
test=> CREATE TABLE foo (abc text);
test=> SELECT abc AS xyz FROM foo;
xyz
-----
(0 rows)
test=> SELECT abc xyz FROM foo;
ERROR: syntax error at or near "xyz" at character 12
LINE 1: SELECT abc xyz FROM foo;
^
--
Michael Fuhr
[Please copy the mailing list on replies.]
On Tue, Jan 31, 2006 at 08:53:44AM +0100, Hnoch Herv wrote:
> Thank for you response .... I have never written this query : I think it
> is JDBC that have generated it ... My query (written by me) is :
>
> select id_caisse as caisse from FROM adm_pat WHERE nip = '20020523'
>
> I know I have to use "as" statement ... I'd never disturb you for a
> simple syntax error ...
The above query does have a syntax error ("from FROM"), although
the query in your original report looked correct.
> Jdbc version : jdbc3 8.1.404
I downloaded postgresql-8.1-404.jdbc3.jar onto a Solaris 9 box
running PostgreSQL 8.1.2 and wrote a test program to run your
original query:
select id_caisse as caisse from adm_pat where nip = '20020523'
The query ran successfully and logged the following:
LOG: statement: PREPARE <unnamed> AS select id_caisse as caisse from adm_pat where nip = '20020523'
LOG: statement: <BIND>
LOG: statement: EXECUTE <unnamed> [PREPARE: select id_caisse as caisse from adm_pat where nip = '20020523']
> The very stange think is, if I write :
>
> select nip, id_caisse as caisse from FROM adm_pat WHERE nip = '20020523'
>
> There is no syntax error !!!!!
There should be a syntax error due to "from FROM"; please post the
actual queries you're running. It might also be helpful if you
could post a simple but complete program so we can see everything
you're doing. You might also try asking in the pgsql-jdbc list to
see if anybody there has heard of this problem.
--
Michael Fuhr