mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	project I am working on (Recall - a distributed, fault-tolerant, replicated, storage framework @ http://www.fault-tolerant.org). Recall is written in C++. I need to include the postgres headers and there are some problems when including the headers w/C++. Attached is a patch generated from postgres/src that fixes my problems. I was hoping to get this into the main source. It's very small (2k) and 3 files are changed: backend/utils/fmgr/fmgr.c, backend/utils/Gen_fmgrtab.sh.in, and include/access/tupdesc.h. In C++, you get a multiply defined symbol because the variable (FmgrInfo *fmgr_pl_finfo) is defined in the header (the patch moves it to the .c file). The other problem in tupdesc.h is the use of typeid is a problem in c++ (I renamed it to oidtypeid). Thanks, Neal Norwitz
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*-------------------------------------------------------------------------
 | |
|  *
 | |
|  * tupdesc.h
 | |
|  *	  POSTGRES tuple descriptor definitions.
 | |
|  *
 | |
|  *
 | |
|  * Portions Copyright (c) 1996-2000, PostgreSQL, Inc
 | |
|  * Portions Copyright (c) 1994, Regents of the University of California
 | |
|  *
 | |
|  * $Id: tupdesc.h,v 1.29 2000/05/22 02:34:23 momjian Exp $
 | |
|  *
 | |
|  *-------------------------------------------------------------------------
 | |
|  */
 | |
| #ifndef TUPDESC_H
 | |
| #define TUPDESC_H
 | |
| 
 | |
| #include "access/attnum.h"
 | |
| #include "catalog/pg_attribute.h"
 | |
| #include "nodes/pg_list.h"
 | |
| 
 | |
| 
 | |
| typedef struct attrDefault
 | |
| {
 | |
| 	AttrNumber	adnum;
 | |
| 	char	   *adbin;			/* nodeToString representation of expr */
 | |
| } AttrDefault;
 | |
| 
 | |
| typedef struct constrCheck
 | |
| {
 | |
| 	char	   *ccname;
 | |
| 	char	   *ccbin;			/* nodeToString representation of expr */
 | |
| } ConstrCheck;
 | |
| 
 | |
| /* This structure contains constraints of a tuple */
 | |
| typedef struct tupleConstr
 | |
| {
 | |
| 	AttrDefault *defval;		/* array */
 | |
| 	ConstrCheck *check;			/* array */
 | |
| 	uint16		num_defval;
 | |
| 	uint16		num_check;
 | |
| 	bool		has_not_null;
 | |
| } TupleConstr;
 | |
| 
 | |
| /*
 | |
|  * This structure contains all information (i.e. from Classes
 | |
|  * pg_attribute, pg_attrdef, pg_relcheck) for a tuple.
 | |
|  */
 | |
| typedef struct tupleDesc
 | |
| {
 | |
| 	int			natts;			/* Number of attributes in the tuple */
 | |
| 	Form_pg_attribute *attrs;
 | |
| 	/* attrs[N] is a pointer to the description of Attribute Number N+1.  */
 | |
| 	TupleConstr *constr;
 | |
| }		   *TupleDesc;
 | |
| 
 | |
| extern TupleDesc CreateTemplateTupleDesc(int natts);
 | |
| 
 | |
| extern TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs);
 | |
| 
 | |
| extern TupleDesc CreateTupleDescCopy(TupleDesc tupdesc);
 | |
| 
 | |
| extern TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc);
 | |
| 
 | |
| extern void FreeTupleDesc(TupleDesc tupdesc);
 | |
| 
 | |
| extern bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
 | |
| 
 | |
| extern bool TupleDescInitEntry(TupleDesc desc,
 | |
| 				   AttrNumber attributeNumber,
 | |
| 				   char *attributeName,
 | |
| 				   Oid oidtypeid,
 | |
| 				   int32 typmod,
 | |
| 				   int attdim,
 | |
| 				   bool attisset);
 | |
| 
 | |
| extern TupleDesc BuildDescForRelation(List *schema, char *relname);
 | |
| 
 | |
| #endif	 /* TUPDESC_H */
 |