tupconvert.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*-------------------------------------------------------------------------
  2. *
  3. * tupconvert.h
  4. * Tuple conversion support.
  5. *
  6. *
  7. * Portions Copyright (c) 1996-2016, 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/htup.h"
  17. #include "access/tupdesc.h"
  18. typedef struct TupleConversionMap
  19. {
  20. TupleDesc indesc; /* tupdesc for source rowtype */
  21. TupleDesc outdesc; /* tupdesc for result rowtype */
  22. AttrNumber *attrMap; /* indexes of input fields, or 0 for null */
  23. Datum *invalues; /* workspace for deconstructing source */
  24. bool *inisnull;
  25. Datum *outvalues; /* workspace for constructing result */
  26. bool *outisnull;
  27. } TupleConversionMap;
  28. extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc,
  29. TupleDesc outdesc,
  30. const char *msg);
  31. extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc,
  32. TupleDesc outdesc,
  33. const char *msg);
  34. extern AttrNumber *convert_tuples_by_name_map(TupleDesc indesc,
  35. TupleDesc outdesc,
  36. const char *msg);
  37. extern HeapTuple do_convert_tuple(HeapTuple tuple, TupleConversionMap *map);
  38. extern void free_conversion_map(TupleConversionMap *map);
  39. #endif /* TUPCONVERT_H */