Documentation updates to reflect TOAST and new-style fmgr.

This commit is contained in:
Tom Lane 2000-08-24 23:59:38 +00:00
parent 0813fcbc08
commit 69cf335687
2 changed files with 15 additions and 20 deletions

View File

@ -509,12 +509,13 @@ trigf(PG_FUNCTION_ARGS)
</para> </para>
<para> <para>
Now, compile and Now, compile and create the trigger function:
create table ttest (x int4):
<programlisting> <programlisting>
create function trigf () returns opaque as create function trigf () returns opaque as
'...path_to_so' language 'c'; '...path_to_so' language 'newC';
create table ttest (x int4);
</programlisting> </programlisting>
<programlisting> <programlisting>

View File

@ -55,7 +55,7 @@ complex_in(char *str)
double x, y; double x, y;
Complex *result; Complex *result;
if (sscanf(str, " ( %lf , %lf )", &amp;x, &amp;y) != 2) { if (sscanf(str, " ( %lf , %lf )", &amp;x, &amp;y) != 2) {
elog(NOTICE, "complex_in: error in parsing elog(ERROR, "complex_in: error in parsing %s", str);
return NULL; return NULL;
} }
result = (Complex *)palloc(sizeof(Complex)); result = (Complex *)palloc(sizeof(Complex));
@ -138,22 +138,16 @@ CREATE TYPE complex (
<title>Large Objects</title> <title>Large Objects</title>
<para> <para>
The types discussed to this point are all "small" If the values of your datatype might exceed a few hundred bytes in
objects -- that is, they are smaller than 8KB in size. size (in internal form), you should be careful to mark them TOASTable.
<note> To do this, the internal representation must follow the standard
<para> layout for variable-length data: the first four bytes must be an int32
1024 longwords == 8192 bytes. In fact, the type must be considerably smaller than 8192 bytes, containing the total length in bytes of the datum (including itself).
since the <productname>Postgres</productname> tuple Then, all your functions that accept values of the type must be careful
and page overhead must also fit into this 8KB limitation. to call pg_detoast_datum() on the supplied values --- after checking
The actual value that fits depends on the machine architecture. that the value is not NULL, if your function is not strict. Finally,
</para> select the appropriate storage option when giving the CREATE TYPE
</note> command.
If you require a larger type for something like a document
retrieval system or for storing bitmaps, you will
need to use the <productname>Postgres</productname> large object
interface, or will need to recompile the
<productname>Postgres</productname> backend to use internal
storage blocks greater than 8kbytes..
</para> </para>
</sect2> </sect2>
</sect1> </sect1>