ecpg help with 7.3
Hi all,
To start with we have recently migrated from v7.2.3 to v7.3, and I have
an embedded SQL code (ecpg) that used to work fine with 7.2.3. With the new
7.3 it gives me an error when inserting into a table,
Cannot Insert in table xyz(-400):50 'ERROR: pg_atoi: zero-length string'
my first guess was that there was a zero length string (NULL) being inserted
in the table... but the attributes of the columns in the table are such that
they can accept NULL's too.
Having done this i tested the same data over 7.2.3 and it worked good. Can
somebody help me with this please .....
Thanks and regards
=Sid
On Mon, Jan 27, 2003 at 12:48:23PM -0500, Sid wrote:
Cannot Insert in table xyz(-400):50 'ERROR: pg_atoi: zero-length string'
my first guess was that there was a zero length string (NULL) being inserted
in the table... but the attributes of the columns in the table are such that
they can accept NULL's too.
Zero length strings are something different than NULLs. The pg_atoi
message shows that there indeed is a zero length string.
You could enable logging and see exactly what data is sent to the
backend. Please just look into the test cases in ecpg/test and search
for ECPGdebug resp. file descriptor dbgs.
Michael
--
Michael Meskes
Email: Michael@Fam-Meskes.De
ICQ: 179140304
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
"Sid" <sbhatt@installs.com> writes:
Cannot Insert in table xyz(-400):50 'ERROR: pg_atoi: zero-length string'
my first guess was that there was a zero length string (NULL) being inserted
in the table...
A zero-length string is not a NULL (even if Oracle can't tell the
difference).
Before 7.3, pg_atoi (the integer datatype's input converter) would
sloppily accept a zero-length string as meaning 0 (not NULL). We
fixed that ...
regards, tom lane
Sid,
Before 7.3, trying to insert an empty string into a number type column
would result in 0 being inserted into the column:
lkind=# CREATE TABLE x(f INTEGER);
CREATE
lkind=# INSERT INTO x(f) VALUES ('');
INSERT 859614628 1
lkind=# SELECT * FROM x;
f
---
0
(1 row)
With 7.3 an error is now output.
lkind=# CREATE TABLE x(f INTEGER);
CREATE TABLE
lkind=# INSERT INTO x(f) VALUES ('');
ERROR: pg_atoi: zero-length string
lkind=# SELECT * FROM x;
f
---
(0 rows)
Also you seem to be confusing the empty string with NULL - an empty
string is not a NULL value. To insert a NULL:
lkind=# INSERT INTO x(f) VALUES (NULL);
INSERT 28217013 1
lkind=# SELECT * FROM x;
f
---
(1 row)
Lee.
Sid writes:
Show quoted text
Hi all,
To start with we have recently migrated from v7.2.3 to v7.3, and I have
an embedded SQL code (ecpg) that used to work fine with 7.2.3. With the new
7.3 it gives me an error when inserting into a table,
Cannot Insert in table xyz(-400):50 'ERROR: pg_atoi: zero-length string'
my first guess was that there was a zero length string (NULL) being inserted
in the table... but the attributes of the columns in the table are such that
they can accept NULL's too.
Having done this i tested the same data over 7.2.3 and it worked good. Can
somebody help me with this please .....Thanks and regards
=Sid