[SQL] Invalid (null) int8, can't convert to float8

2001-03-19 Thread Tim Pizey

Hi, 

I have been lurking for a while and am very appreciative of the effort 
put in by the answers on this list, and for psql itself. 

I am using Postgres version 7.0.2

I have a table defined thus:

CREATE TABLE "chapter" (
"id" int4 NOT NULL,
"book" int4 NOT NULL,
"sequence" int4 NOT NULL,
"textid_old" int4,
"indexdate" timestamp,
"title" text NOT NULL,
"path" text NOT NULL,
"filename" text NOT NULL,
"part" text,
"lastencached" timestamp,
"longtitle" text,
"layout" int4,
"messageboard" int4,
"textid" int8
);
CREATE UNIQUE INDEX "chapter_id_index" on "chapter" using btree ( "id"
"int4_ops" );
CREATE  INDEX "chapter_book_index" on "chapter" using btree ( "book"
"int4_ops" );
CREATE  INDEX "chapter_sequence_index" on "chapter" using btree (
"sequence"
"int4_ops" );
CREATE UNIQUE INDEX "chapter_textid_index" on "chapter" using btree (
"textid" "int8_ops" );   


If there is a a record with a Null textid in the table then psql reports
the error:

Invalid (null) int8, can't convert to float8

to a query of the form 

select id from chapter where textid = 9057599501;

It does seem as though the textid in the query needs to be large to
produce the error.

Can anyone suggest what is going on?

I have, temporary, fixed the problem by eliminating all records with a
null textid, but 
null is a sensible value, so it will re-occur. 

thanks in advance
timp

-- 
Member of http://www.paneris.org/

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]



Re: [SQL] Invalid (null) int8, can't convert to float8

2001-03-19 Thread Tim Pizey

Thanks a lot Tom, 

Tom Lane wrote:
> 
> Tim Pizey <[EMAIL PROTECTED]> writes:
> We have had some discussions about teaching the parser to be smarter
> about choosing the type of numeric constants depending on context,
> but for now you need to force the issue:
> 
> select id from chapter where textid = 9057599501::int8;
> 
> If you want the index to be used then you'd better do this all the
> time, not only for values that are too big to be int4.
> 
This problem is actually happening through jdbc, using
PreparedStatements, 
shouldn't jdbc be able to deal with casting transparently?

I am calling this with a string "chapter = ?" which automatically quotes 
and escapes string values correctly.

Hope this isn't too wrong
timp


-- 
Member of http://www.paneris.org/

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly