354
354
drizzle_column_st *drizzle_column_create(drizzle_result_st *result,
355
355
drizzle_column_st *column)
357
362
if (column == NULL)
359
column= new drizzle_column_st;
360
column->result = result;
364
column= new (std::nothrow)drizzle_column_st;
365
column->result= result;
361
366
/* SET BELOW: column->next */
363
368
column->options= DRIZZLE_COLUMN_ALLOCATED;
364
column->catalog[0] = '\0';
365
column->db[0] = '\0';
366
column->table[0] = '\0';
367
column->orig_table[0] = '\0';
368
column->name[0] = '\0';
369
column->orig_name[0] = '\0';
372
column->max_size = 0;
373
column->type = static_cast<drizzle_column_type_t>(0);
374
column->flags = drizzle_column_flags_t();
375
column->decimals = 0;
369
column->catalog[0]= '\0';
370
column->schema[0]= '\0';
371
column->table[0]= '\0';
372
column->orig_table[0]= '\0';
373
column->name[0]= '\0';
374
column->orig_name[0]= '\0';
378
column->type= static_cast<drizzle_column_type_t>(0);
379
column->flags= drizzle_column_flags_t();
376
381
/* UNSET: column->default_value */
377
column->default_value_size = 0;
382
column->default_value_size= 0;
412
416
void drizzle_column_free(drizzle_column_st *column)
414
423
if (column->result->column_list == column)
415
425
column->result->column_list= column->next;
416
428
if (column->prev)
417
430
column->prev->next= column->next;
418
433
if (column->next)
419
435
column->next->prev= column->prev;
421
438
if (column->options & DRIZZLE_COLUMN_ALLOCATED)
425
444
drizzle_result_st *drizzle_column_drizzle_result(drizzle_column_st *column)
427
451
return column->result;
430
454
const char *drizzle_column_catalog(drizzle_column_st *column)
432
461
return column->catalog;
464
const char *drizzle_column_shema(drizzle_column_st *column)
471
return column->schema;
435
474
const char *drizzle_column_db(drizzle_column_st *column)
476
return drizzle_column_shema(column);
440
479
const char *drizzle_column_table(drizzle_column_st *column)
442
486
return column->table;
445
489
const char *drizzle_column_orig_table(drizzle_column_st *column)
447
496
return column->orig_table;
450
499
const char *drizzle_column_name(drizzle_column_st *column)
452
506
return column->name;
455
509
const char *drizzle_column_orig_name(drizzle_column_st *column)
457
516
return column->orig_name;
460
519
drizzle_charset_t drizzle_column_charset(drizzle_column_st *column)
462
526
return column->charset;
465
529
uint32_t drizzle_column_size(drizzle_column_st *column)
467
536
return column->size;
470
539
size_t drizzle_column_max_size(drizzle_column_st *column)
472
546
return column->max_size;
475
549
void drizzle_column_set_max_size(drizzle_column_st *column, size_t size)
477
556
column->max_size= size;
480
559
drizzle_column_type_t drizzle_column_type(drizzle_column_st *column)
563
return drizzle_column_type_t();
482
566
return column->type;
485
drizzle_column_type_drizzle_t
486
drizzle_column_type_drizzle(drizzle_column_st *column)
569
drizzle_column_type_drizzle_t drizzle_column_type_drizzle(drizzle_column_st *column)
573
return drizzle_column_type_drizzle_t();
488
576
return _column_type_drizzle_map_from[column->type];
491
579
int drizzle_column_flags(drizzle_column_st *column)
493
586
return column->flags;
496
589
uint8_t drizzle_column_decimals(drizzle_column_st *column)
498
596
return column->decimals;
519
621
drizzle_state_push(result->con, drizzle_state_column_read);
520
622
drizzle_state_push(result->con, drizzle_state_packet_read);
522
ret= drizzle_state_loop(result->con);
624
drizzle_return_t ret= drizzle_state_loop(result->con);
523
625
result->options&= ~DRIZZLE_RESULT_SKIP_COLUMN;
527
629
drizzle_return_t drizzle_column_skip_all(drizzle_result_st *result)
529
drizzle_return_t ret;
633
return DRIZZLE_RETURN_INVALID_ARGUMENT;
532
for (it= 1; it <= result->column_count; it++)
636
for (uint16_t it= 1; it <= result->column_count; it++)
534
ret= drizzle_column_skip(result);
638
drizzle_return_t ret= drizzle_column_skip(result);
535
639
if (ret != DRIZZLE_RETURN_OK)
539
645
return DRIZZLE_RETURN_OK;
588
704
drizzle_column_st *drizzle_column_next(drizzle_result_st *result)
590
711
if (result->column_current == result->column_count)
593
716
result->column_current++;
594
717
return &(result->column_buffer[result->column_current - 1]);
606
729
void drizzle_column_seek(drizzle_result_st *result, uint16_t column)
608
736
if (column <= result->column_count)
609
738
result->column_current= column;
612
drizzle_column_st *drizzle_column_index(drizzle_result_st *result,
742
drizzle_column_st *drizzle_column_index(drizzle_result_st *result, uint16_t column)
615
749
if (column >= result->column_count)
618
754
return &(result->column_buffer[column]);
621
757
uint16_t drizzle_column_current(drizzle_result_st *result)
623
764
return result->column_current;
630
771
drizzle_return_t drizzle_column_write(drizzle_result_st *result,
631
772
drizzle_column_st *column)
776
return DRIZZLE_RETURN_INVALID_ARGUMENT;
633
779
if (drizzle_state_none(result->con))
635
781
result->column= column;
654
void drizzle_column_set_db(drizzle_column_st *column, const char *db)
807
void drizzle_column_set_schema(drizzle_column_st *column, const char *schema)
816
column->schema[0]= 0;
660
strncpy(column->db, db, DRIZZLE_MAX_DB_SIZE);
661
column->db[DRIZZLE_MAX_DB_SIZE - 1]= 0;
820
strncpy(column->schema, schema, DRIZZLE_MAX_DB_SIZE);
821
column->schema[DRIZZLE_MAX_DB_SIZE - 1]= 0;
825
void drizzle_column_set_db(drizzle_column_st *column, const char *schema)
827
drizzle_column_set_schema(column, schema);
665
831
void drizzle_column_set_table(drizzle_column_st *column, const char *table)
667
838
if (table == NULL)
668
840
column->table[0]= 0;
671
844
strncpy(column->table, table, DRIZZLE_MAX_TABLE_SIZE);
711
899
void drizzle_column_set_charset(drizzle_column_st *column,
712
900
drizzle_charset_t charset)
714
907
column->charset= charset;
717
910
void drizzle_column_set_size(drizzle_column_st *column, uint32_t size)
719
917
column->size= size;
722
920
void drizzle_column_set_type(drizzle_column_st *column,
723
921
drizzle_column_type_t type)
725
928
column->type= type;
728
931
void drizzle_column_set_flags(drizzle_column_st *column,
731
939
column->flags= flags;
734
942
void drizzle_column_set_decimals(drizzle_column_st *column, uint8_t decimals)
736
949
column->decimals= decimals;
740
953
const uint8_t *default_value,
743
961
if (default_value == NULL)
744
963
column->default_value[0]= 0;
747
967
if (size < DRIZZLE_MAX_DEFAULT_VALUE_SIZE)
809
1034
/* These functions can only fail if they need to read data, but we know we
810
1035
buffered the entire packet, so ignore returns. */
811
1036
(void)drizzle_unpack_string(con, column->catalog, DRIZZLE_MAX_CATALOG_SIZE);
812
(void)drizzle_unpack_string(con, column->db, DRIZZLE_MAX_DB_SIZE);
1037
(void)drizzle_unpack_string(con, column->schema, DRIZZLE_MAX_DB_SIZE);
813
1038
(void)drizzle_unpack_string(con, column->table, DRIZZLE_MAX_TABLE_SIZE);
814
1039
(void)drizzle_unpack_string(con, column->orig_table,
815
1040
DRIZZLE_MAX_TABLE_SIZE);
868
1093
drizzle_return_t drizzle_state_column_write(drizzle_con_st *con)
1097
return DRIZZLE_RETURN_INVALID_ARGUMENT;
870
1100
uint8_t *start= con->buffer_ptr + con->buffer_size;
872
1102
drizzle_column_st *column= con->result->column;
876
1106
/* Calculate max packet size. */
877
1107
con->packet_size= 9 + strlen(column->catalog)
878
+ 9 + strlen(column->db)
1108
+ 9 + strlen(column->schema)
879
1109
+ 9 + strlen(column->table)
880
1110
+ 9 + strlen(column->orig_table)
881
1111
+ 9 + strlen(column->name)
914
1144
ptr= drizzle_pack_string(column->catalog, ptr);
915
ptr= drizzle_pack_string(column->db, ptr);
1145
ptr= drizzle_pack_string(column->schema, ptr);
916
1146
ptr= drizzle_pack_string(column->table, ptr);
917
1147
ptr= drizzle_pack_string(column->orig_table, ptr);
918
1148
ptr= drizzle_pack_string(column->name, ptr);