tmorelli@tmorelli.com.br wrote:
>Hi,
>
>I'm trying to extend the CREATE INDEX statement with a fillfactor clause. In
>Gram.y, I did this:
>
>IndexStmt: CREATE index_opt_unique INDEX index_name ON qualified_name
>access_method_clause '(' index_params ')' fillfactor_clause where_clause
> {
> IndexStmt *n = makeNode(IndexStmt);
> n->unique = $2;
> n->idxname = $4;
> n->relation = $6;
> n->accessMethod = $7;
> n->indexParams = $9;
> n->fillfactor = $11;
> n->whereClause = $12;
> $$ = (Node *)n;
> }
>
>And the clause:
>
>fillfactor_clause:
>FILLFACTOR IntegerOnly { $$ = makeInteger($2); }
> { $$ = 0; };
>
>I had to add a new field into IndexStmt (unsigned int fillfactor). Everything
>is fine after parsing except that I can't see the integer value. For example,
>in transformIndexStmt (analyze.c), I've inspected stmt->fillfactor and I've got
> a strange, obviously wrong, value (137616352) after issuing this statement:
>
>create index ix_desc on products(description) fillfactor 7;
>
>Is thre any statement with numeric clauses? The only one that I found was
>Alter/Create Sequence, but there is an ugly list there.
>
>Could anyone help me, please?
>
>Thanks a lot!
>
>
>
>
did you change nodes/copyfuncs.c and nodes/equalfuncs.c as you have to
do when you add new node fields?
cheers
andrew