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

Commit9ad7e15

Browse files
committed
Set indcheckxmin true when REINDEX fixes an invalid or not-ready index.
Per comment from Greg Stark, it's less clear that HOT chains don't conflictwith the index than it would be for a valid index. So, let's preserve theformer behavior that indcheckxmin does get set when there arepotentially-broken HOT chains in this case. This change does not cause anypg_index update that wouldn't have happened anyway, so we're notre-introducing the previous bug with pg_index updates, and surely the caseis not significant from a performance standpoint; so let's be asconservative as possible.
1 parent5b8e442 commit9ad7e15

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

‎src/backend/catalog/index.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2800,7 +2800,12 @@ reindex_index(Oid indexId, bool skip_constraint_checks)
28002800
*
28012801
* We can also reset indcheckxmin, because we have now done a
28022802
* non-concurrent index build, *except* in the case where index_build
2803-
* found some still-broken HOT chains.
2803+
* found some still-broken HOT chains. If it did, we normally leave
2804+
* indcheckxmin alone (note that index_build won't have changed it,
2805+
* because this is a reindex). But if the index was invalid or not ready
2806+
* and there were broken HOT chains, it seems best to force indcheckxmin
2807+
* true, because the normal argument that the HOT chains couldn't conflict
2808+
* with the index is suspect for an invalid index.
28042809
*
28052810
* Note that it is important to not update the pg_index entry if we don't
28062811
* have to, because updating it will move the index's usability horizon
@@ -2825,10 +2830,12 @@ reindex_index(Oid indexId, bool skip_constraint_checks)
28252830
if (!indexForm->indisvalid|| !indexForm->indisready||
28262831
(indexForm->indcheckxmin&& !indexInfo->ii_BrokenHotChain))
28272832
{
2828-
indexForm->indisvalid= true;
2829-
indexForm->indisready= true;
28302833
if (!indexInfo->ii_BrokenHotChain)
28312834
indexForm->indcheckxmin= false;
2835+
elseif (!indexForm->indisvalid|| !indexForm->indisready)
2836+
indexForm->indcheckxmin= true;
2837+
indexForm->indisvalid= true;
2838+
indexForm->indisready= true;
28322839
simple_heap_update(pg_index,&indexTuple->t_self,indexTuple);
28332840
CatalogUpdateIndexes(pg_index,indexTuple);
28342841
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp