CUBRID Engine  latest
cubrid_esql.h
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Search Solution Corporation
3  * Copyright 2016 CUBRID Corporation
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 /*
20  * cubrid_esql.h : CUBRID Embedded C Program Inclusion Header File
21  * This file contains the definitions of type, macros, function prototypes,
22  * and variables which is exported to each ESQL C program file.
23  * Every ESQL C program should include this file.
24  */
25 
26 #ifndef _CUBRID_ESQL_H_
27 #define _CUBRID_ESQL_H_
28 
29 #ident "$Id$"
30 
31 #if defined(__cplusplus)
32 extern "C"
33 {
34 #endif
35 
36 #if defined(__STDC__) || defined(_cplusplus) || defined(__cplusplus)
37 #include "stdlib.h"
38 #else
39 #include <sys/types.h>
40 #endif
41 #include "dbi.h"
42 
43 #define SQL_NOT_FOUND 100 /* sqlcode for not found */
44 #define SQL_WARNING_CHAR 'W' /* to indicate warning */
45 
46 /* macro to declare a type of CUBRIDDA having the specified # of sqlvars */
47 #define CUBRIDDA_TEMPLATE(num_vars) \
48  struct { \
49  int sqlmax; \
50  int sqldesc; \
51  CUBRID_STMT_TYPE sqlcmd; \
52  CUBRIDVAR sqlvar[(num_vars)]; \
53  }
54 
55 /* macro to alloc CUBRIDDA with # of sqlvars */
56 #define ALLOC_CUBRIDDA(num_vars) \
57  (CUBRIDDA *)malloc(sizeof(CUBRIDDA) + \
58  sizeof(CUBRIDVAR) * ((num_vars) - 1))
59 
60 #define SQLCODE sqlca.sqlcode
61 #define SQLFILE sqlca.sqlfile
62 #define SQLLINE sqlca.sqlline
63 #define SQLERRML sqlca.sqlerrm.sqlerrml
64 #define SQLERRMC sqlca.sqlerrm.sqlerrmc
65 #define SQLERRD sqlca.sqlerrd
66 #define SQLERRD2 sqlca.sqlerrd[2]
67 #define SQLWARN0 sqlca.sqlwarn.sqlwarn0
68 #define SQLWARN1 sqlca.sqlwarn.sqlwarn1
69 #define SQLWARN2 sqlca.sqlwarn.sqlwarn2
70 #define SQLWARN3 sqlca.sqlwarn.sqlwarn3
71 #define SQLWARN4 sqlca.sqlwarn.sqlwarn4
72 
73  typedef short DB_INDICATOR;
74 
75 /* decription of a variable to contain a result column */
76  typedef struct cubridvar
77  {
78  DB_TYPE sqltype; /* type of the SQL variable */
79  int sqlprec; /* precision, when applicable */
80  int sqlscale; /* scale, when applicable */
81  DB_TYPE_C sqlctype; /* type of the buffer area */
82  void *sqldata; /* pointer to the variable */
83  int sqllen; /* length in bytes of the buffer area */
84  DB_INDICATOR *sqlind; /* pointer to the associated indicator */
85  char *sqlname; /* null-terminated result column name */
86  } CUBRIDVAR;
87 
88 /* SQLDA structure */
89  typedef struct cubridda
90  {
91  int sqlmax; /* # of sqlvar allocated */
92  int sqldesc; /* # of sqlvar described */
93  CUBRID_STMT_TYPE sqlcmd; /* type of csql statement */
94  CUBRIDVAR sqlvar[1]; /* array of variable descriptions */
95  } CUBRIDDA;
96 
97 /* SQLCA structure */
98  typedef struct cubridca
99  {
100  char sqlcaid[8]; /* "SQLCA " */
101  long sqlcabc; /* == sizeof(CUBRIDCA) */
102  long sqlcode; /* error code returned from the last command */
103  const char *sqlfile; /* Name of source file in which error occurred */
104  long sqlline; /* Line number within source file */
105  struct
106  {
107  short sqlerrml; /* length of message in sqlerrmc */
108  char sqlerrmc[512]; /* error message text */
109  } sqlerrm;
110  char sqlerrp[8]; /* unused */
111  long sqlerrd[6]; /* sqlerrd[2] indicates the number of objects affected by the last command. others are
112  * not used. */
113  struct
114  {
115  char sqlwarn0; /* 'W' if one of sqlwarn[1-7] is 'W' */
116  char sqlwarn1; /* 'W' if output truncation */
117  char sqlwarn2; /* 'W' if NULL in aggregate evaulation Currently NOT SUPPORTED */
118  char sqlwarn3; /* 'W' if host variables are mismatches */
119  char sqlwarn4; /* 'W' if UPDATE/DELETE without WHERE Currently NOT SUPPORTED */
120  char sqlwarn5; /* unused */
121  char sqlwarn6; /* unused */
122  char sqlwarn7; /* unused */
123  } sqlwarn;
124  char sqlext[8];
125  } CUBRIDCA;
126 
127 #if defined(_ESQLX_VARCHAR2_STYLE_)
128  typedef struct var_char
129  {
130  int len;
131  char arr[1];
132  } VARCHAR;
133 #else
134  typedef struct var_char
135  {
136  int length;
137  char array[1];
138  } VARCHAR;
139 #endif
140 
141  typedef VARCHAR varchar;
142 
143  extern unsigned int _uci_opt; /* UCI runtime option */
144  extern CUBRIDCA sqlca; /* user-exported SQLCA variable */
145  extern DB_INDICATOR uci_null_ind;
146 
147  extern void uci_startup (const char *);
148  extern void uci_start (void *, const char *, int, unsigned int);
149  extern void uci_end (void);
150  extern void uci_stop (void);
151  extern long uci_get_sqlcode (void);
152  extern char uci_get_sqlwarn_0 (void);
153 
154  extern void uci_connect (const char *, const char *, const char *);
155  extern void uci_disconnect (void);
156  extern void uci_commit (void);
157  extern void uci_rollback (void);
158  extern void uci_static (int, const char *, int, int);
159  extern void uci_open_cs (int, const char *, int, int, int);
160  extern void uci_fetch_cs (int, int);
161  extern void uci_delete_cs (int);
162  extern void uci_close_cs (int);
163  extern void uci_psh_curr_csr_oid (int);
164  extern void uci_prepare (int, const char *, int);
165  extern void uci_describe (int, CUBRIDDA *);
166  extern void uci_execute (int, int);
167  extern void uci_execute_immediate (const char *, int);
168  extern void uci_object_describe (DB_OBJECT *, int, const char **, CUBRIDDA *);
169  extern void uci_object_fetch (DB_OBJECT *, int, const char **, int);
170 
171  extern void uci_set_num_db_values (int);
172  extern void uci_get_value (int, DB_INDICATOR *, void *, DB_TYPE_C, int, int *);
173  extern void uci_get_db_value (int, DB_VALUE *);
174  extern void uci_get_descriptor (int, CUBRIDDA *);
175 
176  extern void uci_put_value (DB_INDICATOR *, DB_TYPE, int, int, DB_TYPE_C, void *, int);
177  extern void uci_put_descriptor (CUBRIDDA *);
178 
179 /* A static variable to identify each esql C source file at run-time. */
180 #if !defined(_ESQL_KERNEL_)
181  static char uci_esqlxc_file;
182 #endif
183 
184 #if defined(__cplusplus)
185 }
186 #endif
187 
188 #endif /* _CUBRID_ESQL_H_ */
void uci_set_num_db_values(int)
void uci_execute(int, int)
Definition: esql_cli.c:1367
void uci_object_fetch(DB_OBJECT *, int, const char **, int)
Definition: esql_cli.c:1580
void uci_get_value(int, DB_INDICATOR *, void *, DB_TYPE_C, int, int *)
Definition: esql_cli.c:1830
CUBRID_STMT_TYPE sqlcmd
Definition: cubrid_esql.h:93
char sqlwarn0
Definition: cubrid_esql.h:115
void uci_open_cs(int, const char *, int, int, int)
Definition: esql_cli.c:995
DB_INDICATOR uci_null_ind
Definition: esql_cli.c:347
long sqlcabc
Definition: cubrid_esql.h:101
DB_TYPE
Definition: dbtype_def.h:670
void uci_end(void)
Definition: esql_cli.c:542
void uci_put_value(DB_INDICATOR *, DB_TYPE, int, int, DB_TYPE_C, void *, int)
Definition: esql_cli.c:1689
void uci_startup(const char *)
Definition: esql_cli.c:446
void uci_get_db_value(int, DB_VALUE *)
Definition: esql_cli.c:1985
char sqlwarn1
Definition: cubrid_esql.h:116
int sqllen
Definition: cubrid_esql.h:83
void uci_object_describe(DB_OBJECT *, int, const char **, CUBRIDDA *)
Definition: esql_cli.c:1548
CUBRIDCA sqlca
Definition: esql_cli.c:346
DB_INDICATOR * sqlind
Definition: cubrid_esql.h:84
void uci_psh_curr_csr_oid(int)
Definition: esql_cli.c:1235
void uci_fetch_cs(int, int)
Definition: esql_cli.c:1125
struct cubridda CUBRIDDA
char sqlwarn3
Definition: cubrid_esql.h:118
char sqlwarn5
Definition: cubrid_esql.h:120
char sqlwarn7
Definition: cubrid_esql.h:122
char * sqlname
Definition: cubrid_esql.h:85
void uci_stop(void)
Definition: esql_cli.c:563
void uci_execute_immediate(const char *, int)
Definition: esql_cli.c:1460
void uci_commit(void)
Definition: esql_cli.c:676
DB_TYPE_C
Definition: dbtype_def.h:1116
char sqlwarn6
Definition: cubrid_esql.h:121
char uci_get_sqlwarn_0(void)
Definition: esql_cli.c:593
const char * sqlfile
Definition: cubrid_esql.h:103
long sqlline
Definition: cubrid_esql.h:104
long sqlcode
Definition: cubrid_esql.h:102
short DB_INDICATOR
Definition: cubrid_esql.h:73
void uci_rollback(void)
Definition: esql_cli.c:697
DB_TYPE sqltype
Definition: cubrid_esql.h:78
struct cubridca CUBRIDCA
void uci_disconnect(void)
Definition: esql_cli.c:639
void uci_describe(int, CUBRIDDA *)
Definition: esql_cli.c:1328
short sqlerrml
Definition: cubrid_esql.h:107
void uci_get_descriptor(int, CUBRIDDA *)
Definition: esql_cli.c:2072
unsigned int _uci_opt
Definition: esql_cli.c:345
void uci_prepare(int, const char *, int)
Definition: esql_cli.c:1273
CUBRID_STMT_TYPE
Definition: cas_dbms_util.h:40
VARCHAR varchar
Definition: cubrid_esql.h:141
void uci_close_cs(int)
Definition: esql_cli.c:1211
long uci_get_sqlcode(void)
Definition: esql_cli.c:583
void uci_delete_cs(int)
Definition: esql_cli.c:1176
void * sqldata
Definition: cubrid_esql.h:82
int sqlprec
Definition: cubrid_esql.h:79
int sqldesc
Definition: cubrid_esql.h:92
void uci_connect(const char *, const char *, const char *)
Definition: esql_cli.c:611
DB_TYPE_C sqlctype
Definition: cubrid_esql.h:81
int length
Definition: cubrid_esql.h:136
struct cubridvar CUBRIDVAR
void uci_static(int, const char *, int, int)
Definition: esql_cli.c:733
static char uci_esqlxc_file
Definition: cubrid_esql.h:181
void uci_put_descriptor(CUBRIDDA *)
Definition: esql_cli.c:2051
int sqlscale
Definition: cubrid_esql.h:80
struct var_char VARCHAR
char sqlwarn4
Definition: cubrid_esql.h:119
int sqlmax
Definition: cubrid_esql.h:91
void uci_start(void *, const char *, int, unsigned int)
Definition: esql_cli.c:491
char sqlwarn2
Definition: cubrid_esql.h:117