~clint-fewbar/gearmand/fix-postgresql-path

« back to all changes in this revision

Viewing changes to libgearman-server/plugins/queue/drizzle/queue.cc

merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
190
190
  drizzle =drizzle_create(NULL);
191
191
  con= drizzle_con_create(drizzle, NULL);
192
192
  insert_con= drizzle_con_create(drizzle, NULL);
 
193
 
 
194
  drizzle_set_timeout(drizzle, -1);
 
195
  assert(drizzle_timeout(drizzle) == -1);
193
196
}
194
197
 
195
198
Drizzle::~Drizzle()
322
325
{
323
326
  gearmand_info("Initializing libdrizzle module");
324
327
 
325
 
  if (drizzle_create(queue->drizzle) == NULL)
326
 
  {
327
 
    gearmand_error("drizzle_create");
328
 
    return GEARMAN_QUEUE_ERROR;
329
 
  }
330
 
 
331
 
  if (drizzle_con_create(queue->drizzle, queue->con) == NULL)
332
 
  {
333
 
    gearmand_error("drizzle_con_create");
334
 
    return GEARMAN_QUEUE_ERROR;
335
 
  }
336
 
 
337
 
  if (drizzle_con_create(queue->drizzle, queue->insert_con) == NULL)
338
 
  {
339
 
    gearmand_error("drizzle_con_create");
340
 
    return GEARMAN_QUEUE_ERROR;
341
 
  }
342
 
 
343
 
  drizzle_con_set_db(queue->con, queue->schema.c_str());
344
 
  drizzle_con_set_db(queue->insert_con, queue->schema.c_str());
345
 
 
346
328
  if (queue->mysql_protocol)
347
329
  {
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());
366
348
 
 
349
  drizzle_con_set_db(queue->con, "INFORMATION_SCHEMA");
 
350
 
367
351
  std::string query;
368
 
 
369
 
  query+= "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = \"";
370
 
  query+= queue->schema;
371
 
  query+= "\"";
372
 
  if (libdrizzle_failed(_libdrizzle_query(queue, query.c_str(), query.size())))
373
 
  {
374
 
    return gearmand_gerror("Error occurred while searching for gearman queue schema", GEARMAN_QUEUE_ERROR);
375
 
  }
376
 
 
377
 
  if (libdrizzle_failed(drizzle_result_buffer(queue->result())))
378
 
  {
379
 
    return gearmand_gerror(drizzle_error(queue->drizzle), GEARMAN_QUEUE_ERROR);
380
 
  }
381
 
 
382
 
  if (drizzle_result_row_count(queue->result()) == 0)
383
 
  {
384
 
    return gearmand_gerror("Error occurred while search for gearman queue schema", GEARMAN_QUEUE_ERROR);
385
 
  }
386
 
  drizzle_result_free(queue->result());
 
352
  {
 
353
    query.clear();
 
354
 
 
355
    query+= "CREATE SCHEMA IF NOT EXISTS  " +queue->schema;
 
356
    if (libdrizzle_failed(_libdrizzle_query(queue, query.c_str(), query.size())))
 
357
    {
 
358
      return gearmand_gerror(drizzle_error(queue->drizzle), GEARMAN_QUEUE_ERROR);
 
359
    }
 
360
 
 
361
    if (libdrizzle_failed(drizzle_column_skip_all(queue->result())))
 
362
    {
 
363
      drizzle_result_free(queue->result());
 
364
      return gearmand_gerror(drizzle_error(queue->drizzle), GEARMAN_QUEUE_ERROR);
 
365
    }
 
366
    drizzle_result_free(queue->result());
 
367
  }
 
368
 
 
369
  // Look for schema
 
370
  {
 
371
    query.clear();
 
372
    query+= "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = \"";
 
373
    query+= queue->schema;
 
374
    query+= "\"";
 
375
    if (libdrizzle_failed(_libdrizzle_query(queue, query.c_str(), query.size())))
 
376
    {
 
377
      return gearmand_gerror("Error occurred while searching for gearman queue schema", GEARMAN_QUEUE_ERROR);
 
378
    }
 
379
 
 
380
    if (libdrizzle_failed(drizzle_result_buffer(queue->result())))
 
381
    {
 
382
      return gearmand_gerror(drizzle_error(queue->drizzle), GEARMAN_QUEUE_ERROR);
 
383
    }
 
384
 
 
385
    if (drizzle_result_row_count(queue->result()) == 0)
 
386
    {
 
387
      return gearmand_gerror("Error occurred while search for gearman queue schema", GEARMAN_QUEUE_ERROR);
 
388
    }
 
389
    drizzle_result_free(queue->result());
 
390
  }
 
391
 
 
392
  drizzle_con_set_db(queue->con, queue->schema.c_str());
 
393
  drizzle_con_set_db(queue->insert_con, queue->schema.c_str());
387
394
 
388
395
  // We need to check and see if the tables exists, and if not create it
389
396
  query.clear();
407
414
 
408
415
    query.clear();
409
416
 
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))";
412
419
 
413
420
    if (libdrizzle_failed(_libdrizzle_query(queue, query.c_str(), query.size())))