The following bug has been logged on the website:
Bug reference: 13404
Logged by: Christian Reinke
Email address: christianr@fastmail.com
PostgreSQL version: 9.4.2
Operating system: Linux
Description:
Bug report regarding: PostgreSQL 9.4.2 Documentation (in HTML format)
Section 35.9. C-Language Functions
Section 35.9.8. Returning Rows (Composite Types)
PostgreSQL version: 9.4.2.
Debian packages: postgresql-9.4, postgresql-doc-9.4,
postgresql-server-dev-9.4,
etc., all version 9.4.2-0+deb8u1.
Platform: Linux ... 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt9-3~deb8u1
(2015-04-24) x86_64 GNU/Linux.
I tried to compile a C-language function that uses the function
heap_form_tuple and got a warning because its declaration was missing:
gcc -I/usr/include/postgresql/9.4/server -Wall -c -fpic -lm -g test1.c
test1.c: In function âtest1â:
test1.c:246:3: warning: implicit declaration of function âheap_form_tupleâ
[-Wimplicit-function-declaration]
result_tuple = heap_form_tuple (result_tuple_desc, dat, isnull);
^
test1.c compiled without this warning under PostgreSQL 9.1.
test1.c included the following PostgreSQL header files:
#include "postgres.h"
#include "fmgr.h"
#include "funcapi.h"
#include "executor/executor.h"
test1.c compiles successfully under PostgreSQL 9.4 if I, also, include:
#include "access/htup_details.h"
PostgreSQL 9.1 included the declaration of heap_form_tuple along the
sequence funcapi.h, executor/tuptable.h and access/htup.h. In
PostgreSQL 9.4, the declaration of heap_form_tuple moved from
access/htup.h to a new header file access/htup_details.h, which is not
included by funcapi.h.
The HTML documentation, however, seems to say in Section 35.9.8. that it
is sufficient to include funcapi.h to get all the definitions required
for functions returning rows (composite types).
Is this a bug, or did I miss something?