Postgresql on Ultraparc/Linux , Bug report and patch!

From: Silvio Macedo <smacedo(at)ic(dot)ac(dot)uk>
To: bugs(at)postgresql(dot)org
Subject: Postgresql on Ultraparc/Linux , Bug report and patch!
Date: 1999-11-25 15:34:16
Message-ID: Pine.LNX.4.10.9911251532310.1828-300000@test133.ee.ic.ac.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

============================================================================
POSTGRESQL BUG REPORT TEMPLATE
============================================================================

Your name : Silvio Macedo
Your email address : smacedo(at)ic(dot)ac(dot)uk

(or smacedo(at)inescn(dot)pt)

System Configuration
---------------------
Architecture (example: Intel Pentium) : Sun Ultrasparc 1
(143Mhz, 2.1 Gb disk, 64Mb RAM)

Operating System (example: Linux 2.0.26 ELF) : Linux 2.2.12 ELF, (RH6.1)

PostgreSQL version (example: PostgreSQL-6.5.3): PostgreSQL-6.5.3/2/SNAP

Compiler used (example: gcc 2.8.0) : gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
(comes with RH6.1)
GNUlibc 2.1.2

Please enter a FULL description of your problem:
------------------------------------------------

In 64 bit machines like the Ultraparc, strncmp can return -256.
In src/backend/utils/adt/name.c you do:
return (bool) strncmp(arg1->data, arg2->data, NAMEDATALEN) == 0;

In this way you are casting strncmp to bool, and not the comparison.

This is the description of the consequences, that I sent before I
discovered the problem:
(I am giving a really detailed description to maximize the chances that
you find the solution to my problem)

I have installed postgres many times in several Linux/Intel systems.

Now, I am trying to install Pg 6.5.3 ( or any other version of Pg) in a
Linux/(ultra)Sparc system. The system seems stable in any task other than
postgres stuff, but when I run initdb, it always dies with and error
about :
"Attribute 'aggtransfn1' is repeated."

I have downloaded source distribution PG 6.5.3, PG Snapshot, PG 6.5.2
and RPM binaries of Pg from RedHat 6.1 distribution and even SRPMS.

In all of them, after compiling and/or installing, when I do the initdb
-d, the script dies with this message:

> <aggname name>
<aggowner int4>
<aggtransfn1 regproc>
<aggtransfn2 regproc>
<aggfinalfn regproc>
<aggbasetype oid>
<aggtranstype1 oid>
<aggtranstype2 oid>
<aggfinaltype oid>
<agginitval1 text>
<agginitval2 text>
> ERROR: Attribute 'aggtransfn1' is repeated
ERROR: Attribute 'aggtransfn1' is repeated
initdb: could not create template database
initdb: cleaning up by wiping out /usr/local/pgsql/data/base/template1

I have also tried initdb with the full command line, etc..

This happens with all the versions of Pg that I have tested:
Pg Snapshot 22 Nov
Pg 6.5.3,
Pg 6.5.2,
Binaries in RPM from RedHat 6.1 Sparc
Source SRPM from '' ''

Then, I investigated the problem deeper, and deeper.
If I remove aggtransfn2 from the local1.????.bki.source, it gives the same
error in agginitval2.

I replaced the ERROR with a NOTICE on the elog on the file
src/backend/catalog/heap.c in the function CheckAttributeNames() and
everything went ok until I started regression tests. Lots of 'failed'
appeared in the char/string related tests, and those were real problems,
because I checked it myself (not just little differences); the backend
closed connection in some tests.

I then added some lines in the src/backend/catalog/heap.c to see if the
strings were read ok and if NAMEDATALEN was ok. Yes, they were.
aggtransfn1 was compared to aggransfn2 by a call to nameeq(), and this
function returned that they were equal (obviously they differ on the last
character).

Then, finally I replaced the call to nameeq to a direct strncmp() between
both tuple->data's and it worked. The regression tests still failed.

Maybe there is a problem in the strncmp libraries in my system ? oh no...

[PS: The source of this problem as I wrote above, is in Postgres name.c
file, in nameeq() ]

Please describe a way to repeat the problem. Please try to provide a
concise reproducible example, if at all possible:
----------------------------------------------------------------------

configure --with-x --with-tcl --with-template=linux_sparc
make
make install
cd /usr/local/pgsql
initdb

If you know how this problem might be fixed, list the solution below:
---------------------------------------------------------------------
I send both diff -f and diff -u in attach

--- postgresql-6.5.3/src/backend/utils/adt/name.c Mon Aug 2 06:24:55 1999
+++ postgresql-6.5.3.my/src/backend/utils/adt/name.c Thu Nov 25 11:53:39 1999
@@ -87,7 +87,7 @@
if (!arg1 || !arg2)
return 0;
else
- return (bool) strncmp(arg1->data, arg2->data, NAMEDATALEN) == 0;
+ return (bool) (strncmp(arg1->data, arg2->data, NAMEDATALEN) == 0);
}

bool

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
``````````````````````````````````````````````````````````````````````````
Silvio Emanuel Nunes Barbosa de Macedo

smacedo(at)ic(dot)ac(dot)uk smacedo(at)inescn(dot)pt
Imperial College, University of London INESC Porto
Intelligent and Interactive Systems Telecom. and Multimedia
Exhibition Road, Pc da Republica, 93
London SW7 2AZ, England 4050-497 PORTO PORTUGAL
Tel:+44 171 5946323 Tel:+351 22 2094220

Attachment Content-Type Size
patch.-u text/plain 379 bytes
patch.-f text/plain 84 bytes

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 1999-11-25 16:08:57 Re: [BUGS] Postgresql on Ultraparc/Linux , Bug report and patch!
Previous Message Silvio Macedo 1999-11-25 14:24:40 NOW, I SEND A PATCH ; initdb & general string compares - all Pg 6.5.2,6.5.3,snapshot,RPMS, SRPMS