I'm trying to add additional functionality to the contrib/pgcrypto
branch (at least for my own use, although ideally, I'd like to
make whatever additions good enough as to be accepted as part of
the PG distribution)
Anyway, I wanted to add hash functions (SHA-1 is already there,
so I'd like to add SHA-256 and SHA-512 at the very least, and
maybe also, for completeness, SHA-224 and SHA-384).
Anyway, I started with an implementation of SHA-1 that I already
have (since it is easy to test/debug, as I only have to compare it
with the already-existing sha1 function in pgcrypto).
I got it to work nicely, and I tried several millions randomly-
generated strings, and the result of my hash function matches
the result of pgcrypto's sha1 function.
The problem is, when I execute the SQL statement:
create or replace function sha1 .... ;
for the second time (i.e., after making modifications and
recompiling), the *backend* crashes -- it then restarts
automatically, and then I run again the create or replace
statement, and it works now (and the function seems to
work fine -- well, in its "final" version it does).
I know the list of possible causes may be nearly infinite, so
I put the modified file (I removed most of the other stuff from
the original pgcrypto.c file, and left the pg_digest function,
which is the one that computes hashes, and the one that I
used as a model to create mine):
http://www.mochima.com/tmp/pgcrypto.c
I also modified the SQL script file to include my function;
this (when I execute this script) is precisely the moment at
which the PG backend crashes (well, it shuts down anyway):
http://www.mochima.com/tmp/pgcrypto.sql
Any ideas of what I'm doing wrong?
BTW, I compiled with the provided Makefile, then copy the .so
files to /usr/local/pgsql/lib directory, and ran /sbin/ldconfig
(that directory is included in my /etc/ld.so.conf file). I'm
running PG 7.4.9 on a Linux FC4 on a Dual-Core Athlon64 (kernel
x86_64-smp).
Thanks for any comments/feedback! (please by kind, as this is
my first attempt ever at creating PG functions -- but please
be tough! Don't hold back valuable feedback just because you
don't want to hurt my baby feelings! :-))
Carlos
--