65
64
drizzle_return_t drizzle_stmt_set_tiny(drizzle_stmt_st *stmt, uint16_t param_num, uint8_t value, bool is_unsigned)
68
stmt->query_params[param_num].data = realloc(stmt->query_params[param_num].data, sizeof(uint8_t));
69
val= (uint8_t*) stmt->query_params[param_num].data;
67
val= (uint8_t*) stmt->query_params[param_num].data_buffer;
72
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_TINY, val, 1, is_unsigned, false);
70
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_TINY, val, 1, is_unsigned);
74
72
drizzle_return_t drizzle_stmt_set_short(drizzle_stmt_st *stmt, uint16_t param_num, uint16_t value, bool is_unsigned)
77
stmt->query_params[param_num].data = realloc(stmt->query_params[param_num].data, sizeof(uint16_t));
78
val= (uint16_t*) stmt->query_params[param_num].data;
75
val= (uint16_t*) stmt->query_params[param_num].data_buffer;
81
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_SHORT, val, 2, is_unsigned, false);
78
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_SHORT, val, 2, is_unsigned);
84
81
drizzle_return_t drizzle_stmt_set_int(drizzle_stmt_st *stmt, uint16_t param_num, uint32_t value, bool is_unsigned)
87
stmt->query_params[param_num].data = realloc(stmt->query_params[param_num].data, sizeof(uint32_t));
88
val= (uint32_t*) stmt->query_params[param_num].data;
84
val= (uint32_t*) stmt->query_params[param_num].data_buffer;
91
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_LONG, val, 4, is_unsigned, true);
87
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_LONG, val, 4, is_unsigned);
94
90
drizzle_return_t drizzle_stmt_set_bigint(drizzle_stmt_st *stmt, uint16_t param_num, uint64_t value, bool is_unsigned)
97
stmt->query_params[param_num].data = realloc(stmt->query_params[param_num].data, sizeof(uint64_t));
98
val= (uint64_t*) stmt->query_params[param_num].data;
93
val= (uint64_t*) stmt->query_params[param_num].data_buffer;
101
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_LONGLONG, val, 8, is_unsigned, false);
96
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_LONGLONG, val, 8, is_unsigned);
104
99
drizzle_return_t drizzle_stmt_set_double(drizzle_stmt_st *stmt, uint16_t param_num, double value)
107
stmt->query_params[param_num].data = realloc(stmt->query_params[param_num].data, sizeof(double));
108
val= (double*) stmt->query_params[param_num].data;
102
val= (double*) stmt->query_params[param_num].data_buffer;
111
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_DOUBLE, val, 8, false, false);
105
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_DOUBLE, val, 8, false);
114
108
drizzle_return_t drizzle_stmt_set_float(drizzle_stmt_st *stmt, uint16_t param_num, float value)
117
stmt->query_params[param_num].data = realloc(stmt->query_params[param_num].data, sizeof(float));
118
val= (float*) stmt->query_params[param_num].data;
111
val= (float*) stmt->query_params[param_num].data_buffer;
121
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_FLOAT, val, 4, false, false);
114
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_FLOAT, val, 4, false);
124
117
drizzle_return_t drizzle_stmt_set_string(drizzle_stmt_st *stmt, uint16_t param_num, char *value, size_t length)
126
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_STRING, value, length, false, false);
119
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_STRING, value, length, false);
129
122
drizzle_return_t drizzle_stmt_set_null(drizzle_stmt_st *stmt, uint16_t param_num)
131
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_NULL, NULL, 0, false, false);
124
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_NULL, NULL, 0, false);
134
127
drizzle_return_t drizzle_stmt_set_time(drizzle_stmt_st *stmt, uint16_t param_num, uint32_t days, uint8_t hours, uint8_t minutes, uint8_t seconds, uint32_t microseconds, bool is_negative)
136
129
drizzle_datetime_st *time;
137
stmt->query_params[param_num].data = realloc(stmt->query_params[param_num].data, sizeof(drizzle_datetime_st));
138
time= (drizzle_datetime_st*) stmt->query_params[param_num].data;
130
time= (drizzle_datetime_st*) stmt->query_params[param_num].data_buffer;
140
132
time->negative= is_negative;
145
137
time->microsecond= microseconds;
147
139
/* Length not important because we will figure that out when packing */
148
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_TIME, time, 0, false, true);
140
return drizzle_stmt_set_param(stmt, param_num, DRIZZLE_COLUMN_TYPE_TIME, time, 0, false);
151
143
drizzle_return_t drizzle_stmt_set_timestamp(drizzle_stmt_st *stmt, uint16_t param_num, uint16_t year, uint8_t month, uint8_t day, uint8_t hours, uint8_t minutes, uint8_t seconds, uint32_t microseconds)
153
145
drizzle_datetime_st *timestamp;
154
stmt->query_params[param_num].data = realloc(stmt->query_params[param_num].data, sizeof(drizzle_datetime_st));
155
timestamp= (drizzle_datetime_st*) stmt->query_params[param_num].data;
146
timestamp= (drizzle_datetime_st*) stmt->query_params[param_num].data_buffer;
157
148
timestamp->negative= false;
158
149
timestamp->year= year;
583
574
char *long_to_string(drizzle_bind_st *param, uint32_t val)
585
/* Max length is -INT32_MAX + NUL = 12 */
586
param->converted_data= (char*)realloc(param->converted_data, 12);
576
/* Pick an empty point in the buffer to make the str */
577
char* buffer= param->data_buffer + 50;
587
578
if (param->options.is_unsigned)
589
snprintf(param->converted_data, 12, "%"PRIu32, val);
580
snprintf(buffer, 12, "%"PRIu32, val);
593
snprintf(param->converted_data, 12, "%"PRId32, (int32_t)val);
584
snprintf(buffer, 12, "%"PRId32, (int32_t)val);
595
return param->converted_data;
598
589
char *longlong_to_string(drizzle_bind_st *param, uint64_t val)
600
591
/* Max length is -INT64_MAX + NUL = 21 */
601
param->converted_data= (char*)realloc(param->converted_data, 21);
592
char* buffer= param->data_buffer + 50;
602
593
if (param->options.is_unsigned)
604
snprintf(param->converted_data, 21, "%"PRIu64, val);
595
snprintf(buffer, 21, "%"PRIu64, val);
608
snprintf(param->converted_data, 21, "%"PRId64, (int64_t)val);
599
snprintf(buffer, 21, "%"PRId64, (int64_t)val);
610
return param->converted_data;
613
604
char *double_to_string(drizzle_bind_st *param, double val)
615
606
/* Max length is 23 */
616
param->converted_data= (char*)realloc(param->converted_data, 23);
617
snprintf(param->converted_data, 23, "%f", val);
618
return param->converted_data;
607
char* buffer= param->data_buffer + 50;
608
snprintf(buffer, 23, "%f", val);
621
612
char *time_to_string(drizzle_bind_st *param, drizzle_datetime_st *time)
623
614
/* Max time is -HHH:MM:SS.ssssss + NUL = 17 */
624
param->converted_data= (char*)realloc(param->converted_data, 17);
615
char* buffer= param->data_buffer + 50;
625
616
if (time->microsecond == 0)
627
snprintf(param->converted_data, 17, "%s%"PRIu16":%"PRIu8":%"PRIu8, (time->negative) ? "-" : "", time->hour, time->minute, time->second);
618
snprintf(buffer, 17, "%s%"PRIu16":%"PRIu8":%"PRIu8, (time->negative) ? "-" : "", time->hour, time->minute, time->second);
631
snprintf(param->converted_data, 17, "%s%"PRIu16":%"PRIu8":%"PRIu8".%"PRIu32, (time->negative) ? "-" : "", time->hour, time->minute, time->second, time->microsecond);
622
snprintf(buffer, 17, "%s%"PRIu16":%"PRIu8":%"PRIu8".%"PRIu32, (time->negative) ? "-" : "", time->hour, time->minute, time->second, time->microsecond);
633
return param->converted_data;
636
627
char *timestamp_to_string(drizzle_bind_st *param, drizzle_datetime_st *timestamp)
638
629
/* Max timestamp is YYYY-MM-DD HH:MM:SS.ssssss + NUL = 26 */
639
param->converted_data= (char*)realloc(param->converted_data, 26);
630
char* buffer= param->data_buffer + 50;
640
631
if (timestamp->microsecond == 0)
642
snprintf(param->converted_data, 26, "%"PRIu16"-%"PRIu8"-%"PRIu32" %"PRIu16":%"PRIu8":%"PRIu8, timestamp->year, timestamp->month, timestamp->day, timestamp->hour, timestamp->minute, timestamp->second);
633
snprintf(buffer, 26, "%"PRIu16"-%"PRIu8"-%"PRIu32" %"PRIu16":%"PRIu8":%"PRIu8, timestamp->year, timestamp->month, timestamp->day, timestamp->hour, timestamp->minute, timestamp->second);
646
snprintf(param->converted_data, 26, "%"PRIu16"-%"PRIu8"-%"PRIu32" %"PRIu16":%"PRIu8":%"PRIu8".%"PRIu32, timestamp->year, timestamp->month, timestamp->day, timestamp->hour, timestamp->minute, timestamp->second, timestamp->microsecond);
637
snprintf(buffer, 26, "%"PRIu16"-%"PRIu8"-%"PRIu32" %"PRIu16":%"PRIu8":%"PRIu8".%"PRIu32, timestamp->year, timestamp->month, timestamp->day, timestamp->hour, timestamp->minute, timestamp->second, timestamp->microsecond);
648
return param->converted_data;
651
642
uint16_t drizzle_stmt_column_lookup(drizzle_result_st *result, const char *column_name, drizzle_return_t *ret_ptr)