¿¿¿past chunk end??? - Mailing list pgsql-hackers
From | luis garcia |
---|---|
Subject | ¿¿¿past chunk end??? |
Date | |
Msg-id | 3de424340611010449g2b2d8f6fve57c43ae5d0fd591@mail.gmail.com Whole thread Raw |
Responses |
Re: ¿¿¿past chunk end???
Re: ¿¿¿pas |
List | pgsql-hackers |
Hi We have been making some modifications to postgres catalog, but
it seems to be a problem with one of the fields we just added, exactly
in the time when inserting the right values to that specific field.
1. This is what It happens:
**************************************
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
**************************************
The creation it's possible, in fact, We have added 7 fields to Postgres
catalog (in pg_class) and there are no problems with the other fields values,
just with this one.
2. The field is defined this way:
// FILE: Parsenodes.h
// STRUCTURE: frequencyDefinition
typedef struct FrequencyDefinition
{
NodeTag type;
bool timeFrequency;
FrequencyType fttype;
const char *frequencyMeasure; // THIS ONE
} FrequencyDefinition;
3. The values are inserted this way:
// FILE: relcache.c
// FUNCTION: 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)
**************************************
We can see the other values whit a SELECT over 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)
We have realized that in the assignation it takes just the first CHAR from '00:00:50.00',
and we tested the same assignation but just like this:
***************************************
namestrcpy(&rel->rd_rel->relfrequencytype,freqDef->frequencyMeasure);
//namestrcpy(&rel->rd_rel->relfrequency,freqDef->frequencyMeasure)
***************************************
And the result to the same query was:
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)
So please, anybody could tell me how to fix this?
Thanks...
--
Luis D. García M.
Telf: 0414-3482018
- FACYT - UC -
- Computación -
pgsql-hackers by date: