DefineQueryRewrite: rule plan string too big.

Theo Kramer <theo@flame.co.za>

From: Theo Kramer <theo@flame.co.za>
To: pgsql-hackers@postgresql.org
Date: 2000-01-17T14:28:43Z
Lists: pgsql-hackers
Hi

Just created a rule and received "rule plan string too big". My rule is around
1000 characters long. I added a debug statement which printed the following from
backend/rewrite/rewriteDefine.c

 sizeof(FormData_pg_rewrite) = 60, strlen(actionbuf) = 6328, strlen(qualbuf) = 4279, MaxAttrSize = 8104

so my rule expands to 10667 characters.

Questions I have
1.  Is it feasable to increase MaxAttrSize without upsetting the applecart?

2.  Does this limitation not severely restrict setting up of rules? Ie. I
    want to log any update on any field made to a 16 attribute table.

    The rule is as follows

      create rule log_accounts as on update to accounts
      where new.domain != old.domain or
        new.RegistrationDate != old.RegistrationDate or
        new.RegistrationType != old.RegistrationType or
        new.Amount != old.Amount or
        new.BillingType != old.BillingType or
        new.ContactEmail != old.ContactEmail or
        new.PaperDate != old.PaperDate or
        new.PaymentDate != old.PaymentDate or
        new.InvoiceCount != old.InvoiceCount or
        new.InvoiceNo != old.InvoiceNo or
        new.ContractType != old.ContractType or
        new.Organisation != old.Organisation or
        new.Payed != old.Payed
      do insert into accounts_log values (
        getpgusername(),
       'now'::text,
       new.domain,
       new.RegistrationDate,
       new.RegistrationType,
       new.Amount,
       new.BillingType,
       new.ContactEmail,
       new.PaperDate,
       new.PaymentDate,
       new.InvoiceCount,
       new.InvoiceNo,
       new.ContractType,
       new.Organisation,
       new.Payed,
       new.PaperContract
     );

3.  Is there a better way to do this?

TIA
--------
Regards
Theo