|
7 | 7 | *
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteDefine.c,v 1.29 1999/05/2516:10:48 momjian Exp $ |
| 10 | + * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteDefine.c,v 1.30 1999/07/04 05:16:05 momjian Exp $ |
11 | 11 | *
|
12 | 12 | *-------------------------------------------------------------------------
|
13 | 13 | */
|
|
16 | 16 |
|
17 | 17 | #include"postgres.h"
|
18 | 18 |
|
| 19 | +#include"access/htup.h" |
19 | 20 | #include"access/heapam.h"/* access methods like amopenr */
|
| 21 | +#include"catalog/pg_rewrite.h" |
20 | 22 | #include"nodes/parsenodes.h"
|
21 | 23 | #include"nodes/pg_list.h"/* for Lisp support */
|
22 | 24 | #include"parser/parse_relation.h"
|
|
32 | 34 |
|
33 | 35 | OidLastOidProcessed=InvalidOid;
|
34 | 36 |
|
35 |
| -/* |
36 |
| - * This is too small for many rule plans, but it'll have to do for now. |
37 |
| - * Rule plans, etc will eventually have to be large objects. |
38 |
| - * |
39 |
| - * should this be smaller? |
40 |
| - */ |
41 |
| -#defineRULE_PLAN_SIZE BLCKSZ |
42 |
| - |
43 | 37 | staticvoid
|
44 | 38 | strcpyq(char*dest,char*source)
|
45 | 39 | {
|
@@ -84,9 +78,9 @@ InsertRule(char *rulname,
|
84 | 78 | boolevinstead,
|
85 | 79 | char*actiontree)
|
86 | 80 | {
|
87 |
| -staticcharrulebuf[RULE_PLAN_SIZE]; |
88 |
| -staticcharactionbuf[RULE_PLAN_SIZE]; |
89 |
| -staticcharqualbuf[RULE_PLAN_SIZE]; |
| 81 | +staticcharrulebuf[MaxAttrSize]; |
| 82 | +staticcharactionbuf[MaxAttrSize]; |
| 83 | +staticcharqualbuf[MaxAttrSize]; |
90 | 84 | Oideventrel_oid=InvalidOid;
|
91 | 85 | AttrNumberevslot_index=InvalidAttrNumber;
|
92 | 86 | Relationeventrel=NULL;
|
@@ -124,8 +118,8 @@ InsertRule(char *rulname,
|
124 | 118 | (rulename, ev_type, ev_class, ev_attr, ev_action, ev_qual, is_instead) VALUES \
|
125 | 119 | ('%s', %d::char, %u::oid, %d::int2, '%s'::text, '%s'::text, \
|
126 | 120 | '%s'::bool);";
|
127 |
| -if (strlen(template)+strlen(rulname)+strlen(actionbuf)+ |
128 |
| -strlen(qualbuf)+20/* fudge fac */>RULE_PLAN_SIZE) |
| 121 | +if (sizeof(FormData_pg_rewrite)+strlen(actionbuf)+ |
| 122 | +strlen(qualbuf)>MaxAttrSize) |
129 | 123 | elog(ERROR,"DefineQueryRewrite: rule plan string too big.");
|
130 | 124 | sprintf(rulebuf,template,
|
131 | 125 | rulname,evtype,eventrel_oid,evslot_index,actionbuf,
|
|