ERROR: invalid input syntax for integer: "" - Mailing list pgsql-general
| From | Ben Madin |
|---|---|
| Subject | ERROR: invalid input syntax for integer: "" |
| Date | |
| Msg-id | 1591B4EE-E7FC-4858-BBE7-D077990D7926@ausvet.com.au Whole thread Raw |
| Responses |
Re: ERROR: invalid input syntax for integer: ""
Re: ERROR: invalid input syntax for integer: "" Re: ERROR: invalid input syntax for integer: "" |
| List | pgsql-general |
G'day,
I hope to be shown to be an idiot, but we are receiving the message=20
ERROR: invalid input syntax for integer: ""
when using a pl/pgsl function with some quite complex queries that seem =
to be working on a developer machine using postgresql 9.1.6, but not on =
the production machine using 9.1.7.
The source of our confusion is stemming from the fact that the offending =
line (being the join predicate that if removed allows the query to work) =
is comparing two values in two tables:
...
FROM reports rep
LEFT JOIN results res=20
ON res.reportid =3D rep.id <=3D=3D this line is causing the =
error to be returned
AND res.resulttypeid =3D 108=20
AND res.del =3D false
=85
I have included the full query executed by the function at the bottom of =
the email.
In the first it is an integer primary key, in the second a not null =
integer, as shown below:
Table "data.reports"
Column | Type | =
Modifiers =20
=
---------------+--------------------------+-------------------------------=
-----------------------
id | integer | not null default =
nextval('reports_id_seq'::regclass)
projectid | integer |=20
=85
Indexes:
"reports_pkey" PRIMARY KEY, btree (id)
Table "data.results"
Column | Type | =
Modifiers =20
=
---------------+--------------------------+-------------------------------=
-----------------------
id | integer | not null default =
nextval('results_id_seq'::regclass)
reportid | integer | not null
=85
Indexes:
"results_pkey" PRIMARY KEY, btree (id)
"results_del_btree" btree (del)
"results_idx_reportid" btree (reported)
My questions then are :
Given that the join is between two integer columns, how could it be an =
invalid syntax for one of them?
Given the query is working on one machine (using a copy of the database =
downloaded and imported from the second machine last night) running =
9.1.6, is there any reason it wouldn't work on the original machine - =
have there been any changes in casting that I didn't notice between =
9.1.6 and 9.1.7?
cheers
Ben
The full query is :
{{{
SELECT rep.id, res8.reportid, =
round(st_distance_sphere('0101000020BB1000008716D9CEF7A36240643BDF4F8DA741=
C0', post.the_point::geometry)/1000) as dist=20
FROM reports rep=20
LEFT JOIN users u ON rep.link =3D u.id=20
LEFT JOIN postcodes post ON u.postcode::integer =3D post.postcode =20
LEFT JOIN species spe ON rep.species::text like spe.speccode::text AND =
spe.synonym =3D 0 =20
LEFT JOIN results res8 ON res8.reportid =3D rep.id AND res8.resulttypeid =
=3D 108 AND res8.del =3D false
LEFT JOIN resultlookup rlu8 ON rlu8.resulttypesid =3D 108 AND rlu8.id =3D =
res8.resultvalue::int
WHERE rep.del IS false AND rep.projectid =3D 51=20
AND round(st_distance_sphere( =
'0101000020BB1000008716D9CEF7A36240643BDF4F8DA741C0', =
post.the_point)/1000) < '150' AND spe.id =3D '9465' AND rlu8.id =3D =
'935';
}}}
--=20
Ben Madin
m : +61 448 887 220
e : ben@ausvet.com.au
pgsql-general by date: