Обсуждение: v7.1 error ... SELECT converted to a COPY?
Okay, maybe this query isn't quite as simple as I think it is, but does
this raise any flags for anyone?  How did I get into a COPY?  It appears
re-creatable, as I've done it twice so far ...
eceb=# select e.idnumber,e.password from egi e, auth_info a where e.idnumber != a.idnumber;
Backend sent D message without prior T
Backend sent D message without prior T
Backend sent D message without prior T
Backend sent D message without prior T
Backend sent D message without prior T
Backend sent D message without prior T
Backend sent D message without prior T
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> \.
Unknown protocol character 'J' read from backend.  (The protocol character is the first character the backend sends in
responseto a query it receives).
 
PQendcopy: resetting connection
Marc G. Fournier                   ICQ#7615664               IRC Nick: Scrappy
Systems Administrator @ hub.org
primary: scrappy@hub.org           secondary: scrappy@{freebsd|postgresql}.org
			
		The Hermit Hacker <scrappy@hub.org> writes:
> Okay, maybe this query isn't quite as simple as I think it is, but does
> this raise any flags for anyone?  How did I get into a COPY?  It appears
> re-creatable, as I've done it twice so far ...
> eceb=# select e.idnumber,e.password from egi e, auth_info a where e.idnumber != a.idnumber;
> Backend sent D message without prior T
> Backend sent D message without prior T
At a guess, you're running out of memory on the client side for the
SELECT results (did you really want a not-equal rather than equal
constraint there!?) --- libpq tends not to cope with this too
gracefully.  Someone oughta fix that...
        regards, tom lane
			
		On Mon, 30 Apr 2001, Tom Lane wrote: > The Hermit Hacker <scrappy@hub.org> writes: > > Okay, maybe this query isn't quite as simple as I think it is, but does > > this raise any flags for anyone? How did I get into a COPY? It appears > > re-creatable, as I've done it twice so far ... > > > eceb=# select e.idnumber,e.password from egi e, auth_info a where e.idnumber != a.idnumber; > > Backend sent D message without prior T > > Backend sent D message without prior T > > At a guess, you're running out of memory on the client side for the > SELECT results (did you really want a not-equal rather than equal > constraint there!?) Yup, want to figure out which ones are in the egi table that I hadn't transfer'd over yet ... tried it with a NOT IN ( SELECT ... ) combination, but an explain of that showed two sequential searches on the tables, so am working on fixing that ...
The Hermit Hacker wrote: > > On Mon, 30 Apr 2001, Tom Lane wrote: > > > The Hermit Hacker <scrappy@hub.org> writes: > > > Okay, maybe this query isn't quite as simple as I think it is, but does > > > this raise any flags for anyone? How did I get into a COPY? It appears > > > re-creatable, as I've done it twice so far ... > > > > > eceb=# select e.idnumber,e.password from egi e, auth_info a where e.idnumber != a.idnumber; > > > Backend sent D message without prior T > > > Backend sent D message without prior T > > > > At a guess, you're running out of memory on the client side for the > > SELECT results (did you really want a not-equal rather than equal > > constraint there!?) > > Yup, want to figure out which ones are in the egi table that I hadn't > transfer'd over yet ... tried it with a NOT IN ( SELECT ... ) combination, > but an explain of that showed two sequential searches on the tables, did you do it as select e.idnumber,e.password from egi ewhere e.idnumber not in (select idnumber from auth_info a where e.idnumber = a.idnumber) ; to smarten up the optimizer about using a join ? I guess that it can be done using outer joins and testing the "outer2 part for IS NULL in 7.1 ------------------- Hannu