tupconvert.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*-------------------------------------------------------------------------
  2. *
  3. * tupconvert.h
  4. * Tuple conversion support.
  5. *
  6. *
  7. * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
  8. * Portions Copyright (c) 1994, Regents of the University of California
  9. *
  10. * src/include/access/tupconvert.h
  11. *
  12. *-------------------------------------------------------------------------
  13. */
  14. #ifndef TUPCONVERT_H
  15. #define TUPCONVERT_H
  16. #include "access/attmap.h"
  17. #include "access/htup.h"
  18. #include "access/tupdesc.h"
  19. #include "executor/tuptable.h"
  20. #include "nodes/bitmapset.h"
  21. typedef struct TupleConversionMap
  22. {
  23. TupleDesc indesc; /* tupdesc for source rowtype */
  24. TupleDesc outdesc; /* tupdesc for result rowtype */
  25. AttrMap *attrMap; /* indexes of input fields, or 0 for null */
  26. Datum *invalues; /* workspace for deconstructing source */
  27. bool *inisnull;
  28. Datum *outvalues; /* workspace for constructing result */
  29. bool *outisnull;
  30. } TupleConversionMap;
  31. extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc,
  32. TupleDesc outdesc,
  33. const char *msg);
  34. extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc,
  35. TupleDesc outdesc);
  36. extern HeapTuple execute_attr_map_tuple(HeapTuple tuple, TupleConversionMap *map);
  37. extern TupleTableSlot *execute_attr_map_slot(AttrMap *attrMap,
  38. TupleTableSlot *in_slot,
  39. TupleTableSlot *out_slot);
  40. extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *inbitmap);
  41. extern void free_conversion_map(TupleConversionMap *map);
  42. #endif /* TUPCONVERT_H */