Exemplo n.º 1
0
static void
getDatabaseList(PGconn *conn)
{
	int database_count;
	int ii;
	PGresult *res;

	/* SQL Statement */
	static const char *STMT_GET_DATABASE_LIST = "SELECT DATNAME FROM PG_DATABASE;";

	/*
	 * Get database list
	 */
	res = PQexec(conn, STMT_GET_DATABASE_LIST);
	if (res == NULL || PQresultStatus(res) != PGRES_TUPLES_OK)
	{
		fprintf(stderr, "Could not obtain database list.\n");
		PQclear(res);
		exit (1);
	}
	database_count = PQntuples(res);
	for(ii = 0; ii < database_count; ii++)
		add_database_info(PQgetvalue(res, ii, 0));
	PQclear(res);
}
Exemplo n.º 2
0
static txn_info *
make_txn_info(char *dbname, TransactionId gxid, char *xid, char *owner)
{
	database_info *dbinfo;
	txn_info *txn;

	if ((dbinfo = find_database_info(dbname)) == NULL)
		dbinfo = add_database_info(dbname);
	txn = (txn_info *)malloc(sizeof(txn_info));
	if (txn == NULL)
		return NULL;
	memset(txn, 0, sizeof(txn_info));
	txn->gxid = gxid;
	txn->xid = strdup(xid);
	if (txn->xid == NULL)
	{
		free(txn);
		return NULL;
	}
	txn->owner = strdup(owner);
	if (txn->owner == NULL)
	{
		free(txn);
		return NULL;
	}
	if (dbinfo->head_txn_info == NULL)
	{
		dbinfo->head_txn_info = dbinfo->last_txn_info = txn;
	}
	else
	{
		dbinfo->last_txn_info->next = txn;
		dbinfo->last_txn_info = txn;
	}
	txn->txn_stat = (TXN_STATUS *)malloc(sizeof(TXN_STATUS) * pgxc_clean_node_count);
	if (txn->txn_stat == NULL)
		return(NULL);
	memset(txn->txn_stat, 0, sizeof(TXN_STATUS) * pgxc_clean_node_count);
	return txn;
}