1 #ifndef __ORAFCE__ 2 #define __ORAFCE__ 3 4 #include "postgres.h" 5 #include "catalog/catversion.h" 6 #include "nodes/pg_list.h" 7 #include <sys/time.h> 8 #include "utils/datetime.h" 9 #include "utils/datum.h" 10 11 #define TextPCopy(t) \ 12 DatumGetTextP(datumCopy(PointerGetDatum(t), false, -1)) 13 14 #define PG_GETARG_IF_EXISTS(n, type, defval) \ 15 ((PG_NARGS() > (n) && !PG_ARGISNULL(n)) ? PG_GETARG_##type(n) : (defval)) 16 17 /* alignment of this struct must fit for all types */ 18 typedef union vardata 19 { 20 char c; 21 short s; 22 int i; 23 long l; 24 float f; 25 double d; 26 void *p; 27 } vardata; 28 29 extern int ora_instr(text *txt, text *pattern, int start, int nth); 30 extern int ora_mb_strlen(text *str, char **sizes, int **positions); 31 extern int ora_mb_strlen1(text *str); 32 33 extern char *nls_date_format; 34 extern char *orafce_timezone; 35 36 extern char *nls_date_format; 37 extern char *orafce_timezone; 38 39 extern bool orafce_varchar2_null_safe_concat; 40 41 /* 42 * Version compatibility 43 */ 44 45 extern Oid equality_oper_funcid(Oid argtype); 46 47 /* 48 * Date utils 49 */ 50 #define STRING_PTR_FIELD_TYPE const char *const 51 52 extern STRING_PTR_FIELD_TYPE ora_days[]; 53 54 extern int ora_seq_search(const char *name, STRING_PTR_FIELD_TYPE array[], size_t max); 55 56 #ifdef _MSC_VER 57 58 #define int2size(v) (size_t)(v) 59 #define size2int(v) (int)(v) 60 61 #else 62 63 #define int2size(v) v 64 #define size2int(v) v 65 66 #endif 67 68 #endif 69