On 2020-Apr-02, Michael Paquier wrote: > Now, regarding patch 0002, note that you have a problem for this part: > - tuple = SearchSysCache1(INDEXRELID, ObjectIdGetDatum(indexOid)); > - if (!HeapTupleIsValid(tuple)) /* probably can't happen */ > - { > - relation_close(OldHeap, AccessExclusiveLock); > - pgstat_progress_end_command(); > - return; > - } > - indexForm = (Form_pg_index) GETSTRUCT(tuple); > - if (!indexForm->indisclustered) > + if (!get_index_isclustered(indexOid)) > { > - ReleaseSysCache(tuple); > relation_close(OldHeap, AccessExclusiveLock); > pgstat_progress_end_command(); > return; > } > - ReleaseSysCache(tuple); > > On an invalid tuple for pg_index, the new code would issue an error, > while the old code would just return.
I don't think we need to worry about that problem, because we already checked that the pg_class tuple for the index is there two lines above. The pg_index tuple cannot have gone away on its own; and the index can't be deleted either, because cluster_rel holds AEL on the table. There isn't "probably" about the can't-happen condition, is there? -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services