| 1756 | |
| 1757 | |
| 1758 | void |
| 1759 | ExplainRawCompositeScan(Relation index_rel, List *indexQuals, List *indexOrderBy, |
| 1760 | ScanDirection indexScanDir, struct ExplainState *es) |
| 1761 | { |
| 1762 | bool supportsOrderedOperatorScans = false; |
| 1763 | GetMultikeyStatusFunc multiKeyStatusFunc = NULL; |
| 1764 | CanOrderInIndexScan isIndexScanOrdered = NULL; |
| 1765 | if (!GetCompositeOpClassWithProps(index_rel, &supportsOrderedOperatorScans, |
| 1766 | &multiKeyStatusFunc, &isIndexScanOrdered)) |
| 1767 | { |
| 1768 | return; |
| 1769 | } |
| 1770 | |
| 1771 | bool enableCompositeReducedCorrelatedTerms = false; |
| 1772 | if (index_rel->rd_opcoptions != NULL) |
| 1773 | { |
| 1774 | BsonGinCompositePathOptions *options = |
| 1775 | (BsonGinCompositePathOptions *) index_rel->rd_opcoptions[0]; |
| 1776 | const char *keyString = SerializeCompositeIndexKeyForExplain( |
| 1777 | index_rel->rd_opcoptions[0]); |
| 1778 | ExplainPropertyText("indexKey", keyString, es); |
| 1779 | enableCompositeReducedCorrelatedTerms = |
| 1780 | options->enableCompositeReducedCorrelatedTerms; |
| 1781 | } |
| 1782 | |
| 1783 | ExplainCompositeProperties(es, multiKeyStatusFunc, index_rel, |
| 1784 | enableCompositeReducedCorrelatedTerms, indexQuals, |
| 1785 | indexOrderBy, |
| 1786 | supportsOrderedOperatorScans, |
| 1787 | ExplainWriterWriteBool, ExplainWriterWriteStringList); |
| 1788 | } |
| 1789 | |
| 1790 | |
| 1791 | static void |
no test coverage detected