Ejemplo n.º 1
0
static void c_psql_database_delete (void *data)
{
	size_t i;

	c_psql_database_t *db = data;

	PQfinish (db->conn);
	db->conn = NULL;

	if (db->q_prep_areas)
		for (i = 0; i < db->queries_num; ++i)
			udb_query_delete_preparation_area (db->q_prep_areas[i]);
	free (db->q_prep_areas);

	sfree (db->queries);
	db->queries_num = 0;

	sfree (db->database);
	sfree (db->host);
	sfree (db->port);
	sfree (db->user);
	sfree (db->password);

	sfree (db->instance);

	sfree (db->sslmode);

	sfree (db->krbsrvname);

	sfree (db->service);
	return;
} /* c_psql_database_delete */
Ejemplo n.º 2
0
static void cdbi_database_free (cdbi_database_t *db) /* {{{ */
{
  size_t i;

  if (db == NULL)
    return;

  sfree (db->name);
  sfree (db->driver);

  for (i = 0; i < db->driver_options_num; i++)
  {
    sfree (db->driver_options[i].key);
    if (!db->driver_options[i].is_numeric)
      sfree (db->driver_options[i].value.string);
  }
  sfree (db->driver_options);

  if (db->q_prep_areas)
    for (i = 0; i < db->queries_num; ++i)
      udb_query_delete_preparation_area (db->q_prep_areas[i]);
  free (db->q_prep_areas);

  sfree (db);
} /* }}} void cdbi_database_free */
Ejemplo n.º 3
0
static void c_psql_database_delete (void *data)
{
	size_t i;

	c_psql_database_t *db = data;

	--db->ref_cnt;
	/* readers and writers may access this database */
	if (db->ref_cnt > 0)
		return;

	/* wait for the lock to be released by the last writer */
	pthread_mutex_lock (&db->db_lock);

	if (db->next_commit > 0)
		c_psql_commit (db);

	PQfinish (db->conn);
	db->conn = NULL;

	if (db->q_prep_areas)
		for (i = 0; i < db->queries_num; ++i)
			udb_query_delete_preparation_area (db->q_prep_areas[i]);
	free (db->q_prep_areas);

	sfree (db->queries);
	db->queries_num = 0;

	sfree (db->writers);
	db->writers_num = 0;

	pthread_mutex_unlock (&db->db_lock);

	pthread_mutex_destroy (&db->db_lock);

	sfree (db->database);
	sfree (db->host);
	sfree (db->port);
	sfree (db->user);
	sfree (db->password);

	sfree (db->instance);

	sfree (db->sslmode);

	sfree (db->krbsrvname);

	sfree (db->service);

	/* don't care about freeing or reordering the 'databases' array
	 * this is done in 'shutdown'; also, don't free the database instance
	 * object just to make sure that in case anybody accesses it before
	 * shutdown won't segfault */
	return;
} /* c_psql_database_delete */
Ejemplo n.º 4
0
static void o_database_free (o_database_t *db) /* {{{ */
{
  if (db == NULL)
    return;

  sfree (db->name);
  sfree (db->connect_id);
  sfree (db->username);
  sfree (db->password);
  sfree (db->queries);

  if (db->q_prep_areas != NULL)
    for (size_t i = 0; i < db->queries_num; ++i)
      udb_query_delete_preparation_area (db->q_prep_areas[i]);
  free (db->q_prep_areas);

  sfree (db);
} /* }}} void o_database_free */