Summary:
Nowadays YSQL 2 sources of ybctids for PgDml:
- secondary index
- results of bitmap scan
Current code is quite tangled. It is reasonable to provide explicit abstraction for ybctid source.
For this purpose the `std::unique_ptr<PgSelectIndex> secondary_index_query_` field in the `PgDml` class is substituted with the `std::unique_ptr<YbctidProvider> ybctid_provider_`. The `PgDml` class still has information about secondary index query, but it is used to setup secondary index query request only (bind target columns, etc.). Ybctids are fetched from the `ybctid_provider_` all the time.
Jira: DB-14332
Test Plan: Jenkins
Reviewers: amartsinchyk, telgersma
Reviewed By: telgersma
Subscribers: smishra, ybase, yql
Tags: #jenkins-ready
Differential Revision: https://phorge.dev.yugabyte.com/D36185