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

Commitcd6f479

Browse files
committed
Add pg_depend.refobjversion.
Provide a place for the version of referenced database objects to berecorded. A follow-up commit will use this to record dependencies oncollation versions for indexes, but similar ideas for other kinds ofobjects have also been mooted.Author: Thomas Munro <thomas.munro@gmail.com>Reviewed-by: Julien Rouhaud <rjuju123@gmail.com>Reviewed-by: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>Discussion:https://postgr.es/m/CAEepm%3D0uEQCpfq_%2BLYFBdArCe4Ot98t1aR4eYiYTe%3DyavQygiQ%40mail.gmail.com
1 parent7d1297d commitcd6f479

File tree

8 files changed

+40
-11
lines changed

8 files changed

+40
-11
lines changed

‎doc/src/sgml/catalogs.sgml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3302,6 +3302,17 @@ SCRAM-SHA-256$<replaceable>&lt;iteration count&gt;</replaceable>:<replaceable>&l
33023302
A code defining the specific semantics of this dependency relationship; see text
33033303
</para></entry>
33043304
</row>
3305+
3306+
<row>
3307+
<entry role="catalog_table_entry"><para role="column_definition">
3308+
<structfield>refobjversion</structfield> <type>text</type>
3309+
</para>
3310+
<para>
3311+
An optional version for the referenced object.
3312+
</para>
3313+
</entry>
3314+
</row>
3315+
33053316
</tbody>
33063317
</tgroup>
33073318
</table>

‎src/backend/catalog/dependency.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1600,7 +1600,9 @@ recordDependencyOnExpr(const ObjectAddress *depender,
16001600

16011601
/* And record 'em */
16021602
recordMultipleDependencies(depender,
1603-
context.addrs->refs,context.addrs->numrefs,
1603+
context.addrs->refs,
1604+
context.addrs->numrefs,
1605+
NULL,
16041606
behavior);
16051607

16061608
free_object_addresses(context.addrs);
@@ -1687,7 +1689,9 @@ recordDependencyOnSingleRelExpr(const ObjectAddress *depender,
16871689
/* Record the self-dependencies with the appropriate direction */
16881690
if (!reverse_self)
16891691
recordMultipleDependencies(depender,
1690-
self_addrs->refs,self_addrs->numrefs,
1692+
self_addrs->refs,
1693+
self_addrs->numrefs,
1694+
NULL,
16911695
self_behavior);
16921696
else
16931697
{
@@ -1707,7 +1711,9 @@ recordDependencyOnSingleRelExpr(const ObjectAddress *depender,
17071711

17081712
/* Record the external dependencies */
17091713
recordMultipleDependencies(depender,
1710-
context.addrs->refs,context.addrs->numrefs,
1714+
context.addrs->refs,
1715+
context.addrs->numrefs,
1716+
NULL,
17111717
behavior);
17121718

17131719
free_object_addresses(context.addrs);
@@ -2679,7 +2685,7 @@ record_object_address_dependencies(const ObjectAddress *depender,
26792685
{
26802686
eliminate_duplicate_dependencies(referenced);
26812687
recordMultipleDependencies(depender,
2682-
referenced->refs,referenced->numrefs,
2688+
referenced->refs,referenced->numrefs,NULL,
26832689
behavior);
26842690
}
26852691

‎src/backend/catalog/pg_depend.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#include"catalog/pg_extension.h"
2525
#include"commands/extension.h"
2626
#include"miscadmin.h"
27+
#include"utils/builtins.h"
2728
#include"utils/fmgroids.h"
2829
#include"utils/lsyscache.h"
2930
#include"utils/rel.h"
@@ -44,7 +45,7 @@ recordDependencyOn(const ObjectAddress *depender,
4445
constObjectAddress*referenced,
4546
DependencyTypebehavior)
4647
{
47-
recordMultipleDependencies(depender,referenced,1,behavior);
48+
recordMultipleDependencies(depender,referenced,1,NULL,behavior);
4849
}
4950

5051
/*
@@ -55,6 +56,7 @@ void
5556
recordMultipleDependencies(constObjectAddress*depender,
5657
constObjectAddress*referenced,
5758
intnreferenced,
59+
constchar*version,
5860
DependencyTypebehavior)
5961
{
6062
RelationdependDesc;
@@ -115,16 +117,20 @@ recordMultipleDependencies(const ObjectAddress *depender,
115117
* Record the dependency. Note we don't bother to check for duplicate
116118
* dependencies; there's no harm in them.
117119
*/
120+
memset(slot[slot_stored_count]->tts_isnull, false,
121+
slot[slot_stored_count]->tts_tupleDescriptor->natts*sizeof(bool));
122+
118123
slot[slot_stored_count]->tts_values[Anum_pg_depend_refclassid-1]=ObjectIdGetDatum(referenced->classId);
119124
slot[slot_stored_count]->tts_values[Anum_pg_depend_refobjid-1]=ObjectIdGetDatum(referenced->objectId);
120125
slot[slot_stored_count]->tts_values[Anum_pg_depend_refobjsubid-1]=Int32GetDatum(referenced->objectSubId);
121126
slot[slot_stored_count]->tts_values[Anum_pg_depend_deptype-1]=CharGetDatum((char)behavior);
122127
slot[slot_stored_count]->tts_values[Anum_pg_depend_classid-1]=ObjectIdGetDatum(depender->classId);
123128
slot[slot_stored_count]->tts_values[Anum_pg_depend_objid-1]=ObjectIdGetDatum(depender->objectId);
124129
slot[slot_stored_count]->tts_values[Anum_pg_depend_objsubid-1]=Int32GetDatum(depender->objectSubId);
125-
126-
memset(slot[slot_stored_count]->tts_isnull, false,
127-
slot[slot_stored_count]->tts_tupleDescriptor->natts*sizeof(bool));
130+
if (version)
131+
slot[slot_stored_count]->tts_values[Anum_pg_depend_refobjversion-1]=CStringGetTextDatum(version);
132+
else
133+
slot[slot_stored_count]->tts_isnull[Anum_pg_depend_refobjversion-1]= true;
128134

129135
ExecStoreVirtualTuple(slot[slot_stored_count]);
130136
slot_stored_count++;

‎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_NO202011011
56+
#defineCATALOG_VERSION_NO202011012
5757

5858
#endif

‎src/include/catalog/dependency.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ extern void recordDependencyOn(const ObjectAddress *depender,
189189
externvoidrecordMultipleDependencies(constObjectAddress*depender,
190190
constObjectAddress*referenced,
191191
intnreferenced,
192+
constchar*version,
192193
DependencyTypebehavior);
193194

194195
externvoidrecordDependencyOnCurrentExtension(constObjectAddress*object,

‎src/include/catalog/pg_depend.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ CATALOG(pg_depend,2608,DependRelationId)
6161
* field. See DependencyType in catalog/dependency.h.
6262
*/
6363
chardeptype;/* see codes in dependency.h */
64+
#ifdefCATALOG_VARLEN
65+
textrefobjversion;/* version tracking, NULL if not used or
66+
* unknown */
67+
#endif
6468
}FormData_pg_depend;
6569

6670
/* ----------------

‎src/include/catalog/toasting.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ DECLARE_TOAST(pg_aggregate, 4159, 4160);
5353
DECLARE_TOAST(pg_attrdef,2830,2831);
5454
DECLARE_TOAST(pg_constraint,2832,2833);
5555
DECLARE_TOAST(pg_default_acl,4143,4144);
56+
DECLARE_TOAST(pg_depend,8888,8889);
5657
DECLARE_TOAST(pg_description,2834,2835);
5758
DECLARE_TOAST(pg_event_trigger,4145,4146);
5859
DECLARE_TOAST(pg_extension,4147,4148);

‎src/test/regress/expected/misc_sanity.out

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ WHERE refclassid = 0 OR refobjid = 0 OR
1818
deptype NOT IN ('a', 'e', 'i', 'n', 'p') OR
1919
(deptype != 'p' AND (classid = 0 OR objid = 0)) OR
2020
(deptype = 'p' AND (classid != 0 OR objid != 0 OR objsubid != 0));
21-
classid | objid | objsubid | refclassid | refobjid | refobjsubid | deptype
22-
---------+-------+----------+------------+----------+-------------+---------
21+
classid | objid | objsubid | refclassid | refobjid | refobjsubid | deptype| refobjversion
22+
---------+-------+----------+------------+----------+-------------+---------+---------------
2323
(0 rows)
2424

2525
-- **************** pg_shdepend ****************

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp