# Makefile for tutorial
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/tutorial/Makefile,v 1.13 2001/08/09 13:52:06 tgl Exp $
+# $Header: /cvsroot/pgsql/src/tutorial/Makefile,v 1.14 2001/10/26 20:45:33 tgl Exp $
#
#-------------------------------------------------------------------------
override DLLLIBS := $(BE_DLLLIBS) $(DLLLIBS)
#
-# DLOBJS is the dynamically-loaded object files. The "funcs" queries
+# DLOBJS are the dynamically-loaded object files. The "funcs" queries
# include CREATE FUNCTIONs that load routines from these files.
#
DLOBJS= complex$(DLSUFFIX) funcs$(DLSUFFIX)
all: $(DLOBJS) $(QUERIES)
%.sql: %.source
- if [ -z "$$USER" ]; then USER=$$LOGNAME; fi; \
- if [ -z "$$USER" ]; then USER=`whoami`; fi; \
- if [ -z "$$USER" ]; then echo 'Cannot deduce $$USER.'; exit 1; fi; \
rm -f $@; \
C=`pwd`; \
- sed -e "s:_CWD_:$$C:g" \
- -e "s:_OBJWD_:$$C:g" \
- -e "s:_DLSUFFIX_:$(DLSUFFIX):g" \
- -e "s/_USER_/$$USER/g" < $< > $@
+ sed -e "s:_OBJWD_:$$C:g" < $< > $@
clean:
rm -f $(DLOBJS) $(QUERIES)
This directory contains SQL tutorial scripts. To look at them, first do a
% make
to compile all the scripts and C files for the user-defined functions
-and types. (make needs to be GNU make and may be named something
-different on your system)
+and types. (make needs to be GNU make --- it may be named something
+different on your system, often gmake)
-Then, run psql with the -s flag:
+Then, run psql with the -s (single-step) flag:
% psql -s
-Welcome to the POSTGRESQL interactive sql monitor:
- Please read the file COPYRIGHT for copyright terms of POSTGRESQL
-
- type \? for help on slash commands
- type \q to quit
- type \g or terminate with semicolon to execute query
- You are currently connected to the database: jolly
-
-jolly==>
-
From within psql, you can try each individual script file by using
-the \i <filename> psql command.
-
+psql's \i <filename> command.
--
-- Copyright (c) 1994, Regents of the University of California
--
--- $Id: complex.source,v 1.10 2001/10/03 20:54:22 tgl Exp $
+-- $Id: complex.source,v 1.11 2001/10/26 20:45:33 tgl Exp $
--
---------------------------------------------------------------------------
-- called 'complex' which represents complex numbers.
-----------------------------
--- Assume the user defined functions are in _OBJWD_/complex_DLSUFFIX_
+-- Assume the user defined functions are in _OBJWD_/complex$DLSUFFIX
+-- (we do not want to assume this is in the dynamic loader search path)
-- Look at $PWD/complex.c for the source.
-- the input function 'complex_in' takes a null-terminated string (the
CREATE FUNCTION complex_in(opaque)
RETURNS complex
- AS '_OBJWD_/complex_DLSUFFIX_'
+ AS '_OBJWD_/complex'
LANGUAGE 'c';
-- the output function 'complex_out' takes the internal representation and
CREATE FUNCTION complex_out(opaque)
RETURNS opaque
- AS '_OBJWD_/complex_DLSUFFIX_'
+ AS '_OBJWD_/complex'
LANGUAGE 'c';
-- now, we can create the type. The internallength specifies the size of the
-- first, define a function complex_add (also in complex.c)
CREATE FUNCTION complex_add(complex, complex)
RETURNS complex
- AS '_OBJWD_/complex_DLSUFFIX_'
+ AS '_OBJWD_/complex'
LANGUAGE 'c';
-- we can now define the operator. We show a binary operator here but you
-- first, define the required operators
CREATE FUNCTION complex_abs_lt(complex, complex) RETURNS bool
- AS '_OBJWD_/complex_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/complex' LANGUAGE 'c';
CREATE FUNCTION complex_abs_le(complex, complex) RETURNS bool
- AS '_OBJWD_/complex_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/complex' LANGUAGE 'c';
CREATE FUNCTION complex_abs_eq(complex, complex) RETURNS bool
- AS '_OBJWD_/complex_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/complex' LANGUAGE 'c';
CREATE FUNCTION complex_abs_ge(complex, complex) RETURNS bool
- AS '_OBJWD_/complex_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/complex' LANGUAGE 'c';
CREATE FUNCTION complex_abs_gt(complex, complex) RETURNS bool
- AS '_OBJWD_/complex_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/complex' LANGUAGE 'c';
CREATE OPERATOR < (
leftarg = complex, rightarg = complex, procedure = complex_abs_lt,
--
CREATE FUNCTION complex_abs_cmp(complex, complex) RETURNS int4
- AS '_OBJWD_/complex_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/complex' LANGUAGE 'c';
SELECT oid, proname FROM pg_proc WHERE proname = 'complex_abs_cmp';
--
-- Copyright (c) 1994-5, Regents of the University of California
--
--- $Id: funcs.source,v 1.4 2000/03/28 02:49:19 tgl Exp $
+-- $Id: funcs.source,v 1.5 2001/10/26 20:45:33 tgl Exp $
--
---------------------------------------------------------------------------
-----------------------------
CREATE FUNCTION add_one(int4) RETURNS int4
- AS '_OBJWD_/funcs_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/funcs' LANGUAGE 'c';
CREATE FUNCTION makepoint(point, point) RETURNS point
- AS '_OBJWD_/funcs_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/funcs' LANGUAGE 'c';
CREATE FUNCTION copytext(text) RETURNS text
- AS '_OBJWD_/funcs_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/funcs' LANGUAGE 'c';
CREATE FUNCTION c_overpaid(EMP, int4) RETURNS bool
- AS '_OBJWD_/funcs_DLSUFFIX_' LANGUAGE 'c';
+ AS '_OBJWD_/funcs' LANGUAGE 'c';
SELECT add_one(3) AS four;