<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_function.sgml,v 1.27 2001/10/02 21:39:35 tgl Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_function.sgml,v 1.28 2001/10/26 21:17:03 tgl Exp $
-->
<refentry id="SQL-CREATEFUNCTION">
<para>
The next example creates a C function by calling a routine from a
- user-created shared library. This particular routine calculates a
- check digit and returns TRUE if the check digit in the function
+ user-created shared library named <filename>funcs.so</> (the extension
+ may vary across platforms). The shared library file is sought in the
+ server's dynamic library search path. This particular routine calculates
+ a check digit and returns TRUE if the check digit in the function
parameters is correct. It is intended for use in a CHECK
constraint.
<programlisting>
CREATE FUNCTION ean_checkdigit(char, char) RETURNS boolean
- AS '/usr1/proj/bray/sql/funcs.so' LANGUAGE C;
+ AS 'funcs' LANGUAGE C;
CREATE TABLE product (
id char(8) PRIMARY KEY,
This example creates a function that does type conversion between the
user-defined type complex, and the internal type point. The
function is implemented by a dynamically loaded object that was
- compiled from C source. For <productname>PostgreSQL</productname> to
+ compiled from C source (we illustrate the now-deprecated alternative
+ of specifying the exact pathname to the shared object file).
+ For <productname>PostgreSQL</productname> to
find a type conversion function automatically, the SQL function has
to have the same name as the return type, and so overloading is
unavoidable. The function name is overloaded by using the second
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_language.sgml,v 1.17 2001/09/06 10:28:39 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_language.sgml,v 1.18 2001/10/26 21:17:03 tgl Exp $
Postgres documentation
-->
This command normally should not be executed directly by users.
For the procedural languages supplied in the
<productname>PostgreSQL</productname> distribution, the <xref
- linkend="app-createlang"> program should be used, which will also
+ linkend="app-createlang"> script should be used, which will also
install the correct call handler. (<command>createlang</command>
will call <command>CREATE LANGUAGE</command> internally.)
</para>
<para>
Use <xref linkend="sql-droplanguage">, or better yet the <xref
- linkend="app-droplang"> program, to drop procedural languages.
+ linkend="app-droplang"> script, to drop procedural languages.
</para>
<para>
<para>
At present, the definition of a procedural language cannot be
- changed once is has been created.
+ changed once it has been created.
</para>
</refsect1>
procedural language and the associated call handler.
<programlisting>
CREATE FUNCTION plsample_call_handler () RETURNS opaque
- AS '/usr/local/pgsql/lib/plsample.so'
+ AS '$libdir/plsample'
LANGUAGE C;
CREATE LANGUAGE plsample
HANDLER plsample_call_handler;
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/createlang.sgml,v 1.18 2001/10/22 23:48:11 tgl Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/createlang.sgml,v 1.19 2001/10/26 21:17:03 tgl Exp $
Postgres documentation
-->
<term><replaceable class="parameter">langname</replaceable></term>
<listitem>
<para>
- Specifies the name of the backend programming language to be defined.
+ Specifies the name of the procedural programming language to be
+ defined.
<application>createlang</application> will prompt for
<replaceable class="parameter">langname</replaceable>
if it is not specified on the command line.
<term>-d, --dbname <replaceable class="parameter">dbname</replaceable></term>
<listitem>
<para>
- Specifies which database the language should be added.
+ Specifies to which database the language should be added.
</para>
</listitem>
</varlistentry>
<listitem>
<para>
Specifies the directory in which the language interpreter is
- to be found. This is normally found automatically.
+ to be found. Use of this option is deprecated; the directory
+ is normally found automatically.
</para>
</listitem>
</varlistentry>
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_language.sgml,v 1.11 2001/09/03 12:57:49 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/ref/drop_language.sgml,v 1.12 2001/10/26 21:17:03 tgl Exp $
Postgres documentation
-->
<refentry id="SQL-DROPLANGUAGE">
<refmeta>
- <refentrytitle id="SQL-DROPLANGUAGE-TITLE">
- DROP LANGUAGE
- </refentrytitle>
+ <refentrytitle id="SQL-DROPLANGUAGE-TITLE">DROP LANGUAGE</refentrytitle>
<refmiscinfo>SQL - Language Statements</refmiscinfo>
</refmeta>
<refnamediv>
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v 1.39 2001/10/26 19:58:12 tgl Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/xfunc.sgml,v 1.40 2001/10/26 21:17:03 tgl Exp $
-->
<chapter id="xfunc">
<programlisting>
CREATE FUNCTION add_one(int4) RETURNS int4
- AS '<replaceable>PGROOT</replaceable>/tutorial/funcs' LANGUAGE 'c'
+ AS '<replaceable>PGROOT</replaceable>/tutorial/funcs' LANGUAGE C
WITH (isStrict);
-- note overloading of SQL function name add_one()
CREATE FUNCTION add_one(float8) RETURNS float8
AS '<replaceable>PGROOT</replaceable>/tutorial/funcs',
'add_one_float8'
- LANGUAGE 'c' WITH (isStrict);
+ LANGUAGE C WITH (isStrict);
CREATE FUNCTION makepoint(point, point) RETURNS point
- AS '<replaceable>PGROOT</replaceable>/tutorial/funcs' LANGUAGE 'c'
+ AS '<replaceable>PGROOT</replaceable>/tutorial/funcs' LANGUAGE C
WITH (isStrict);
CREATE FUNCTION copytext(text) RETURNS text
- AS '<replaceable>PGROOT</replaceable>/tutorial/funcs' LANGUAGE 'c'
+ AS '<replaceable>PGROOT</replaceable>/tutorial/funcs' LANGUAGE C
WITH (isStrict);
CREATE FUNCTION concat_text(text, text) RETURNS text
- AS '<replaceable>PGROOT</replaceable>/tutorial/funcs' LANGUAGE 'c'
+ AS '<replaceable>PGROOT</replaceable>/tutorial/funcs' LANGUAGE C
WITH (isStrict);
</programlisting>
</para>
<programlisting>
CREATE FUNCTION c_overpaid(emp, int4)
RETURNS bool
-AS '<replaceable>PGROOT</replaceable>/tutorial/obj/funcs'
-LANGUAGE 'c';
+AS '<replaceable>PGROOT</replaceable>/tutorial/funcs'
+LANGUAGE C;
</programlisting>
</para>
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/xindex.sgml,v 1.19 2001/09/13 15:55:23 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/xindex.sgml,v 1.20 2001/10/26 21:17:03 tgl Exp $
Postgres documentation
-->
<para>
Suppose the code that implements these functions
is stored in the file
- <filename>PGROOT/src/tutorial/complex.c</filename>.
+ <replaceable>PGROOT</replaceable><filename>/tutorial/complex.c</filename>,
+ which we have compiled into
+ <replaceable>PGROOT</replaceable><filename>/tutorial/complex.so</filename>.
</para>
<para>
<programlisting>
CREATE FUNCTION complex_abs_eq(complex, complex)
RETURNS bool
- AS 'PGROOT/tutorial/obj/complex.so'
- LANGUAGE 'c';
+ AS '<replaceable>PGROOT</replaceable>/tutorial/complex'
+ LANGUAGE C;
</programlisting>
</para>
<programlisting>
CREATE FUNCTION complex_abs_cmp(complex, complex)
RETURNS int4
- AS 'PGROOT/tutorial/obj/complex.so'
- LANGUAGE 'c';
+ AS '<replaceable>PGROOT</replaceable>/tutorial/complex'
+ LANGUAGE C;
SELECT oid, proname FROM pg_proc
WHERE proname = 'complex_abs_cmp';
<!--
-$Header: /cvsroot/pgsql/doc/src/sgml/xoper.sgml,v 1.14 2001/09/13 15:55:23 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/xoper.sgml,v 1.15 2001/10/26 21:17:03 tgl Exp $
-->
<Chapter Id="xoper">
<ProgramListing>
CREATE FUNCTION complex_add(complex, complex)
RETURNS complex
- AS '$PWD/obj/complex.so'
- LANGUAGE 'c';
+ AS '<replaceable>PGROOT</replaceable>/tutorial/complex'
+ LANGUAGE C;
CREATE OPERATOR + (
leftarg = complex,
<programlisting>
CREATE FUNCTION complex_in(opaque)
RETURNS complex
- AS 'PGROOT/tutorial/obj/complex.so'
- LANGUAGE 'c';
+ AS '<replaceable>PGROOT</replaceable>/tutorial/complex'
+ LANGUAGE C;
CREATE FUNCTION complex_out(opaque)
RETURNS opaque
- AS 'PGROOT/tutorial/obj/complex.so'
- LANGUAGE 'c';
+ AS '<replaceable>PGROOT</replaceable>/tutorial/complex'
+ LANGUAGE C;
CREATE TYPE complex (
internallength = 16,