[EMAIL PROTECTED] 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




---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to