Re: Pb d'ouverture de curseur

From: Valérie SCHNEIDER <valerie(dot)schneider(at)meteo(dot)fr>
To: Daniel Verite <daniel(at)manitou-mail(dot)org>, pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: Pb d'ouverture de curseur
Date: 2004-09-30 07:46:21
Message-ID: 1096530381.13051.18.camel@nazar
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Le mer 29/09/2004 à 15:52, Daniel Verite a écrit :

Bonjour,
Est-ce que ce patch est inclus dans la beta3 ? J'ai récupéré et compilé
cette dernière version, est-ce qu'elle l'intègre ?
Merci.

> 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.
--

********************************************************************
* Valerie SCHNEIDER Tel : +33 (0)5 61 07 81 91 *
* METEO-FRANCE Fax : +33 (0)5 61 07 81 09 *
* DSI/DEV - Bases de donnees *
* 42, avenue G. Coriolis Email : Valerie(dot)Schneider(at)meteo(dot)fr *
* 31057 TOULOUSE Cedex - FRANCE http://www.meteo.fr *
********************************************************************
* L'information contenu dans ce mail n'a aucun caractere officiel *
********************************************************************

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Daniel Verite 2004-09-30 08:06:33 Re: Pb d'ouverture de curseur
Previous Message Valérie SCHNEIDER 2004-09-30 07:44:05 Re: Pb d'ouverture de curseur