On Sat, May 18, 2013 at 1:47 PM, Liming Hu <dawnin...@gmail.com> wrote: > On 5/18/2013 1:03 AM, Atri Sharma wrote: >> >> On Sat, May 18, 2013 at 1:30 PM, Liming Hu <dawnin...@gmail.com> wrote: >>> >>> On 5/18/2013 12:11 AM, Atri Sharma wrote: >>> >>> Sent from my iPad >>> >>> On 18-May-2013, at 12:34, Liming Hu <dawnin...@gmail.com> wrote: >>> >>> On Fri, May 17, 2013 at 11:44 PM, Atri Sharma <atri.j...@gmail.com> >>> wrote: >>> >>> Sent from my iPad >>> >>> On 18-May-2013, at 12:07, Liming Hu <dawnin...@gmail.com> wrote: >>> >>> On Fri, May 17, 2013 at 11:13 PM, Atri Sharma <atri.j...@gmail.com> >>> wrote: >>> >>> Sent from my iPad >>> >>> On 18-May-2013, at 11:23, Liming Hu <dawnin...@gmail.com> wrote: >>> >>> On Fri, May 17, 2013 at 10:21 PM, Atri Sharma <atri.j...@gmail.com> >>> wrote: >>> >>> Sent from my iPad >>> >>> On 18-May-2013, at 10:41, Liming Hu <dawnin...@gmail.com> wrote: >>> >>> On Fri, May 17, 2013 at 9:39 PM, Atri Sharma <atri.j...@gmail.com> wrote: >>> >>> Sent from my iPad >>> >>> On 18-May-2013, at 10:00, Liming Hu <dawnin...@gmail.com> wrote: >>> >>> On 5/17/2013 9:10 PM, Atri Sharma wrote: >>> >>> On Sat, May 18, 2013 at 9:27 AM, Liming Hu <dawnin...@gmail.com> wrote: >>> >>> On 5/17/2013 12:39 PM, Liming Hu wrote: >>> >>> On Fri, May 17, 2013 at 12:06 PM, Josh Berkus <j...@agliodbs.com> wrote: >>> >>> Can we add Levenshtein-Damerau edit distance since it is used in >>> spelling checker >>> instead of levenshtein edit distance? >>> >>> Patches welcome! You, too, can be a PostgreSQL contributor. >>> >>> However, you will need to preserve the ability of users to use the old >>> levenshtien algorithm as well, for backwards-compatibility. Shouldn't >>> be hard, just add a new function called levenshtiend(). >>> >>> I am working on it, I will make it this weekend project. >>> >>> I have done that. and put the code at github: >>> https://github.com/liminghu/fuzzystrmatch >>> >>> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >>> sudo cp fuzzystrmatch.so >>> /usr/lib/postgresql/9.1/lib/fuzzystrmatch.so >>> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >>> sudo /etc/init.d/postgresql restart >>> >>> * Restarting PostgreSQL 9.1 database server >>> >>> [ OK ] >>> >>> >>> select dameraulevenshteinnocompatible('cta', 'cat',1,1,1,1); >>> CREATE EXTENSION fuzzystrmatch; >>> >>> ********** Error ********** >>> >>> ERROR: could not load library >>> "/usr/lib/postgresql/9.1/lib/fuzzystrmatch.so": >>> /usr/lib/postgresql/9.1/lib/fuzzystrmatch.so: undefined symbol: >>> damerau_levenshtein_internal_noncompatible >>> >>> Any one can help me on this? Thanks. >>> >>> The system is not able to find the required library, and I dont think >>> using cp to place the library is a very good idea.Did you run Make >>> Install after you added your work in the Makefile? >>> >>> I did not run make install. I am running a stable postgresql in my >>> laptop, I >>> do not >>> want to reinstall everything, just want to try this contribution. I am >>> afraid >>> reinstall it will destroy my configurations, and databases, just do not >>> want >>> to mess up. >>> did you see any thing wrong: >>> >>> https://github.com/liminghu/fuzzystrmatch/blob/master/fuzzystrmatch--1.0.sql >>> >>> https://github.com/liminghu/fuzzystrmatch/blob/master/fuzzystrmatch--unpackaged--1.0.sql >>> https://github.com/liminghu/fuzzystrmatch/blob/master/fuzzystrmatch.c >>> >>> https://github.com/liminghu/fuzzystrmatch/blob/master/dameraulevenshtein.c >>> https://github.com/liminghu/fuzzystrmatch/blob/master/ >>> >>> >>> You need not reinstall your entire database for installing/re installing >>> an >>> extension.Running make install from the extension's directory(after >>> placing >>> it in /contrib of a postgres database source directory) will install the >>> extension in your current database without breaking anything. >>> >>> You mean: >>> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >>> make install >>> ? >>> >>> Yes,although,I would run make clean before running make install,just for >>> ensuring that all runs well. >>> >>> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >>> sudo make clean >>> rm -f fuzzystrmatch.so libfuzzystrmatch.a >>> rm -f fuzzystrmatch.o dmetaphone.o >>> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >>> sudo make install >>> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith >>> -Wdeclaration-after-statement -Wendif-labels -Wformat-security >>> -fno-strict-aliasing -fwrapv -fexcess-precision=standard -fpic -I. -I. >>> -I../../src/include -D_GNU_SOURCE -c -o fuzzystrmatch.o >>> fuzzystrmatch.c >>> In file included from fuzzystrmatch.c:250:0: >>> dameraulevenshtein.c: In function ‘damerau_levenshtein_internal’: >>> dameraulevenshtein.c:290:57: warning: unused variable ‘trans’ >>> [-Wunused-variable] >>> dameraulevenshtein.c:328:57: warning: unused variable ‘trans’ >>> [-Wunused-variable] >>> In file included from fuzzystrmatch.c:253:0: >>> dameraulevenshtein.c: In function >>> ‘damerau_levenshtein_less_equal_internal’: >>> dameraulevenshtein.c:290:57: warning: unused variable ‘trans’ >>> [-Wunused-variable] >>> dameraulevenshtein.c:328:57: warning: unused variable ‘trans’ >>> [-Wunused-variable] >>> dameraulevenshtein.c: In function >>> ‘dameraulevenshtein_with_costs_noncompatible’: >>> dameraulevenshtein.c:480:9: warning: ISO C90 forbids mixed >>> declarations and code [-Wdeclaration-after-statement] >>> dameraulevenshtein.c:494:10: warning: ISO C90 forbids mixed >>> declarations and code [-Wdeclaration-after-statement] >>> fuzzystrmatch.c: In function >>> ‘damerau_levenshtein_with_costs_noncompatible’: >>> fuzzystrmatch.c:266:2: warning: implicit declaration of function >>> ‘damerau_levenshtein_internal_noncompatible’ >>> [-Wimplicit-function-declaration] >>> fuzzystrmatch.c: At top level: >>> dameraulevenshtein.c:40:12: warning: ‘dameraulevenshtein_internal’ >>> declared ‘static’ but never defined [-Wunused-function] >>> dameraulevenshtein.c:37:12: warning: >>> ‘dameraulevenshtein_less_equal_internal’ declared ‘static’ but never >>> defined [-Wunused-function] >>> dameraulevenshtein.c:464:12: warning: >>> ‘dameraulevenshtein_with_costs_noncompatible’ defined but not used >>> [-Wunused-function] >>> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith >>> -Wdeclaration-after-statement -Wendif-labels -Wformat-security >>> -fno-strict-aliasing -fwrapv -fexcess-precision=standard -fpic -I. -I. >>> -I../../src/include -D_GNU_SOURCE -c -o dmetaphone.o dmetaphone.c >>> gcc -O2 -Wall -Wmissing-prototypes -Wpointer-arith >>> -Wdeclaration-after-statement -Wendif-labels -Wformat-security >>> -fno-strict-aliasing -fwrapv -fexcess-precision=standard -fpic -shared >>> -o fuzzystrmatch.so fuzzystrmatch.o dmetaphone.o -L../../src/port >>> -Wl,--as-needed -Wl,-rpath,'/usr/local/pgsql/lib',--enable-new-dtags >>> /bin/mkdir -p '/usr/local/pgsql/lib' >>> /bin/mkdir -p '/usr/local/pgsql/share/extension' >>> /bin/mkdir -p '/usr/local/pgsql/share/extension' >>> /bin/sh ../../config/install-sh -c -m 755 fuzzystrmatch.so >>> '/usr/local/pgsql/lib/fuzzystrmatch.so' >>> /bin/sh ../../config/install-sh -c -m 644 ./fuzzystrmatch.control >>> '/usr/local/pgsql/share/extension/' >>> /bin/sh ../../config/install-sh -c -m 644 ./fuzzystrmatch--1.0.sql >>> ./fuzzystrmatch--unpackaged--1.0.sql >>> '/usr/local/pgsql/share/extension/' >>> liming@liming-UX31A:~/Downloads/postgresql-9.1.9/contrib/fuzzystrmatch$ >>> >>> >>> After that: >>> >>> CREATE EXTENSION fuzzystrmatch; >>> select dameraulevenshteinnocompatible('cta', 'cat',1,1,1,1); >>> >>> >>> >>> >>> ERROR: function dameraulevenshteinnocompatible(unknown, unknown, >>> integer, integer, integer, integer) does not exist >>> LINE 1: select dameraulevenshteinnocompatible('cta', 'cat',1,1,1,1); >>> ^ >>> HINT: No function matches the given name and argument types. You >>> might need to add explicit type casts. >>> >>> >>> ********** Error ********** >>> >>> ERROR: function dameraulevenshteinnocompatible(unknown, unknown, >>> integer, integer, integer, integer) does not exist >>> SQL state: 42883 >>> Hint: No function matches the given name and argument types. You might >>> need to add explicit type casts. >>> Character: 8 >>> >>> >>> >>> Ok,so now, we are in issues with the code and possibly, the >>> configurations. >>> >>> First up, I would fix the warnings >>> that are being generated while compiling.Those may lead to hard to detect >>> errors later on. >>> >>> It seems that the functions you added are not being created in the >>> database.Are you sure that you have modified the .SQL files correctly to >>> create you functions as well,and that you are using the correct SQL files >>> while installing? >>> >>> Does this happen only with dameraulevenshteinnocompatible, or with every >>> function that you added? Have you tried using one of the original >>> functions >>> of fuzzystrmatch,to ensure that the original functionalities are still >>> working? >>> >>> >>> it seems the make install command will copy fuzzystrmatch.so to: >>> liming@liming-UX31A:/usr/local/pgsql/lib$ ls -la >>> total 48 >>> drwxr-xr-x 2 root root 4096 May 17 23:14 . >>> drwxr-xr-x 4 root root 4096 May 17 22:39 .. >>> -rwxr-xr-x 1 root root 40640 May 17 23:14 fuzzystrmatch.so >>> >>> liming@liming-UX31A:/usr/local/pgsql/share/extension$ ls -la >>> total 28 >>> drwxr-xr-x 2 root root 4096 May 17 23:14 . >>> drwxr-xr-x 3 root root 4096 May 17 22:39 .. >>> -rw-r--r-- 1 root root 2250 May 17 22:48 fuzzystrmatch--1.0.sql >>> -rw-r--r-- 1 root root 2250 May 17 23:14 fuzzystrmatch--1.1.sql >>> -rw-r--r-- 1 root root 175 May 17 23:14 fuzzystrmatch.control >>> -rw-r--r-- 1 root root 1945 May 17 22:48 >>> fuzzystrmatch--unpackaged--1.0.sql >>> -rw-r--r-- 1 root root 1945 May 17 23:14 >>> fuzzystrmatch--unpackaged--1.1.sql >>> >>> instead of: >>> >>> liming@liming-UX31A:/usr/local/pgsql/lib$ ls -la >>> /usr/lib/postgresql/9.1/lib/fuzzystrmatch.so >>> -rw-r--r-- 1 root root 30520 May 17 19:50 >>> /usr/lib/postgresql/9.1/lib/fuzzystrmatch.so >>> >>> >>> The files will be copied to your pkglibdir path, which you can find by >>> running pg_config --pkglibdir >>> >>> pg_config >>> You need to install postgresql-server-dev-X.Y for building a >>> server-side extension or libpq-dev for building a client-side >>> application. >>> >>> >>> (Please keep the list marked in your replies). >>> >>> How did you install the Postgres instance you are trying to install the >>> extension in? Did you use pre built binaries or make it from source? >>> >>> >>> I am running ubuntu, I install postgresql from the ubuntu software >>> center. >>> I directly copy those files, now it works. >>> >>> select dameraulevenshteinnocompatible('cta', 'cat',1,1,1,1); >>> >>> >>> >>> 1 >>> >>> >>> thanks a lot. >>> >>> Liming >>> >>> >>> Regards, >>> >>> Atri >>> >>> >> Awesome. >> >> For reference, if you are using pre built binaries(as you are using), >> you should install the client side applications and >> postgresql-server-dev-X.Y as well. >> >> Regards, >> >> Atri >> -- >> Regards, >> >> Atri >> l'apprenant > > How to do that? Thanks.
Directly from sudo apt-get. e.g. sudo apt-get install postgresql-server-dev-9.2 Or,you could probably search for them in Ubuntu Software Center. Regards, Atri -- Regards, Atri l'apprenant -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers