<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:43:17 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-57987] Factor index projection normalizations into IndexDescriptor class</title>
                <link>https://jira.mongodb.org/browse/SERVER-57987</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;In &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-47659&quot; title=&quot;Add &amp;#39;wildcardProjection&amp;#39; parameter to index signature&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-47659&quot;&gt;&lt;del&gt;SERVER-47659&lt;/del&gt;&lt;/a&gt;, we added the &lt;tt&gt;wildcardProjection&lt;/tt&gt; field to the index signature, meaning that two indexes can co-exist as long as their &lt;tt&gt;wildcardProjection&lt;/tt&gt; fields differ. However, while working on this ticket we ran up against a number of dependency cycle problems. These cycles were caused by the fact that &lt;tt&gt;compareIndexOptions&lt;/tt&gt; increasingly relies upon a variety of different constructs from the query system in order to robustly determine whether two indexes are equivalent, while the &lt;tt&gt;IndexDescriptor&lt;/tt&gt; is an otherwise lightweight class which is used throughout the indexing subsystem. We worked around these issues at the time, but as a result there are some undesirable constraints on the use of this function (e.g. comparisons &lt;a href=&quot;https://github.com/mongodb/mongo/blob/ae4aa5dce07f140958375af424c0ce1f958d0a1d/src/mongo/db/index/index_descriptor.cpp#L156-L158&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;can only be performed between a candidate index and an index that already exists in the catalog&lt;/a&gt;, comparisons are not always symmetric, we have to &lt;a href=&quot;https://github.com/mongodb/mongo/blob/ae4aa5dce07f140958375af424c0ce1f958d0a1d/src/mongo/db/index/wildcard_access_method.cpp#L49-L55&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;inject a normalized &lt;tt&gt;wildcardProjection&lt;/tt&gt; back into the &lt;tt&gt;IndexDescriptor&lt;/tt&gt;&lt;/a&gt; when the &lt;tt&gt;WildcardAccessMethod&lt;/tt&gt; is constructed).&lt;/p&gt;

&lt;p&gt;&lt;del&gt;We should factor the &lt;tt&gt;compareIndexOptions&lt;/tt&gt; function out of &lt;tt&gt;IndexDescriptor&lt;/tt&gt; entirely, so that it can depend upon the libraries it needs without pulling them into &lt;tt&gt;IndexDescriptor&lt;/tt&gt;. This will allow us the option of further expanding the index signature in future without running into similar problems. While doing so, we should also ensure that the constraints necessitated by the previous approach are removed.&lt;/del&gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="1793643">SERVER-57987</key>
            <summary>Factor index projection normalizations into IndexDescriptor class</summary>
                <type id="4" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14710&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="9">Done</resolution>
                                        <assignee username="kevin.cherkauer@mongodb.com">Kevin Cherkauer</assignee>
                                    <reporter username="bernard.gorman@mongodb.com">Bernard Gorman</reporter>
                        <labels>
                    </labels>
                <created>Tue, 22 Jun 2021 20:13:00 +0000</created>
                <updated>Thu, 19 Jan 2023 17:04:17 +0000</updated>
                            <resolved>Thu, 19 Jan 2023 17:04:16 +0000</resolved>
                                                    <fixVersion>6.3.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="5124542" author="JIRAUSER1270811" created="Thu, 19 Jan 2023 17:04:17 +0000"  >&lt;p&gt;Fixed by &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-67446&quot; title=&quot;Ensure consistent wildcardProjection and columnstoreProjection specs in catalog&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-67446&quot;&gt;&lt;del&gt;SERVER-67446&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="5078793" author="JIRAUSER1270811" created="Tue, 27 Dec 2022 20:07:23 +0000"  >&lt;p&gt;Changed title from &quot;Factor compareIndexOptions out of IndexDescriptor&quot; (to &quot;Factor index projection normalizations into IndexDescriptor class&quot;) as this will be fixed a better way.&lt;/p&gt;

&lt;p&gt;This will be fixed by &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-67446&quot; title=&quot;Ensure consistent wildcardProjection and columnstoreProjection specs in catalog&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-67446&quot;&gt;&lt;del&gt;SERVER-67446&lt;/del&gt;&lt;/a&gt;, which eliminates the dependency library cycles, thus allowing the management of normalized index projections and their comparisons to all live in the IndexDescriptor class, where they belong from an OO perspective.&lt;/p&gt;

&lt;p&gt;Thus instead of factoring compareIndexOptions() out of IndexDescriptor, the fix will factor the formerly external normalization code IN to that class.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                            <outwardlinks description="depends on">
                                        <issuelink>
            <issuekey id="2074325">SERVER-67446</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                            <outwardlinks description="related to">
                                        <issuelink>
            <issuekey id="2074325">SERVER-67446</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25125"><![CDATA[Query Execution]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 27 Dec 2022 20:07:23 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 2 weeks, 6 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[<s><a href='https://jira.mongodb.org/browse/SERVER-67446'>SERVER-67446</a></s>]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2578</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>kevin.cherkauer@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 2 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>bernard.gorman@mongodb.com</customfieldvalue>
            <customfieldvalue>kevin.cherkauer@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hznzc7:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr2axj:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hznllb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>