head	1.10;
access;
symbols
	REL9_0_0:1.10
	REL9_1_ALPHA1:1.10
	REL9_0_RC1:1.10
	REL9_0_BETA4:1.10
	REL9_0_STABLE:1.10.0.18
	REL9_0_BETA3:1.10
	REL9_0_BETA2:1.10
	REL7_4_29:1.6.2.1
	REL8_0_25:1.7.4.1
	REL8_1_21:1.7.6.1
	REL8_2_17:1.10
	REL8_3_11:1.10
	REL8_4_4:1.10
	REL9_0_BETA1:1.10
	REL9_0_ALPHA5_BRANCH:1.10.0.16
	REL9_0_ALPHA5:1.10
	REL7_4_28:1.6.2.1
	REL8_0_24:1.7.4.1
	REL8_1_20:1.7.6.1
	REL8_2_16:1.10
	REL8_3_10:1.10
	REL8_4_3:1.10
	REL9_0_ALPHA4:1.10
	REL9_0_ALPHA4_BRANCH:1.10.0.14
	REL8_5_ALPHA3:1.10
	REL8_5_ALPHA3_BRANCH:1.10.0.12
	REL7_4_27:1.6.2.1
	REL8_0_23:1.7.4.1
	REL8_1_19:1.7.6.1
	REL8_2_15:1.10
	REL8_3_9:1.10
	REL8_4_2:1.10
	REL8_5_ALPHA2:1.10
	REL8_5_ALPHA2_BRANCH:1.10.0.10
	REL7_4_26:1.6.2.1
	REL8_0_22:1.7.4.1
	REL8_1_18:1.7.6.1
	REL8_2_14:1.10
	REL8_3_8:1.10
	REL8_4_1:1.10
	REL8_5_ALPHA1:1.10
	REL8_5_ALPHA1_BRANCH:1.10.0.8
	REL8_4_STABLE:1.10.0.6
	REL8_4_0:1.10
	REL8_4_RC2:1.10
	REL8_4_RC1:1.10
	REL8_4_BETA2:1.10
	REL8_4_BETA1:1.10
	REL7_4_25:1.6.2.1
	REL8_0_21:1.7.4.1
	REL8_1_17:1.7.6.1
	REL8_2_13:1.10
	REL8_3_7:1.10
	REL7_4_24:1.6.2.1
	REL8_0_20:1.7.4.1
	REL8_1_16:1.7.6.1
	REL8_2_12:1.10
	REL8_3_6:1.10
	REL7_4_23:1.6.2.1
	REL8_0_19:1.7.4.1
	REL8_1_15:1.7.6.1
	REL8_2_11:1.10
	REL8_3_5:1.10
	REL7_4_22:1.6.2.1
	REL8_0_18:1.7.4.1
	REL8_1_14:1.7.6.1
	REL8_2_10:1.10
	REL8_3_4:1.10
	REL7_4_21:1.6.2.1
	REL8_0_17:1.7.4.1
	REL8_1_13:1.7.6.1
	REL8_2_9:1.10
	REL8_3_3:1.10
	REL7_4_20:1.6.2.1
	REL8_0_16:1.7.4.1
	REL8_1_12:1.7.6.1
	REL8_2_8:1.10
	REL8_3_2:1.10
	REL8_2_7:1.10
	REL8_3_1:1.10
	REL8_3_STABLE:1.10.0.4
	REL8_3_0:1.10
	REL8_3_RC2:1.10
	REL7_3_21:1.5.4.1
	REL7_4_19:1.6.2.1
	REL8_0_15:1.7.4.1
	REL8_1_11:1.7.6.1
	REL8_2_6:1.10
	REL8_3_RC1:1.10
	REL8_3_BETA4:1.10
	REL8_3_BETA3:1.10
	REL8_3_BETA2:1.10
	REL8_3_BETA1:1.10
	REL7_3_20:1.5.4.1
	REL7_4_18:1.6.2.1
	REL8_0_14:1.7.4.1
	REL8_1_10:1.7.6.1
	REL8_2_5:1.10
	REL7_3_19:1.5.4.1
	REL7_4_17:1.6.2.1
	REL8_0_13:1.7.4.1
	REL8_1_9:1.7.6.1
	REL8_2_4:1.10
	REL8_0_12:1.7.4.1
	REL8_1_8:1.7.6.1
	REL8_2_3:1.10
	REL7_3_18:1.5.4.1
	REL7_4_16:1.6.2.1
	REL8_0_11:1.7.4.1
	REL8_1_7:1.7.6.1
	REL8_2_2:1.10
	REL8_0_10:1.7.4.1
	REL8_1_6:1.7.6.1
	REL8_2_1:1.10
	REL7_4_15:1.6.2.1
	REL7_3_17:1.5.4.1
	REL8_2_STABLE:1.10.0.2
	REL8_2_0:1.10
	REL8_2_RC1:1.10
	REL8_2_BETA3:1.10
	REL8_2_BETA2:1.10
	REL8_1_5:1.7.6.1
	REL8_0_9:1.7.4.1
	REL7_4_14:1.6.2.1
	REL7_3_16:1.5.4.1
	REL8_2_BETA1:1.10
	REL7_3_15:1.5.4.1
	REL7_4_13:1.6.2.1
	REL8_0_8:1.7.4.1
	REL8_1_4:1.7.6.1
	REL7_3_14:1.5
	REL7_4_12:1.6
	REL8_0_7:1.7
	REL8_1_3:1.7
	REL7_3_13:1.5
	REL7_4_11:1.6
	REL8_0_6:1.7
	REL8_1_2:1.7
	REL7_3_12:1.5
	REL7_4_10:1.6
	REL8_0_5:1.7
	REL8_1_1:1.7
	REL8_1_STABLE:1.7.0.6
	REL8_1_0:1.7
	REL8_1_0RC1:1.7
	REL8_1_0BETA4:1.7
	REL8_1_0BETA3:1.7
	REL7_3_11:1.5
	REL7_4_9:1.6
	REL8_0_4:1.7
	REL8_1_0BETA2:1.7
	REL8_1_0BETA1:1.7
	REL7_2_8:1.5
	REL7_3_10:1.5
	REL7_4_8:1.6
	REL8_0_3:1.7
	REL8_0_2:1.7
	REL7_2_7:1.5
	REL7_3_9:1.5
	REL7_4_7:1.6
	REL8_0_1:1.7
	REL8_0_STABLE:1.7.0.4
	REL8_0_0:1.7.0.2
	REL8_0_0RC5:1.7
	REL8_0_0RC4:1.7
	REL8_0_0RC3:1.7
	REL8_0_0RC2:1.7
	REL8_0_0RC1:1.7
	REL8_0_0BETA5:1.7
	REL8_0_0BETA4:1.7
	REL7_4_6:1.6
	REL7_3_8:1.5
	REL7_2_6:1.5
	REL8_0_0BETA3:1.7
	REL8_0_0BETA2:1.7
	REL7_2_5:1.5
	REL7_4_5:1.6
	REL7_3_7:1.5
	REL7_4_4:1.6
	REL8_0_0BETA1:1.7
	REL7_4_3:1.6
	REL7_4_2:1.6
	REL7_3_6:1.5
	REL7_4_1:1.6
	REL7_3_5:1.5
	REL7_4:1.6
	REL7_4_RC2:1.6
	REL7_4_STABLE:1.6.0.2
	REL7_4_RC1:1.6
	REL7_4_BETA5:1.5
	REL7_4_BETA4:1.5
	REL7_4_BETA3:1.5
	REL7_4_BETA2:1.5
	WIN32_DEV:1.5.0.6
	REL7_4_BETA1:1.5
	REL7_3_4:1.5
	REL7_3_2:1.5
	REL7_2_4:1.5
	REL7_3_STABLE:1.5.0.4
	REL7_2_3:1.5
	REL7_2_STABLE:1.5.0.2
	REL7_2:1.5
	REL7_2_RC2:1.5
	REL7_2_RC1:1.5
	REL7_2_BETA5:1.5
	REL7_2_BETA4:1.5
	REL7_2_BETA3:1.5
	REL7_2_BETA2:1.5
	REL7_2_BETA1:1.4
	REL7_1_2:1.4
	REL7_1_STABLE:1.4.0.4
	REL7_1_BETA:1.4
	REL7_1_BETA3:1.4
	REL7_1_BETA2:1.4
	REL7_1:1.4
	REL7_0_PATCHES:1.4.0.2
	REL7_0:1.4
	REL6_5_PATCHES:1.3.0.2
	REL6_5:1.3
	REL6_4:1.2.0.2
	release-6-3:1.2
	REL2_0B:1.1.1.1.0.4
	REL2_0:1.1.1.1
	Release_2_0_0:1.1.1.1
	Release_1_0_3:1.1.1.1.0.2
	Release_2_0:1.1.1.1
	Release_1_0_2:1.1.1.1
	PG95-1_01:1.1.1.1
	PG95_DIST:1.1.1;
locks; strict;
comment	@# @;


1.10
date	2006.05.22.14.08.06;	author momjian;	state Exp;
branches;
next	1.9;

1.9
date	2006.05.11.19.21.14;	author momjian;	state Exp;
branches;
next	1.8;

1.8
date	2006.02.27.16.09.50;	author petere;	state Exp;
branches;
next	1.7;

1.7
date	2003.11.29.22.41.33;	author pgsql;	state Exp;
branches
	1.7.4.1
	1.7.6.1;
next	1.6;

1.6
date	2003.10.26.04.51.51;	author momjian;	state Exp;
branches
	1.6.2.1;
next	1.5;

1.5
date	2001.10.26.20.45.33;	author tgl;	state Exp;
branches
	1.5.4.1;
next	1.4;

1.4
date	2000.03.28.02.49.19;	author tgl;	state Exp;
branches;
next	1.3;

1.3
date	99.03.14.15.22.15;	author momjian;	state Exp;
branches;
next	1.2;

1.2
date	98.02.11.03.51.38;	author thomas;	state Exp;
branches;
next	1.1;

1.1
date	96.07.09.06.22.34;	author scrappy;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	96.07.09.06.22.34;	author scrappy;	state Exp;
branches;
next	;

1.5.4.1
date	2006.05.21.19.56.41;	author momjian;	state Exp;
branches;
next	;

1.6.2.1
date	2006.05.21.19.57.07;	author momjian;	state Exp;
branches;
next	;

1.7.4.1
date	2006.05.21.19.57.40;	author momjian;	state Exp;
branches;
next	;

1.7.6.1
date	2006.05.11.19.21.31;	author momjian;	state Exp;
branches;
next	;


desc
@@


1.10
log
@Change \; to ; in RULE, \; unnecessary.
@
text
@---------------------------------------------------------------------------
--
-- funcs.sql-
--	  Tutorial on using functions in POSTGRES.
--
--
-- Copyright (c) 1994-5, Regents of the University of California
--
-- $PostgreSQL: pgsql/src/tutorial/funcs.source,v 1.9 2006/05/11 19:21:14 momjian Exp $
--
---------------------------------------------------------------------------

-----------------------------
-- Creating SQL Functions on Base Types
--	a CREATE FUNCTION statement lets you create a new function that
--	can be used in expressions (in SELECT, INSERT, etc.). We will start
--	with functions that return values of base types.
-----------------------------

--
-- let's create a simple SQL function that takes no arguments and 
-- returns 1

CREATE FUNCTION one() RETURNS integer
   AS 'SELECT 1 as ONE' LANGUAGE SQL;

--
-- functions can be used in any expressions (eg. in the target list or 
-- qualifications)

SELECT one() AS answer;

--
-- here's how you create a function that takes arguments. The following
-- function returns the sum of its two arguments:

CREATE FUNCTION add_em(integer, integer) RETURNS integer
   AS 'SELECT $1 + $2' LANGUAGE SQL;

SELECT add_em(1, 2) AS answer;

-----------------------------
-- Creating SQL Functions on Composite Types
--	it is also possible to create functions that return values of
--	composite types.
-----------------------------

-- before we create more sophisticated functions, let's populate an EMP
-- table

CREATE TABLE EMP (
	name		text,
	salary		integer,
	age		integer,
	cubicle		point
);

INSERT INTO EMP VALUES ('Sam', 1200, 16, '(1,1)');
INSERT INTO EMP VALUES ('Claire', 5000, 32, '(1,2)');
INSERT INTO EMP VALUES ('Andy', -1000, 2, '(1,3)');
INSERT INTO EMP VALUES ('Bill', 4200, 36, '(2,1)');
INSERT INTO EMP VALUES ('Ginger', 4800, 30, '(2,4)');

-- the argument of a function can also be a tuple. For instance, 
-- double_salary takes a tuple of the EMP table

CREATE FUNCTION double_salary(EMP) RETURNS integer
   AS 'SELECT $1.salary * 2 AS salary' LANGUAGE SQL;

SELECT name, double_salary(EMP) AS dream
FROM EMP
WHERE EMP.cubicle ~= '(2,1)'::point;

-- the return value of a function can also be a tuple. However, make sure 
-- that the expressions in the target list is in the same order as the 
-- columns of EMP.

CREATE FUNCTION new_emp() RETURNS EMP
   AS 'SELECT ''None''::text AS name,
			  1000 AS salary,
			  25 AS age,
			  ''(2,2)''::point AS cubicle'
   LANGUAGE SQL;

-- you can then project a column out of resulting the tuple by using the
-- "function notation" for projection columns. (ie. bar(foo) is equivalent
-- to foo.bar) Note that we don't support new_emp().name at this moment.

SELECT name(new_emp()) AS nobody;

-- let's try one more function that returns tuples
CREATE FUNCTION high_pay() RETURNS setof EMP
   AS 'SELECT * FROM EMP where salary > 1500'
   LANGUAGE SQL;

SELECT name(high_pay()) AS overpaid;


-----------------------------
-- Creating SQL Functions with multiple SQL statements
--	you can also create functions that do more than just a SELECT.
--
-- 14MAR99 Clark Evans: Does not quite work, commented out for now.
--
-----------------------------

-- you may have noticed that Andy has a negative salary. We'll create a
-- function that removes employees with negative salaries.
--
-- SELECT * FROM EMP;
--
-- CREATE FUNCTION clean_EMP () RETURNS integer
--	  AS 'DELETE FROM EMP WHERE EMP.salary <= 0;
--		  SELECT 1 AS ignore_this'
--	  LANGUAGE SQL;
--
-- SELECT clean_EMP();
--
-- SELECT * FROM EMP;


-----------------------------
-- Creating C Functions
--	in addition to SQL functions, you can also create C functions. 
--	See funcs.c for the definition of the C functions.
-----------------------------

CREATE FUNCTION add_one(integer) RETURNS integer
   AS '_OBJWD_/funcs' LANGUAGE C;

CREATE FUNCTION makepoint(point, point) RETURNS point
   AS '_OBJWD_/funcs' LANGUAGE C;

CREATE FUNCTION copytext(text) RETURNS text
   AS '_OBJWD_/funcs' LANGUAGE C;

CREATE FUNCTION c_overpaid(EMP, integer) RETURNS boolean
   AS '_OBJWD_/funcs' LANGUAGE C;

SELECT add_one(3) AS four;

SELECT makepoint('(1,2)'::point, '(3,4)'::point ) AS newpoint;

SELECT copytext('hello world!');

SELECT name, c_overpaid(EMP, 1500) AS overpaid
FROM EMP 
WHERE name = 'Bill' or name = 'Sam';

-- remove functions that were created in this file

DROP FUNCTION c_overpaid(EMP, integer);
DROP FUNCTION copytext(text);
DROP FUNCTION makepoint(point, point);
DROP FUNCTION add_one(integer);
--DROP FUNCTION clean_EMP();
DROP FUNCTION high_pay();
DROP FUNCTION new_emp();
DROP FUNCTION add_em(integer, integer);
DROP FUNCTION one();
DROP FUNCTION double_salary(EMP);

DROP TABLE EMP;
@


1.9
log
@Use SQL standard '' rather than \' for tutorial/sample code.

Backpatch to 8.1.X.
@
text
@d9 1
a9 1
-- $PostgreSQL: pgsql/src/tutorial/funcs.source,v 1.8 2006/02/27 16:09:50 petere Exp $
d113 1
a113 1
--	  AS 'DELETE FROM EMP WHERE EMP.salary <= 0\;
@


1.8
log
@Clean up CREATE FUNCTION syntax usage in contrib and elsewhere, in
particular get rid of single quotes around language names and old WITH ()
construct.
@
text
@d9 1
a9 1
-- $PostgreSQL: pgsql/src/tutorial/funcs.source,v 1.7 2003/11/29 22:41:33 pgsql Exp $
d79 1
a79 1
   AS 'SELECT \'None\'::text AS name,
d82 1
a82 1
			  \'(2,2)\'::point AS cubicle'
@


1.7
log
@
make sure the $Id tags are converted to $PostgreSQL as well ...
@
text
@d9 1
a9 1
-- $PostgreSQL: funcs.source,v 1.6 2003/10/26 04:51:51 momjian Exp $
d24 2
a25 2
CREATE FUNCTION one() RETURNS int4
   AS 'SELECT 1 as ONE' LANGUAGE 'sql';
d37 2
a38 2
CREATE FUNCTION add_em(int4, int4) RETURNS int4
   AS 'SELECT $1 + $2' LANGUAGE 'sql';
d53 2
a54 2
	salary		int4,
	age		int4,
d67 2
a68 2
CREATE FUNCTION double_salary(EMP) RETURNS int4
   AS 'SELECT $1.salary * 2 AS salary' LANGUAGE 'sql';
d83 1
a83 1
   LANGUAGE 'sql';
d94 1
a94 1
   LANGUAGE 'sql';
d112 1
a112 1
-- CREATE FUNCTION clean_EMP () RETURNS int4
d115 1
a115 1
--	  LANGUAGE 'sql';
d128 2
a129 2
CREATE FUNCTION add_one(int4) RETURNS int4
   AS '_OBJWD_/funcs' LANGUAGE 'c';
d132 1
a132 1
   AS '_OBJWD_/funcs' LANGUAGE 'c';
d135 1
a135 1
   AS '_OBJWD_/funcs' LANGUAGE 'c';
d137 2
a138 2
CREATE FUNCTION c_overpaid(EMP, int4) RETURNS bool
   AS '_OBJWD_/funcs' LANGUAGE 'c';
d152 1
a152 1
DROP FUNCTION c_overpaid(EMP, int4);
d154 2
a155 2
DROP FUNCTION makepoint(point,point);
DROP FUNCTION add_one(int4);
d159 1
a159 1
DROP FUNCTION add_em(int4, int4);
@


1.7.4.1
log
@Change \' to '', for SQL standards compliance.  Backpatch to 7.3, 7.4,
and 8.0.  Later releases already patched.
@
text
@d9 1
a9 1
-- $PostgreSQL: pgsql/src/tutorial/funcs.source,v 1.7 2003/11/29 22:41:33 pgsql Exp $
d79 1
a79 1
   AS 'SELECT ''None''::text AS name,
d82 1
a82 1
			  ''(2,2)''::point AS cubicle'
@


1.7.6.1
log
@Use SQL standard '' rather than \' for tutorial/sample code.

Backpatch to 8.1.X.
@
text
@d9 1
a9 1
-- $PostgreSQL: pgsql/src/tutorial/funcs.source,v 1.7 2003/11/29 22:41:33 pgsql Exp $
d79 1
a79 1
   AS 'SELECT ''None''::text AS name,
d82 1
a82 1
			  ''(2,2)''::point AS cubicle'
@


1.6
log
@Fix two bugs in funcs.source that made the tutorial script fail.

Make a LOT of fixes to syscat.source to:

* Set search_path properly (and reset it)
* Add schema name to all results
* Add schema name to ORDER BY first
* Make checks for user-defined objects match reality
* format_type all type names
* Respect attisdropped
* Change !~ to 'not like' since it's more standard


Christopher Kings-Lynne
@
text
@d9 1
a9 1
-- $Id: funcs.source,v 1.5 2001/10/26 20:45:33 tgl Exp $
@


1.6.2.1
log
@Change \' to '', for SQL standards compliance.  Backpatch to 7.3, 7.4,
and 8.0.  Later releases already patched.
@
text
@d9 1
a9 1
-- $Id: funcs.source,v 1.6 2003/10/26 04:51:51 momjian Exp $
d79 1
a79 1
   AS 'SELECT ''None''::text AS name,
d82 1
a82 1
			  ''(2,2)''::point AS cubicle'
@


1.5
log
@Remove no-longer-needed dependencies on DLSUFFIX.
@
text
@d9 1
a9 1
-- $Id: funcs.source,v 1.4 2000/03/28 02:49:19 tgl Exp $
d156 1
a156 1
DROP FUNCTION clean_EMP();
d161 1
@


1.5.4.1
log
@Change \' to '', for SQL standards compliance.  Backpatch to 7.3, 7.4,
and 8.0.  Later releases already patched.
@
text
@d9 1
a9 1
-- $Id: funcs.source,v 1.5 2001/10/26 20:45:33 tgl Exp $
d79 1
a79 1
   AS 'SELECT ''None''::text AS name,
d82 1
a82 1
			  ''(2,2)''::point AS cubicle'
@


1.4
log
@Fix some bogosity in the tutorial examples.
@
text
@d9 1
a9 1
-- $Id: funcs.source,v 1.3 1999/03/14 15:22:15 momjian Exp $
d129 1
a129 1
   AS '_OBJWD_/funcs_DLSUFFIX_' LANGUAGE 'c';
d132 1
a132 1
   AS '_OBJWD_/funcs_DLSUFFIX_' LANGUAGE 'c';
d135 1
a135 1
   AS '_OBJWD_/funcs_DLSUFFIX_' LANGUAGE 'c';
d138 1
a138 1
   AS '_OBJWD_/funcs_DLSUFFIX_' LANGUAGE 'c';
@


1.3
log
@Fixup for src/tutorial/func.c and src/tutorial/func.source

Removed char16 and replaced with an example using Point
as suggested by Tom Lane.  The dept field was changed to
the cubicle field denoting the row(x) and column(y) of
the employee's cube in the corporate jungle.  The C function
builds a 'compromise' cubicle from two suggested ones.

I'll try and patchup the documentation next.

Clark
@
text
@d9 1
a9 1
-- $Id: funcs.source,v 1.2 1998/02/11 03:51:38 thomas Exp $
d129 1
a129 1
   AS '_OBJWD_/funcs.so' LANGUAGE 'c';
d132 1
a132 1
   AS '_OBJWD_/funcs.so' LANGUAGE 'c';
d135 1
a135 1
   AS '_OBJWD_/funcs.so' LANGUAGE 'c';
d138 1
a138 1
   AS '_OBJWD_/funcs.so' LANGUAGE 'c';
@


1.2
log
@Fix typos in SQL statement terminators.
@
text
@d4 1
a4 1
--    Tutorial on using functions in POSTGRES.
d9 1
a9 1
-- $Id: funcs.source,v 1.1.1.1 1996/07/09 06:22:34 scrappy Exp $
d55 1
a55 1
	dept		char16
d58 5
a62 5
INSERT INTO EMP VALUES ('Sam', 1200, 16, 'toy');
INSERT INTO EMP VALUES ('Claire', 5000, 32, 'shoe');
INSERT INTO EMP VALUES ('Andy', -1000, 2, 'candy');
INSERT INTO EMP VALUES ('Bill', 4200, 36, 'shoe');
INSERT INTO EMP VALUES ('Ginger', 4800, 30, 'candy');
d72 1
a72 1
WHERE EMP.dept = 'toy';
d80 3
a82 3
              1000 AS salary,
              25 AS age,
              \'none\'::char16 AS dept'
d102 3
d109 11
a119 11

SELECT * FROM EMP;

CREATE FUNCTION clean_EMP () RETURNS int4
   AS 'DELETE FROM EMP WHERE EMP.salary <= 0\;
       SELECT 1 AS ignore_this'
   LANGUAGE 'sql';

SELECT clean_EMP();

SELECT * FROM EMP;
d125 1
a125 1
--	See C-code/funcs.c for the definition of the C functions.
d131 1
a131 1
CREATE FUNCTION concat16(char16, char16) RETURNS char16
d142 1
a142 1
SELECT concat16('abc', 'xyz') AS newchar16;
d154 1
a154 1
DROP FUNCTION concat16(char16,char16);
d157 1
@


1.1
log
@Initial revision
@
text
@d9 1
a9 1
-- $Id: funcs.source,v 1.1.1.1 1996/07/09 05:32:54 scrappy Exp $
d58 4
a61 4
INSERT INTO EMP VALUES ('Sam', 1200, 16, 'toy')
INSERT INTO EMP VALUES ('Claire', 5000, 32, 'shoe')
INSERT INTO EMP VALUES ('Andy', -1000, 2, 'candy')
INSERT INTO EMP VALUES ('Bill', 4200, 36, 'shoe')
d110 1
a110 1
   AS 'DELETE FROM EMP WHERE EMP.salary <= 0
d149 7
a155 7
DROP FUNCTION c_overpaid(EMP, int4)
DROP FUNCTION copytext(text)
DROP FUNCTION concat16(char16,char16)
DROP FUNCTION add_one(int4)
DROP FUNCTION clean_EMP()
DROP FUNCTION new_emp()
DROP FUNCTION add_em(int4, int4)
@


1.1.1.1
log
@Postgres95 1.01 Distribution - Virgin Sources
@
text
@@
