00001 /*------------------------------------------------------------------------- 00002 * 00003 * tupconvert.h 00004 * Tuple conversion support. 00005 * 00006 * 00007 * Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group 00008 * Portions Copyright (c) 1994, Regents of the University of California 00009 * 00010 * src/include/access/tupconvert.h 00011 * 00012 *------------------------------------------------------------------------- 00013 */ 00014 #ifndef TUPCONVERT_H 00015 #define TUPCONVERT_H 00016 00017 #include "access/htup.h" 00018 #include "access/tupdesc.h" 00019 00020 00021 typedef struct TupleConversionMap 00022 { 00023 TupleDesc indesc; /* tupdesc for source rowtype */ 00024 TupleDesc outdesc; /* tupdesc for result rowtype */ 00025 AttrNumber *attrMap; /* indexes of input fields, or 0 for null */ 00026 Datum *invalues; /* workspace for deconstructing source */ 00027 bool *inisnull; 00028 Datum *outvalues; /* workspace for constructing result */ 00029 bool *outisnull; 00030 } TupleConversionMap; 00031 00032 00033 extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc, 00034 TupleDesc outdesc, 00035 const char *msg); 00036 00037 extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc, 00038 TupleDesc outdesc, 00039 const char *msg); 00040 00041 extern HeapTuple do_convert_tuple(HeapTuple tuple, TupleConversionMap *map); 00042 00043 extern void free_conversion_map(TupleConversionMap *map); 00044 00045 #endif /* TUPCONVERT_H */