Skip site navigation (1) Skip section navigation (2)

Re: Pb d'ouverture de curseur

From: "Daniel Verite" <daniel(at)manitou-mail(dot)org>
To: " Valérie SCHNEIDER" <valerie(dot)schneider(at)meteo(dot)fr>
Cc: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Pb d'ouverture de curseur
Date: 2004-09-29 15:52:05
Message-ID: 20040929175208.3508418@uruguay.brainstorm.fr (view raw or flat)
Thread:
Lists: pgsql-fr-generale
	 Valérie SCHNEIDER writes

> Open clicurs :07001
> select u.ID_STATION,u.DAT,u.DAT_CALC,u.DAT_STAMP,u.ORIGINE
> ,null,null,null ,cast(to_char(dat,'J') as integer) ,u.HRR  from H u 
> where  (u.DAT BETWEEN
> to_timestamp('10000101000000','YYYYMMDDHH24MISS')::timestamp AND
> to_timestamp('30000101000000','YYYYMMDDHH24MISS')::timestamp)  AND
> (u.id_station between '31069001' AND '31069001' )   order by DAT
> 
> Si j'exécute cette requête au travers de psql, elle est correcte
> et le résultat est celui espéré. Idem en utilisant un curseur.
> 
> Je ne comprends pas en premier lieu le code retour de l'erreur : 07001
> n'a a priori pas grand chose à voir avec le OPEN (ce serait plutôt
> pour un FETCH).
> 
> Quelqu'un a-t-il une idée ?

Je pense que le SQL PREPARE interprète le ::timestamp comme une variable,
c'est pourquoi par la suite l'erreur indique qu'une variable est attendue.
C'est une erreur dans l'interprétation du SQL et un coup d'oeil au source de
ecpg laisse penser que le patch trivial ci-dessous règlerait le problème:

(le fichier est src/interfaces/ecpg/ecpglib/prepare.c)

*** prepare.c~	Fri May 21 15:50:12 2004
--- prepare.c	Wed Sep 29 17:35:58 2004
***************
*** 46,54 ****
  
  		if (!string && *ptr == ':')
  		{
! 			*ptr = '?';
! 			for (++ptr; *ptr && isvarchar(*ptr); ptr++)
! 				*ptr = ' ';
  		}
  	}
  }
--- 46,59 ----
  
  		if (!string && *ptr == ':')
  		{
! 			if (ptr[1]==':')
! 				ptr+=2; // skip  '::'
! 			else
! 		  	{
! 				*ptr = '?';
! 				for (++ptr; *ptr && isvarchar(*ptr); ptr++)
! 					*ptr = ' ';
! 		  	}
  		}
  	}
  }

Si vous appliquez ce patch, réinstallez simplement la libecpg après recompil.

-- 
 Daniel
 PostgreSQL-powered mail user agent and storage: http://www.manitou-mail.org

In response to

Responses

pgsql-fr-generale by date

Next:From: Valérie SCHNEIDERDate: 2004-09-30 07:44:05
Subject: Re: Pb d'ouverture de curseur
Previous:From: Jean-Paul ARGUDODate: 2004-09-29 12:30:58
Subject: Re: Pb d'ouverture de curseur

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group