Annotation of win32/sql/oracle/include/oci/cdemodp0.h, revision 1.1.1.1
1.1 parser 1: /*
2: * $Header: /var/lib/cvsroot/parser3/parser3/src/sql/oracle/oracle32/include/oci/cdemodp0.h,v 1.1 2001/08/22 14:02:18 parser Exp $
3: */
4:
5: /* Copyright (c) 1998, 1999, Oracle Corporation. All rights reserved.
6: */
7:
8: /*
9: NAME
10: cdemodp0.h - C Demo program for Direct Path api
11:
12: DESCRIPTION
13: - Internal data structs, macros, & defines for cdemodp driver.
14:
15: NOTES
16: Structures, macros, constants used only by cdemodp.c.
17:
18: MODIFIED (MM/DD/YY)
19: mjaeger 07/14/99 - bug 808870: OCCS: convert tabs, no long lines
20: abrumm 12/22/98 - lint
21: cmlim 11/17/98 - take away hardcoded MAX_RECLEN; now a session parm
22: cmlim 10/06/98 - correct typo
23: cmlim 10/02/98 - added externref
24: cmlim 09/16/98 - internal data structs, macros, & defines for cdemodp
25: cmlim 09/16/98 - Creation (abrumm 04/07/98)
26:
27: */
28:
29:
30: #ifndef cdemodp0_ORACLE
31: # define cdemodp0_ORACLE
32:
33: # include <oratypes.h>
34: # include <oci.h>
35:
36: /* partial field context structure, maintained by field setting function */
37: struct pctx
38: {
39: ub1 valid_pctx; /* partial context is valid */
40: ub4 pieceCnt_pctx; /* count of partial pieces */
41: ub4 row_pctx; /* which row in column array */
42: ub4 col_pctx; /* which column in column array */
43: ub4 len_pctx; /* length of this column so far */
44: int fd_pctx; /* open file descriptor data is coming from */
45: char *fnm_pctx; /* filename for data source */
46: };
47:
48: /* CLEAR_PCTX(struct pctx pctx)
49: * Macro to clear the partial context state
50: */
51: #define CLEAR_PCTX(pctx) \
52: ((pctx).valid_pctx = FALSE, (pctx).pieceCnt_pctx = 0, \
53: (pctx).row_pctx = UB4MAXVAL, (pctx).col_pctx = UB4MAXVAL, \
54: (pctx).len_pctx = 0, (pctx).fd_pctx = -1, \
55: (pctx).fnm_pctx = (char *)0)
56:
57: #define SET_PCTX(pctx, rowoff, coloff, clen, fd, fnm) \
58: ((pctx).valid_pctx = TRUE, (pctx).pieceCnt_pctx++, \
59: (pctx).row_pctx = (rowoff), (pctx).col_pctx = (coloff), \
60: (pctx).len_pctx += (ub4)(clen), (pctx).fd_pctx = (fd), \
61: (pctx).fnm_pctx = (fnm))
62:
63: #define LEN_PCTX(pctx) ((pctx).len_pctx)
64:
65: /* Does the input record correspond to the first piece of a row?
66: * Note that a row which is not pieced is a first piece too.
67: */
68: #define FIRST_PIECE(pctx) \
69: ( (pctx).valid_pctx == FALSE || \
70: ((pctx).valid_pctx == TRUE && ((pctx).pieceCnt_pctx == 1)))
71:
72: /* return values from field_set() */
73: #define FIELD_SET_COMPLETE 0
74: #define FIELD_SET_ERROR 1
75: #define FIELD_SET_BUF 2
76: #define FIELD_SET_PARTIAL 3
77:
78: /* return values from do_convert() */
79: #define CONVERT_SUCCESS 0
80: #define CONVERT_ERROR 1
81: #define CONVERT_NEED_DATA 2
82: #define CONVERT_CONTINUE 3
83:
84: /* return values from do_load() */
85: #define LOAD_SUCCESS 0
86: #define LOAD_ERROR 1
87: #define LOAD_NEED_DATA 2
88: #define LOAD_NO_DATA 3
89:
90: /* state values for simple_load() */
91: #define RESET 1 /* initial state, reset data structures to empty */
92: #define GET_RECORD 2 /* get input records */
93: #define FIELD_SET 3 /* assign fields of input records to columns */
94: #define DO_CONVERT 4 /* convert column array input to stream format */
95: #define DO_LOAD 5 /* load the direct stream */
96: #define END_OF_INPUT 6 /* no more input data */
97:
98: /* Secondary buffer sizes for OUTOFLINE fields; no science here, just a WAG */
99: #define SECONDARY_BUF_SIZE (1024*1024) /* size of secondary buffer */
100: #define SECONDARY_BUF_SLOP (8*1024) /* get another field if this much avail */
101:
102: #define STATICF
103:
104: #ifndef externref
105: # define externref extern
106: #endif
107:
108:
109: #endif /* cdemodp0_ORACLE */
E-mail: