Обсуждение: Re: [HACKERS] Core dump in regression tests.

Поиск
Список
Период
Сортировка

Re: [HACKERS] Core dump in regression tests.

От
Keith Parks
Дата:
Thomas A. Szybist <szybist@boxhill.com>
>
> >
> > If I compile backend/catalog with -O2 then the table creation is
>                                     ^^^
> > OK. So it looks like it may be indexing.c, even with Bruce's
> > recent fixes.
>
> Do you mean -O0 here?
>

Yes, a typo, I used -O0 for this dir.

>
> I managed to get this running on a Solaris box.  -O2 was not included
> by default (wonder why :)).  I got a core dump when running initdb
> with -O2.  I recompiled indexing.c without -O2, and it is much better.
> (I basically get the same results as under Linux.)  I get the same
> core dumps that Keith is seeing with create function.
>
> So, both my Sparc boxes are behaving the same.
>

I've not got round to trying a build on my Solaris 2.6 box yet. I was
hoping that someone with something faster than a SPARC 2 would do
the biz and get the same results.

So we have at least two problems, some code that is tickling a gcc
optimiser bug (gcc 2.7.2.1 in my case) and an alignment bug in our
code that affects SPARC architecture.

I've half a mind to see if there is a later version of gcc that
does the optimisation correctly. (rpm format for Redhat 4.2)

The "create function" problem is a little harder for me to see
a way forward. ( my debugging skills are very few.)

Keith.


Re: [HACKERS] Core dump in regression tests.

От
"Thomas G. Lockhart"
Дата:
> The "create function" problem is a little harder for me to see
> a way forward. ( my debugging skills are very few.)

Hmm. Bruce's most recent patches didn't fix my problems on Linux/i686
reported earlier. So I figured I'd try a full build with -O0 just to see
if it helped. Not only did it not help, but I got several other
regression tests failing, some with core dumps which did not crash with
-O2. Weird.

                        - Tom

Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> Thomas A. Szybist <szybist@boxhill.com>
> >
> > >
> > > If I compile backend/catalog with -O2 then the table creation is
> >                                     ^^^
> > > OK. So it looks like it may be indexing.c, even with Bruce's
> > > recent fixes.
> >
> > Do you mean -O0 here?
> >
>
> Yes, a typo, I used -O0 for this dir.
>

Can you try:

    select * from pg_index;

Crashes here.  Not good.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> Thomas A. Szybist <szybist@boxhill.com>
> >
> > >
> > > If I compile backend/catalog with -O2 then the table creation is
> >                                     ^^^
> > > OK. So it looks like it may be indexing.c, even with Bruce's
> > > recent fixes.
> >
> > Do you mean -O0 here?
> >
>
> Yes, a typo, I used -O0 for this dir.

One idea is to track heapDescriptor from CatalogIndexInsert() all the
way down into the lower functions.

Compile with assert checking, which I assume you are already doing.

Add this "Assert(heapDescriptor->natts != 0)" to the function, and in
lower functions substitute heapDescriptor with the new variable name it
took as a function parameter.)

When the assert fails, we can see where it is getting messed up.


--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
"Thomas A. Szybist"
Дата:
In message <199809010623.CAA00709@candle.pha.pa.us>, Bruce Momjian writes:
> > Thomas A. Szybist <szybist@boxhill.com>
> > >
> > > >
> > > > If I compile backend/catalog with -O2 then the table creation is
> > >                                     ^^^
> > > > OK. So it looks like it may be indexing.c, even with Bruce's
> > > > recent fixes.
> > >
> > > Do you mean -O0 here?
> > >
> >
> > Yes, a typo, I used -O0 for this dir.
>
> One idea is to track heapDescriptor from CatalogIndexInsert() all the
> way down into the lower functions.
>
> Compile with assert checking, which I assume you are already doing.
>
> Add this "Assert(heapDescriptor->natts != 0)" to the function, and in
> lower functions substitute heapDescriptor with the new variable name it
> took as a function parameter.)
>
> When the assert fails, we can see where it is getting messed up.
>
>
> --
> Bruce Momjian                          |  830 Blythe Avenue
> maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
>   +  If your life is a hard drive,     |  (610) 353-9879(w)
>   +  Christ can be your backup.        |  (610) 853-3000(h)
>

I don't know if this helps, but here's what I've done so far.  I'm now on
a Solaris Box, since the optimization thing seems to be similar to the
Linux Box.  Its just easier for me to work on the Solaris Box.

When indexing.c is compiled with -O2, I get a core dump. (Big news.)
The core dump occurs at line 208 of backend/access/common/heaptuple.c.
at this memmove.

        {
            data = (char *) LONGALIGN(data);
            memmove(data, DatumGetPointer(value[i]),
                att[i]->attlen);
            data += att[i]->attlen;
        }

This consistantly happens when tupleDesc->natts is 1.  When i = 1 on the
second time on the outer loop, value[1] is something like 2123236.
This is out of range when it gets derefenced, memmove barfs.

I was backtracking and turning on debugging one file at a time, but got
lost in fmgr.c.

I'll insert the asserts like you suggested.

Bruce, I can let you on this machine if you like.

Thanks,

Tom

#0  0xef5d0580 in _memcpy ()
(gdb) bt
#0  0xef5d0580 in _memcpy ()
#1  0x297e0 in DataFill (data=0x1a8e0c "", tupleDesc=0x15dce8, value=0xefffccac,
nulls=0xefffccb0 "", infomask=0xefffc9c6, bit=0x1a8e00 "\003") at heaptuple.c:208
#2  0x2bf24 in index_formtuple (tupleDescriptor=0x15dce8, value=0xefffccac, null=0xefffccb0 "")
at indextuple.c:76
#3  0x3ff40 in btinsert (rel=0x1a8060, datum=0xefffccac, nulls=0xefffccb0 "", ht_ctid=0x1a8858,
heapRel=0x166a38) at nbtree.c:358
#4  0xde1bc in fmgr_c (finfo=0xefffcb70, values=0xefffcb80, isNull=0xefffcb6f "") at fmgr.c:115
#5  0xde7bc in fmgr (procedureId=331) at fmgr.c:286
#6  0x38c3c in index_insert ()
#7  0x4d440 in CatalogIndexInsert ()
#8  0x4a6c4 in AddNewAttributeTuples ()
#9  0x4a968 in heap_create_with_catalog ()
#10 0x51b70 in DefineRelation ()
#11 0xb7884 in ProcessUtility ()
#12 0xb5da8 in pg_exec_query_dest ()
#13 0xb5c9c in pg_exec_query ()
#14 0xb6eb8 in PostgresMain ()
#15 0x9ef90 in DoBackend ()
#16 0x9e9dc in BackendStartup ()
#17 0x9df64 in ServerLoop ()
#18 0x9dab8 in PostmasterMain ()
#19 0x722e4 in main ()

Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> Thomas A. Szybist <szybist@boxhill.com>
> >
> > >
> > > If I compile backend/catalog with -O2 then the table creation is
> >                                     ^^^
> > > OK. So it looks like it may be indexing.c, even with Bruce's
> > > recent fixes.
> >
> > Do you mean -O0 here?
> >
>
> Yes, a typo, I used -O0 for this dir.

Can we try a simple -O rather than just -O2 and -O0.  Could this be some
type of optimizer bug in gcc2/Solaris?

Everything is pointing to indexing.c, from both the initdb failure and
the create function failure.  But I can't see anything wrong in there,
and other platforms seem to be OK.

Someone mentioned that Solaris does not use -O2 by default, and there
may be a good reason for this.

The new code is more streamlined from the megapatch, and perhaps the
optimizer is now able to do too much optimizing.

I don't want to go casting blame other places, but I think gcc that may
be the cause, and if it is, we just need to lower the default
optimization for those platforms.

Let's try adding Assert checking with the configure --enable-cassert
option, and compiling with -O rather than -O2 and see what happens.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
David Hartwig
Дата:

Bruce Momjian wrote:

> > Thomas A. Szybist <szybist@boxhill.com>
> > >
> > > >
> > > > If I compile backend/catalog with -O2 then the table creation is
> > >                                     ^^^
> > > > OK. So it looks like it may be indexing.c, even with Bruce's
> > > > recent fixes.
> > >
> > > Do you mean -O0 here?
> > >
> >
> > Yes, a typo, I used -O0 for this dir.
>
> Can we try a simple -O rather than just -O2 and -O0.  Could this be some
> type of optimizer bug in gcc2/Solaris?
>
> Everything is pointing to indexing.c, from both the initdb failure and
> the create function failure.  But I can't see anything wrong in there,
> and other platforms seem to be OK.
>

Bruce,

I do not know if this problem is related in any way, but I have a serious
problem on AIX 4.1.  I am jumping in here because there is a chance they are
related.   Just manifest differently.

If I add an index to a table I can no longer use the table.    In essence,
the look up on relname in pg_class fails.    If I:
    SELECT * FROM pg_class WHERE relname = 'table_i_just_indexed'
    -- or \d table_i_just_indexed
I get no results.
    SELECT * FROM pg_class
Displays it perfectly.  So does:
    SELECT * FROM pg_class WHERE relname like '%table_i_just_indexed'
If I manually correct relname:
    UPDATE pg_class SET relname = 'table_i_just_indexed' WHERE relname like
'%table_i_just_indexed'
Everything seems to function normally again.

I can not reproduce on my Linux box.  Assertions show nothing.  This can't be
good.

Andreas, are you having any success?


Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> > Can we try a simple -O rather than just -O2 and -O0.  Could this be some
> > type of optimizer bug in gcc2/Solaris?
> >
> > Everything is pointing to indexing.c, from both the initdb failure and
> > the create function failure.  But I can't see anything wrong in there,
> > and other platforms seem to be OK.
> >
>
> Bruce,
>
> I do not know if this problem is related in any way, but I have a serious
> problem on AIX 4.1.  I am jumping in here because there is a chance they are
> related.   Just manifest differently.
>
> If I add an index to a table I can no longer use the table.    In essence,
> the look up on relname in pg_class fails.    If I:
>     SELECT * FROM pg_class WHERE relname = 'table_i_just_indexed'
>     -- or \d table_i_just_indexed
> I get no results.
>     SELECT * FROM pg_class
> Displays it perfectly.  So does:
>     SELECT * FROM pg_class WHERE relname like '%table_i_just_indexed'
> If I manually correct relname:
>     UPDATE pg_class SET relname = 'table_i_just_indexed' WHERE relname like
> '%table_i_just_indexed'
> Everything seems to function normally again.
>
> I can not reproduce on my Linux box.  Assertions show nothing.  This can't be
> good.

Wow, this is terribly frustrating.  All these problems, and I can't
reproduce any of them here.

I sure hope they all have one cause, and I hope we find the cause soon.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
"Thomas G. Lockhart"
Дата:
> Can we try a simple -O rather than just -O2 and -O0.  Could this be
> some type of optimizer bug in gcc2/Solaris?
> Everything is pointing to indexing.c, from both the initdb failure and
> the create function failure.  But I can't see anything wrong in there,
> and other platforms seem to be OK.

Uh, no, Linux/i686 is showing trouble too, but not in the initdb stage.
The Sparc platforms will be more sensitive to byte alignment problems,
especially within C structures, so this may be illustrating a
cross-platform problem more clearly.

There is a repeatable indexing and (perhaps) caching problem I see in
the regression tests. Annoyingly, the problems get slightly worse at the
moment when compiling with -O0.

There is a fundamental problem lurking somewhere, and there may not be
much point in going beta unless you think that more testers will help to
track down the problem.

               - Tom

Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> > Can we try a simple -O rather than just -O2 and -O0.  Could this be
> > some type of optimizer bug in gcc2/Solaris?
> > Everything is pointing to indexing.c, from both the initdb failure and
> > the create function failure.  But I can't see anything wrong in there,
> > and other platforms seem to be OK.
>
> Uh, no, Linux/i686 is showing trouble too, but not in the initdb stage.
> The Sparc platforms will be more sensitive to byte alignment problems,
> especially within C structures, so this may be illustrating a
> cross-platform problem more clearly.
>
> There is a repeatable indexing and (perhaps) caching problem I see in
> the regression tests. Annoyingly, the problems get slightly worse at the
> moment when compiling with -O0.
>
> There is a fundamental problem lurking somewhere, and there may not be
> much point in going beta unless you think that more testers will help to
> track down the problem.

OK, let me send you my regression output, and perhaps you can see the
problem in there so I can debug it.

We have a configure problem too, that Tatsuo pointed out.  I removed my
config.cache, and tried to run configure, and got this.  I added 'set
-x' to help.


+ pwd
+ test -z
/usr/ucb:/sbin:/usr/sbin:/bin:/usr/bin:/usr/contrib/bin:/usr/X11/bin:/usr/local/postgres/bin:/usr/local/bin:/usr/local/sbin:.:/usr/local/sbin:.:/usr/local/src/pgsql/pgsql/src
+ test -f /usr/ucb /sbin /usr/sbin /bin /usr/bin /usr/contrib/bin /usr/X11/bin /usr/local/postgres/bin /usr/local/bin
/usr/local/sbin. /usr/local/sbin . /usr/local/src/pgsql/pgsql/src/install-sh 
test: syntax error: Undefined error: 0
+ IFS=

+ INSTALL=
+ test -n
+ echo no
no
+ test -n
+ test -n
+ INSTALL=NONE
+ test NONE = NONE
+ echo - No Install Script found - aborting.
- No Install Script found - aborting.
+ exit 0


--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> OK, let me send you my regression output, and perhaps you can see the
> problem in there so I can debug it.

As far as the beta, I am totally confused about the problems we are
having, and I don't know what to suggest.  Perhaps you can see the
problems in my regression output.


>
> We have a configure problem too, that Tatsuo pointed out.  I removed my
> config.cache, and tried to run configure, and got this.  I added 'set
> -x' to help.
>

OK, I have fixed the configure problem.  The path has to have
directories separated by space, not colons.  Works now.


--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> > Can we try a simple -O rather than just -O2 and -O0.  Could this be
> > some type of optimizer bug in gcc2/Solaris?
> > Everything is pointing to indexing.c, from both the initdb failure and
> > the create function failure.  But I can't see anything wrong in there,
> > and other platforms seem to be OK.
>
> Uh, no, Linux/i686 is showing trouble too, but not in the initdb stage.
> The Sparc platforms will be more sensitive to byte alignment problems,
> especially within C structures, so this may be illustrating a
> cross-platform problem more clearly.
>
> There is a repeatable indexing and (perhaps) caching problem I see in
> the regression tests. Annoyingly, the problems get slightly worse at the
> moment when compiling with -O0.
>

OK, here is my regression output.  Do you see anything strange in there?



--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)
======   int2   ======
--- expected/int2.out    Sun Aug 23 11:09:37 1998
+++ results/int2.out    Tue Sep  1 23:40:10 1998
@@ -7,7 +7,7 @@
 QUERY: INSERT INTO INT2_TBL(f1) VALUES ('32767');
 QUERY: INSERT INTO INT2_TBL(f1) VALUES ('-32767');
 QUERY: INSERT INTO INT2_TBL(f1) VALUES ('100000');
-ERROR:  pg_atoi: error reading "100000": Math result not representable
+ERROR:  pg_atoi: error reading "100000": Result too large
 QUERY: INSERT INTO INT2_TBL(f1) VALUES ('asdf');
 ERROR:  pg_atoi: error in "asdf": can't parse "asdf"
 QUERY: SELECT '' AS five, INT2_TBL.*;
======   int4   ======
--- expected/int4.out    Sun Aug 23 11:09:37 1998
+++ results/int4.out    Tue Sep  1 23:40:10 1998
@@ -7,7 +7,7 @@
 QUERY: INSERT INTO INT4_TBL(f1) VALUES ('2147483647');
 QUERY: INSERT INTO INT4_TBL(f1) VALUES ('-2147483647');
 QUERY: INSERT INTO INT4_TBL(f1) VALUES ('1000000000000');
-ERROR:  pg_atoi: error reading "1000000000000": Math result not representable
+ERROR:  pg_atoi: error reading "1000000000000": Result too large
 QUERY: INSERT INTO INT4_TBL(f1) VALUES ('asdf');
 ERROR:  pg_atoi: error in "asdf": can't parse "asdf"
 QUERY: SELECT '' AS five, INT4_TBL.*;
======   int8   ======
--- expected/int8.out    Sun Aug 23 11:09:38 1998
+++ results/int8.out    Tue Sep  1 23:40:10 1998
@@ -6,110 +6,110 @@
 QUERY: INSERT INTO INT8_TBL VALUES('4567890123456789','-4567890123456789');
 QUERY: SELECT * FROM INT8_TBL;
               q1|               q2
-----------------+-----------------
+----------+-----------
              123|              456
-             123| 4567890123456789
-4567890123456789|              123
-4567890123456789| 4567890123456789
-4567890123456789|-4567890123456789
+       123| 2147483647
+2147483647|        123
+2147483647| 2147483647
+2147483647|-2147483648
 (5 rows)

 QUERY: SELECT '' AS five, q1 AS plus, -q1 AS minus FROM INT8_TBL;
 five|            plus|            minus
-----+----------------+-----------------
+----+----------+-----------
     |             123|             -123
     |             123|             -123
-    |4567890123456789|-4567890123456789
-    |4567890123456789|-4567890123456789
-    |4567890123456789|-4567890123456789
+    |2147483647|-2147483647
+    |2147483647|-2147483647
+    |2147483647|-2147483647
 (5 rows)

 QUERY: SELECT '' AS five, q1, q2, q1 + q2 AS plus FROM INT8_TBL;
 five|              q1|               q2|            plus
-----+----------------+-----------------+----------------
+----+----------+-----------+-----------
     |             123|              456|             579
-    |             123| 4567890123456789|4567890123456912
-    |4567890123456789|              123|4567890123456912
-    |4567890123456789| 4567890123456789|9135780246913578
-    |4567890123456789|-4567890123456789|               0
+    |       123| 2147483647|-2147483526
+    |2147483647|        123|-2147483526
+    |2147483647| 2147483647|         -2
+    |2147483647|-2147483648|         -1
 (5 rows)

 QUERY: SELECT '' AS five, q1, q2, q1 - q2 AS minus FROM INT8_TBL;
 five|              q1|               q2|            minus
-----+----------------+-----------------+-----------------
+----+----------+-----------+-----------
     |             123|              456|             -333
-    |             123| 4567890123456789|-4567890123456666
-    |4567890123456789|              123| 4567890123456666
-    |4567890123456789| 4567890123456789|                0
-    |4567890123456789|-4567890123456789| 9135780246913578
+    |       123| 2147483647|-2147483524
+    |2147483647|        123| 2147483524
+    |2147483647| 2147483647|          0
+    |2147483647|-2147483648|         -1
 (5 rows)

 QUERY: SELECT '' AS three, q1, q2, q1 * q2 AS multiply FROM INT8_TBL
  WHERE q1 < 1000 or (q2 > 0 and q2 < 1000);
 three|              q1|              q2|          multiply
------+----------------+----------------+------------------
+-----+----------+----------+----------
      |             123|             456|             56088
-     |             123|4567890123456789|561850485185185047
-     |4567890123456789|             123|561850485185185047
+     |       123|2147483647|2147483525
+     |2147483647|       123|2147483525
 (3 rows)

 QUERY: SELECT '' AS five, q1, q2, q1 / q2 AS divide FROM INT8_TBL;
 five|              q1|               q2|        divide
-----+----------------+-----------------+--------------
+----+----------+-----------+--------
     |             123|              456|             0
-    |             123| 4567890123456789|             0
-    |4567890123456789|              123|37137318076884
-    |4567890123456789| 4567890123456789|             1
-    |4567890123456789|-4567890123456789|            -1
+    |       123| 2147483647|       0
+    |2147483647|        123|17459216
+    |2147483647| 2147483647|       1
+    |2147483647|-2147483648|       0
 (5 rows)

 QUERY: SELECT '' AS five, q1, float8(q1) FROM INT8_TBL;
 five|              q1|float8
-----+----------------+--------------------
+----+----------+----------
     |             123|123
     |             123|123
-    |4567890123456789|4.56789012345679e+15
-    |4567890123456789|4.56789012345679e+15
-    |4567890123456789|4.56789012345679e+15
+    |2147483647|2147483647
+    |2147483647|2147483647
+    |2147483647|2147483647
 (5 rows)

 QUERY: SELECT '' AS five, q2, float8(q2) FROM INT8_TBL;
 five|               q2|float8
-----+-----------------+---------------------
+----+-----------+-----------
     |              456|456
-    | 4567890123456789|4.56789012345679e+15
+    | 2147483647| 2147483647
     |              123|123
-    | 4567890123456789|4.56789012345679e+15
-    |-4567890123456789|-4.56789012345679e+15
+    | 2147483647| 2147483647
+    |-2147483648|-2147483648
 (5 rows)

 QUERY: SELECT '' AS five, q1, int8(float8(q1)) AS "two coercions" FROM INT8_TBL;
 five|              q1|   two coercions
-----+----------------+----------------
+----+----------+-------------
     |             123|             123
     |             123|             123
-    |4567890123456789|4567890123456789
-    |4567890123456789|4567890123456789
-    |4567890123456789|4567890123456789
+    |2147483647|   2147483647
+    |2147483647|   2147483647
+    |2147483647|   2147483647
 (5 rows)

 QUERY: SELECT '' AS five, 2 * q1 AS "twice int4" FROM INT8_TBL;
 five|      twice int4
-----+----------------
+----+----------
     |             246
     |             246
-    |9135780246913578
-    |9135780246913578
-    |9135780246913578
+    |        -2
+    |        -2
+    |        -2
 (5 rows)

 QUERY: SELECT '' AS five, q1 * 2 AS "twice int4" FROM INT8_TBL;
 five|      twice int4
-----+----------------
+----+----------
     |             246
     |             246
-    |9135780246913578
-    |9135780246913578
-    |9135780246913578
+    |        -2
+    |        -2
+    |        -2
 (5 rows)

======   float8   ======
--- expected/float8.out    Sun Aug 23 11:09:31 1998
+++ results/float8.out    Tue Sep  1 23:40:11 1998
@@ -176,7 +176,7 @@
 ----+--------------------+--------------------
     |0                   |0
     |1004.3              |10.014312837827
-    |-34.84              |-3.26607421344208
+    |-34.84              |3.26607421344208
     |1.2345678901234e+200|4.97933859234765e+66
     |1.2345678901234e-200|2.3112042409018e-67
 (5 rows)
@@ -197,7 +197,7 @@
 QUERY: SELECT '' AS bad, f.f1 * '1e200' from FLOAT8_TBL f;
 ERROR:  Bad float8 input format -- overflow
 QUERY: SELECT '' AS bad, f.f1 ^ '1e200' from FLOAT8_TBL f;
-ERROR:  pow() result is out of range
+ERROR:  Bad float8 input format -- overflow
 QUERY: SELECT '' AS bad, (; (f.f1)) from FLOAT8_TBL f where f.f1 = '0.0' ;
 ERROR:  can't take log of zero
 QUERY: SELECT '' AS bad, (; (f.f1)) from FLOAT8_TBL f where f.f1 < '0.0' ;
======   geometry   ======
--- expected/geometry.out    Sun Aug 23 11:09:34 1998
+++ results/geometry.out    Tue Sep  1 23:40:14 1998
@@ -99,7 +99,7 @@
       |(5.1,34.5)|[(1,2),(3,4)]                |(3,4)
       |(-5,-12)  |[(1,2),(3,4)]                |(1,2)
       |(10,10)   |[(1,2),(3,4)]                |(3,4)
-      |(0,0)     |[(0,0),(6,6)]                |(-0,0)
+      |(0,0)     |[(0,0),(6,6)]                |(0,0)
       |(-10,0)   |[(0,0),(6,6)]                |(0,0)
       |(-3,4)    |[(0,0),(6,6)]                |(0.5,0.5)
       |(5.1,34.5)|[(0,0),(6,6)]                |(6,6)
@@ -112,7 +112,7 @@
       |(-5,-12)  |[(10,-10),(-3,-4)]           |(-1.60487804878049,-4.64390243902439)
       |(10,10)   |[(10,-10),(-3,-4)]           |(2.39024390243902,-6.48780487804878)
       |(0,0)     |[(-1000000,200),(300000,-40)]|(0.0028402365895872,15.384614860264)
-      |(-10,0)   |[(-1000000,200),(300000,-40)]|(-9.99715942258202,15.3864610140473)
+      |(-10,0)   |[(-1000000,200),(300000,-40)]|(-9.99715942258202,15.3864610140472)
       |(-3,4)    |[(-1000000,200),(300000,-40)]|(-2.99789812267519,15.3851688427303)
       |(5.1,34.5)|[(-1000000,200),(300000,-40)]|(5.09647083221496,15.3836744976925)
       |(-5,-12)  |[(-1000000,200),(300000,-40)]|(-4.99494420845634,15.3855375281616)
@@ -129,11 +129,11 @@
 six|box
 ---+--------------------------------------------------------------------------
    |(2.12132034355964,2.12132034355964),(-2.12132034355964,-2.12132034355964)
-   |(71.7106781186548,72.7106781186548),(-69.7106781186548,-68.7106781186548)
-   |(4.53553390593274,6.53553390593274),(-2.53553390593274,-0.535533905932738)
-   |(3.12132034355964,4.12132034355964),(-1.12132034355964,-0.121320343559643)
+   |(71.7106781186547,72.7106781186547),(-69.7106781186547,-68.7106781186547)
+   |(4.53553390593274,6.53553390593274),(-2.53553390593274,-0.535533905932737)
+   |(3.12132034355964,4.12132034355964),(-1.12132034355964,-0.121320343559642)
    |(107.071067811865,207.071067811865),(92.9289321881345,192.928932188135)
-   |(170.710678118655,70.7106781186548),(29.2893218813452,-70.7106781186548)
+   |(170.710678118655,70.7106781186547),(29.2893218813453,-70.7106781186547)
 (6 rows)

 QUERY: SELECT '' AS twentyfour, b.f1 + p.f1 AS translation
@@ -204,11 +204,11 @@
           |(0,0),(0,0)
           |(0,0),(0,0)
           |(0,0),(0,0)
-          |(-0,0),(-20,-20)
+          |(0,0),(-20,-20)
           |(-10,-10),(-30,-30)
           |(-25,-25),(-25,-35)
           |(-30,-30),(-30,-30)
-          |(-0,2),(-14,0)
+          |(0,2),(-14,0)
           |(-7,3),(-21,1)
           |(-17.5,2.5),(-21.5,-0.5)
           |(-21,3),(-21,3)
@@ -216,7 +216,7 @@
           |(-29.4,118.8),(-88.2,39.6)
           |(-73.5,104.1),(-108,99)
           |(-88.2,118.8),(-88.2,118.8)
-          |(14,-0),(0,-34)
+          |(14,0),(0,-34)
           |(21,-17),(7,-51)
           |(29.5,-42.5),(17.5,-47.5)
           |(21,-51),(21,-51)
@@ -231,11 +231,11 @@
    WHERE (p.f1 <-> '(0,0)'::point) >= 1;
 twenty|rotation
 ------+---------------------------------------------------------------------------------
-      |(0,-0),(-0.2,-0.2)
+      |(0,0),(-0.2,-0.2)
       |(-0.1,-0.1),(-0.3,-0.3)
       |(-0.25,-0.25),(-0.25,-0.35)
       |(-0.3,-0.3),(-0.3,-0.3)
-      |(0.08,-0),(0,-0.56)
+      |(0.08,0),(0,-0.56)
       |(0.12,-0.28),(0.04,-0.84)
       |(0.26,-0.7),(0.1,-0.82)
       |(0.12,-0.84),(0.12,-0.84)
@@ -243,7 +243,7 @@
       |(0.0976764836465887,-0.0241724631246608),(0.0325588278821962,-0.0725173893739825)
       |(0.109762715208919,-0.0562379754328844),(0.0813970697054906,-0.0604311578116521)
       |(0.0976764836465887,-0.0725173893739825),(0.0976764836465887,-0.0725173893739825)
-      |(-0,0.0828402366863905),(-0.201183431952663,0)
+      |(0,0.0828402366863905),(-0.201183431952663,0)
       |(-0.100591715976331,0.124260355029586),(-0.301775147928994,0.0414201183431953)
       |(-0.251479289940828,0.103550295857988),(-0.322485207100592,0.0739644970414201)
       |(-0.301775147928994,0.124260355029586),(-0.301775147928994,0.124260355029586)
@@ -409,25 +409,25 @@
 QUERY: SELECT '' AS six, polygon(f1)
    FROM CIRCLE_TBL;
 six|polygon

                                        

----+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
|((-3,0),(-2.59807621135332,1.5),(-1.5,2.59807621135332),(-1.83690953073357e-16,3),(1.5,2.59807621135332),(2.59807621135332,1.5),(3,3.67381906146713e-16),(2.59807621135332,-1.5),(1.5,-2.59807621135332),(5.5107285922007e-16,-3),(-1.5,-2.59807621135332),(-2.59807621135332,-1.5))
-
|((-99,2),(-85.6025403784439,52),(-49,88.6025403784439),(0.999999999999994,102),(51,88.6025403784439),(87.6025403784439,52),(101,2.00000000000001),(87.6025403784439,-48),(51,-84.6025403784438),(1.00000000000002,-98),(-49,-84.6025403784439),(-85.6025403784438,-48))
            
-
|((-4,3),(-3.33012701892219,5.5),(-1.5,7.33012701892219),(1,8),(3.5,7.33012701892219),(5.33012701892219,5.5),(6,3),(5.33012701892219,0.500000000000001),(3.5,-1.33012701892219),(1,-2),(-1.5,-1.33012701892219),(-3.33012701892219,0.499999999999998))
                              
-
|((-2,2),(-1.59807621135332,3.5),(-0.5,4.59807621135332),(1,5),(2.5,4.59807621135332),(3.59807621135332,3.5),(4,2),(3.59807621135332,0.500000000000001),(2.5,-0.598076211353315),(1,-1),(-0.5,-0.598076211353316),(-1.59807621135332,0.499999999999999))
                            
-
|((90,200),(91.3397459621556,205),(95,208.660254037844),(100,210),(105,208.660254037844),(108.660254037844,205),(110,200),(108.660254037844,195),(105,191.339745962156),(100,190),(95,191.339745962156),(91.3397459621556,195))
                                                     
-
|((0,0),(13.3974596215561,50),(50,86.6025403784439),(100,100),(150,86.6025403784439),(186.602540378444,50),(200,1.22460635382238e-14),(186.602540378444,-50),(150,-86.6025403784438),(100,-100),(50,-86.6025403784439),(13.3974596215562,-50))
                                      

+---+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
|((-3,0),(-2.59807621135076,1.50000000000442),(-1.49999999999116,2.59807621135842),(1.53104195987908e-11,3),(1.50000000001768,2.59807621134311),(2.59807621136607,1.4999999999779),(3,-3.06208391975815e-11),(2.59807621133545,-1.50000000003094),(1.49999999996464,-2.59807621137373),(-4.59312587963723e-11,-3),(-1.5000000000442,-2.5980762113278),(-2.59807621138139,-1.49999999995138))
+
|((-99,2),(-85.6025403783588,52.0000000001473),(-48.9999999997054,88.602540378614),(1.00000000051035,102),(51.0000000005893,88.6025403781036),(87.6025403788692,51.9999999992634),(101,1.99999999897931),(87.6025403778485,-48.0000000010313),(50.9999999988214,-84.6025403791243),(0.999999998468958,-98),(-49.0000000014732,-84.6025403775933),(-85.6025403793795,-47.9999999983794))
    
+
|((-4,3),(-3.33012701891794,5.50000000000737),(-1.49999999998527,7.3301270189307),(1.00000000002552,8),(3.50000000002946,7.33012701890518),(5.33012701894346,5.49999999996317),(6,2.99999999994897),(5.33012701889242,0.499999999948436),(3.49999999994107,-1.33012701895622),(0.999999999923448,-2),(-1.50000000007366,-1.33012701887966),(-3.33012701896897,0.500000000081029))
          
+
|((-2,2),(-1.59807621135076,3.50000000000442),(-0.499999999991161,4.59807621135842),(1.00000000001531,5),(2.50000000001768,4.59807621134311),(3.59807621136607,3.4999999999779),(4,1.99999999996938),(3.59807621133545,0.499999999969062),(2.49999999996464,-0.59807621137373),(0.999999999954069,-1),(-0.500000000044197,-0.598076211327799),(-1.59807621138139,0.500000000048617))
       
+
|((90,200),(91.3397459621641,205.000000000015),(95.0000000000295,208.660254037861),(100.000000000051,210),(105.000000000059,208.66025403781),(108.660254037887,204.999999999926),(110,199.999999999898),(108.660254037785,194.999999999897),(104.999999999882,191.339745962088),(99.9999999998469,190),(94.9999999998527,191.339745962241),(91.3397459620621,195.000000000162))
            
+
|((0,0),(13.3974596216412,50.0000000001473),(50.0000000002946,86.602540378614),(100.00000000051,100),(150.000000000589,86.6025403781036),(186.602540378869,49.9999999992634),(200,-1.02069463991938e-09),(186.602540377848,-50.0000000010313),(149.999999998821,-86.6025403791243),(99.999999998469,-100),(49.9999999985268,-86.6025403775933),(13.3974596206205,-49.9999999983794))
       
 (6 rows)

 QUERY: SELECT '' AS six, polygon(8, f1)
    FROM CIRCLE_TBL;
 six|polygon
                                                                                                                     

----+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
|((-3,0),(-2.12132034355964,2.12132034355964),(-1.83690953073357e-16,3),(2.12132034355964,2.12132034355964),(3,3.67381906146713e-16),(2.12132034355964,-2.12132034355964),(5.5107285922007e-16,-3),(-2.12132034355964,-2.12132034355964))
-
|((-99,2),(-69.7106781186548,72.7106781186548),(0.999999999999994,102),(71.7106781186547,72.7106781186548),(101,2.00000000000001),(71.7106781186548,-68.7106781186547),(1.00000000000002,-98),(-69.7106781186547,-68.7106781186548))
    
-
|((-4,3),(-2.53553390593274,6.53553390593274),(1,8),(4.53553390593274,6.53553390593274),(6,3),(4.53553390593274,-0.535533905932737),(1,-2),(-2.53553390593274,-0.535533905932738))
                                                      
-
|((-2,2),(-1.12132034355964,4.12132034355964),(1,5),(3.12132034355964,4.12132034355964),(4,2),(3.12132034355964,-0.121320343559642),(1,-1),(-1.12132034355964,-0.121320343559643))
                                                      
-
|((90,200),(92.9289321881345,207.071067811865),(100,210),(107.071067811865,207.071067811865),(110,200),(107.071067811865,192.928932188135),(100,190),(92.9289321881345,192.928932188135))
                                               
-
|((0,0),(29.2893218813452,70.7106781186548),(100,100),(170.710678118655,70.7106781186548),(200,1.22460635382238e-14),(170.710678118655,-70.7106781186547),(100,-100),(29.2893218813453,-70.7106781186548))
                              

+---+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+
|((-3,0),(-2.12132034355423,2.12132034356506),(1.53104195987908e-11,3),(2.12132034357588,2.1213203435434),(3,-3.06208391975815e-11),(2.12132034353258,-2.12132034358671),(-4.59312587963723e-11,-3),(-2.12132034359753,-2.12132034352175))
+
|((-99,2),(-69.7106781184743,72.7106781188352),(1.00000000051035,102),(71.7106781191961,72.7106781181134),(101,1.99999999897931),(71.7106781177526,-68.7106781195569),(0.999999998468958,-98),(-69.7106781199178,-68.7106781173917))
     
+
|((-4,3),(-2.53553390592372,6.53553390594176),(1.00000000002552,8),(4.5355339059598,6.53553390590567),(6,2.99999999994897),(4.53553390588763,-0.535533905977846),(0.999999999923448,-2),(-2.53553390599589,-0.535533905869586))
          
+
|((-2,2),(-1.12132034355423,4.12132034356506),(1.00000000001531,5),(3.12132034357588,4.1213203435434),(4,1.99999999996938),(3.12132034353258,-0.121320343586708),(0.999999999954069,-1),(-1.12132034359753,-0.121320343521751))
          
+
|((90,200),(92.9289321881526,207.071067811884),(100.000000000051,210),(107.07106781192,207.071067811811),(110,199.999999999898),(107.071067811775,192.928932188044),(99.9999999998469,190),(92.9289321880082,192.928932188261))
          
+
|((0,0),(29.2893218815257,70.7106781188352),(100.00000000051,100),(170.710678119196,70.7106781181134),(200,-1.02069463991938e-09),(170.710678117753,-70.7106781195569),(99.999999998469,-100),(29.2893218800822,-70.7106781173917))
      
 (6 rows)

 QUERY: SELECT '' AS six, circle(f1, 50.0)
@@ -466,11 +466,11 @@
    WHERE (p1.f1 <-> c1.f1) > 0
    ORDER BY distance, circle, point using <<;
 twentyfour|circle        |point     |         distance
-----------+--------------+----------+-----------------
-          |<(100,0),100> |(5.1,34.5)|0.976531926977964
+----------+--------------+----------+----------------
+          |<(100,0),100> |(5.1,34.5)|0.97653192697797
           |<(1,2),3>     |(-3,4)    | 1.47213595499958
           |<(0,0),3>     |(-3,4)    |                2
-          |<(100,0),100> |(-3,4)    | 3.07764064044151
+          |<(100,0),100> |(-3,4)    |3.07764064044152
           |<(100,0),100> |(-5,-12)  | 5.68348972285122
           |<(1,3),5>     |(-10,0)   | 6.40175425099138
           |<(1,3),5>     |(10,10)   | 6.40175425099138
@@ -482,7 +482,7 @@
           |<(0,0),3>     |(10,10)   |  11.142135623731
           |<(1,3),5>     |(-5,-12)  | 11.1554944214035
           |<(1,2),3>     |(-5,-12)  | 12.2315462117278
-          |<(1,3),5>     |(5.1,34.5)| 26.7657047773224
+          |<(1,3),5>     |(5.1,34.5)|26.7657047773223
           |<(1,2),3>     |(5.1,34.5)|  29.757594539282
           |<(0,0),3>     |(5.1,34.5)| 31.8749193547455
           |<(100,200),10>|(5.1,34.5)| 180.778038568384
======   tinterval   ======
--- expected/tinterval.out    Sun Aug 23 11:09:49 1998
+++ results/tinterval.out    Tue Sep  1 23:40:17 1998
@@ -110,20 +110,20 @@
    ORDER BY interval1, interval2;
 fourteen|interval1                                                      |interval2
                 

--------+---------------------------------------------------------------+---------------------------------------------------------------
-        |["-infinity" "infinity"]                                       |["Sat May 10 23:59:12 1947 PST" "Sun Jan 14
03:14:211973 PST"] 
-        |["-infinity" "infinity"]                                       |["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04
23:59:121983 PDT"] 
         |["-infinity" "infinity"]                                       |["epoch" "Mon May 01 00:30:30 1995 PDT"]
                 
+        |["-infinity" "infinity"]                                       |["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04
23:59:121983 PDT"] 
         |["-infinity" "infinity"]                                       |["Thu Feb 15 12:15:03 1990 PST" "current"]
                 
-        |["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]|["-infinity" "infinity"]
                 
-        |["epoch" "Mon May 01 00:30:30 1995 PDT"]                       |["-infinity" "infinity"]
                 
-        |["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]|["-infinity" "infinity"]
                 
+        |["-infinity" "infinity"]                                       |["Sat May 10 23:59:12 1947 PST" "Sun Jan 14
03:14:211973 PST"] 
         |["Thu Feb 15 12:15:03 1990 PST" "current"]                     |["-infinity" "infinity"]
                 
+        |["epoch" "Mon May 01 00:30:30 1995 PDT"]                       |["Thu Feb 15 12:15:03 1990 PST" "current"]
                 
+        |["epoch" "Mon May 01 00:30:30 1995 PDT"]                       |["-infinity" "infinity"]
                 
+        |["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]|["-infinity" "infinity"]
                 
         |["epoch" "Mon May 01 00:30:30 1995 PDT"]                       |["Sat May 10 23:59:12 1947 PST" "Sun Jan 14
03:14:211973 PST"] 
+        |["Thu Feb 15 12:15:03 1990 PST" "current"]                     |["epoch" "Mon May 01 00:30:30 1995 PDT"]
                 
         |["Sat May 10 23:59:12 1947 PST" "Sun Jan 14 03:14:21 1973 PST"]|["epoch" "Mon May 01 00:30:30 1995 PDT"]
                 
         |["epoch" "Mon May 01 00:30:30 1995 PDT"]                       |["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04
23:59:121983 PDT"] 
-        |["epoch" "Mon May 01 00:30:30 1995 PDT"]                       |["Thu Feb 15 12:15:03 1990 PST" "current"]
                 
         |["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]|["epoch" "Mon May 01 00:30:30 1995 PDT"]
                 
-        |["Thu Feb 15 12:15:03 1990 PST" "current"]                     |["epoch" "Mon May 01 00:30:30 1995 PDT"]
                 
+        |["Sun Sep 04 23:59:12 1983 PDT" "Tue Oct 04 23:59:12 1983 PDT"]|["-infinity" "infinity"]
                 
 (14 rows)

 QUERY: SELECT '' AS five, t1.f1
======   select_having   ======
--- expected/select_having.out    Sat Aug 29 00:10:03 1998
+++ results/select_having.out    Tue Sep  1 23:41:51 1998
@@ -11,27 +11,6 @@
 QUERY: INSERT INTO test_having VALUES (9, 4, 'CCCC', 'j');
 QUERY: SELECT max(a) FROM test_having
     GROUP BY lower(c) HAVING count(*) > 2 OR min(b) = 3;
-max
----
-  5
-  9
-(2 rows)
-
-QUERY: SELECT lower(c), count(c) FROM test_having
-    GROUP BY lower(c) HAVING count(*) > 2 OR min(a) = max(a);
-lower   |count
---------+-----
-bbbb    |    3
-cccc    |    4
-xxxx    |    1
-(3 rows)
-
-QUERY: SELECT c, max(a) FROM test_having
-    GROUP BY c HAVING count(*) > 2 OR min(a) = max(a);
-c       |max
---------+---
-XXXX    |  0
-bbbb    |  5
-(2 rows)
-
-QUERY: DROP TABLE test_having;
+pqReadData() -- backend closed the channel unexpectedly.
+    This probably means the backend terminated abnormally before or while processing the request.
+We have lost the connection to the backend, so further processing is impossible.  Terminating.
======   misc   ======
--- expected/misc.out    Tue Sep  1 23:40:05 1998
+++ results/misc.out    Tue Sep  1 23:42:04 1998
@@ -507,11 +507,12 @@
 subselect_tbl
 tenk1
 tenk2
+test_having
 text_tbl
 timespan_tbl
 tinterval_tbl
 toyemp
 varchar_tbl
 xacttest
-(71 rows)
+(72 rows)

======   run_ruletest   ======
--- expected/run_ruletest.out    Sun Aug 23 11:09:42 1998
+++ results/run_ruletest.out    Tue Sep  1 23:42:25 1998
@@ -254,12 +254,12 @@
 QUERY: delete from rtest_emp where ename = 'gates';
 QUERY: select * from rtest_emplog;
 ename               |who  |action    |newsal    |oldsal
---------------------+-----+----------+----------+----------
-wiech               |pgsql|hired     |$5,000.00 |$0.00
-gates               |pgsql|hired     |$80,000.00|$0.00
-wieck               |pgsql|honored   |$6,000.00 |$5,000.00
-wieck               |pgsql|honored   |$7,000.00 |$6,000.00
-gates               |pgsql|fired     |$0.00     |$80,000.00
+--------------------+--------+----------+----------+----------
+wiech               |postgres|hired     |$5,000.00 |$0.00
+gates               |postgres|hired     |$80,000.00|$0.00
+wieck               |postgres|honored   |$6,000.00 |$5,000.00
+wieck               |postgres|honored   |$7,000.00 |$6,000.00
+gates               |postgres|fired     |$0.00     |$80,000.00
 (5 rows)

 QUERY: insert into rtest_empmass values ('meyer', '4000.00');
@@ -268,53 +268,53 @@
 QUERY: insert into rtest_emp select * from rtest_empmass;
 QUERY: select * from rtest_emplog;
 ename               |who  |action    |newsal    |oldsal
---------------------+-----+----------+----------+----------
-wiech               |pgsql|hired     |$5,000.00 |$0.00
-gates               |pgsql|hired     |$80,000.00|$0.00
-wieck               |pgsql|honored   |$6,000.00 |$5,000.00
-wieck               |pgsql|honored   |$7,000.00 |$6,000.00
-gates               |pgsql|fired     |$0.00     |$80,000.00
-meyer               |pgsql|hired     |$4,000.00 |$0.00
-maier               |pgsql|hired     |$5,000.00 |$0.00
-mayr                |pgsql|hired     |$6,000.00 |$0.00
+--------------------+--------+----------+----------+----------
+wiech               |postgres|hired     |$5,000.00 |$0.00
+gates               |postgres|hired     |$80,000.00|$0.00
+wieck               |postgres|honored   |$6,000.00 |$5,000.00
+wieck               |postgres|honored   |$7,000.00 |$6,000.00
+gates               |postgres|fired     |$0.00     |$80,000.00
+meyer               |postgres|hired     |$4,000.00 |$0.00
+maier               |postgres|hired     |$5,000.00 |$0.00
+mayr                |postgres|hired     |$6,000.00 |$0.00
 (8 rows)

 QUERY: update rtest_empmass set salary = salary + '1000.00';
 QUERY: update rtest_emp set salary = rtest_empmass.salary where ename = rtest_empmass.ename;
 QUERY: select * from rtest_emplog;
 ename               |who  |action    |newsal    |oldsal
---------------------+-----+----------+----------+----------
-wiech               |pgsql|hired     |$5,000.00 |$0.00
-gates               |pgsql|hired     |$80,000.00|$0.00
-wieck               |pgsql|honored   |$6,000.00 |$5,000.00
-wieck               |pgsql|honored   |$7,000.00 |$6,000.00
-gates               |pgsql|fired     |$0.00     |$80,000.00
-meyer               |pgsql|hired     |$4,000.00 |$0.00
-maier               |pgsql|hired     |$5,000.00 |$0.00
-mayr                |pgsql|hired     |$6,000.00 |$0.00
-maier               |pgsql|honored   |$6,000.00 |$5,000.00
-mayr                |pgsql|honored   |$7,000.00 |$6,000.00
-meyer               |pgsql|honored   |$5,000.00 |$4,000.00
+--------------------+--------+----------+----------+----------
+wiech               |postgres|hired     |$5,000.00 |$0.00
+gates               |postgres|hired     |$80,000.00|$0.00
+wieck               |postgres|honored   |$6,000.00 |$5,000.00
+wieck               |postgres|honored   |$7,000.00 |$6,000.00
+gates               |postgres|fired     |$0.00     |$80,000.00
+meyer               |postgres|hired     |$4,000.00 |$0.00
+maier               |postgres|hired     |$5,000.00 |$0.00
+mayr                |postgres|hired     |$6,000.00 |$0.00
+maier               |postgres|honored   |$6,000.00 |$5,000.00
+mayr                |postgres|honored   |$7,000.00 |$6,000.00
+meyer               |postgres|honored   |$5,000.00 |$4,000.00
 (11 rows)

 QUERY: delete from rtest_emp where ename = rtest_empmass.ename;
 QUERY: select * from rtest_emplog;
 ename               |who  |action    |newsal    |oldsal
---------------------+-----+----------+----------+----------
-wiech               |pgsql|hired     |$5,000.00 |$0.00
-gates               |pgsql|hired     |$80,000.00|$0.00
-wieck               |pgsql|honored   |$6,000.00 |$5,000.00
-wieck               |pgsql|honored   |$7,000.00 |$6,000.00
-gates               |pgsql|fired     |$0.00     |$80,000.00
-meyer               |pgsql|hired     |$4,000.00 |$0.00
-maier               |pgsql|hired     |$5,000.00 |$0.00
-mayr                |pgsql|hired     |$6,000.00 |$0.00
-maier               |pgsql|honored   |$6,000.00 |$5,000.00
-mayr                |pgsql|honored   |$7,000.00 |$6,000.00
-meyer               |pgsql|honored   |$5,000.00 |$4,000.00
-maier               |pgsql|fired     |$0.00     |$6,000.00
-mayr                |pgsql|fired     |$0.00     |$7,000.00
-meyer               |pgsql|fired     |$0.00     |$5,000.00
+--------------------+--------+----------+----------+----------
+wiech               |postgres|hired     |$5,000.00 |$0.00
+gates               |postgres|hired     |$80,000.00|$0.00
+wieck               |postgres|honored   |$6,000.00 |$5,000.00
+wieck               |postgres|honored   |$7,000.00 |$6,000.00
+gates               |postgres|fired     |$0.00     |$80,000.00
+meyer               |postgres|hired     |$4,000.00 |$0.00
+maier               |postgres|hired     |$5,000.00 |$0.00
+mayr                |postgres|hired     |$6,000.00 |$0.00
+maier               |postgres|honored   |$6,000.00 |$5,000.00
+mayr                |postgres|honored   |$7,000.00 |$6,000.00
+meyer               |postgres|honored   |$5,000.00 |$4,000.00
+maier               |postgres|fired     |$0.00     |$6,000.00
+mayr                |postgres|fired     |$0.00     |$7,000.00
+meyer               |postgres|fired     |$0.00     |$5,000.00
 (14 rows)

 QUERY: insert into rtest_t4 values (1, 'Record should go to rtest_t4');

Re: [HACKERS] Core dump in regression tests.

От
"Thomas G. Lockhart"
Дата:
> > Uh, no, Linux/i686 is showing trouble too, but not in the initdb
> > stage. The Sparc platforms will be more sensitive to byte alignment
> > problems, especially within C structures, so this may be
> > illustrating a cross-platform problem more clearly.
> > There is a repeatable indexing and (perhaps) caching problem I see
> > in the regression tests. Annoyingly, the problems get slightly worse
> > at the moment when compiling with -O0.
> OK, here is my regression output.  Do you see anything strange in
> there?

Well, yes, just not as strange as my tests :) You don't have int8
enabled, and if your compiler and libc allow it I'd like to get that
going. But that isn't a problem.

You have a core dump from the "having" test. Is that a known problem
with someone working on a solution? The test worked on my ~month-old
development tree (I could probably figure out the vintage of that tree
to more precision if it would be helpful), so something has happened in
the meantime.

I suspect that (possibly) more than one thing is going on, since there
were some changes directly related to removing the oddball OID types as
well as perhaps cleanup changes made while traversing the code.
Something may have crept in there.

If these tests are the only ones showing problems on your machine, then
consider yourself lucky. I've got several more failures, including the
one where I can't create indices on a table until after terminating and
restarting the session. The Sparc contingent sees more problems than I,
but they are on a Risc machine so will see alignment problems if they
are present.

                      - Tom

> ======   int8   ======
> --- expected/int8.out   Sun Aug 23 11:09:38 1998
> +++ results/int8.out    Tue Sep  1 23:40:10 1998
> @@ -6,110 +6,110 @@
>  QUERY: INSERT INTO INT8_TBL VALUES('4567890123456789','-4567890123456789');
>  QUERY: SELECT * FROM INT8_TBL;
>                q1|               q2
> -----------------+-----------------
> +----------+-----------
>               123|              456
> -             123| 4567890123456789
> -4567890123456789|              123
> -4567890123456789| 4567890123456789
> -4567890123456789|-4567890123456789
> +       123| 2147483647
> +2147483647|        123
> +2147483647| 2147483647
> +2147483647|-2147483648
>  (5 rows)
> ======   select_having   ======
> --- expected/select_having.out  Sat Aug 29 00:10:03 1998
> +++ results/select_having.out   Tue Sep  1 23:41:51 1998
> @@ -11,27 +11,6 @@
>  QUERY: INSERT INTO test_having VALUES (9, 4, 'CCCC', 'j');
>  QUERY: SELECT max(a) FROM test_having
>         GROUP BY lower(c) HAVING count(*) > 2 OR min(b) = 3;
<snip>
> -QUERY: DROP TABLE test_having;
> +pqReadData() -- backend closed the channel unexpectedly.
> +       This probably means the backend terminated abnormally before or while processing the request.
> +We have lost the connection to the backend, so further processing is impossible.  Terminating.

OK, this test did not fail on my development tree from a month ago. What
changed? I'm seeing it fail here also.

                        - Tom

Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> > Can we try a simple -O rather than just -O2 and -O0.  Could this be
> > some type of optimizer bug in gcc2/Solaris?
> > Everything is pointing to indexing.c, from both the initdb failure and
> > the create function failure.  But I can't see anything wrong in there,
> > and other platforms seem to be OK.
>
> Uh, no, Linux/i686 is showing trouble too, but not in the initdb stage.
> The Sparc platforms will be more sensitive to byte alignment problems,
> especially within C structures, so this may be illustrating a
> cross-platform problem more clearly.
>
> There is a repeatable indexing and (perhaps) caching problem I see in
> the regression tests. Annoyingly, the problems get slightly worse at the
> moment when compiling with -O0.

Can you see if compiling indexing.c with different optmization levels
change the output?  If so, would someone else also look in indexing.c
for somethings stupid I did.   I can't see it, but EVERYTHING is
pointing to that file.

>
> There is a fundamental problem lurking somewhere, and there may not be
> much point in going beta unless you think that more testers will help to
> track down the problem.

Not sure how to find the problem.  Without being able to debug it here,
I am left staring at the code over and over again.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> > > Uh, no, Linux/i686 is showing trouble too, but not in the initdb
> > > stage. The Sparc platforms will be more sensitive to byte alignment
> > > problems, especially within C structures, so this may be
> > > illustrating a cross-platform problem more clearly.
> > > There is a repeatable indexing and (perhaps) caching problem I see
> > > in the regression tests. Annoyingly, the problems get slightly worse
> > > at the moment when compiling with -O0.
> > OK, here is my regression output.  Do you see anything strange in
> > there?
>
> Well, yes, just not as strange as my tests :) You don't have int8
> enabled, and if your compiler and libc allow it I'd like to get that
> going. But that isn't a problem.
>
> You have a core dump from the "having" test. Is that a known problem
> with someone working on a solution? The test worked on my ~month-old
> development tree (I could probably figure out the vintage of that tree
> to more precision if it would be helpful), so something has happened in
> the meantime.
>
> I suspect that (possibly) more than one thing is going on, since there
> were some changes directly related to removing the oddball OID types as
> well as perhaps cleanup changes made while traversing the code.
> Something may have crept in there.
>
> If these tests are the only ones showing problems on your machine, then
> consider yourself lucky. I've got several more failures, including the
> one where I can't create indices on a table until after terminating and
> restarting the session. The Sparc contingent sees more problems than I,
> but they are on a Risc machine so will see alignment problems if they
> are present.

Yes, very strange.

>
>                       - Tom
>
> > ======   int8   ======
> > --- expected/int8.out   Sun Aug 23 11:09:38 1998
> > +++ results/int8.out    Tue Sep  1 23:40:10 1998
> > @@ -6,110 +6,110 @@
> >  QUERY: INSERT INTO INT8_TBL VALUES('4567890123456789','-4567890123456789');
> >  QUERY: SELECT * FROM INT8_TBL;
> >                q1|               q2
> > -----------------+-----------------
> > +----------+-----------
> >               123|              456
> > -             123| 4567890123456789
> > -4567890123456789|              123
> > -4567890123456789| 4567890123456789
> > -4567890123456789|-4567890123456789
> > +       123| 2147483647
> > +2147483647|        123
> > +2147483647| 2147483647
> > +2147483647|-2147483648
> >  (5 rows)
> > ======   select_having   ======
> > --- expected/select_having.out  Sat Aug 29 00:10:03 1998
> > +++ results/select_having.out   Tue Sep  1 23:41:51 1998
> > @@ -11,27 +11,6 @@
> >  QUERY: INSERT INTO test_having VALUES (9, 4, 'CCCC', 'j');
> >  QUERY: SELECT max(a) FROM test_having
> >         GROUP BY lower(c) HAVING count(*) > 2 OR min(b) = 3;
> <snip>
> > -QUERY: DROP TABLE test_having;
> > +pqReadData() -- backend closed the channel unexpectedly.
> > +       This probably means the backend terminated abnormally before or while processing the request.
> > +We have lost the connection to the backend, so further processing is impossible.  Terminating.
>
> OK, this test did not fail on my development tree from a month ago. What
> changed? I'm seeing it fail here also.

I believe David Hartwig has claimed this problem, and knows the cause.
He posted something recently.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
"Thomas G. Lockhart"
Дата:
Bruce Momjian wrote:
>
> Not sure how to find the problem. Without being able to debug it here,
> I am left staring at the code over and over again.

That sounds like *so* much fun ;-)

OK, I've been ignoring the problem until now, and of course may not be
of any help even if I were trying to help. I'm also not quite up on the
history and sequence of events which led to our current state, and I'm
not sure we have a strong regression history yet to pin this down.

At the moment we have Bruce and the two sparc guys working on it, and
Bruce can't reproduce the problems on his machine and Keith's machine is
so dog-slow that he can't do much testing which involve full rebuilds.
Boy, it hasn't been long since that model Sparc was the best thing
going, eh?

Does anyone else have a machine (Linux x86, for example) which exhibits
problems with the current development tree, and who has an interest in
helping to track this down?

I hate to step away from docs, but could for a while if that would be
helpful. I've got a fairly fast machine and can try pinning down when
the problems started by doing full builds on fresh trees. Or since we've
been making steady incremental improvements to the tree, maybe we should
focus on a particular problem; my "can't create another index in the
current session" problem is probably related to whatever else is going
on with indices.

In general the problems persist across different "-O" compiler settings
and across different architectures and compilers, though with different
symptoms, so I would think that this is not a compiler bug per se.

                  - Tom

Re: [HACKERS] Core dump in regression tests.u

От
Bruce Momjian
Дата:
> Bruce Momjian wrote:
> >
> > Not sure how to find the problem. Without being able to debug it here,
> > I am left staring at the code over and over again.
>
> That sounds like *so* much fun ;-)
>
> OK, I've been ignoring the problem until now, and of course may not be
> of any help even if I were trying to help. I'm also not quite up on the
> history and sequence of events which led to our current state, and I'm
> not sure we have a strong regression history yet to pin this down.
>
> At the moment we have Bruce and the two sparc guys working on it, and
> Bruce can't reproduce the problems on his machine and Keith's machine is
> so dog-slow that he can't do much testing which involve full rebuilds.
> Boy, it hasn't been long since that model Sparc was the best thing
> going, eh?

I was on Thomas A. Szybist machine for two hours, and even though I was
telnet'ed across three Internet machines to get there, it made my PP200
look like it was sitting still.  Amazing speed.  It is a Sparc running
Solaris.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.u

От
"Thomas A. Szybist"
Дата:
In message <199809021542.LAA02771@candle.pha.pa.us>, Bruce Momjian writes:
> > Bruce Momjian wrote:
> > >
> > > Not sure how to find the problem. Without being able to debug it here,
> > > I am left staring at the code over and over again.
> >
> > That sounds like *so* much fun ;-)
> >
> > OK, I've been ignoring the problem until now, and of course may not be
> > of any help even if I were trying to help. I'm also not quite up on the
> > history and sequence of events which led to our current state, and I'm
> > not sure we have a strong regression history yet to pin this down.
> >
> > At the moment we have Bruce and the two sparc guys working on it, and
> > Bruce can't reproduce the problems on his machine and Keith's machine is
> > so dog-slow that he can't do much testing which involve full rebuilds.
> > Boy, it hasn't been long since that model Sparc was the best thing
> > going, eh?
>
> I was on Thomas A. Szybist machine for two hours, and even though I was
           ^^^^^^^^^^^^^^^^^
It's really just Tom :)

> telnet'ed across three Internet machines to get there, it made my PP200
> look like it was sitting still.  Amazing speed.  It is a Sparc running
> Solaris.
>
> --
> Bruce Momjian                          |  830 Blythe Avenue
> maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
>   +  If your life is a hard drive,     |  (610) 353-9879(w)
>   +  Christ can be your backup.        |  (610) 853-3000(h)


I just grabbed grabbed gcc 2.8.1 from smc.vnet.com. I should have that
installed later today.  Full rebuilds are not a problem for me.  I did
just get a project bubbled to the top of my queue here that should take
about a day or two.  I certainly can try patches and such, but I may
not have time plod through with gdb for a few days.   (Not that I can
help much anyway.) I'm also going to be away for Labor day starting
Friday night EST. I'm returning on Tuesday night EST.

Tom Szybist
szybist@boxhill.com

Re: [HACKERS] Core dump in regression tests.

От
David Hartwig
Дата:

Thomas G. Lockhart wrote:

> > > Uh, no, Linux/i686 is showing trouble too, but not in the initdb
> > > stage. The Sparc platforms will be more sensitive to byte alignment
> > > problems, especially within C structures, so this may be
> > > illustrating a cross-platform problem more clearly.
> > > There is a repeatable indexing and (perhaps) caching problem I see
> > > in the regression tests. Annoyingly, the problems get slightly worse
> > > at the moment when compiling with -O0.
> > OK, here is my regression output.  Do you see anything strange in
> > there?
>
> Well, yes, just not as strange as my tests :) You don't have int8
> enabled, and if your compiler and libc allow it I'd like to get that
> going. But that isn't a problem.
>
> You have a core dump from the "having" test. Is that a known problem
> with someone working on a solution? The test worked on my ~month-old
> development tree (I could probably figure out the vintage of that tree
> to more precision if it would be helpful), so something has happened in
> the meantime.
>

I submitted two patch patches to fix the select_having test.  The first patch addressed problems caused by
a machine dependency on the degree of accuracy of datetime.    CVS is currently showing this first patch.

The second patch was to fix my first patch.  It has NOT been applied yet.   The problem with he first
patch, which you are seeing now, is that the test case demonstrates another bug which has nothing to do
with having.    It has to do with GROUPing by a function and the argument of the function not appearing
elsewhere in the target list.   Weird!   In any case the latest patch will fix the regression.

BTW, I have also sent one other patch that I am waiting to see in CVS.    These one is an interim AND/OR
memory exhaustion fix.


Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
> I submitted two patch patches to fix the select_having test.  The first patch addressed problems caused by
> a machine dependency on the degree of accuracy of datetime.    CVS is currently showing this first patch.
>
> The second patch was to fix my first patch.  It has NOT been applied yet.   The problem with he first
> patch, which you are seeing now, is that the test case demonstrates another bug which has nothing to do
> with having.    It has to do with GROUPing by a function and the argument of the function not appearing
> elsewhere in the target list.   Weird!   In any case the latest patch will fix the regression.
>
> BTW, I have also sent one other patch that I am waiting to see in CVS.    These one is an interim AND/OR
> memory exhaustion fix.

Yes, I am behind on the patch applications.  Marc probably stopped while
I did my mega-cleanup, and I have been scratching my head on the
platform failures.  Hopefully one of us will get it soon.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)

Re: [HACKERS] Core dump in regression tests.

От
David Hartwig
Дата:
Bruce Momjian wrote:

> > I submitted two patch patches to fix the select_having test.  The first patch addressed problems caused by
> > a machine dependency on the degree of accuracy of datetime.    CVS is currently showing this first patch.
> >
> > The second patch was to fix my first patch.  It has NOT been applied yet.   The problem with he first
> > patch, which you are seeing now, is that the test case demonstrates another bug which has nothing to do
> > with having.    It has to do with GROUPing by a function and the argument of the function not appearing
> > elsewhere in the target list.   Weird!   In any case the latest patch will fix the regression.
> >
> > BTW, I have also sent one other patch that I am waiting to see in CVS.    These one is an interim AND/OR
> > memory exhaustion fix.
>
> Yes, I am behind on the patch applications.  Marc probably stopped while
> I did my mega-cleanup, and I have been scratching my head on the
> platform failures.  Hopefully one of us will get it soon.
> bug.

No rush,  I can see you're synapses are all firing on this index bug.   Just a reminder so it doesn't fall
through the cracks.

More important, am relieved (in advance) that you have found the problem in the index code.

Can I assume there will be a snapshot I can get tomorrow from my business location to try out on my AIX box?  I
am anxious to know this is behind us.

Appreciation :)


Re: [HACKERS] Core dump in regression tests.

От
Bruce Momjian
Дата:
>
> No rush,  I can see you're synapses are all firing on this index bug.   Just a reminder so it doesn't fall
> through the cracks.

Doing it now.

>
> More important, am relieved (in advance) that you have found the problem in the index code.
>
> Can I assume there will be a snapshot I can get tomorrow from my business location to try out on my AIX box?  I
> am anxious to know this is behind us.
>
> Appreciation :)

Last I heard on Monday, Marc is making snapshots every day now, and
through the beta period.

Thanks to all the bug reports and tracebacks.  They clearly pointed to
the problem.  I just couldn't see it until today.

--
Bruce Momjian                          |  830 Blythe Avenue
maillist@candle.pha.pa.us              |  Drexel Hill, Pennsylvania 19026
  +  If your life is a hard drive,     |  (610) 353-9879(w)
  +  Christ can be your backup.        |  (610) 853-3000(h)