#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* test parser addition that merges two tokens into one */
EXEC SQL INCLUDE ../regression;

int main() {
  EXEC SQL BEGIN DECLARE SECTION;
	int item[3], ind[3], i;
  EXEC SQL END DECLARE SECTION;

  ECPGdebug(1, stderr);
  EXEC SQL CONNECT TO REGRESSDB1;

  EXEC SQL SET AUTOCOMMIT TO ON;
  EXEC SQL WHENEVER SQLWARNING SQLPRINT;
  EXEC SQL WHENEVER SQLERROR SQLPRINT;

  EXEC SQL CREATE TABLE T ( Item1 int, Item2 int );

  EXEC SQL INSERT INTO t
           SELECT 1,nullif(y-1,0)
             FROM generate_series(1,3) WITH ORDINALITY AS series(x,y);

  EXEC SQL SELECT Item2 INTO :item:ind FROM T ORDER BY Item2 NULLS LAST;

  for (i=0; i<3; i++)
	printf("item[%d] = %d\n", i, ind[i] ? -1 : item[i]);

  EXEC SQL ALTER TABLE T ALTER Item1 TYPE bigint;
  EXEC SQL ALTER TABLE T ALTER COLUMN Item2 SET DATA TYPE smallint;

  EXEC SQL DROP TABLE T;

  EXEC SQL DISCONNECT ALL;

  return 0;
}
