71
71
static DRIZZLE_PARAMETERS drizzle_internal_parameters=
72
72
{&max_allowed_packet, &net_buffer_length, 0};
74
const DRIZZLE_PARAMETERS * drizzle_get_parameters(void)
74
const DRIZZLE_PARAMETERS * drizzleclient_get_parameters(void)
76
76
return &drizzle_internal_parameters;
79
unsigned int drizzle_get_default_port(void)
79
unsigned int drizzleclient_get_default_port(void)
81
81
return drizzle_port;
84
void drizzle_set_default_port(unsigned int port)
84
void drizzleclient_set_default_port(unsigned int port)
86
86
drizzle_port= port;
197
197
/**************************************************************************
198
198
Do a query. If query returned rows, free old rows.
199
Read data by drizzle_store_result or by repeat call of drizzle_fetch_row
199
Read data by drizzleclient_store_result or by repeat call of drizzleclient_fetch_row
200
200
**************************************************************************/
203
drizzle_query(DRIZZLE *drizzle, const char *query)
203
drizzleclient_query(DRIZZLE *drizzle, const char *query)
205
return drizzle_real_query(drizzle,query, (uint32_t) strlen(query));
205
return drizzleclient_real_query(drizzle,query, (uint32_t) strlen(query));
237
237
/*************************************************************************
238
238
put the row or field cursor one a position one got from DRIZZLE_ROW_tell()
239
This doesn't restore any data. The next drizzle_fetch_row or
240
drizzle_fetch_field will return the next row or field after the last used
239
This doesn't restore any data. The next drizzleclient_fetch_row or
240
drizzleclient_fetch_field will return the next row or field after the last used
241
241
*************************************************************************/
243
243
DRIZZLE_ROW_OFFSET
244
drizzle_row_seek(DRIZZLE_RES *result, DRIZZLE_ROW_OFFSET row)
244
drizzleclient_row_seek(DRIZZLE_RES *result, DRIZZLE_ROW_OFFSET row)
246
246
DRIZZLE_ROW_OFFSET return_value=result->data_cursor;
247
247
result->current_row= 0;
265
265
*****************************************************************************/
268
drizzle_list_tables(DRIZZLE *drizzle, const char *wild)
268
drizzleclient_list_tables(DRIZZLE *drizzle, const char *wild)
271
271
char *ptr= strcpy(buff, "show tables");
272
272
ptr+= 11; /* strlen("show tables"); */
274
274
append_wild(ptr,buff+sizeof(buff),wild);
275
if (drizzle_query(drizzle,buff))
275
if (drizzleclient_query(drizzle,buff))
277
return (drizzle_store_result(drizzle));
277
return (drizzleclient_store_result(drizzle));
281
DRIZZLE_FIELD *cli_list_fields(DRIZZLE *drizzle)
281
DRIZZLE_FIELD *drizzleclient_cli_list_fields(DRIZZLE *drizzle)
283
283
DRIZZLE_DATA *query;
284
if (!(query= cli_read_rows(drizzle,(DRIZZLE_FIELD*) 0, 8)))
284
if (!(query= drizzleclient_cli_read_rows(drizzle,(DRIZZLE_FIELD*) 0, 8)))
287
287
drizzle->field_count= (uint32_t) query->rows;
288
return unpack_fields(query, drizzle->field_count, 1);
288
return drizzleclient_unpack_fields(query, drizzle->field_count, 1);
306
306
end= strncpy(buff, table, 128) + 128;
307
307
end= strncpy(end+1, wild ? wild : "", 128) + 128;
309
free_old_query(drizzle);
309
drizzleclient_free_old_query(drizzle);
310
310
if (simple_command(drizzle, COM_FIELD_LIST, (unsigned char*) buff,
311
311
(uint32_t) (end-buff), 1) ||
312
312
!(fields= (*drizzle->methods->list_fields)(drizzle)))
337
337
if (simple_command(drizzle,COM_PROCESS_INFO,0,0,0))
339
free_old_query(drizzle);
339
drizzleclient_free_old_query(drizzle);
340
340
pos=(unsigned char*) drizzle->net.read_pos;
341
field_count=(uint32_t) net_field_length(&pos);
341
field_count=(uint32_t) drizzleclient_net_field_length(&pos);
342
342
if (!(fields = (*drizzle->methods->read_rows)(drizzle,(DRIZZLE_FIELD*) 0, 7)))
344
if (!(drizzle->fields=unpack_fields(fields, field_count, 0)))
344
if (!(drizzle->fields=drizzleclient_unpack_fields(fields, field_count, 0)))
346
346
drizzle->status=DRIZZLE_STATUS_GET_RESULT;
347
347
drizzle->field_count=field_count;
348
return(drizzle_store_result(drizzle));
348
return(drizzleclient_store_result(drizzle));
353
drizzle_shutdown(DRIZZLE *drizzle)
353
drizzleclient_shutdown(DRIZZLE *drizzle)
355
355
return(simple_command(drizzle, COM_SHUTDOWN, 0, 0, 0));
360
drizzle_refresh(DRIZZLE *drizzle, uint32_t options)
360
drizzleclient_refresh(DRIZZLE *drizzle, uint32_t options)
362
362
unsigned char bits[1];
363
363
bits[0]= (unsigned char) options;
386
const char *cli_read_statistics(DRIZZLE *drizzle)
386
const char *drizzleclient_cli_read_statistics(DRIZZLE *drizzle)
388
388
drizzle->net.read_pos[drizzle->packet_length]=0; /* End of stat string */
389
389
if (!drizzle->net.read_pos[0])
391
drizzle_set_error(drizzle, CR_WRONG_HOST_INFO, sqlstate_get_unknown());
391
drizzleclient_set_error(drizzle, CR_WRONG_HOST_INFO, drizzleclient_sqlstate_get_unknown());
392
392
return drizzle->net.last_error;
394
394
return (char*) drizzle->net.read_pos;
410
drizzle_get_server_info(const DRIZZLE *drizzle)
410
drizzleclient_get_server_info(const DRIZZLE *drizzle)
412
412
return((char*) drizzle->server_version);
417
drizzle_get_host_info(const DRIZZLE *drizzle)
417
drizzleclient_get_host_info(const DRIZZLE *drizzle)
419
419
return(drizzle->host_info);
424
drizzle_get_proto_info(const DRIZZLE *drizzle)
424
drizzleclient_get_proto_info(const DRIZZLE *drizzle)
426
426
return (drizzle->protocol_version);
430
drizzle_get_client_info(void)
430
drizzleclient_get_client_info(void)
432
432
return (char*) VERSION;
435
uint32_t drizzle_get_client_version(void)
435
uint32_t drizzleclient_get_client_version(void)
437
437
return DRIZZLE_VERSION_ID;
440
bool drizzle_eof(const DRIZZLE_RES *res)
440
bool drizzleclient_eof(const DRIZZLE_RES *res)
445
const DRIZZLE_FIELD * drizzle_fetch_field_direct(const DRIZZLE_RES *res, unsigned int fieldnr)
445
const DRIZZLE_FIELD * drizzleclient_fetch_field_direct(const DRIZZLE_RES *res, unsigned int fieldnr)
447
447
return &(res)->fields[fieldnr];
450
const DRIZZLE_FIELD * drizzle_fetch_fields(const DRIZZLE_RES *res)
450
const DRIZZLE_FIELD * drizzleclient_fetch_fields(const DRIZZLE_RES *res)
452
452
return res->fields;
455
DRIZZLE_ROW_OFFSET drizzle_row_tell(const DRIZZLE_RES *res)
455
DRIZZLE_ROW_OFFSET drizzleclient_row_tell(const DRIZZLE_RES *res)
457
457
return res->data_cursor;
460
DRIZZLE_FIELD_OFFSET drizzle_field_tell(const DRIZZLE_RES *res)
460
DRIZZLE_FIELD_OFFSET drizzleclient_field_tell(const DRIZZLE_RES *res)
462
462
return res->current_field;
467
unsigned int drizzle_field_count(const DRIZZLE *drizzle)
467
unsigned int drizzleclient_field_count(const DRIZZLE *drizzle)
469
469
return drizzle->field_count;
472
uint64_t drizzle_affected_rows(const DRIZZLE *drizzle)
472
uint64_t drizzleclient_affected_rows(const DRIZZLE *drizzle)
474
474
return drizzle->affected_rows;
477
uint64_t drizzle_insert_id(const DRIZZLE *drizzle)
477
uint64_t drizzleclient_insert_id(const DRIZZLE *drizzle)
479
479
return drizzle->insert_id;
482
const char * drizzle_sqlstate(const DRIZZLE *drizzle)
482
const char * drizzleclient_sqlstate(const DRIZZLE *drizzle)
484
return drizzle ? drizzle->net.sqlstate : sqlstate_get_cant_connect();
484
return drizzle ? drizzle->net.sqlstate : drizzleclient_sqlstate_get_cant_connect();
487
uint32_t drizzle_warning_count(const DRIZZLE *drizzle)
487
uint32_t drizzleclient_warning_count(const DRIZZLE *drizzle)
489
489
return drizzle->warning_count;
492
const char * drizzle_info(const DRIZZLE *drizzle)
492
const char * drizzleclient_info(const DRIZZLE *drizzle)
494
494
return drizzle->info;
497
uint32_t drizzle_thread_id(const DRIZZLE *drizzle)
497
uint32_t drizzleclient_thread_id(const DRIZZLE *drizzle)
499
499
return drizzle->thread_id;
504
504
****************************************************************************/
507
Functions called my my_net_init() to set some application specific variables
507
Functions called my drizzleclient_net_init() to set some application specific variables
510
void my_net_local_init(NET *net)
510
void drizzleclient_net_local_init(NET *net)
512
512
net->max_packet= (uint32_t) net_buffer_length;
513
my_net_set_read_timeout(net, CLIENT_NET_READ_TIMEOUT);
514
my_net_set_write_timeout(net, CLIENT_NET_WRITE_TIMEOUT);
513
drizzleclient_net_set_read_timeout(net, CLIENT_NET_READ_TIMEOUT);
514
drizzleclient_net_set_write_timeout(net, CLIENT_NET_WRITE_TIMEOUT);
515
515
net->retry_count= 1;
516
516
net->max_packet_size= (net_buffer_length > max_allowed_packet) ?
517
517
net_buffer_length : max_allowed_packet;
593
593
return overflow ? (size_t) -1 : (size_t) (to - to_start);
596
int cli_unbuffered_fetch(DRIZZLE *drizzle, char **row)
596
int drizzleclient_cli_unbuffered_fetch(DRIZZLE *drizzle, char **row)
598
if (packet_error == cli_safe_read(drizzle))
598
if (packet_error == drizzleclient_cli_safe_read(drizzle))
601
601
*row= ((drizzle->net.read_pos[0] == DRIZZLE_PROTOCOL_NO_MORE_DATA) ? NULL :
611
611
Commit the current transaction
614
bool drizzle_commit(DRIZZLE *drizzle)
614
bool drizzleclient_commit(DRIZZLE *drizzle)
616
return((bool) drizzle_real_query(drizzle, "commit", 6));
616
return((bool) drizzleclient_real_query(drizzle, "commit", 6));
620
620
Rollback the current transaction
623
bool drizzle_rollback(DRIZZLE *drizzle)
623
bool drizzleclient_rollback(DRIZZLE *drizzle)
625
return((bool) drizzle_real_query(drizzle, "rollback", 8));
625
return((bool) drizzleclient_real_query(drizzle, "rollback", 8));
630
630
Set autocommit to either true or false
633
bool drizzle_autocommit(DRIZZLE *drizzle, bool auto_mode)
633
bool drizzleclient_autocommit(DRIZZLE *drizzle, bool auto_mode)
635
return((bool) drizzle_real_query(drizzle, auto_mode ?
635
return((bool) drizzleclient_real_query(drizzle, auto_mode ?
636
636
"set autocommit=1":"set autocommit=0",
657
657
Reads and returns the next query results
659
int drizzle_next_result(DRIZZLE *drizzle)
659
int drizzleclient_next_result(DRIZZLE *drizzle)
661
661
if (drizzle->status != DRIZZLE_STATUS_READY)
663
drizzle_set_error(drizzle, CR_COMMANDS_OUT_OF_SYNC, sqlstate_get_unknown());
663
drizzleclient_set_error(drizzle, CR_COMMANDS_OUT_OF_SYNC, drizzleclient_sqlstate_get_unknown());
667
net_clear_error(&drizzle->net);
667
drizzleclient_drizzleclient_net_clear_error(&drizzle->net);
668
668
drizzle->affected_rows= ~(uint64_t) 0;
670
670
if (drizzle->server_status & SERVER_MORE_RESULTS_EXISTS)