Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit277607d

Browse files
committed
Eliminate pg_rewrite.ev_attr column and related dead code.
Commit95ef6a3 removed theability to create rules on an individual column as of 7.3, butleft some residual code which has since been useless. This cleansup that dead code without any change in behavior other thandropping the useless column from the catalog.
1 parent20cb18d commit277607d

File tree

11 files changed

+9
-125
lines changed

11 files changed

+9
-125
lines changed

‎doc/src/sgml/catalogs.sgml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5038,14 +5038,6 @@
50385038
<entry>The table this rule is for</entry>
50395039
</row>
50405040

5041-
<row>
5042-
<entry><structfield>ev_attr</structfield></entry>
5043-
<entry><type>int2</type></entry>
5044-
<entry></entry>
5045-
<entry>The column this rule is for (currently, always -1 to
5046-
indicate the whole table)</entry>
5047-
</row>
5048-
50495041
<row>
50505042
<entry><structfield>ev_type</structfield></entry>
50515043
<entry><type>char</type></entry>

‎src/backend/rewrite/rewriteDefine.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ static Oid
5858
InsertRule(char*rulname,
5959
intevtype,
6060
Oideventrel_oid,
61-
AttrNumberevslot_index,
6261
boolevinstead,
6362
Node*event_qual,
6463
List*action,
@@ -86,7 +85,6 @@ InsertRule(char *rulname,
8685
namestrcpy(&rname,rulname);
8786
values[Anum_pg_rewrite_rulename-1]=NameGetDatum(&rname);
8887
values[Anum_pg_rewrite_ev_class-1]=ObjectIdGetDatum(eventrel_oid);
89-
values[Anum_pg_rewrite_ev_attr-1]=Int16GetDatum(evslot_index);
9088
values[Anum_pg_rewrite_ev_type-1]=CharGetDatum(evtype+'0');
9189
values[Anum_pg_rewrite_ev_enabled-1]=CharGetDatum(RULE_FIRES_ON_ORIGIN);
9290
values[Anum_pg_rewrite_is_instead-1]=BoolGetDatum(evinstead);
@@ -117,7 +115,6 @@ InsertRule(char *rulname,
117115
* When replacing, we don't need to replace every attribute
118116
*/
119117
MemSet(replaces, false,sizeof(replaces));
120-
replaces[Anum_pg_rewrite_ev_attr-1]= true;
121118
replaces[Anum_pg_rewrite_ev_type-1]= true;
122119
replaces[Anum_pg_rewrite_is_instead-1]= true;
123120
replaces[Anum_pg_rewrite_ev_qual-1]= true;
@@ -238,7 +235,6 @@ DefineQueryRewrite(char *rulename,
238235
List*action)
239236
{
240237
Relationevent_relation;
241-
intevent_attno;
242238
ListCell*l;
243239
Query*query;
244240
boolRelisBecomingView= false;
@@ -495,15 +491,13 @@ DefineQueryRewrite(char *rulename,
495491
/*
496492
* This rule is allowed - prepare to install it.
497493
*/
498-
event_attno=-1;
499494

500495
/* discard rule if it's null action and not INSTEAD; it's a no-op */
501496
if (action!=NIL||is_instead)
502497
{
503498
ruleId=InsertRule(rulename,
504499
event_type,
505500
event_relid,
506-
event_attno,
507501
is_instead,
508502
event_qual,
509503
action,

‎src/backend/rewrite/rewriteHandler.c

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,10 +1276,7 @@ matchLocks(CmdType event,
12761276
if (oneLock->event==event)
12771277
{
12781278
if (parsetree->commandType!=CMD_SELECT||
1279-
(oneLock->attrno==-1 ?
1280-
rangeTableEntry_used((Node*)parsetree,varno,0) :
1281-
attribute_used((Node*)parsetree,
1282-
varno,oneLock->attrno,0)))
1279+
rangeTableEntry_used((Node*)parsetree,varno,0))
12831280
matching_locks=lappend(matching_locks,oneLock);
12841281
}
12851282
}
@@ -1295,7 +1292,6 @@ static Query *
12951292
ApplyRetrieveRule(Query*parsetree,
12961293
RewriteRule*rule,
12971294
intrt_index,
1298-
boolrelation_level,
12991295
Relationrelation,
13001296
List*activeRIRs,
13011297
boolforUpdatePushedDown)
@@ -1309,8 +1305,6 @@ ApplyRetrieveRule(Query *parsetree,
13091305
elog(ERROR,"expected just one rule action");
13101306
if (rule->qual!=NULL)
13111307
elog(ERROR,"cannot handle qualified ON SELECT rule");
1312-
if (!relation_level)
1313-
elog(ERROR,"cannot handle per-attribute ON SELECT rule");
13141308

13151309
if (rt_index==parsetree->resultRelation)
13161310
{
@@ -1632,14 +1626,6 @@ fireRIRrules(Query *parsetree, List *activeRIRs, bool forUpdatePushedDown)
16321626
if (rule->event!=CMD_SELECT)
16331627
continue;
16341628

1635-
if (rule->attrno>0)
1636-
{
1637-
/* per-attr rule; do we need it? */
1638-
if (!attribute_used((Node*)parsetree,rt_index,
1639-
rule->attrno,0))
1640-
continue;
1641-
}
1642-
16431629
locks=lappend(locks,rule);
16441630
}
16451631

@@ -1664,7 +1650,6 @@ fireRIRrules(Query *parsetree, List *activeRIRs, bool forUpdatePushedDown)
16641650
parsetree=ApplyRetrieveRule(parsetree,
16651651
rule,
16661652
rt_index,
1667-
rule->attrno==-1,
16681653
rel,
16691654
activeRIRs,
16701655
forUpdatePushedDown);

‎src/backend/rewrite/rewriteManip.c

Lines changed: 0 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -857,70 +857,6 @@ rangeTableEntry_used(Node *node, int rt_index, int sublevels_up)
857857
}
858858

859859

860-
/*
861-
* attribute_used -
862-
*Check if a specific attribute number of a RTE is used
863-
*somewhere in the query or expression.
864-
*/
865-
866-
typedefstruct
867-
{
868-
intrt_index;
869-
intattno;
870-
intsublevels_up;
871-
}attribute_used_context;
872-
873-
staticbool
874-
attribute_used_walker(Node*node,
875-
attribute_used_context*context)
876-
{
877-
if (node==NULL)
878-
return false;
879-
if (IsA(node,Var))
880-
{
881-
Var*var= (Var*)node;
882-
883-
if (var->varlevelsup==context->sublevels_up&&
884-
var->varno==context->rt_index&&
885-
var->varattno==context->attno)
886-
return true;
887-
return false;
888-
}
889-
if (IsA(node,Query))
890-
{
891-
/* Recurse into subselects */
892-
boolresult;
893-
894-
context->sublevels_up++;
895-
result=query_tree_walker((Query*)node,attribute_used_walker,
896-
(void*)context,0);
897-
context->sublevels_up--;
898-
returnresult;
899-
}
900-
returnexpression_tree_walker(node,attribute_used_walker,
901-
(void*)context);
902-
}
903-
904-
bool
905-
attribute_used(Node*node,intrt_index,intattno,intsublevels_up)
906-
{
907-
attribute_used_contextcontext;
908-
909-
context.rt_index=rt_index;
910-
context.attno=attno;
911-
context.sublevels_up=sublevels_up;
912-
913-
/*
914-
* Must be prepared to start with a Query or a bare expression tree; if
915-
* it's a Query, we don't want to increment sublevels_up.
916-
*/
917-
returnquery_or_expression_tree_walker(node,
918-
attribute_used_walker,
919-
(void*)&context,
920-
0);
921-
}
922-
923-
924860
/*
925861
* If the given Query is an INSERT ... SELECT construct, extract and
926862
* return the sub-Query node that represents the SELECT part. Otherwise

‎src/backend/utils/adt/ruleutils.c

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3734,7 +3734,6 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
37343734
char*rulename;
37353735
charev_type;
37363736
Oidev_class;
3737-
int16ev_attr;
37383737
boolis_instead;
37393738
char*ev_qual;
37403739
char*ev_action;
@@ -3761,11 +3760,6 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
37613760
Assert(!isnull);
37623761
ev_class=DatumGetObjectId(dat);
37633762

3764-
fno=SPI_fnumber(rulettc,"ev_attr");
3765-
dat=SPI_getbinval(ruletup,rulettc,fno,&isnull);
3766-
Assert(!isnull);
3767-
ev_attr=DatumGetInt16(dat);
3768-
37693763
fno=SPI_fnumber(rulettc,"is_instead");
37703764
dat=SPI_getbinval(ruletup,rulettc,fno,&isnull);
37713765
Assert(!isnull);
@@ -3820,10 +3814,6 @@ make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
38203814

38213815
/* The relation the rule is fired on */
38223816
appendStringInfo(buf," TO %s",generate_relation_name(ev_class,NIL));
3823-
if (ev_attr>0)
3824-
appendStringInfo(buf,".%s",
3825-
quote_identifier(get_relid_attribute_name(ev_class,
3826-
ev_attr)));
38273817

38283818
/* If the rule has an event qualification, add it */
38293819
if (ev_qual==NULL)
@@ -3925,7 +3915,6 @@ make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
39253915
Query*query;
39263916
charev_type;
39273917
Oidev_class;
3928-
int16ev_attr;
39293918
boolis_instead;
39303919
char*ev_qual;
39313920
char*ev_action;
@@ -3943,9 +3932,6 @@ make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
39433932
fno=SPI_fnumber(rulettc,"ev_class");
39443933
ev_class= (Oid)SPI_getbinval(ruletup,rulettc,fno,&isnull);
39453934

3946-
fno=SPI_fnumber(rulettc,"ev_attr");
3947-
ev_attr= (int16)SPI_getbinval(ruletup,rulettc,fno,&isnull);
3948-
39493935
fno=SPI_fnumber(rulettc,"is_instead");
39503936
is_instead= (bool)SPI_getbinval(ruletup,rulettc,fno,&isnull);
39513937

@@ -3965,7 +3951,7 @@ make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
39653951

39663952
query= (Query*)linitial(actions);
39673953

3968-
if (ev_type!='1'||ev_attr >=0||!is_instead||
3954+
if (ev_type!='1'|| !is_instead||
39693955
strcmp(ev_qual,"<>")!=0||query->commandType!=CMD_SELECT)
39703956
{
39713957
appendStringInfo(buf,"Not a view");

‎src/backend/utils/cache/relcache.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -682,7 +682,6 @@ RelationBuildRuleLock(Relation relation)
682682
rule->ruleId=HeapTupleGetOid(rewrite_tuple);
683683

684684
rule->event=rewrite_form->ev_type-'0';
685-
rule->attrno=rewrite_form->ev_attr;
686685
rule->enabled=rewrite_form->ev_enabled;
687686
rule->isInstead=rewrite_form->is_instead;
688687

@@ -798,8 +797,6 @@ equalRuleLocks(RuleLock *rlock1, RuleLock *rlock2)
798797
return false;
799798
if (rule1->event!=rule2->event)
800799
return false;
801-
if (rule1->attrno!=rule2->attrno)
802-
return false;
803800
if (rule1->enabled!=rule2->enabled)
804801
return false;
805802
if (rule1->isInstead!=rule2->isInstead)

‎src/include/catalog/catversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/*yyyymmddN */
56-
#defineCATALOG_VERSION_NO201309031
56+
#defineCATALOG_VERSION_NO201309051
5757

5858
#endif

‎src/include/catalog/pg_rewrite.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ CATALOG(pg_rewrite,2618)
3535
{
3636
NameDatarulename;
3737
Oidev_class;
38-
int16ev_attr;
3938
charev_type;
4039
charev_enabled;
4140
boolis_instead;
@@ -57,14 +56,13 @@ typedef FormData_pg_rewrite *Form_pg_rewrite;
5756
*compiler constants for pg_rewrite
5857
* ----------------
5958
*/
60-
#defineNatts_pg_rewrite8
59+
#defineNatts_pg_rewrite7
6160
#defineAnum_pg_rewrite_rulename1
6261
#defineAnum_pg_rewrite_ev_class2
63-
#defineAnum_pg_rewrite_ev_attr3
64-
#defineAnum_pg_rewrite_ev_type4
65-
#defineAnum_pg_rewrite_ev_enabled5
66-
#defineAnum_pg_rewrite_is_instead6
67-
#defineAnum_pg_rewrite_ev_qual7
68-
#defineAnum_pg_rewrite_ev_action8
62+
#defineAnum_pg_rewrite_ev_type3
63+
#defineAnum_pg_rewrite_ev_enabled4
64+
#defineAnum_pg_rewrite_is_instead5
65+
#defineAnum_pg_rewrite_ev_qual6
66+
#defineAnum_pg_rewrite_ev_action7
6967

7068
#endif/* PG_REWRITE_H */

‎src/include/rewrite/prs2lock.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ typedef struct RewriteRule
2525
{
2626
OidruleId;
2727
CmdTypeevent;
28-
AttrNumberattrno;
2928
Node*qual;
3029
List*actions;
3130
charenabled;

‎src/include/rewrite/rewriteManip.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ extern void IncrementVarSublevelsUp_rtable(List *rtable,
4949

5050
externboolrangeTableEntry_used(Node*node,intrt_index,
5151
intsublevels_up);
52-
externboolattribute_used(Node*node,intrt_index,intattno,
53-
intsublevels_up);
5452

5553
externQuery*getInsertSelectQuery(Query*parsetree,Query***subquery_ptr);
5654

‎src/tools/pgindent/typedefs.list

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1955,7 +1955,6 @@ adjust_appendrel_attrs_context
19551955
allocfunc
19561956
array_unnest_fctx
19571957
assign_collations_context
1958-
attribute_used_context
19591958
autovac_table
19601959
av_relation
19611960
avl_dbase

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp