50 static drizzle_column_type_t _column_type_drizzle_map_to[]=
52 DRIZZLE_COLUMN_TYPE_TINY,
53 DRIZZLE_COLUMN_TYPE_LONG,
54 DRIZZLE_COLUMN_TYPE_DOUBLE,
55 DRIZZLE_COLUMN_TYPE_NULL,
56 DRIZZLE_COLUMN_TYPE_TIMESTAMP,
57 DRIZZLE_COLUMN_TYPE_LONGLONG,
58 DRIZZLE_COLUMN_TYPE_DATETIME,
59 DRIZZLE_COLUMN_TYPE_NEWDATE,
60 DRIZZLE_COLUMN_TYPE_VARCHAR,
61 DRIZZLE_COLUMN_TYPE_NEWDECIMAL,
62 DRIZZLE_COLUMN_TYPE_ENUM,
63 DRIZZLE_COLUMN_TYPE_BLOB
66 static drizzle_column_type_drizzle_t _column_type_drizzle_map_from[]=
68 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
69 DRIZZLE_COLUMN_TYPE_DRIZZLE_BOOLEAN,
70 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
71 DRIZZLE_COLUMN_TYPE_DRIZZLE_LONG,
72 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
73 DRIZZLE_COLUMN_TYPE_DRIZZLE_DOUBLE,
74 DRIZZLE_COLUMN_TYPE_DRIZZLE_NULL,
75 DRIZZLE_COLUMN_TYPE_DRIZZLE_TIMESTAMP,
76 DRIZZLE_COLUMN_TYPE_DRIZZLE_LONGLONG,
77 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
79 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
80 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
81 DRIZZLE_COLUMN_TYPE_DRIZZLE_DATETIME,
82 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
83 DRIZZLE_COLUMN_TYPE_DRIZZLE_DATE,
84 DRIZZLE_COLUMN_TYPE_DRIZZLE_VARCHAR,
85 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
86 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
87 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
88 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
90 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
91 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
92 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
93 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
94 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
95 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
96 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
97 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
98 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
99 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
101 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
102 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
103 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
104 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
105 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
106 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
107 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
108 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
109 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
110 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
112 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
113 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
114 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
115 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
116 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
117 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
118 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
119 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
120 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
121 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
123 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
124 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
125 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
126 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
127 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
128 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
129 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
130 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
131 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
132 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
134 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
135 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
136 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
137 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
138 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
139 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
140 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
141 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
142 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
143 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
145 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
146 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
147 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
148 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
149 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
150 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
151 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
152 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
153 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
154 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
156 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
157 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
158 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
159 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
160 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
161 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
162 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
163 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
164 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
165 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
167 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
168 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
169 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
170 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
171 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
172 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
173 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
174 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
175 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
176 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
178 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
179 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
180 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
181 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
182 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
183 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
184 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
185 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
186 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
187 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
189 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
190 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
191 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
192 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
193 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
194 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
195 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
196 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
197 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
198 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
200 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
201 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
202 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
203 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
204 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
205 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
206 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
207 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
208 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
209 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
211 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
212 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
213 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
214 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
215 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
216 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
217 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
218 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
219 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
220 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
222 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
223 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
224 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
225 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
226 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
227 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
228 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
229 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
230 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
231 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
233 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
234 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
235 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
236 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
237 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
238 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
239 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
240 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
241 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
242 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
244 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
245 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
246 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
247 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
248 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
249 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
250 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
251 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
252 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
253 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
255 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
256 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
257 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
258 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
259 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
260 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
261 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
262 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
263 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
264 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
266 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
267 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
268 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
269 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
270 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
271 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
272 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
273 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
274 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
275 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
277 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
278 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
279 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
280 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
281 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
282 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
283 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
284 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
285 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
286 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
288 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
289 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
290 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
291 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
292 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
293 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
294 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
295 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
296 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
297 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
299 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
300 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
301 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
302 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
303 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
304 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
305 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
306 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
307 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
308 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
310 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
311 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
312 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
313 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
314 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
315 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
316 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
317 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
318 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
319 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
321 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
322 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
323 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
324 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
325 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
326 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
327 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
328 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
329 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
330 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
332 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
333 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
334 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
335 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
336 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
337 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
338 DRIZZLE_COLUMN_TYPE_DRIZZLE_NEWDECIMAL,
339 DRIZZLE_COLUMN_TYPE_DRIZZLE_ENUM,
340 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
341 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
343 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
344 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
345 DRIZZLE_COLUMN_TYPE_DRIZZLE_BLOB,
346 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
347 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX,
348 DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX
355 drizzle_column_st *drizzle_column_create(drizzle_result_st *result,
356 drizzle_column_st *column)
365 column=
new (std::nothrow) (drizzle_column_st);
372 column->result = result;
375 column->options= DRIZZLE_COLUMN_ALLOCATED;
376 column->catalog[0] =
'\0';
377 column->db[0] =
'\0';
378 column->table[0] =
'\0';
379 column->orig_table[0] =
'\0';
380 column->name[0] =
'\0';
381 column->orig_name[0] =
'\0';
384 column->max_size = 0;
385 column->type = drizzle_column_type_t();
386 column->flags = drizzle_column_flags_t();
387 column->decimals = 0;
389 column->default_value_size = 0;
394 column->result = result;
397 column->options= drizzle_column_options_t();
398 column->catalog[0] =
'\0';
399 column->db[0] =
'\0';
400 column->table[0] =
'\0';
401 column->orig_table[0] =
'\0';
402 column->name[0] =
'\0';
403 column->orig_name[0] =
'\0';
406 column->max_size = 0;
407 column->type = drizzle_column_type_t();
408 column->flags = drizzle_column_flags_t();
409 column->decimals = 0;
411 column->default_value_size = 0;
414 column->result= result;
416 if (result->column_list)
417 result->column_list->prev= column;
419 column->next= result->column_list;
420 result->column_list= column;
425 void drizzle_column_free(drizzle_column_st *column)
432 if (column->result->column_list == column)
433 column->result->column_list= column->next;
436 column->prev->next= column->next;
439 column->next->prev= column->prev;
441 if (column->options & DRIZZLE_COLUMN_ALLOCATED)
447 drizzle_result_st *drizzle_column_drizzle_result(drizzle_column_st *column)
454 return column->result;
457 const char *drizzle_column_catalog(drizzle_column_st *column)
464 return column->catalog;
467 const char *drizzle_column_db(drizzle_column_st *column)
477 const char *drizzle_column_table(drizzle_column_st *column)
484 return column->table;
487 const char *drizzle_column_orig_table(drizzle_column_st *column)
494 return column->orig_table;
497 const char *drizzle_column_name(drizzle_column_st *column)
507 const char *drizzle_column_orig_name(drizzle_column_st *column)
514 return column->orig_name;
517 drizzle_charset_t drizzle_column_charset(drizzle_column_st *column)
521 return drizzle_charset_t();
524 return column->charset;
527 uint32_t drizzle_column_size(drizzle_column_st *column)
537 size_t drizzle_column_max_size(drizzle_column_st *column)
544 return column->max_size;
547 void drizzle_column_set_max_size(drizzle_column_st *column,
size_t size)
554 column->max_size= size;
557 drizzle_column_type_t drizzle_column_type(drizzle_column_st *column)
561 return drizzle_column_type_t();
567 drizzle_column_type_drizzle_t
568 drizzle_column_type_drizzle(drizzle_column_st *column)
572 return drizzle_column_type_drizzle_t();
575 return _column_type_drizzle_map_from[column->type];
578 drizzle_column_flags_t drizzle_column_flags(drizzle_column_st *column)
582 return drizzle_column_flags_t();
585 return drizzle_column_flags_t(column->flags);
588 uint8_t drizzle_column_decimals(drizzle_column_st *column)
595 return column->decimals;
598 const uint8_t *drizzle_column_default_value(drizzle_column_st *column,
606 *size= column->default_value_size;
607 return column->default_value;
614 drizzle_return_t drizzle_column_skip(drizzle_result_st *result)
618 return DRIZZLE_RETURN_INVALID_ARGUMENT;
621 drizzle_return_t ret;
624 result->options|= int(DRIZZLE_RESULT_SKIP_COLUMN);
630 result->options&= ~int(DRIZZLE_RESULT_SKIP_COLUMN);
634 drizzle_return_t drizzle_column_skip_all(drizzle_result_st *result)
638 return DRIZZLE_RETURN_INVALID_ARGUMENT;
641 for (uint16_t it= 1; it <= result->column_count; it++)
643 drizzle_return_t ret= drizzle_column_skip(result);
645 if (ret != DRIZZLE_RETURN_OK)
651 return DRIZZLE_RETURN_OK;
654 drizzle_column_st *drizzle_column_read(drizzle_result_st *result,
655 drizzle_column_st *column,
656 drizzle_return_t *ret_ptr)
658 drizzle_return_t unused_ret;
661 ret_ptr= &unused_ret;
671 result->column= column;
679 return result->column;
682 drizzle_return_t drizzle_column_buffer(drizzle_result_st *result)
686 return DRIZZLE_RETURN_INVALID_ARGUMENT;
689 drizzle_return_t ret;
691 if (result->column_buffer == NULL)
693 if (result->column_count == 0)
695 result->options|= int(DRIZZLE_RESULT_BUFFER_COLUMN);
696 return DRIZZLE_RETURN_OK;
699 result->column_buffer=
new (std::nothrow) drizzle_column_st[result->column_count];
700 if (result->column_buffer == NULL)
704 return DRIZZLE_RETURN_MEMORY;
709 while (drizzle_column_read(result,
710 &(result->column_buffer[result->column_current]),
711 &ret) != NULL && ret == DRIZZLE_RETURN_OK);
712 if (ret == DRIZZLE_RETURN_OK)
714 result->column_current= 0;
715 result->options|= DRIZZLE_RESULT_BUFFER_COLUMN;
721 drizzle_column_st *drizzle_column_next(drizzle_result_st *result)
728 if (result->column_current == result->column_count)
733 result->column_current++;
734 return &(result->column_buffer[result->column_current - 1]);
737 drizzle_column_st *drizzle_column_prev(drizzle_result_st *result)
744 if (result->column_current == 0)
749 result->column_current--;
750 return &(result->column_buffer[result->column_current]);
753 void drizzle_column_seek(drizzle_result_st *result, uint16_t column)
760 if (column <= result->column_count)
762 result->column_current= column;
766 drizzle_column_st *drizzle_column_index(drizzle_result_st *result,
774 if (column >= result->column_count)
779 return &(result->column_buffer[column]);
782 uint16_t drizzle_column_current(drizzle_result_st *result)
789 return result->column_current;
796 drizzle_return_t drizzle_column_write(drizzle_result_st *result,
797 drizzle_column_st *column)
801 return DRIZZLE_RETURN_INVALID_ARGUMENT;
806 result->column= column;
814 void drizzle_column_set_catalog(drizzle_column_st *column,
const char *catalog)
823 column->catalog[0]= 0;
827 strncpy(column->catalog, catalog, DRIZZLE_MAX_CATALOG_SIZE);
828 column->catalog[DRIZZLE_MAX_CATALOG_SIZE - 1]= 0;
832 void drizzle_column_set_db(drizzle_column_st *column,
const char *db)
845 strncpy(column->db, db, DRIZZLE_MAX_DB_SIZE);
846 column->db[DRIZZLE_MAX_DB_SIZE - 1]= 0;
850 void drizzle_column_set_table(drizzle_column_st *column,
const char *table)
863 strncpy(column->table, table, DRIZZLE_MAX_TABLE_SIZE);
864 column->table[DRIZZLE_MAX_TABLE_SIZE - 1]= 0;
868 void drizzle_column_set_orig_table(drizzle_column_st *column,
869 const char *orig_table)
876 if (orig_table == NULL)
878 column->orig_table[0]= 0;
882 strncpy(column->orig_table, orig_table, DRIZZLE_MAX_TABLE_SIZE);
883 column->orig_table[DRIZZLE_MAX_TABLE_SIZE - 1]= 0;
887 void drizzle_column_set_name(drizzle_column_st *column,
const char *name)
900 strncpy(column->name, name, DRIZZLE_MAX_COLUMN_NAME_SIZE);
901 column->name[DRIZZLE_MAX_COLUMN_NAME_SIZE - 1]= 0;
905 void drizzle_column_set_orig_name(drizzle_column_st *column,
906 const char *orig_name)
908 if (orig_name == NULL)
909 column->orig_name[0]= 0;
912 strncpy(column->orig_name, orig_name, DRIZZLE_MAX_COLUMN_NAME_SIZE);
913 column->orig_name[DRIZZLE_MAX_COLUMN_NAME_SIZE - 1]= 0;
917 void drizzle_column_set_charset(drizzle_column_st *column,
918 drizzle_charset_t charset)
925 column->charset= charset;
928 void drizzle_column_set_size(drizzle_column_st *column, uint32_t size)
938 void drizzle_column_set_type(drizzle_column_st *column,
939 drizzle_column_type_t type)
949 void drizzle_column_set_flags(drizzle_column_st *column,
950 drizzle_column_flags_t flags)
957 column->flags= flags;
960 void drizzle_column_set_decimals(drizzle_column_st *column, uint8_t decimals)
967 column->decimals= decimals;
970 void drizzle_column_set_default_value(drizzle_column_st *column,
971 const uint8_t *default_value,
979 if (default_value == NULL)
981 column->default_value[0]= 0;
985 if (size < DRIZZLE_MAX_DEFAULT_VALUE_SIZE)
987 memcpy(column->default_value, default_value, size);
988 column->default_value[size]= 0;
989 column->default_value_size= size;
993 memcpy(column->default_value, default_value,
994 DRIZZLE_MAX_DEFAULT_VALUE_SIZE - 1);
995 column->default_value[DRIZZLE_MAX_DEFAULT_VALUE_SIZE - 1]= 0;
996 column->default_value_size= DRIZZLE_MAX_DEFAULT_VALUE_SIZE;
1005 drizzle_return_t drizzle_state_column_read(drizzle_con_st *con)
1009 return DRIZZLE_RETURN_INVALID_ARGUMENT;
1012 drizzle_column_st *column;
1013 drizzle_column_type_drizzle_t drizzle_type;
1018 if (con->buffer_size < con->packet_size)
1021 return DRIZZLE_RETURN_OK;
1024 if (con->packet_size == 5 && con->buffer_ptr[0] == 254)
1027 con->result->column= NULL;
1028 con->result->warning_count= drizzle_get_byte2(con->buffer_ptr + 1);
1029 con->status= drizzle_con_status_t(drizzle_get_byte2(con->buffer_ptr + 3));
1030 con->buffer_ptr+= 5;
1031 con->buffer_size-= 5;
1035 else if (con->result->options & DRIZZLE_RESULT_SKIP_COLUMN)
1037 con->buffer_ptr+= con->packet_size;
1038 con->buffer_size-= con->packet_size;
1039 con->packet_size= 0;
1040 con->result->column_current++;
1046 column= drizzle_column_create(con->result, con->result->column);
1048 return DRIZZLE_RETURN_MEMORY;
1050 con->result->column= column;
1058 DRIZZLE_MAX_TABLE_SIZE);
1060 DRIZZLE_MAX_COLUMN_NAME_SIZE);
1062 DRIZZLE_MAX_COLUMN_NAME_SIZE);
1065 column->charset= (drizzle_charset_t)drizzle_get_byte2(con->buffer_ptr + 1);
1066 column->size= drizzle_get_byte4(con->buffer_ptr + 3);
1068 if (con->options & DRIZZLE_CON_MYSQL)
1070 column->type= drizzle_column_type_t(con->buffer_ptr[7]);
1074 drizzle_type= drizzle_column_type_drizzle_t(con->buffer_ptr[7]);
1075 if (drizzle_type >= DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX)
1076 drizzle_type= DRIZZLE_COLUMN_TYPE_DRIZZLE_MAX;
1077 column->type= _column_type_drizzle_map_to[drizzle_type];
1080 column->flags= drizzle_column_flags_t(drizzle_get_byte2(con->buffer_ptr + 8));
1081 if (column->type <= DRIZZLE_COLUMN_TYPE_INT24 &&
1082 column->type != DRIZZLE_COLUMN_TYPE_TIMESTAMP)
1084 column->flags|= int(DRIZZLE_COLUMN_FLAGS_NUM);
1087 column->decimals= con->buffer_ptr[10];
1090 con->buffer_ptr+= 13;
1091 con->buffer_size-= 13;
1092 con->packet_size-= 13;
1094 if (con->packet_size > 0)
1096 drizzle_column_set_default_value(column, con->buffer_ptr,
1099 con->buffer_ptr+= con->packet_size;
1100 con->buffer_size-= con->packet_size;
1103 column->default_value[0]= 0;
1105 con->result->column_current++;
1110 return DRIZZLE_RETURN_OK;
1113 drizzle_return_t drizzle_state_column_write(drizzle_con_st *con)
1117 return DRIZZLE_RETURN_INVALID_ARGUMENT;
1120 uint8_t *start= con->buffer_ptr + con->buffer_size;
1122 drizzle_column_st *column= con->result->column;
1127 con->packet_size= 9 + strlen(column->catalog)
1128 + 9 + strlen(column->db)
1129 + 9 + strlen(column->table)
1130 + 9 + strlen(column->orig_table)
1131 + 9 + strlen(column->name)
1132 + 9 + strlen(column->orig_name)
1140 + column->default_value_size;
1143 if ((con->packet_size + 4) > DRIZZLE_MAX_BUFFER_SIZE)
1146 "buffer too small:%zu", con->packet_size + 4);
1147 return DRIZZLE_RETURN_INTERNAL_ERROR;
1151 if (((
size_t)DRIZZLE_MAX_BUFFER_SIZE - (
size_t)(start - con->buffer)) <
1155 return DRIZZLE_RETURN_OK;
1160 ptr[3]= con->packet_number;
1161 con->packet_number++;
1175 drizzle_set_byte2(ptr, column->charset);
1178 drizzle_set_byte4(ptr, column->size);
1181 if (con->options & DRIZZLE_CON_MYSQL)
1183 ptr[0]= column->type;
1187 ptr[0]= _column_type_drizzle_map_from[column->type];
1191 drizzle_set_byte2(ptr, column->flags);
1194 ptr[0]= column->decimals;
1200 if (column->default_value_size > 0)
1202 memcpy(ptr, column->default_value, column->default_value_size);
1203 ptr+= column->default_value_size;
1206 con->packet_size= ((size_t)(ptr - start) - 4);
1207 con->buffer_size+= (4 + con->packet_size);
1210 drizzle_set_byte3(start, con->packet_size);
1212 con->result->column_current++;
1216 return DRIZZLE_RETURN_OK;
static void drizzle_state_pop(drizzle_con_st *con)
static bool drizzle_state_none(drizzle_con_st *con)
static void drizzle_state_push(drizzle_con_st *con, drizzle_state_fn *function)
void drizzle_set_error(drizzle_st *drizzle, const char *function, const char *format,...)
drizzle_return_t drizzle_state_loop(drizzle_con_st *con)
static void drizzle_log_debug(drizzle_st *drizzle, const char *format,...)
drizzle_return_t drizzle_unpack_string(drizzle_con_st *con, char *buffer, uint64_t max_length)
uint8_t * drizzle_pack_string(char *string, uint8_t *ptr)