EXEC SQL INCLUDE ../regression;
EXEC SQL WHENEVER SQLERROR SQLPRINT;

int
main(void)
{
	EXEC SQL BEGIN DECLARE SECTION;
	char *stmt1 = "INSERT INTO test1 VALUES ($1, $2)";
	char *stmt2 = "SELECT * from test1 where a = $1 and b = $2";
	char *stmt3 = "SELECT * from test1 where :var = a";

	int val1 = 1;
	char val2[4] = "one", val2output[] = "AAA";
	int val1output = 2, val2i = 0;
	int val2null = -1;
	int ind1, ind2;
	char desc1[8] = "outdesc";
	EXEC SQL END DECLARE SECTION;

	ECPGdebug(1, stderr);

	EXEC SQL ALLOCATE DESCRIPTOR indesc;
	EXEC SQL ALLOCATE DESCRIPTOR :desc1;

	EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1;
	EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2;

	EXEC SQL CONNECT TO REGRESSDB1;

	EXEC SQL CREATE TABLE test1 (a int, b text);
	EXEC SQL PREPARE foo1 FROM :stmt1;
	EXEC SQL PREPARE "Foo-1" FROM :stmt1;
	EXEC SQL PREPARE foo2 FROM :stmt2;
	EXEC SQL PREPARE foo3 FROM :stmt3;

	EXEC SQL EXECUTE foo1 USING SQL DESCRIPTOR indesc;

	EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2;
	EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2null, DATA = :val2;

	EXEC SQL EXECUTE foo1 USING SQL DESCRIPTOR indesc;

	EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 3;
	EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val1, DATA = 'this is a long test';

	EXEC SQL EXECUTE "Foo-1" USING SQL DESCRIPTOR indesc;

	EXEC SQL DEALLOCATE "Foo-1";

	EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = :val1;
	EXEC SQL SET DESCRIPTOR indesc VALUE 2 INDICATOR = :val2i, DATA = :val2;

	EXEC SQL EXECUTE foo2 USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR :desc1;

	EXEC SQL GET DESCRIPTOR :desc1 VALUE 1 :val2output = DATA;
	printf("output = %s\n", val2output);

	EXEC SQL DECLARE c1 CURSOR FOR foo2;
	EXEC SQL OPEN c1 USING SQL DESCRIPTOR indesc;

	EXEC SQL FETCH next FROM c1 INTO :val1output:ind1, :val2output:ind2;
	printf("val1=%d (ind1: %d) val2=%s (ind2: %d)\n",
		val1output, ind1, val2output, ind2);

	EXEC SQL CLOSE c1;

	EXEC SQL SET DESCRIPTOR indesc COUNT = 1;
	EXEC SQL SET DESCRIPTOR indesc VALUE 1 DATA = 2;

	EXEC SQL DECLARE c2 CURSOR FOR foo3;
	EXEC SQL OPEN c2 USING SQL DESCRIPTOR indesc;

	EXEC SQL FETCH next FROM c2 INTO :val1output, :val2output :val2i;
	printf("val1=%d val2=%s\n", val1output, val2i ? "null" : val2output);

	EXEC SQL CLOSE c2;

	EXEC SQL SELECT * INTO :val1output, :val2output:val2i FROM test1 where a = 3;
	printf("val1=%d val2=%c%c%c%c warn=%c truncate=%d\n", val1output, val2output[0], val2output[1], val2output[2], val2output[3], sqlca.sqlwarn[0], val2i);

	EXEC SQL DROP TABLE test1;
	EXEC SQL DEALLOCATE ALL;
	EXEC SQL DISCONNECT;

	EXEC SQL DEALLOCATE DESCRIPTOR indesc;
	EXEC SQL DEALLOCATE DESCRIPTOR :desc1;

	return 0;
}
