diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer
index 96c55349e8..8919631edb 100644
--- a/src/interfaces/ecpg/preproc/ecpg.trailer
+++ b/src/interfaces/ecpg/preproc/ecpg.trailer
@@ -1101,16 +1101,21 @@ UsingConst: Iconst			{ $$ = $1; }
  */
 ECPGDescribe: SQL_DESCRIBE INPUT_P prepared_name using_descriptor
 	{
-		const char *con = connection ? connection : "NULL";
+		const char *con;
+
+		check_declared_list($3);
+		con = connection ? connection : "NULL";
 		mmerror(PARSE_ERROR, ET_WARNING, "using unsupported DESCRIBE statement");
 		$$ = (char *) mm_alloc(sizeof("1, , ") + strlen(con) + strlen($3));
 		sprintf($$, "1, %s, %s", con, $3);
 	}
 	| SQL_DESCRIBE opt_output prepared_name using_descriptor
 	{
-		const char *con = connection ? connection : "NULL";
+		const char *con;
 		struct variable *var;
 
+		check_declared_list($3);
+		con = connection ? connection : "NULL";
 		var = argsinsert->variable;
 		remove_variable_from_list(&argsinsert, var);
 		add_variable_to_head(&argsresult, var, &no_indicator);
@@ -1120,20 +1125,29 @@ ECPGDescribe: SQL_DESCRIBE INPUT_P prepared_name using_descriptor
 	}
 	| SQL_DESCRIBE opt_output prepared_name into_descriptor
 	{
-		const char *con = connection ? connection : "NULL";
+		const char *con;
+
+		check_declared_list($3);
+		con = connection ? connection : "NULL";
 		$$ = (char *) mm_alloc(sizeof("0, , ") + strlen(con) + strlen($3));
 		sprintf($$, "0, %s, %s", con, $3);
 	}
 	| SQL_DESCRIBE INPUT_P prepared_name into_sqlda
 	{
-		const char *con = connection ? connection : "NULL";
+		const char *con;
+
+		check_declared_list($3);
+		con = connection ? connection : "NULL";
 		mmerror(PARSE_ERROR, ET_WARNING, "using unsupported DESCRIBE statement");
 		$$ = (char *) mm_alloc(sizeof("1, , ") + strlen(con) + strlen($3));
 		sprintf($$, "1, %s, %s", con, $3);
 	}
 	| SQL_DESCRIBE opt_output prepared_name into_sqlda
 	{
-		const char *con = connection ? connection : "NULL";
+		const char *con;
+
+		check_declared_list($3);
+		con = connection ? connection : "NULL";
 		$$ = (char *) mm_alloc(sizeof("0, , ") + strlen(con) + strlen($3));
 		sprintf($$, "0, %s, %s", con, $3);
 	}
@@ -1862,8 +1876,8 @@ c_anything:  ecpg_ident				{ $$ = $1; }
 		| ':'				{ $$ = mm_strdup(":"); }
 		;
 
-DeallocateStmt: DEALLOCATE prepared_name	{ $$ = $2; }
-		| DEALLOCATE PREPARE prepared_name	{ $$ = $3; }
+DeallocateStmt: DEALLOCATE prepared_name	{ check_declared_list($2); $$ = $2; }
+		| DEALLOCATE PREPARE prepared_name	{ check_declared_list($3); $$ = $3; }
 		| DEALLOCATE ALL					{ $$ = mm_strdup("all"); }
 		| DEALLOCATE PREPARE ALL			{ $$ = mm_strdup("all"); }
 		;
diff --git a/src/interfaces/ecpg/test/expected/sql-declare.c b/src/interfaces/ecpg/test/expected/sql-declare.c
index 7ca540df28..c06726699a 100644
--- a/src/interfaces/ecpg/test/expected/sql-declare.c
+++ b/src/interfaces/ecpg/test/expected/sql-declare.c
@@ -109,6 +109,7 @@ void printResult(char *tc_name, int loop);
  
  
  
+
 #line 18 "declare.pgc"
  int f1 [ ARRAY_SZIE ] ;
  
@@ -117,8 +118,11 @@ void printResult(char *tc_name, int loop);
  
 #line 20 "declare.pgc"
  char f3 [ ARRAY_SZIE ] [ 20 ] ;
-/* exec sql end declare section */
+ 
 #line 21 "declare.pgc"
+ int count ;
+/* exec sql end declare section */
+#line 22 "declare.pgc"
 
 
 int main(void)
@@ -128,55 +132,55 @@ int main(void)
     ECPGdebug(1, stderr);
 
     { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , "con1", 0); 
-#line 29 "declare.pgc"
+#line 30 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 29 "declare.pgc"
+#line 30 "declare.pgc"
 
     { ECPGconnect(__LINE__, 0, "ecpg2_regression" , NULL, NULL , "con2", 0); 
-#line 30 "declare.pgc"
+#line 31 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 30 "declare.pgc"
+#line 31 "declare.pgc"
 
 
     { ECPGdo(__LINE__, 0, 1, "con1", 0, ECPGst_normal, "create table source ( f1 integer , f2 integer , f3 varchar ( 20 ) )", ECPGt_EOIT, ECPGt_EORT);
-#line 32 "declare.pgc"
+#line 33 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 32 "declare.pgc"
+#line 33 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, "con2", 0, ECPGst_normal, "create table source ( f1 integer , f2 integer , f3 varchar ( 20 ) )", ECPGt_EOIT, ECPGt_EORT);
-#line 33 "declare.pgc"
+#line 34 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 33 "declare.pgc"
+#line 34 "declare.pgc"
 
 
     { ECPGdo(__LINE__, 0, 1, "con1", 0, ECPGst_normal, "insert into source values ( 1 , 10 , 'db on con1' )", ECPGt_EOIT, ECPGt_EORT);
-#line 35 "declare.pgc"
+#line 36 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 35 "declare.pgc"
+#line 36 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, "con1", 0, ECPGst_normal, "insert into source values ( 2 , 20 , 'db on con1' )", ECPGt_EOIT, ECPGt_EORT);
-#line 36 "declare.pgc"
+#line 37 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 36 "declare.pgc"
+#line 37 "declare.pgc"
 
 
     { ECPGdo(__LINE__, 0, 1, "con2", 0, ECPGst_normal, "insert into source values ( 1 , 10 , 'db on con2' )", ECPGt_EOIT, ECPGt_EORT);
-#line 38 "declare.pgc"
+#line 39 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 38 "declare.pgc"
+#line 39 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, "con2", 0, ECPGst_normal, "insert into source values ( 2 , 20 , 'db on con2' )", ECPGt_EOIT, ECPGt_EORT);
-#line 39 "declare.pgc"
+#line 40 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 39 "declare.pgc"
+#line 40 "declare.pgc"
 
 
     commitTable();
@@ -184,25 +188,25 @@ if (sqlca.sqlcode < 0) sqlprint();}
     execute_test();
 
     { ECPGdo(__LINE__, 0, 1, "con1", 0, ECPGst_normal, "drop table if exists source", ECPGt_EOIT, ECPGt_EORT);
-#line 45 "declare.pgc"
+#line 46 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 45 "declare.pgc"
+#line 46 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, "con2", 0, ECPGst_normal, "drop table if exists source", ECPGt_EOIT, ECPGt_EORT);
-#line 46 "declare.pgc"
+#line 47 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 46 "declare.pgc"
+#line 47 "declare.pgc"
 
 
     commitTable();
 
     { ECPGdisconnect(__LINE__, "ALL");
-#line 50 "declare.pgc"
+#line 51 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 50 "declare.pgc"
+#line 51 "declare.pgc"
 
 
     return 0;
@@ -219,13 +223,13 @@ void execute_test(void)
      
        
     
-#line 63 "declare.pgc"
+#line 64 "declare.pgc"
  int i ;
  
-#line 64 "declare.pgc"
+#line 65 "declare.pgc"
  char * selectString = "SELECT f1,f2,f3 FROM source" ;
 /* exec sql end declare section */
-#line 65 "declare.pgc"
+#line 66 "declare.pgc"
 
 
     /*
@@ -235,28 +239,28 @@ void execute_test(void)
     reset();
 
     /* declare  \"stmt_1\"  as an SQL identifier */
-#line 73 "declare.pgc"
+#line 74 "declare.pgc"
 
     { ECPGprepare(__LINE__, NULL, 0, "stmt_1", selectString);
-#line 74 "declare.pgc"
+#line 75 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 74 "declare.pgc"
+#line 75 "declare.pgc"
 
     /* declare cur_1 cursor for $1 */
-#line 75 "declare.pgc"
+#line 76 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cur_1 cursor for $1", 
 	ECPGt_char_variable,(ECPGprepared_statement(NULL, "stmt_1", __LINE__)),(long)1,(long)1,(1)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
-#line 76 "declare.pgc"
+#line 77 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 76 "declare.pgc"
+#line 77 "declare.pgc"
 
 
     /* exec sql whenever not found  break ; */
-#line 78 "declare.pgc"
+#line 79 "declare.pgc"
 
     i = 0;
     while (1)
@@ -268,30 +272,30 @@ if (sqlca.sqlcode < 0) sqlprint();}
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
 	ECPGt_char,(f3[i]),(long)20,(long)1,(20)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
-#line 82 "declare.pgc"
+#line 83 "declare.pgc"
 
 if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
-#line 82 "declare.pgc"
+#line 83 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 82 "declare.pgc"
+#line 83 "declare.pgc"
 
         i++;
     }
     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cur_1", ECPGt_EOIT, ECPGt_EORT);
-#line 85 "declare.pgc"
+#line 86 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 85 "declare.pgc"
+#line 86 "declare.pgc"
 
     { ECPGdeallocate(__LINE__, 0, NULL, "stmt_1");
-#line 86 "declare.pgc"
+#line 87 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 86 "declare.pgc"
+#line 87 "declare.pgc"
 
     /* exec sql whenever not found  continue ; */
-#line 87 "declare.pgc"
+#line 88 "declare.pgc"
 
 
     printResult("testcase1", 2);
@@ -304,28 +308,55 @@ if (sqlca.sqlcode < 0) sqlprint();}
     reset();
 
     /* declare  \"stmt_2\"  as an SQL identifier */
-#line 98 "declare.pgc"
+#line 99 "declare.pgc"
 
     { ECPGprepare(__LINE__, "con1", 0, "stmt_2", selectString);
-#line 99 "declare.pgc"
+#line 100 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 99 "declare.pgc"
+#line 100 "declare.pgc"
 
     /* declare cur_2 cursor for $1 */
-#line 100 "declare.pgc"
+#line 101 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, "con1", 0, ECPGst_normal, "declare cur_2 cursor for $1", 
 	ECPGt_char_variable,(ECPGprepared_statement("con1", "stmt_2", __LINE__)),(long)1,(long)1,(1)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
-#line 101 "declare.pgc"
+#line 102 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 101 "declare.pgc"
+#line 102 "declare.pgc"
+
+
+    /* Of cause DESCRIBE clause can be used */
+    ECPGallocate_desc(__LINE__, "mydesc");
+#line 105 "declare.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();
+#line 105 "declare.pgc"
+
+    { ECPGdescribe(__LINE__, 0, 0, "con1", "stmt_2",
+	ECPGt_descriptor, "mydesc", 1L, 1L, 1L, 
+	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
+#line 106 "declare.pgc"
+
+    { ECPGget_desc_header(__LINE__, "mydesc", &(count));
+
+#line 107 "declare.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 107 "declare.pgc"
+
+    printf("descriptor: number of lines : %d\n\n", count);
+    { ECPGdeallocate(__LINE__, 0, "con1", "mydesc");
+#line 109 "declare.pgc"
+
+if (sqlca.sqlcode < 0) sqlprint();}
+#line 109 "declare.pgc"
 
 
     /* exec sql whenever not found  break ; */
-#line 103 "declare.pgc"
+#line 111 "declare.pgc"
 
     i = 0;
     while (1)
@@ -337,30 +368,30 @@ if (sqlca.sqlcode < 0) sqlprint();}
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
 	ECPGt_char,(f3[i]),(long)20,(long)1,(20)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
-#line 107 "declare.pgc"
+#line 115 "declare.pgc"
 
 if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
-#line 107 "declare.pgc"
+#line 115 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 107 "declare.pgc"
+#line 115 "declare.pgc"
 
         i++;
     }
     { ECPGdo(__LINE__, 0, 1, "con1", 0, ECPGst_normal, "close cur_2", ECPGt_EOIT, ECPGt_EORT);
-#line 110 "declare.pgc"
+#line 118 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 110 "declare.pgc"
+#line 118 "declare.pgc"
 
-    { ECPGdeallocate(__LINE__, 0, NULL, "stmt_2");
-#line 111 "declare.pgc"
+    { ECPGdeallocate(__LINE__, 0, "con1", "stmt_2");
+#line 119 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 111 "declare.pgc"
+#line 119 "declare.pgc"
 
     /* exec sql whenever not found  continue ; */
-#line 112 "declare.pgc"
+#line 120 "declare.pgc"
 
 
     printResult("testcase2", 2);
@@ -372,28 +403,28 @@ if (sqlca.sqlcode < 0) sqlprint();}
     reset();
 
     /* declare  \"stmt_3\"  as an SQL identifier */
-#line 122 "declare.pgc"
+#line 130 "declare.pgc"
 
     { ECPGprepare(__LINE__, "con1", 0, "stmt_3", selectString);
-#line 123 "declare.pgc"
+#line 131 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 123 "declare.pgc"
+#line 131 "declare.pgc"
 
     /* declare cur_3 cursor for $1 */
-#line 124 "declare.pgc"
+#line 132 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, "con1", 0, ECPGst_normal, "declare cur_3 cursor for $1", 
 	ECPGt_char_variable,(ECPGprepared_statement("con1", "stmt_3", __LINE__)),(long)1,(long)1,(1)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
-#line 125 "declare.pgc"
+#line 133 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 125 "declare.pgc"
+#line 133 "declare.pgc"
 
 
     /* exec sql whenever not found  break ; */
-#line 127 "declare.pgc"
+#line 135 "declare.pgc"
 
     i = 0;
     while (1)
@@ -405,30 +436,30 @@ if (sqlca.sqlcode < 0) sqlprint();}
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
 	ECPGt_char,(f3[i]),(long)20,(long)1,(20)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
-#line 131 "declare.pgc"
+#line 139 "declare.pgc"
 
 if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
-#line 131 "declare.pgc"
+#line 139 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 131 "declare.pgc"
+#line 139 "declare.pgc"
 
         i++;
     }
     { ECPGdo(__LINE__, 0, 1, "con1", 0, ECPGst_normal, "close cur_3", ECPGt_EOIT, ECPGt_EORT);
-#line 134 "declare.pgc"
+#line 142 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 134 "declare.pgc"
+#line 142 "declare.pgc"
 
-    { ECPGdeallocate(__LINE__, 0, "con2", "stmt_3");
-#line 135 "declare.pgc"
+    { ECPGdeallocate(__LINE__, 0, "con1", "stmt_3");
+#line 143 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 135 "declare.pgc"
+#line 143 "declare.pgc"
 
     /* exec sql whenever not found  continue ; */
-#line 136 "declare.pgc"
+#line 144 "declare.pgc"
 
 
     printResult("testcase3", 2);
@@ -441,28 +472,28 @@ if (sqlca.sqlcode < 0) sqlprint();}
     reset();
 
     /* declare  \"stmt_4\"  as an SQL identifier */
-#line 147 "declare.pgc"
+#line 155 "declare.pgc"
 
     { ECPGprepare(__LINE__, "con2", 0, "stmt_4", selectString);
-#line 148 "declare.pgc"
+#line 156 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 148 "declare.pgc"
+#line 156 "declare.pgc"
 
     /* declare cur_4 cursor for $1 */
-#line 149 "declare.pgc"
+#line 157 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, "con2", 0, ECPGst_normal, "declare cur_4 cursor for $1", 
 	ECPGt_char_variable,(ECPGprepared_statement("con2", "stmt_4", __LINE__)),(long)1,(long)1,(1)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
-#line 150 "declare.pgc"
+#line 158 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 150 "declare.pgc"
+#line 158 "declare.pgc"
 
 
     /* exec sql whenever not found  break ; */
-#line 152 "declare.pgc"
+#line 160 "declare.pgc"
 
     i = 0;
     while (1)
@@ -474,30 +505,30 @@ if (sqlca.sqlcode < 0) sqlprint();}
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
 	ECPGt_char,(f3[i]),(long)20,(long)1,(20)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
-#line 156 "declare.pgc"
+#line 164 "declare.pgc"
 
 if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
-#line 156 "declare.pgc"
+#line 164 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 156 "declare.pgc"
+#line 164 "declare.pgc"
 
         i++;
     }
     { ECPGdo(__LINE__, 0, 1, "con2", 0, ECPGst_normal, "close cur_4", ECPGt_EOIT, ECPGt_EORT);
-#line 159 "declare.pgc"
+#line 167 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 159 "declare.pgc"
+#line 167 "declare.pgc"
 
     { ECPGdeallocate(__LINE__, 0, "con2", "stmt_4");
-#line 160 "declare.pgc"
+#line 168 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 160 "declare.pgc"
+#line 168 "declare.pgc"
 
     /* exec sql whenever not found  continue ; */
-#line 161 "declare.pgc"
+#line 169 "declare.pgc"
 
 
     printResult("testcase4", 2);
@@ -509,13 +540,13 @@ if (sqlca.sqlcode < 0) sqlprint();}
     reset();
 
     /* declare  \"stmt_5\"  as an SQL identifier */
-#line 171 "declare.pgc"
+#line 179 "declare.pgc"
 
     { ECPGprepare(__LINE__, NULL, 0, "stmt_5", selectString);
-#line 172 "declare.pgc"
+#line 180 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 172 "declare.pgc"
+#line 180 "declare.pgc"
 
     { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "stmt_5", ECPGt_EOIT, 
 	ECPGt_int,(f1),(long)1,(long)ARRAY_SZIE,sizeof(int), 
@@ -524,17 +555,17 @@ if (sqlca.sqlcode < 0) sqlprint();}
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, 
 	ECPGt_char,(f3),(long)20,(long)ARRAY_SZIE,(20)*sizeof(char), 
 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
-#line 173 "declare.pgc"
+#line 181 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 173 "declare.pgc"
+#line 181 "declare.pgc"
 
 
     { ECPGdeallocate(__LINE__, 0, NULL, "stmt_5");
-#line 175 "declare.pgc"
+#line 183 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 175 "declare.pgc"
+#line 183 "declare.pgc"
 
 
     printResult("testcase5", 2);
@@ -543,16 +574,16 @@ if (sqlca.sqlcode < 0) sqlprint();}
 void commitTable()
 {
     { ECPGtrans(__LINE__, "con1", "commit");
-#line 182 "declare.pgc"
+#line 190 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 182 "declare.pgc"
+#line 190 "declare.pgc"
 
     { ECPGtrans(__LINE__, "con2", "commit");
-#line 183 "declare.pgc"
+#line 191 "declare.pgc"
 
 if (sqlca.sqlcode < 0) sqlprint();}
-#line 183 "declare.pgc"
+#line 191 "declare.pgc"
 
 }
 
diff --git a/src/interfaces/ecpg/test/expected/sql-declare.stderr b/src/interfaces/ecpg/test/expected/sql-declare.stderr
index 71aa21ece4..b068c4205d 100644
--- a/src/interfaces/ecpg/test/expected/sql-declare.stderr
+++ b/src/interfaces/ecpg/test/expected/sql-declare.stderr
@@ -4,283 +4,282 @@
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ECPGconnect: opening database ecpg2_regression on <DEFAULT> port <DEFAULT>  
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 32: query: create table source ( f1 integer , f2 integer , f3 varchar ( 20 ) ); with 0 parameter(s) on connection con1
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 32: using PQexec
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 32: OK: CREATE TABLE
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 33: query: create table source ( f1 integer , f2 integer , f3 varchar ( 20 ) ); with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_execute on line 33: query: create table source ( f1 integer , f2 integer , f3 varchar ( 20 ) ); with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_execute on line 33: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_process_output on line 33: OK: CREATE TABLE
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 35: query: insert into source values ( 1 , 10 , 'db on con1' ); with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_execute on line 34: query: create table source ( f1 integer , f2 integer , f3 varchar ( 20 ) ); with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 35: using PQexec
+[NO_PID]: ecpg_execute on line 34: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 35: OK: INSERT 0 1
+[NO_PID]: ecpg_process_output on line 34: OK: CREATE TABLE
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 36: query: insert into source values ( 2 , 20 , 'db on con1' ); with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_execute on line 36: query: insert into source values ( 1 , 10 , 'db on con1' ); with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_execute on line 36: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_process_output on line 36: OK: INSERT 0 1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 38: query: insert into source values ( 1 , 10 , 'db on con2' ); with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_execute on line 37: query: insert into source values ( 2 , 20 , 'db on con1' ); with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 38: using PQexec
+[NO_PID]: ecpg_execute on line 37: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 38: OK: INSERT 0 1
+[NO_PID]: ecpg_process_output on line 37: OK: INSERT 0 1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 39: query: insert into source values ( 2 , 20 , 'db on con2' ); with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_execute on line 39: query: insert into source values ( 1 , 10 , 'db on con2' ); with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_execute on line 39: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_process_output on line 39: OK: INSERT 0 1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ECPGtrans on line 182: action "commit"; connection "con1"
+[NO_PID]: ecpg_execute on line 40: query: insert into source values ( 2 , 20 , 'db on con2' ); with 0 parameter(s) on connection con2
+[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: ecpg_execute on line 40: using PQexec
+[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: ecpg_process_output on line 40: OK: INSERT 0 1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ECPGtrans on line 183: action "commit"; connection "con2"
+[NO_PID]: ECPGtrans on line 190: action "commit"; connection "con1"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: prepare_common on line 74: name stmt_1; query: "SELECT f1,f2,f3 FROM source"
+[NO_PID]: ECPGtrans on line 191: action "commit"; connection "con2"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 76: query: declare cur_1 cursor for SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con2
+[NO_PID]: prepare_common on line 75: name stmt_1; query: "SELECT f1,f2,f3 FROM source"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 76: using PQexec
+[NO_PID]: ecpg_execute on line 77: query: declare cur_1 cursor for SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 76: OK: DECLARE CURSOR
+[NO_PID]: ecpg_execute on line 77: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 82: query: fetch cur_1; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_process_output on line 77: OK: DECLARE CURSOR
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 82: using PQexec
+[NO_PID]: ecpg_execute on line 83: query: fetch cur_1; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 82: correctly got 1 tuples with 3 fields
+[NO_PID]: ecpg_execute on line 83: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 82: RESULT: 1 offset: -1; array: no
+[NO_PID]: ecpg_process_output on line 83: correctly got 1 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 82: RESULT: 10 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 83: RESULT: 1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 82: RESULT: db on con2 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 83: RESULT: 10 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 82: query: fetch cur_1; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_get_data on line 83: RESULT: db on con2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 82: using PQexec
+[NO_PID]: ecpg_execute on line 83: query: fetch cur_1; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 82: correctly got 1 tuples with 3 fields
+[NO_PID]: ecpg_execute on line 83: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 82: RESULT: 2 offset: -1; array: no
+[NO_PID]: ecpg_process_output on line 83: correctly got 1 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 82: RESULT: 20 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 83: RESULT: 2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 82: RESULT: db on con2 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 83: RESULT: 20 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 82: query: fetch cur_1; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_get_data on line 83: RESULT: db on con2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 82: using PQexec
+[NO_PID]: ecpg_execute on line 83: query: fetch cur_1; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 82: correctly got 0 tuples with 3 fields
+[NO_PID]: ecpg_execute on line 83: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: raising sqlcode 100 on line 82: no data found on line 82
+[NO_PID]: ecpg_process_output on line 83: correctly got 0 tuples with 3 fields
+[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: raising sqlcode 100 on line 83: no data found on line 83
 [NO_PID]: sqlca: code: 100, state: 02000
-[NO_PID]: ecpg_execute on line 85: query: close cur_1; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_execute on line 86: query: close cur_1; with 0 parameter(s) on connection con2
+[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: ecpg_execute on line 86: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 85: using PQexec
+[NO_PID]: ecpg_process_output on line 86: OK: CLOSE CURSOR
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 85: OK: CLOSE CURSOR
+[NO_PID]: deallocate_one on line 87: name stmt_1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: deallocate_one on line 86: name stmt_1
+[NO_PID]: prepare_common on line 100: name stmt_2; query: "SELECT f1,f2,f3 FROM source"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: prepare_common on line 99: name stmt_2; query: "SELECT f1,f2,f3 FROM source"
+[NO_PID]: ecpg_execute on line 102: query: declare cur_2 cursor for SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 101: query: declare cur_2 cursor for SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_execute on line 102: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 101: using PQexec
+[NO_PID]: ecpg_process_output on line 102: OK: DECLARE CURSOR
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 101: OK: DECLARE CURSOR
+[NO_PID]: ECPGget_desc_header: found 3 attributes
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 107: query: fetch cur_2; with 0 parameter(s) on connection con1
+[NO_PID]: raising sqlcode -230 on line 109: invalid statement name "mydesc" on line 109
+[NO_PID]: sqlca: code: -230, state: 26000
+SQL error: invalid statement name "mydesc" on line 109
+[NO_PID]: ecpg_execute on line 115: query: fetch cur_2; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 107: using PQexec
+[NO_PID]: ecpg_execute on line 115: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 107: correctly got 1 tuples with 3 fields
+[NO_PID]: ecpg_process_output on line 115: correctly got 1 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 107: RESULT: 1 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 115: RESULT: 1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 107: RESULT: 10 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 115: RESULT: 10 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 107: RESULT: db on con1 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 115: RESULT: db on con1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 107: query: fetch cur_2; with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_execute on line 115: query: fetch cur_2; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 107: using PQexec
+[NO_PID]: ecpg_execute on line 115: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 107: correctly got 1 tuples with 3 fields
+[NO_PID]: ecpg_process_output on line 115: correctly got 1 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 107: RESULT: 2 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 115: RESULT: 2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 107: RESULT: 20 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 115: RESULT: 20 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 107: RESULT: db on con1 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 115: RESULT: db on con1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 107: query: fetch cur_2; with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_execute on line 115: query: fetch cur_2; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 107: using PQexec
+[NO_PID]: ecpg_execute on line 115: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 107: correctly got 0 tuples with 3 fields
+[NO_PID]: ecpg_process_output on line 115: correctly got 0 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: raising sqlcode 100 on line 107: no data found on line 107
+[NO_PID]: raising sqlcode 100 on line 115: no data found on line 115
 [NO_PID]: sqlca: code: 100, state: 02000
-[NO_PID]: ecpg_execute on line 110: query: close cur_2; with 0 parameter(s) on connection con1
-[NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 110: using PQexec
+[NO_PID]: ecpg_execute on line 118: query: close cur_2; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 110: OK: CLOSE CURSOR
+[NO_PID]: ecpg_execute on line 118: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: raising sqlcode -230 on line 111: invalid statement name "stmt_2" on line 111
-[NO_PID]: sqlca: code: -230, state: 26000
-SQL error: invalid statement name "stmt_2" on line 111
-[NO_PID]: prepare_common on line 123: name stmt_3; query: "SELECT f1,f2,f3 FROM source"
+[NO_PID]: ecpg_process_output on line 118: OK: CLOSE CURSOR
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 125: query: declare cur_3 cursor for SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con1
+[NO_PID]: deallocate_one on line 119: name stmt_2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 125: using PQexec
+[NO_PID]: prepare_common on line 131: name stmt_3; query: "SELECT f1,f2,f3 FROM source"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 125: OK: DECLARE CURSOR
+[NO_PID]: ecpg_execute on line 133: query: declare cur_3 cursor for SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 131: query: fetch cur_3; with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_execute on line 133: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 131: using PQexec
+[NO_PID]: ecpg_process_output on line 133: OK: DECLARE CURSOR
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 131: correctly got 1 tuples with 3 fields
+[NO_PID]: ecpg_execute on line 139: query: fetch cur_3; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 131: RESULT: 1 offset: -1; array: no
+[NO_PID]: ecpg_execute on line 139: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 131: RESULT: 10 offset: -1; array: no
+[NO_PID]: ecpg_process_output on line 139: correctly got 1 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 131: RESULT: db on con1 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 139: RESULT: 1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 131: query: fetch cur_3; with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_get_data on line 139: RESULT: 10 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 131: using PQexec
+[NO_PID]: ecpg_get_data on line 139: RESULT: db on con1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 131: correctly got 1 tuples with 3 fields
+[NO_PID]: ecpg_execute on line 139: query: fetch cur_3; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 131: RESULT: 2 offset: -1; array: no
+[NO_PID]: ecpg_execute on line 139: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 131: RESULT: 20 offset: -1; array: no
+[NO_PID]: ecpg_process_output on line 139: correctly got 1 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 131: RESULT: db on con1 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 139: RESULT: 2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 131: query: fetch cur_3; with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_get_data on line 139: RESULT: 20 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 131: using PQexec
+[NO_PID]: ecpg_get_data on line 139: RESULT: db on con1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 131: correctly got 0 tuples with 3 fields
+[NO_PID]: ecpg_execute on line 139: query: fetch cur_3; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: raising sqlcode 100 on line 131: no data found on line 131
-[NO_PID]: sqlca: code: 100, state: 02000
-[NO_PID]: ecpg_execute on line 134: query: close cur_3; with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_execute on line 139: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 134: using PQexec
+[NO_PID]: ecpg_process_output on line 139: correctly got 0 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 134: OK: CLOSE CURSOR
+[NO_PID]: raising sqlcode 100 on line 139: no data found on line 139
+[NO_PID]: sqlca: code: 100, state: 02000
+[NO_PID]: ecpg_execute on line 142: query: close cur_3; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: raising sqlcode -230 on line 135: invalid statement name "stmt_3" on line 135
-[NO_PID]: sqlca: code: -230, state: 26000
-SQL error: invalid statement name "stmt_3" on line 135
-[NO_PID]: prepare_common on line 148: name stmt_4; query: "SELECT f1,f2,f3 FROM source"
+[NO_PID]: ecpg_execute on line 142: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 150: query: declare cur_4 cursor for SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_process_output on line 142: OK: CLOSE CURSOR
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 150: using PQexec
+[NO_PID]: deallocate_one on line 143: name stmt_3
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 150: OK: DECLARE CURSOR
+[NO_PID]: prepare_common on line 156: name stmt_4; query: "SELECT f1,f2,f3 FROM source"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 156: query: fetch cur_4; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_execute on line 158: query: declare cur_4 cursor for SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 156: using PQexec
+[NO_PID]: ecpg_execute on line 158: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 156: correctly got 1 tuples with 3 fields
+[NO_PID]: ecpg_process_output on line 158: OK: DECLARE CURSOR
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 156: RESULT: 1 offset: -1; array: no
+[NO_PID]: ecpg_execute on line 164: query: fetch cur_4; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 156: RESULT: 10 offset: -1; array: no
+[NO_PID]: ecpg_execute on line 164: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 156: RESULT: db on con2 offset: -1; array: no
+[NO_PID]: ecpg_process_output on line 164: correctly got 1 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 156: query: fetch cur_4; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_get_data on line 164: RESULT: 1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 156: using PQexec
+[NO_PID]: ecpg_get_data on line 164: RESULT: 10 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 156: correctly got 1 tuples with 3 fields
+[NO_PID]: ecpg_get_data on line 164: RESULT: db on con2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 156: RESULT: 2 offset: -1; array: no
+[NO_PID]: ecpg_execute on line 164: query: fetch cur_4; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 156: RESULT: 20 offset: -1; array: no
+[NO_PID]: ecpg_execute on line 164: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 156: RESULT: db on con2 offset: -1; array: no
+[NO_PID]: ecpg_process_output on line 164: correctly got 1 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 156: query: fetch cur_4; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_get_data on line 164: RESULT: 2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 156: using PQexec
+[NO_PID]: ecpg_get_data on line 164: RESULT: 20 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 156: correctly got 0 tuples with 3 fields
+[NO_PID]: ecpg_get_data on line 164: RESULT: db on con2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: raising sqlcode 100 on line 156: no data found on line 156
-[NO_PID]: sqlca: code: 100, state: 02000
-[NO_PID]: ecpg_execute on line 159: query: close cur_4; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_execute on line 164: query: fetch cur_4; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 159: using PQexec
+[NO_PID]: ecpg_execute on line 164: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 159: OK: CLOSE CURSOR
+[NO_PID]: ecpg_process_output on line 164: correctly got 0 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: deallocate_one on line 160: name stmt_4
+[NO_PID]: raising sqlcode 100 on line 164: no data found on line 164
+[NO_PID]: sqlca: code: 100, state: 02000
+[NO_PID]: ecpg_execute on line 167: query: close cur_4; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: prepare_common on line 172: name stmt_5; query: "SELECT f1,f2,f3 FROM source"
+[NO_PID]: ecpg_execute on line 167: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 173: query: SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_process_output on line 167: OK: CLOSE CURSOR
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 173: using PQexecPrepared for "SELECT f1,f2,f3 FROM source"
+[NO_PID]: deallocate_one on line 168: name stmt_4
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 173: correctly got 2 tuples with 3 fields
+[NO_PID]: prepare_common on line 180: name stmt_5; query: "SELECT f1,f2,f3 FROM source"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 173: RESULT: 1 offset: -1; array: no
+[NO_PID]: ecpg_execute on line 181: query: SELECT f1,f2,f3 FROM source; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 173: RESULT: 2 offset: -1; array: no
+[NO_PID]: ecpg_execute on line 181: using PQexecPrepared for "SELECT f1,f2,f3 FROM source"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 173: RESULT: 10 offset: -1; array: no
+[NO_PID]: ecpg_process_output on line 181: correctly got 2 tuples with 3 fields
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 173: RESULT: 20 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 181: RESULT: 1 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 173: RESULT: db on con2 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 181: RESULT: 2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_get_data on line 173: RESULT: db on con2 offset: -1; array: no
+[NO_PID]: ecpg_get_data on line 181: RESULT: 10 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: deallocate_one on line 175: name stmt_5
+[NO_PID]: ecpg_get_data on line 181: RESULT: 20 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 45: query: drop table if exists source; with 0 parameter(s) on connection con1
+[NO_PID]: ecpg_get_data on line 181: RESULT: db on con2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 45: using PQexec
+[NO_PID]: ecpg_get_data on line 181: RESULT: db on con2 offset: -1; array: no
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_process_output on line 45: OK: DROP TABLE
+[NO_PID]: deallocate_one on line 183: name stmt_5
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_execute on line 46: query: drop table if exists source; with 0 parameter(s) on connection con2
+[NO_PID]: ecpg_execute on line 46: query: drop table if exists source; with 0 parameter(s) on connection con1
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_execute on line 46: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_process_output on line 46: OK: DROP TABLE
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ECPGtrans on line 182: action "commit"; connection "con1"
+[NO_PID]: ecpg_execute on line 47: query: drop table if exists source; with 0 parameter(s) on connection con2
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ECPGtrans on line 183: action "commit"; connection "con2"
+[NO_PID]: ecpg_execute on line 47: using PQexec
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: ecpg_finish: connection con2 closed
+[NO_PID]: ecpg_process_output on line 47: OK: DROP TABLE
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: deallocate_one on line 0: name stmt_3
+[NO_PID]: ECPGtrans on line 190: action "commit"; connection "con1"
 [NO_PID]: sqlca: code: 0, state: 00000
-[NO_PID]: deallocate_one on line 0: name stmt_2
+[NO_PID]: ECPGtrans on line 191: action "commit"; connection "con2"
+[NO_PID]: sqlca: code: 0, state: 00000
+[NO_PID]: ecpg_finish: connection con2 closed
 [NO_PID]: sqlca: code: 0, state: 00000
 [NO_PID]: ecpg_finish: connection con1 closed
 [NO_PID]: sqlca: code: 0, state: 00000
diff --git a/src/interfaces/ecpg/test/expected/sql-declare.stdout b/src/interfaces/ecpg/test/expected/sql-declare.stdout
index 3352d47cc4..3e14100cf7 100644
--- a/src/interfaces/ecpg/test/expected/sql-declare.stdout
+++ b/src/interfaces/ecpg/test/expected/sql-declare.stdout
@@ -2,6 +2,8 @@
 f1=1, f2=10, f3=db on con2
 f1=2, f2=20, f3=db on con2
 
+descriptor: number of lines : 3
+
 ****testcase2 test results:****
 f1=1, f2=10, f3=db on con1
 f1=2, f2=20, f3=db on con1
diff --git a/src/interfaces/ecpg/test/sql/declare.pgc b/src/interfaces/ecpg/test/sql/declare.pgc
index f9ef468741..773ae3ea18 100644
--- a/src/interfaces/ecpg/test/sql/declare.pgc
+++ b/src/interfaces/ecpg/test/sql/declare.pgc
@@ -18,6 +18,7 @@ EXEC SQL BEGIN DECLARE SECTION;
 int f1[ARRAY_SZIE];
 int f2[ARRAY_SZIE];
 char f3[ARRAY_SZIE][20];
+int count;
 EXEC SQL END DECLARE SECTION;
 
 int main(void)
@@ -100,6 +101,13 @@ void execute_test(void)
     EXEC SQL DECLARE cur_2 CURSOR FOR stmt_2;
     EXEC SQL OPEN cur_2;
 
+    /* Of cause DESCRIBE clause can be used */
+    EXEC SQL ALLOCATE DESCRIPTOR mydesc;
+    EXEC SQL DESCRIBE stmt_2 INTO SQL DESCRIPTOR mydesc;
+    EXEC SQL GET DESCRIPTOR mydesc :count = COUNT;
+    printf("descriptor: number of lines : %d\n\n", count);
+    EXEC SQL DEALLOCATE mydesc;
+
     EXEC SQL WHENEVER NOT FOUND DO BREAK;
     i = 0;
     while (1)
