(unnamed)

text/plain

Filename: (unnamed)
Type: text/plain
Part: 0
Message: Re: exec_execute_message crash
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#include "libpq-fe.h"
#include "libpq/libpq-fs.h"

int main(int argc, char **argv) {
	PGconn *conn;
	PGresult *res;
	int doTrace = 0;
	int doTransaction = 1;
	int i;

	static char *commands[] = {
		"SELECT 1 FROM pg_catalog.pg_type WHERE typname = 'smgr' AND typinput='array_in'::regproc",
		"SELECT typname FROM pg_catalog.pg_type WHERE oid = 210",
		"SELECT NULL , n.nspname,  ct.relname,  a.attname,  a.attnum,  ci.relname FROM pg_catalog.pg_namespace n, pg_catalog.pg_class ct, pg_catalog.pg_class ci, pg_catalog.pg_attribute a, pg_catalog.pg_index i  WHERE ct.oid=i.indrelid AND ci.oid=i.indexrelid  AND a.attrelid=ci.oid AND i.indisprimary  AND ct.relname = 'mst_Ucompany_feature_setting'  AND ct.relnamespace = n.oid  AND n.nspname = 'foo' ORDER BY 1, 2, 3",
		"SELECT * FROM foo",
	};
	
	conn = PQconnectdb("user=t-ishii dbname=test port=5433");
	if (PQstatus(conn) == CONNECTION_BAD) {
		printf("Unable to connect to db\n");
		PQfinish(conn);
		return 1;
	}

	if(doTrace == 1)
	  PQtrace(conn, stdout);

	if(doTransaction)
	  PQexec(conn,"BEGIN;");

	for (i=0;i<sizeof(commands)/sizeof(char *);i++)
	{
		char *command = commands[i];
	
		res = PQexecParams(conn, command, 0, NULL, NULL, NULL, NULL, 0);
		switch(PQresultStatus(res)) {
			case PGRES_COMMAND_OK:
			case PGRES_TUPLES_OK:
				fprintf(stderr, "\"%s\" : succeeded\n", command);
				break;
			default:
				fprintf(stderr, "\"%s\" failed: %s\n", command, PQresultErrorMessage(res));
				break;
		}
		PQclear(res);

	}

	if(doTransaction == 1) {
		PQexec(conn,"COMMIT;");
	}
	
	PQfinish(conn);
	return 0;
}