From c51b00a2135b5cfa1e68006a8d2805541fd12b05 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sat, 12 May 2001 01:30:30 +0000 Subject: [PATCH] PL/Python integration: support in create/droplang, add CVS keywords, remove useless files, beat some sense into Makefile. For me it builds and sort of runs, so it's a start. --- src/bin/scripts/createlang.sh | 10 +- src/bin/scripts/droplang | 8 +- src/pl/Makefile | 4 +- src/pl/plpython/Makefile | 109 ++++++++++------------ src/pl/plpython/error.diff | 18 ---- src/pl/plpython/error.output | 19 ---- src/pl/plpython/feature.diff | 11 --- src/pl/plpython/feature.output | 139 ---------------------------- src/pl/plpython/linux.h | 44 --------- src/pl/plpython/plpython.c | 7 +- src/pl/plpython/plpython.h | 8 +- src/pl/plpython/plpython_create.sql | 9 -- src/pl/plpython/test.log | 16 ---- src/pl/plpython/test.sh | 20 ++-- src/pl/plpython/update.sh | 5 - 15 files changed, 84 insertions(+), 343 deletions(-) delete mode 100644 src/pl/plpython/error.diff delete mode 100644 src/pl/plpython/error.output delete mode 100644 src/pl/plpython/feature.diff delete mode 100644 src/pl/plpython/feature.output delete mode 100644 src/pl/plpython/linux.h delete mode 100644 src/pl/plpython/plpython_create.sql delete mode 100644 src/pl/plpython/test.log delete mode 100755 src/pl/plpython/update.sh diff --git a/src/bin/scripts/createlang.sh b/src/bin/scripts/createlang.sh index c3100e2b68..1b040d0ea7 100644 --- a/src/bin/scripts/createlang.sh +++ b/src/bin/scripts/createlang.sh @@ -7,7 +7,7 @@ # Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group # Portions Copyright (c) 1994, Regents of the University of California # -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.24 2001/05/09 22:08:19 petere Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/createlang.sh,v 1.25 2001/05/12 01:30:30 petere Exp $ # #------------------------------------------------------------------------- @@ -209,9 +209,15 @@ case "$langname" in handler="plperl_call_handler" object="plperl" ;; + plpython) + lancomp="PL/Python" + trusted="TRUSTED " + handler="plpython_call_handler" + object="plpython" + ;; *) echo "$CMDNAME: unsupported language '$langname'" 1>&2 - echo "Supported languages are 'plpgsql', 'pltcl', 'pltclu', and 'plperl'." 1>&2 + echo "Supported languages are 'plpgsql', 'pltcl', 'pltclu', 'plperl', and 'plpython'." 1>&2 exit 1 ;; esac diff --git a/src/bin/scripts/droplang b/src/bin/scripts/droplang index 04b9f7344a..82de3742d4 100644 --- a/src/bin/scripts/droplang +++ b/src/bin/scripts/droplang @@ -7,7 +7,7 @@ # Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group # Portions Copyright (c) 1994, Regents of the University of California # -# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/droplang,v 1.14 2001/05/09 22:08:19 petere Exp $ +# $Header: /cvsroot/pgsql/src/bin/scripts/Attic/droplang,v 1.15 2001/05/12 01:30:30 petere Exp $ # #------------------------------------------------------------------------- @@ -177,9 +177,13 @@ case "$langname" in lancomp="PL/Perl" handler="plperl_call_handler" ;; + plpython) + lancomp="PL/Python" + handler="plpython_call_handler" + ;; *) echo "$CMDNAME: unsupported language '$langname'" 1>&2 - echo "Supported languages are 'plpgsql', 'pltcl', 'pltclu', and 'plperl'." 1>&2 + echo "Supported languages are 'plpgsql', 'pltcl', 'pltclu', 'plperl', and 'plpython'." 1>&2 exit 1 ;; esac diff --git a/src/pl/Makefile b/src/pl/Makefile index ff789fc7aa..64882e99bc 100644 --- a/src/pl/Makefile +++ b/src/pl/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $Header: /cvsroot/pgsql/src/pl/Makefile,v 1.19 2001/05/10 03:00:11 momjian Exp $ +# $Header: /cvsroot/pgsql/src/pl/Makefile,v 1.20 2001/05/12 01:30:30 petere Exp $ # #------------------------------------------------------------------------- @@ -22,12 +22,12 @@ ifeq ($(with_perl), yes) DIRS += plperl endif +# Doesn't build portably yet. #ifeq ($(with_python), yes) #DIRS += plpython #endif all install installdirs uninstall depend distprep: - @echo "PL/Python disabled until merged into our Makefile system, bjm 2001-05-09" @for dir in $(DIRS); do $(MAKE) -C $$dir $@ || exit; done clean distclean maintainer-clean: diff --git a/src/pl/plpython/Makefile b/src/pl/plpython/Makefile index 29d2c2f28f..88cc8ebb4c 100644 --- a/src/pl/plpython/Makefile +++ b/src/pl/plpython/Makefile @@ -1,69 +1,60 @@ +# $Header: /cvsroot/pgsql/src/pl/plpython/Makefile,v 1.4 2001/05/12 01:30:30 petere Exp $ -# cflags. pick your favorite +subdir = src/pl/plpython +top_builddir = ../../.. +include $(top_builddir)/src/Makefile.global + +# These things ought to go into $(top_srcdir)/config/python.m4 sometime. + +PYTHON_VERSION := $(shell $(PYTHON) -c 'import sys; print sys.version[:3]') +PYTHON_INCLUDE := $(shell $(PYTHON) -c 'import sys; print sys.prefix')/include/python$(PYTHON_VERSION) + +override CPPFLAGS := -I$(srcdir) -I$(PYTHON_INCLUDE) $(CPPFLAGS) + +PYTHON_LIB := $(shell $(PYTHON) -c 'import sys; print sys.exec_prefix')/lib/python$(PYTHON_VERSION) + +NAME = plpython +SO_MAJOR_VERSION = 0 +SO_MINOR_VERSION = 0 +OBJS = plpython.o + +# This static version might work on most ELF systems... +SHLIB_LINK += $(PYTHON_LIB)/config/libpython$(PYTHON_VERSION).a +# ...otherwise you need a shared version, but you need to build that yourself. +#SHLIB_LINK += -lpython$(PYTHON_VERSION) + +# Python uses this. Should become a configure check. +SHLIB_LINK += -lpthread + +# Python 2 seems to want libdb. +#SHLIB_LINK += -ldb2 + + +# Hopefully you won't need this utter crap. But if you can't patch +# the appropriate dynloader file, try this. You may have to add other +# modules. # -CC=gcc -CFLAGS=-g -O0 -Wall -Wmissing-declarations -fPIC +#DLDIR=$(PYTHON_LIB)/lib-dynload +#DLHACK=$(DLDIR)/arraymodule.so $(DLDIR)/timemodule.so $(DLDIR)/cmathmodule.so $(DLDIR)/errnomodule.so $(DLDIR)/mathmodule.so $(DLDIR)/md5module.so $(DLDIR)/operator.so $(DLDIR)/shamodule.so +#SHLIB_LINK += $(DLDIR) -# build info for python, alter as needed -# +include $(top_srcdir)/src/Makefile.shlib -# python headers -# -#INCPYTHON=/usr/include/python1.5 -INCPYTHON=/usr/include/python2.0 -# python shared library -# -#LIBPYTHON=python1.5 -LIBPYTHON=python2.0 +all: all-lib -# if python is someplace odd -# -LIBPYTHONPATH=/usr/lib +install: all installdirs + $(INSTALL_SHLIB) $(shlib) $(DESTDIR)$(libdir)/plpython$(DLSUFFIX) -# python 2 seems to want libdb -# various db libs are still messed on my system -# -#LIBPYTHONEXTRA=/usr/lib/libdb2.so.2.7.7 -#LIBPYTHONEXTRA=-ldb2 +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) -LDPYTHON=-L$(LIBPYTHONPATH) -l$(LIBPYTHON) $(LIBPYTHONEXTRA) +uninstall: + rm -f $(DESTDIR)$(libdir)/plpython$(DLSUFFIX) -# build info for postgres -# - -# postgres headers. the installed include directory doesn't work for me -# -#INCPOSTGRES=/usr/include/postgres -INCPOSTGRES=/home/andrew/builds/postgresql/src/include - -# hopefully you won't need this utter crap... -# but if you can't patch the appropriate dynloader file, try this. you -# may have to add other modules. -# -#DLDIR=/usr/lib/python1.5/lib-dynload -#DLHACK=$(DLDIR)/arraymodule.so $(DLDIR)/timemodule.so $(DLDIR)/cmathmodule.so $(DLDIR)/errnomodule.so $(DLDIR)/mathmodule.so $(DLDIR)/md5module.so $(DLDIR)/operator.so -# $(DLDIR)/shamodule.so - -# shouldn't need to alter anything below here -# -INCLUDES=-I$(INCPYTHON) -I$(INCPOSTGRES) -I./ - -# dynamic linker flags. -# -#LDFLAGS=--shared -Wl,-Bshareable -Wl,-E -Wl,-soname,$@ -LDFLAGS=--shared -Wl,-E -Wl,-soname,$@ - -.PHONY: clean - -all: plpython.so - -plpython.o: plpython.c plpython.h - $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $< - -plpython.so: plpython.o - $(CC) $(LDFLAGS) -o $@ $^ $(LDPYTHON) $(DLHACK) -ldl -lpthread -lm - -clean: - rm -f plpython.so *.o +clean distclean maintainer-clean: clean-lib + rm -f $(OBJS) + @rm -f error.diff feature.diff error.output feature.output test.log +installcheck: + PATH=$(bindir):$$PATH $(SHELL) $(srcdir)/test.sh diff --git a/src/pl/plpython/error.diff b/src/pl/plpython/error.diff deleted file mode 100644 index 9eeaeddbd0..0000000000 --- a/src/pl/plpython/error.diff +++ /dev/null @@ -1,18 +0,0 @@ ---- error.expected Sat Mar 31 16:15:31 2001 -+++ error.output Thu Apr 19 23:47:53 2001 -@@ -1,5 +1,5 @@ - SELECT invalid_type_uncaught('rick'); --ERROR: plpython: Call of function `__plpython_procedure_invalid_type_uncaught_1175341' failed. -+ERROR: plpython: Call of function `__plpython_procedure_invalid_type_uncaught_1289666' failed. - plpy.SPIError: Cache lookup for type `test' failed. - SELECT invalid_type_caught('rick'); - NOTICE: ("Cache lookup for type `test' failed.",) -@@ -9,7 +9,7 @@ - (1 row) - - SELECT invalid_type_reraised('rick'); --ERROR: plpython: Call of function `__plpython_procedure_invalid_type_reraised_1175343' failed. -+ERROR: plpython: Call of function `__plpython_procedure_invalid_type_reraised_1289668' failed. - plpy.Error: ("Cache lookup for type `test' failed.",) - SELECT valid_type('rick'); - valid_type diff --git a/src/pl/plpython/error.output b/src/pl/plpython/error.output deleted file mode 100644 index 22ed3ce8a5..0000000000 --- a/src/pl/plpython/error.output +++ /dev/null @@ -1,19 +0,0 @@ -SELECT invalid_type_uncaught('rick'); -ERROR: plpython: Call of function `__plpython_procedure_invalid_type_uncaught_1289666' failed. -plpy.SPIError: Cache lookup for type `test' failed. -SELECT invalid_type_caught('rick'); -NOTICE: ("Cache lookup for type `test' failed.",) - invalid_type_caught ---------------------- - -(1 row) - -SELECT invalid_type_reraised('rick'); -ERROR: plpython: Call of function `__plpython_procedure_invalid_type_reraised_1289668' failed. -plpy.Error: ("Cache lookup for type `test' failed.",) -SELECT valid_type('rick'); - valid_type ------------- - -(1 row) - diff --git a/src/pl/plpython/feature.diff b/src/pl/plpython/feature.diff deleted file mode 100644 index 8f842a1c1f..0000000000 --- a/src/pl/plpython/feature.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- feature.expected Sat Mar 31 16:15:31 2001 -+++ feature.output Thu Apr 19 23:47:52 2001 -@@ -29,7 +29,7 @@ - (1 row) - - SELECT import_fail(); --NOTICE: ('import socket failed -- untrusted dynamic module: socket',) -+NOTICE: ('import socket failed -- untrusted dynamic module: _socket',) - import_fail - -------------------- - failed as expected diff --git a/src/pl/plpython/feature.output b/src/pl/plpython/feature.output deleted file mode 100644 index af48f919c8..0000000000 --- a/src/pl/plpython/feature.output +++ /dev/null @@ -1,139 +0,0 @@ -select stupid(); - stupid --------- - zarkon -(1 row) - -SELECT static_test(); - static_test -------------- - 1 -(1 row) - -SELECT static_test(); - static_test -------------- - 2 -(1 row) - -SELECT global_test_one(); - global_test_one --------------------------------------------------------- - SD: set by global_test_one, GD: set by global_test_one -(1 row) - -SELECT global_test_two(); - global_test_two --------------------------------------------------------- - SD: set by global_test_two, GD: set by global_test_one -(1 row) - -SELECT import_fail(); -NOTICE: ('import socket failed -- untrusted dynamic module: _socket',) - import_fail --------------------- - failed as expected -(1 row) - -SELECT import_succeed(); - import_succeed ------------------------- - succeeded, as expected -(1 row) - -SELECT import_test_one('sha hash of this string'); - import_test_one ------------------------------------------- - a04e23cb9b1a09cd1051a04a7c571aae0f90346c -(1 row) - -select import_test_two(users) from users where fname = 'willem'; - import_test_two -------------------------------------------------------------------- - sha hash of willemdoe is 3cde6b574953b0ca937b4d76ebc40d534d910759 -(1 row) - -select argument_test_one(users, fname, lname) from users where lname = 'doe'; - argument_test_one -------------------------------------------------------------------------------------- - willem doe => {'fname': 'willem', 'userid': 3, 'lname': 'doe', 'username': 'w_doe'} - john doe => {'fname': 'john', 'userid': 2, 'lname': 'doe', 'username': 'johnd'} - jane doe => {'fname': 'jane', 'userid': 1, 'lname': 'doe', 'username': 'j_doe'} -(3 rows) - -select nested_call_one('pass this along'); - nested_call_one ------------------------------------------------------------------ - {'nested_call_two': "{'nested_call_three': 'pass this along'}"} -(1 row) - -select spi_prepared_plan_test_one('doe'); - spi_prepared_plan_test_one ----------------------------- - there are 3 does -(1 row) - -select spi_prepared_plan_test_one('smith'); - spi_prepared_plan_test_one ----------------------------- - there are 1 smiths -(1 row) - -select spi_prepared_plan_test_nested('smith'); - spi_prepared_plan_test_nested -------------------------------- - there are 1 smiths -(1 row) - -SELECT * FROM users; - fname | lname | username | userid ---------+-------+----------+-------- - jane | doe | j_doe | 1 - john | doe | johnd | 2 - willem | doe | w_doe | 3 - rick | smith | slash | 4 -(4 rows) - -UPDATE users SET fname = 'william' WHERE fname = 'willem'; -INSERT INTO users (fname, lname) VALUES ('william', 'smith'); -INSERT INTO users (fname, lname, username) VALUES ('charles', 'darwin', 'beagle'); -SELECT * FROM users; - fname | lname | username | userid ----------+--------+----------+-------- - jane | doe | j_doe | 1 - john | doe | johnd | 2 - willem | doe | w_doe | 3 - rick | smith | slash | 4 - willem | smith | w_smith | 5 - charles | darwin | beagle | 6 -(6 rows) - -SELECT join_sequences(sequences) FROM sequences; - join_sequences ----------------- - ABCDEFGHIJKL - ABCDEF - ABCDEF - ABCDEF - ABCDEF - ABCDEF -(6 rows) - -SELECT join_sequences(sequences) FROM sequences - WHERE join_sequences(sequences) ~* '^A'; - join_sequences ----------------- - ABCDEFGHIJKL - ABCDEF - ABCDEF - ABCDEF - ABCDEF - ABCDEF -(6 rows) - -SELECT join_sequences(sequences) FROM sequences - WHERE join_sequences(sequences) ~* '^B'; - join_sequences ----------------- -(0 rows) - diff --git a/src/pl/plpython/linux.h b/src/pl/plpython/linux.h deleted file mode 100644 index b6c65a0705..0000000000 --- a/src/pl/plpython/linux.h +++ /dev/null @@ -1,44 +0,0 @@ -/*------------------------------------------------------------------------- - * - * port_protos.h - * port-specific prototypes for Linux - * - * - * Portions Copyright (c) 1996-2000, PostgreSQL, Inc - * Portions Copyright (c) 1994, Regents of the University of California - * - * $Id: linux.h,v 1.1 2001/05/09 19:54:38 momjian Exp $ - * - *------------------------------------------------------------------------- - */ -#ifndef PORT_PROTOS_H -#define PORT_PROTOS_H - -#include "fmgr.h" -#include "utils/dynamic_loader.h" -#ifdef __ELF__ -#include -#endif - -/* dynloader.c */ - -#ifndef __ELF__ -#ifndef HAVE_DLD_H -#define pg_dlsym(handle, funcname) (NULL) -#define pg_dlclose(handle) ({}) -#else -#define pg_dlsym(handle, funcname) ((PGFunction) dld_get_func((funcname))) -#define pg_dlclose(handle) ({ dld_unlink_by_file(handle, 1); free(handle); }) -#endif -#else -/* #define pg_dlopen(f) dlopen(f, 1) */ -/* #define pg_dlopen(f) dlopen(f, 2) */ -#define pg_dlopen(f) dlopen(f, (RTLD_NOW|RTLD_GLOBAL)) -#define pg_dlsym dlsym -#define pg_dlclose dlclose -#define pg_dlerror dlerror -#endif - -/* port.c */ - -#endif /* PORT_PROTOS_H */ diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c index a25f4a9d06..865ddb3aac 100644 --- a/src/pl/plpython/plpython.c +++ b/src/pl/plpython/plpython.c @@ -1,5 +1,6 @@ -/* -*- C -*- - * +/* $Header: /cvsroot/pgsql/src/pl/plpython/plpython.c,v 1.2 2001/05/12 01:30:30 petere Exp $ */ + +/* * plpython.c - python as a procedural language for PostgreSQL * * IDENTIFICATION @@ -33,6 +34,8 @@ * **********************************************************************/ +#include "postgres.h" + /* system stuff */ #include diff --git a/src/pl/plpython/plpython.h b/src/pl/plpython/plpython.h index cb30c2a530..d0d84265f5 100644 --- a/src/pl/plpython/plpython.h +++ b/src/pl/plpython/plpython.h @@ -1,5 +1,7 @@ -#ifndef PLPYTHON_NEW_H -#define PLPYTHON_NEW_H +/* $Header: /cvsroot/pgsql/src/pl/plpython/Attic/plpython.h,v 1.2 2001/05/12 01:30:30 petere Exp $ */ + +#ifndef PLPYTHON_H +#define PLPYTHON_H #define DEBUG_EXC 0 #define DEBUG_LEVEL 0 @@ -63,4 +65,4 @@ # define refc(O) #endif -#endif +#endif /* PLPYTHON_H */ diff --git a/src/pl/plpython/plpython_create.sql b/src/pl/plpython/plpython_create.sql deleted file mode 100644 index b00a65b9bc..0000000000 --- a/src/pl/plpython/plpython_create.sql +++ /dev/null @@ -1,9 +0,0 @@ - -CREATE FUNCTION plpython_call_handler() RETURNS opaque - AS '/usr/local/lib/postgresql/langs/plpython.so' - LANGUAGE 'c'; - -CREATE TRUSTED PROCEDURAL LANGUAGE 'plpython' - HANDLER plpython_call_handler - LANCOMPILER 'plpython'; - diff --git a/src/pl/plpython/test.log b/src/pl/plpython/test.log deleted file mode 100644 index 8655e9d7a0..0000000000 --- a/src/pl/plpython/test.log +++ /dev/null @@ -1,16 +0,0 @@ -DROP DATABASE -CREATE DATABASE -NOTICE: CREATE TABLE will create implicit sequence 'users_userid_seq' for SERIAL column 'users.userid' -NOTICE: CREATE TABLE/UNIQUE will create implicit index 'users_userid_key' for table 'users' -NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'users_pkey' for table 'users' -NOTICE: CREATE TABLE will create implicit sequence 'taxonomy_id_seq' for SERIAL column 'taxonomy.id' -NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'taxonomy_pkey' for table 'taxonomy' -NOTICE: CREATE TABLE/UNIQUE will create implicit index 'taxonomy_name_key' for table 'taxonomy' -NOTICE: CREATE TABLE will create implicit sequence 'entry_eid_seq' for SERIAL column 'entry.eid' -NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'entry_pkey' for table 'entry' -NOTICE: CREATE TABLE/UNIQUE will create implicit index 'entry_eid_key' for table 'entry' -NOTICE: CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s) -NOTICE: CREATE TABLE will create implicit sequence 'sequences_pid_seq' for SERIAL column 'sequences.pid' -NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'sequences_pkey' for table 'sequences' -NOTICE: CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s) -NOTICE: CREATE TABLE will create implicit trigger(s) for FOREIGN KEY check(s) diff --git a/src/pl/plpython/test.sh b/src/pl/plpython/test.sh index c596c0976a..b5b343cac7 100755 --- a/src/pl/plpython/test.sh +++ b/src/pl/plpython/test.sh @@ -1,36 +1,33 @@ #!/bin/sh DBNAME=pltest -DBUSER=postgres -PATH=$PATH:/usr/local/pgsql/bin -export DBNAME DBUSER echo -n "*** Destroy $DBNAME." -dropdb -U$DBUSER $DBNAME > test.log 2>&1 +dropdb $DBNAME > test.log 2>&1 echo " Done. ***" echo -n "*** Create $DBNAME." -createdb -U$DBUSER $DBNAME >> test.log 2>&1 +createdb $DBNAME >> test.log 2>&1 echo " Done. ***" echo -n "*** Create plpython." -psql -U$DBUSER -q $DBNAME < plpython_create.sql >> test.log 2>&1 +createlang plpython $DBNAME >> test.log 2>&1 echo " Done. ***" echo -n "*** Create tables" -psql -U$DBUSER -q $DBNAME < plpython_schema.sql >> test.log 2>&1 +psql -q $DBNAME < plpython_schema.sql >> test.log 2>&1 echo -n ", data" -psql -U$DBUSER -q $DBNAME < plpython_populate.sql >> test.log 2>&1 +psql -q $DBNAME < plpython_populate.sql >> test.log 2>&1 echo -n ", and functions and triggers." -psql -U$DBUSER -q $DBNAME < plpython_function.sql >> test.log 2>&1 +psql -q $DBNAME < plpython_function.sql >> test.log 2>&1 echo " Done. ***" echo -n "*** Running feature tests." -psql -U$DBUSER -q -e $DBNAME < plpython_test.sql > feature.output 2>&1 +psql -q -e $DBNAME < plpython_test.sql > feature.output 2>&1 echo " Done. ***" echo -n "*** Running error handling tests." -psql -U$DBUSER -q -e $DBNAME < plpython_error.sql > error.output 2>&1 +psql -q -e $DBNAME < plpython_error.sql > error.output 2>&1 echo " Done. ***" echo -n "*** Checking the results of the feature tests" @@ -49,4 +46,3 @@ echo " any differences are due only to the oid encoded in the " echo " python function name. ***" # or write a fancier error checker... - diff --git a/src/pl/plpython/update.sh b/src/pl/plpython/update.sh deleted file mode 100755 index bf8c6552b1..0000000000 --- a/src/pl/plpython/update.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -cd /usr/local/lib/postgresql/langs -cp /home/andrew/projects/pg/plpython/plpython.so ./ -cd /home/andrew/projects/pg/plpython