From: | "luis garcia" <ldgarc(at)gmail(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | ¿¿¿past chunk end??? |
Date: | 2006-11-01 12:49:48 |
Message-ID: | 3de424340611010449g2b2d8f6fve57c43ae5d0fd591@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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 -
From | Date | Subject | |
---|---|---|---|
Next Message | Teodor Sigaev | 2006-11-01 13:26:36 | Re: [HACKERS] Index greater than 8k |
Previous Message | Dave Cramer | 2006-11-01 12:02:53 | Re: Extended protocol logging |