FoxPro/Visual FoxPro - Consulta que colapsa fichero temporal

 
Vista:

Consulta que colapsa fichero temporal

Publicado por Carlos (1 intervención) el 03/01/2007 11:34:01
Buenas a todos y gracias por la ayuda por anticipado,

Mi problema es el siguiente:

Tengo una aplicacion Visual FoxPro 9 trabajando con una base de datos PostgreSQL 7 con ODBC.

Lanzo una consulta a una tabla con unas 80 mil entradas donde uno de los campos es un tipo text que puede llegar a tener algo más de 2 megas de datos en texto.

El problema se me plantea cuando quiero recuperar una tupla de esa tabla en un cursor, el código sería más o menos:

conexion = SQLCONNECT('DSN_ODBC_POSTGRE','user','password')
IF USED('cps')
USE IN 'cps'
ENDIF
strSQL= "SELECT * FROM tabla WHERE id= "+n_id
=SQLEXEC(conexion,strSQL,"cPS")

donde cPS es el cursor que recibe la tupla, y n_id una variable con el id.

Bueno, pues esta consulta tan simple que en un cliente de PostgreSQL se ejecuta en nada, y que devuelve una sola tupla, en Foxpro funciona para casos en los que el campo texto es pequeño (<2 Mb) pero tarda una eternidad, genera un fichero gigantesco de hasta 2 gigas, que es donde falla, y provoca una excepcion "1190 el fichero tal y tal temporal es demasiado grande" y ahi se queda.

He probado con una funcion en plpgsql que se ejecuta bien en PostgreSQL pero me da el mismo resultado en Foxpro. Creo que las consultas ejecutadas con SQLEXEC se envían directamente al gestor de bases de datos en cuestión y no deberían consumir recursos de Foxpro, pero parece ser que, o no es así, o yo estoy haciendo algo mal. Ya se que el tamaño máximo para Foxpro es de 2 gigas pero la pregunta es, por que genera ese fichero cuando la consulta solo devuelve una tupla de 2 megas y poco como máximo?

Cualquier ayuda sería bien recibida, tanto para explicar el problema como para obtener una solución.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder