190
190
drizzle =drizzle_create(NULL);
191
191
con= drizzle_con_create(drizzle, NULL);
192
192
insert_con= drizzle_con_create(drizzle, NULL);
194
drizzle_set_timeout(drizzle, -1);
195
assert(drizzle_timeout(drizzle) == -1);
195
198
Drizzle::~Drizzle()
323
326
gearmand_info("Initializing libdrizzle module");
325
if (drizzle_create(queue->drizzle) == NULL)
327
gearmand_error("drizzle_create");
328
return GEARMAN_QUEUE_ERROR;
331
if (drizzle_con_create(queue->drizzle, queue->con) == NULL)
333
gearmand_error("drizzle_con_create");
334
return GEARMAN_QUEUE_ERROR;
337
if (drizzle_con_create(queue->drizzle, queue->insert_con) == NULL)
339
gearmand_error("drizzle_con_create");
340
return GEARMAN_QUEUE_ERROR;
343
drizzle_con_set_db(queue->con, queue->schema.c_str());
344
drizzle_con_set_db(queue->insert_con, queue->schema.c_str());
346
328
if (queue->mysql_protocol)
348
330
drizzle_con_set_options(queue->con, DRIZZLE_CON_MYSQL);
364
346
drizzle_con_set_auth(queue->insert_con, queue->user.c_str(), queue->password.c_str());
365
347
gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "Using '%s' as the username", queue->user.c_str());
349
drizzle_con_set_db(queue->con, "INFORMATION_SCHEMA");
367
351
std::string query;
369
query+= "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = \"";
370
query+= queue->schema;
372
if (libdrizzle_failed(_libdrizzle_query(queue, query.c_str(), query.size())))
374
return gearmand_gerror("Error occurred while searching for gearman queue schema", GEARMAN_QUEUE_ERROR);
377
if (libdrizzle_failed(drizzle_result_buffer(queue->result())))
379
return gearmand_gerror(drizzle_error(queue->drizzle), GEARMAN_QUEUE_ERROR);
382
if (drizzle_result_row_count(queue->result()) == 0)
384
return gearmand_gerror("Error occurred while search for gearman queue schema", GEARMAN_QUEUE_ERROR);
386
drizzle_result_free(queue->result());
355
query+= "CREATE SCHEMA IF NOT EXISTS " +queue->schema;
356
if (libdrizzle_failed(_libdrizzle_query(queue, query.c_str(), query.size())))
358
return gearmand_gerror(drizzle_error(queue->drizzle), GEARMAN_QUEUE_ERROR);
361
if (libdrizzle_failed(drizzle_column_skip_all(queue->result())))
363
drizzle_result_free(queue->result());
364
return gearmand_gerror(drizzle_error(queue->drizzle), GEARMAN_QUEUE_ERROR);
366
drizzle_result_free(queue->result());
372
query+= "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = \"";
373
query+= queue->schema;
375
if (libdrizzle_failed(_libdrizzle_query(queue, query.c_str(), query.size())))
377
return gearmand_gerror("Error occurred while searching for gearman queue schema", GEARMAN_QUEUE_ERROR);
380
if (libdrizzle_failed(drizzle_result_buffer(queue->result())))
382
return gearmand_gerror(drizzle_error(queue->drizzle), GEARMAN_QUEUE_ERROR);
385
if (drizzle_result_row_count(queue->result()) == 0)
387
return gearmand_gerror("Error occurred while search for gearman queue schema", GEARMAN_QUEUE_ERROR);
389
drizzle_result_free(queue->result());
392
drizzle_con_set_db(queue->con, queue->schema.c_str());
393
drizzle_con_set_db(queue->insert_con, queue->schema.c_str());
388
395
// We need to check and see if the tables exists, and if not create it
410
query+= "CREATE TABLE " +queue->table + "( unique_key VARCHAR(" + TOSTRING(GEARMAN_UNIQUE_SIZE) + "),";
417
query+= "CREATE TABLE " +queue->schema + "." +queue->table + "( unique_key VARCHAR(" + TOSTRING(GEARMAN_UNIQUE_SIZE) + "),";
411
418
query+= "function_name VARCHAR(255), priority INT, data LONGBLOB, when_to_run BIGINT, unique key (unique_key, function_name))";
413
420
if (libdrizzle_failed(_libdrizzle_query(queue, query.c_str(), query.size())))