¿¿¿Past Chunk End???

From: "luis garcia" <ldgarc(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: ¿¿¿Past Chunk End???
Date: 2006-11-01 13:03:56
Message-ID: 3de424340611010503r4505bf5cte090d91a86cc7aa6@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola, ya envié una copia de este correo en Inglés a Postgres-Hacker, pero
nunca esta de más realizar la misma consulta en lugares distintos en busca
de otras opiniones.

Hemos estado realizando modificaciones al catálogo de PostgreSQL, agregando
ciertos campos en la tabla PG_CLASS, pero parece haber un problema con uno
de los campos recién agregados, exactamente en el momento de la inserción de
los valores capturados sobre el mismo.

1. Esto es lo que sucede:

**************************************
template1=# CREATE TABLE test() AS VALID EVENT 2 WITH FREQUENCY '00:00:50.00'
AS REAL TIME;
WARNING: detected write past chunk end in CacheMemoryContext 0xb7212e0c
CREATE TABLE
**************************************

Por lo visto aquí está la falla:
WARNING: detected write past chunk end in CacheMemoryContext 0xb7212e0c

La creación la hace bien, de hecho, hemos agregado ya 7 campos nuevos
en PG_CLASS y no existe ningún problema con estos, únicamente con el
campo en cuestión.

2. El campo está definido de la siguiente manera:
// ARCHIVO: Parsenodes.h
// ESTRUCTURA: frequencyDefinition

typedef struct FrequencyDefinition
{
NodeTag type;
bool timeFrequency;
FrequencyType fttype;
const char *frequencyMeasure; // ESTE ES EL CAMPO EN CUESTIÓN
} FrequencyDefinition;

3. Los valores son insertados así:
// ARCHIVO: relcache.c
// FUNCIÓN: RelationBuildLocalRelation

**************************************
rel->rd_rel->relhasfrequency = freqDef->timeFrequency; // Perfect
Asignation

if((freqDef->fttype) == REAL_TIME)
namestrcpy(&rel->rd_rel->relfrequencytype,(const char *)"REAL
TIME");
else
namestrcpy(&rel->rd_rel->relfrequencytype,(const char
*)"HISTORIC");

namestrcpy(&rel->rd_rel->relfrequency,freqDef->frequencyMeasure)
**************************************

Podemos ver los demás valores con un SELECT sobre PG_CLASS:

template1=# SELECT relname, relhasfrequency, relfrequencytype, relfrequency
FROM pg_class WHERE relhasfrequency=true;

relname | relhasfrequency | relfrequencytype | relfrequency
- - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - + - - -
- - - - - -
test | t | REAL TIME | 0
(1 row)

Después de varias pruebas, logramos ver (como se puede observar en el
resultado de el SELECT anterior) que la asignación sólo toma el primer
caracter de '00:00:50.00'.

Hemos probado además la asignación de dicho valor de la siguiente manera:

***************************************
namestrcpy(&rel->rd_rel->relfrequencytype,freqDef->frequencyMeasure);
//namestrcpy(&rel->rd_rel->relfrequency,freqDef->frequencyMeasure)
***************************************

Y no se presentó ningún problema, es más, el resultado para el mismo Query
sobre PG_CLASS fue:

template1=# SELECT relname, relhasfrequency, relfrequencytype, relfrequency
FROM pg_class WHERE relhasfrequency=true;

relname | relhasfrequency | relfrequencytype | relfrequency
- - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - + - - -
- - - - - -
test | t | '00:00:50.00' | 0
(1 row)

Entonces, alguno de ustedes sabrá cual es el detalle que está ocasionando el
fallo?

Gracias de antemano....

PD: obviamos los detalles técnicos de la modificación que estamos realizando
para no hacer más tediosa la lectura del E-MAIL. En todo aso si lo
necesitaran
para poder conseguir el error, respondan por favor a este mismo e-mail.
--
Luis D. García M.
Telf: 0414-3482018

- FACYT - UC -
- Computación -

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Kryscia Ramirez 2006-11-01 14:33:54 Jobs Calendarizados
Previous Message Gustavo Garay 2006-11-01 12:45:16 Perdida de Conexion de Cliente con el servidor