Header And Logo

PostgreSQL
| The world's most advanced open source database.

tupconvert.h

Go to the documentation of this file.
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 */