¿¿¿past chunk end???

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 -

Responses

Browse pgsql-hackers by date

  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