Error trying to compile a simple C trigger

Started by Marco Nenciarinialmost 14 years ago8 messages
#1Marco Nenciarini
marco.nenciarini@2ndQuadrant.it

I was trying to compile orafce on the current master and it yield
an error at line

tupdesc = trigdata->tg_relation->rd_att;

alert.c: In function ‘dbms_alert_defered_signal’:
alert.c:839:33: error: dereferencing pointer to incomplete type
make: *** [alert.o] Error 1

I've also tried the example at

http://www.postgresql.org/docs/devel/static/trigger-example.html

and the result is exactly the same.

trigtest.c: In function ‘trigf’:
trigtest.c:44:36: error: dereferencing pointer to incomplete type
make: *** [trigtest.o] Error 1

Regards,
Marco

--
Marco Nenciarini - 2ndQuadrant Italy
PostgreSQL Training, Services and Support
marco.nenciarini@2ndQuadrant.it | www.2ndQuadrant.it

#2Peter Geoghegan
peter@2ndquadrant.com
In reply to: Marco Nenciarini (#1)
Re: Error trying to compile a simple C trigger

On 20 March 2012 10:53, Marco Nenciarini
<marco.nenciarini@2ndquadrant.it> wrote:

alert.c: In function ‘dbms_alert_defered_signal’:
alert.c:839:33: error: dereferencing pointer to incomplete type
make: *** [alert.o] Error 1

I've also tried the example at

http://www.postgresql.org/docs/devel/static/trigger-example.html

and the result is exactly the same.

trigtest.c: In function ‘trigf’:
trigtest.c:44:36: error: dereferencing pointer to incomplete type
make: *** [trigtest.o] Error 1

I'd say this is an unintended consequence of a pgrminclude run. Try adding this:

#include "access/tupdesc.h"

--
Peter Geoghegan       http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services

#3Marco Nenciarini
marco.nenciarini@devise.it
In reply to: Peter Geoghegan (#2)
Re: Error trying to compile a simple C trigger

Il giorno mar, 20/03/2012 alle 11.16 +0000, Peter Geoghegan ha scritto:

On 20 March 2012 10:53, Marco Nenciarini
<marco.nenciarini@2ndquadrant.it> wrote:

alert.c: In function ‘dbms_alert_defered_signal’:
alert.c:839:33: error: dereferencing pointer to incomplete type
make: *** [alert.o] Error 1

I've also tried the example at

http://www.postgresql.org/docs/devel/static/trigger-example.html

and the result is exactly the same.

trigtest.c: In function ‘trigf’:
trigtest.c:44:36: error: dereferencing pointer to incomplete type
make: *** [trigtest.o] Error 1

I'd say this is an unintended consequence of a pgrminclude run. Try adding this:

#include "access/tupdesc.h"

It doesn't work. The error is stil the same.

Regards,
Marco

--
Marco Nenciarini - System manager @ Devise.IT
marco.nenciarini@devise.it | http://www.devise.it

#4Marco Nenciarini
marco.nenciarini@2ndQuadrant.it
In reply to: Peter Geoghegan (#2)
Re: Error trying to compile a simple C trigger

Il giorno mar, 20/03/2012 alle 11.16 +0000, Peter Geoghegan ha scritto:

On 20 March 2012 10:53, Marco Nenciarini
<marco.nenciarini@2ndquadrant.it> wrote:

alert.c: In function ‘dbms_alert_defered_signal’:
alert.c:839:33: error: dereferencing pointer to incomplete type
make: *** [alert.o] Error 1

I've also tried the example at

http://www.postgresql.org/docs/devel/static/trigger-example.html

and the result is exactly the same.

trigtest.c: In function ‘trigf’:
trigtest.c:44:36: error: dereferencing pointer to incomplete type
make: *** [trigtest.o] Error 1

I'd say this is an unintended consequence of a pgrminclude run. Try adding this:

#include "access/tupdesc.h"

It doesn't work. The error is stil the same.

Regards,
Marco

--
Marco Nenciarini - 2ndQuadrant Italy
PostgreSQL Training, Services and Support
marco.nenciarini@2ndQuadrant.it | www.2ndQuadrant.it

#5Asif Naeem
asif.naeem@enterprisedb.com
In reply to: Marco Nenciarini (#1)
Re: Error trying to compile a simple C trigger

It seems that compiler is complain about "Relation" structure, can you
please try adding the following in trigtest.c i.e.

#include "utils/rel.h"

Best Regards,
Asif Naeem

On Tue, Mar 20, 2012 at 3:53 PM, Marco Nenciarini <
marco.nenciarini@2ndquadrant.it> wrote:

Show quoted text

I was trying to compile orafce on the current master and it yield
an error at line

tupdesc = trigdata->tg_relation->rd_att;

alert.c: In function ‘dbms_alert_defered_signal’:
alert.c:839:33: error: dereferencing pointer to incomplete type
make: *** [alert.o] Error 1

I've also tried the example at

http://www.postgresql.org/docs/devel/static/trigger-example.html

and the result is exactly the same.

trigtest.c: In function ‘trigf’:
trigtest.c:44:36: error: dereferencing pointer to incomplete type
make: *** [trigtest.o] Error 1

Regards,
Marco

--
Marco Nenciarini - 2ndQuadrant Italy
PostgreSQL Training, Services and Support
marco.nenciarini@2ndQuadrant.it | www.2ndQuadrant.it

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#6Marco Nenciarini
marco.nenciarini@2ndQuadrant.it
In reply to: Asif Naeem (#5)
Re: Error trying to compile a simple C trigger

Il giorno mar, 20/03/2012 alle 16.46 +0500, Asif Naeem ha scritto:

It seems that compiler is complain about "Relation" structure, can you
please try adding the following in trigtest.c i.e.

#include "utils/rel.h"

It does the trick.

Regards,
Marco

--
Marco Nenciarini - 2ndQuadrant Italy
PostgreSQL Training, Services and Support
marco.nenciarini@2ndQuadrant.it | www.2ndQuadrant.it

#7Alvaro Herrera
alvherre@commandprompt.com
In reply to: Marco Nenciarini (#1)
1 attachment(s)
Re: Error trying to compile a simple C trigger

Excerpts from Marco Nenciarini's message of mar mar 20 07:53:06 -0300 2012:

I was trying to compile orafce on the current master and it yield
an error at line

tupdesc = trigdata->tg_relation->rd_att;

alert.c: In function ‘dbms_alert_defered_signal’:
alert.c:839:33: error: dereferencing pointer to incomplete type
make: *** [alert.o] Error 1

I've also tried the example at

http://www.postgresql.org/docs/devel/static/trigger-example.html

and the result is exactly the same.

trigtest.c: In function ‘trigf’:
trigtest.c:44:36: error: dereferencing pointer to incomplete type
make: *** [trigtest.o] Error 1

Thanks ... it seems we need these fixes (each of them backpatched to a
different set of releases).

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Attachments:

trigger-fix.patchapplication/octet-stream; name=trigger-fix.patchDownload
diff --git a/doc/src/sgml/trigger.sgml b/doc/src/sgml/trigger.sgml
index 7a8a496..f579340 100644
--- a/doc/src/sgml/trigger.sgml
+++ b/doc/src/sgml/trigger.sgml
@@ -573,7 +573,7 @@ typedef struct TriggerData
       <listitem>
        <para>
         A pointer to a structure of type <structname>Trigger</>,
-        defined in <filename>utils/rel.h</>:
+        defined in <filename>utils/reltrigger.h</>:
 
 <programlisting>
 typedef struct Trigger
@@ -582,7 +582,7 @@ typedef struct Trigger
     char       *tgname;
     Oid         tgfoid;
     int16       tgtype;
-    bool        tgenabled;
+    char        tgenabled;
     bool        tgisinternal;
     Oid         tgconstrrelid;
     Oid         tgconstrindid;
@@ -671,7 +671,8 @@ CREATE TABLE ttest (
 <programlisting><![CDATA[
 #include "postgres.h"
 #include "executor/spi.h"       /* this is what you need to work with SPI */
-#include "commands/trigger.h"   /* ... and triggers */
+#include "commands/trigger.h"   /* ... triggers ... */
+#include "utils/rel.h"          /* ... and relations */
 
 #ifdef PG_MODULE_MAGIC
 PG_MODULE_MAGIC;
#8Alvaro Herrera
alvherre@commandprompt.com
In reply to: Marco Nenciarini (#1)
Re: Error trying to compile a simple C trigger

Excerpts from Marco Nenciarini's message of mar mar 20 07:53:06 -0300 2012:

I was trying to compile orafce on the current master and it yield
an error at line

tupdesc = trigdata->tg_relation->rd_att;

alert.c: In function ‘dbms_alert_defered_signal’:
alert.c:839:33: error: dereferencing pointer to incomplete type
make: *** [alert.o] Error 1

I've also tried the example at

http://www.postgresql.org/docs/devel/static/trigger-example.html

and the result is exactly the same.

trigtest.c: In function ‘trigf’:
trigtest.c:44:36: error: dereferencing pointer to incomplete type
make: *** [trigtest.o] Error 1

Thanks, I believe the example is fixed now.

--
Álvaro Herrera <alvherre@commandprompt.com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support