Re: bug in COPY - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: bug in COPY
Date
Msg-id 200208272030.g7RKUsh12301@candle.pha.pa.us
Whole thread Raw
In response to Re: bug in COPY  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Patch applied.

---------------------------------------------------------------------------

Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Tom Lane wrote:
> >> The exclamation point seems inappropriate.  Perhaps "zero-length input"
> >> would be better than "string" also.
>
> > I copied the other test case:
>
> >     if (s == (char *) NULL)
> >         elog(ERROR, "pg_atoi: NULL pointer!");
>
> Well, the NULL-pointer test might equally well be coded as an Assert:
> it's to catch backend coding errors, not cases of incorrect user input.
> So the exclamation point there didn't bother me.
>
> > I removed them both '!'.
>
> If you like.  But the two conditions are not comparable.
>
>             regards, tom lane
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/backend/utils/adt/numutils.c
===================================================================
RCS file: /cvsroot/pgsql-server/src/backend/utils/adt/numutils.c,v
retrieving revision 1.51
diff -c -c -r1.51 numutils.c
*** src/backend/utils/adt/numutils.c    16 Jul 2002 18:34:16 -0000    1.51
--- src/backend/utils/adt/numutils.c    27 Aug 2002 20:28:41 -0000
***************
*** 58,66 ****
       */

      if (s == (char *) NULL)
!         elog(ERROR, "pg_atoi: NULL pointer!");
      else if (*s == 0)
!         l = (long) 0;
      else
          l = strtol(s, &badp, 10);

--- 58,66 ----
       */

      if (s == (char *) NULL)
!         elog(ERROR, "pg_atoi: NULL pointer");
      else if (*s == 0)
!         elog(ERROR, "pg_atoi: zero-length string");
      else
          l = strtol(s, &badp, 10);

Index: src/test/regress/expected/arrays.out
===================================================================
RCS file: /cvsroot/pgsql-server/src/test/regress/expected/arrays.out,v
retrieving revision 1.9
diff -c -c -r1.9 arrays.out
*** src/test/regress/expected/arrays.out    29 Nov 2001 21:02:41 -0000    1.9
--- src/test/regress/expected/arrays.out    27 Aug 2002 20:28:45 -0000
***************
*** 15,21 ****
  -- 'e' is also a large object.
  --
  INSERT INTO arrtest (a[5], b[2][1][2], c, d, f, g)
!    VALUES ('{1,2,3,4,5}', '{{{},{1,2}}}', '{}', '{}', '{}', '{}');
  UPDATE arrtest SET e[0] = '1.1';
  UPDATE arrtest SET e[1] = '2.2';
  INSERT INTO arrtest (f)
--- 15,21 ----
  -- 'e' is also a large object.
  --
  INSERT INTO arrtest (a[5], b[2][1][2], c, d, f, g)
!    VALUES ('{1,2,3,4,5}', '{{{0,0},{1,2}}}', '{}', '{}', '{}', '{}');
  UPDATE arrtest SET e[0] = '1.1';
  UPDATE arrtest SET e[1] = '2.2';
  INSERT INTO arrtest (f)
Index: src/test/regress/expected/copy2.out
===================================================================
RCS file: /cvsroot/pgsql-server/src/test/regress/expected/copy2.out,v
retrieving revision 1.6
diff -c -c -r1.6 copy2.out
*** src/test/regress/expected/copy2.out    22 Aug 2002 00:01:51 -0000    1.6
--- src/test/regress/expected/copy2.out    27 Aug 2002 20:28:45 -0000
***************
*** 34,40 ****
  ERROR:  Attribute "d" specified more than once
  -- missing data: should fail
  COPY x from stdin;
! ERROR:  copy: line 1, Missing data for column "b"
  lost synchronization with server, resetting connection
  COPY x from stdin;
  ERROR:  copy: line 1, Missing data for column "e"
--- 34,40 ----
  ERROR:  Attribute "d" specified more than once
  -- missing data: should fail
  COPY x from stdin;
! ERROR:  copy: line 1, pg_atoi: zero-length string
  lost synchronization with server, resetting connection
  COPY x from stdin;
  ERROR:  copy: line 1, Missing data for column "e"
Index: src/test/regress/sql/arrays.sql
===================================================================
RCS file: /cvsroot/pgsql-server/src/test/regress/sql/arrays.sql,v
retrieving revision 1.8
diff -c -c -r1.8 arrays.sql
*** src/test/regress/sql/arrays.sql    21 May 2001 16:54:46 -0000    1.8
--- src/test/regress/sql/arrays.sql    27 Aug 2002 20:28:45 -0000
***************
*** 18,24 ****
  --

  INSERT INTO arrtest (a[5], b[2][1][2], c, d, f, g)
!    VALUES ('{1,2,3,4,5}', '{{{},{1,2}}}', '{}', '{}', '{}', '{}');

  UPDATE arrtest SET e[0] = '1.1';

--- 18,24 ----
  --

  INSERT INTO arrtest (a[5], b[2][1][2], c, d, f, g)
!    VALUES ('{1,2,3,4,5}', '{{{0,0},{1,2}}}', '{}', '{}', '{}', '{}');

  UPDATE arrtest SET e[0] = '1.1';


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: bug in COPY
Next
From: Tom Lane
Date:
Subject: Re: bug in COPY