codekingpro/portable-devtools
114k
1/*-------------------------------------------------------------------------2 *3 * tupconvert.h4 * Tuple conversion support.5 *6 *7 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group8 * Portions Copyright (c) 1994, Regents of the University of California9 *10 * src/include/access/tupconvert.h11 *12 *-------------------------------------------------------------------------13 */14#ifndef TUPCONVERT_H15#define TUPCONVERT_H16 17#include "access/attmap.h"18#include "access/htup.h"19#include "access/tupdesc.h"20#include "executor/tuptable.h"21#include "nodes/bitmapset.h"22 23 24typedef struct TupleConversionMap25{26 TupleDesc indesc; /* tupdesc for source rowtype */27 TupleDesc outdesc; /* tupdesc for result rowtype */28 AttrMap *attrMap; /* indexes of input fields, or 0 for null */29 Datum *invalues; /* workspace for deconstructing source */30 bool *inisnull;31 Datum *outvalues; /* workspace for constructing result */32 bool *outisnull;33} TupleConversionMap;34 35 36extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc,37 TupleDesc outdesc,38 const char *msg);39 40extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc,41 TupleDesc outdesc);42extern TupleConversionMap *convert_tuples_by_name_attrmap(TupleDesc indesc,43 TupleDesc outdesc,44 AttrMap *attrMap);45 46extern HeapTuple execute_attr_map_tuple(HeapTuple tuple, TupleConversionMap *map);47extern TupleTableSlot *execute_attr_map_slot(AttrMap *attrMap,48 TupleTableSlot *in_slot,49 TupleTableSlot *out_slot);50extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *in_cols);51 52extern void free_conversion_map(TupleConversionMap *map);53 54#endif /* TUPCONVERT_H */55 