<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:33:19 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-54357] Avoid normalizing partialFilterExpression when creating a new index</title>
                <link>https://jira.mongodb.org/browse/SERVER-54357</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;In &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-25023&quot; title=&quot;no way to index the same fields with two different partial index filters&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-25023&quot;&gt;&lt;del&gt;SERVER-25023&lt;/del&gt;&lt;/a&gt;, we introduced improved &lt;a href=&quot;https://github.com/mongodb/mongo/blob/b3c26f8c1403e499f4a996d684b298d3f3b1f12f/src/mongo/db/index_builds_coordinator.cpp#L2785-L2798&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;normalization of index specs&lt;/a&gt; such that &lt;tt&gt;partialFilterExpression&lt;/tt&gt; and &lt;tt&gt;wildcardProjection&lt;/tt&gt; fields are converted to a canonical representation on index creation. This means that logically identical filters will appear the same in the catalog and in the output of &lt;tt&gt;listIndexes&lt;/tt&gt;; before this ticket, only the &lt;tt&gt;collation&lt;/tt&gt; field was normalized in this way.&lt;/p&gt;

&lt;p&gt;However, this turns out to have caused some problems for the Cloud team. The Automation agent is responsible for taking an index configuration from the user and continuously ensuring that all nodes match these settings. They do so by issuing &lt;tt&gt;listIndexes&lt;/tt&gt; and comparing the index specs against the desired set of indexes. Because the normalized &lt;tt&gt;partialFilterExpression&lt;/tt&gt; can appear very different than the filter that the user specified, this means that Automation will need to be able to translate between the raw and normalized formats. This is not a trivial task, and will be fragile if we decide to allow additional expressions to be used in the &lt;tt&gt;partialFilterExpression&lt;/tt&gt; or change how we optimize &lt;tt&gt;MatchExpression&lt;/tt&gt; trees.&lt;/p&gt;

&lt;p&gt;In practice, when comparing two indexes for equivalence, we do not actually rely on the serialized form; we &lt;a href=&quot;https://github.com/mongodb/mongo/blob/b3c26f8c1403e499f4a996d684b298d3f3b1f12f/src/mongo/db/index/index_descriptor.cpp#L187-L199&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;parse the existing and candidate &lt;tt&gt;partialFilterExpressions&lt;/tt&gt; and use &lt;tt&gt;MatchExpression::equivalent&lt;/tt&gt;&lt;/a&gt;. It should therefore be safe to remove the normalization of &lt;tt&gt;partialFilterExpression&lt;/tt&gt;, which means that Cloud can continue to expect the &lt;tt&gt;partialFilterExpression&lt;/tt&gt; of existing indexes to exactly match the user&apos;s request. We should retain the normalization of &lt;tt&gt;wildcardProjection&lt;/tt&gt;, though, since this will likely be leveraged by &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; and is trivial to translate on Cloud&apos;s side.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1614311">SERVER-54357</key>
            <summary>Avoid normalizing partialFilterExpression when creating a new index</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</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="13201">Fixed</resolution>
                                        <assignee username="bernard.gorman@mongodb.com">Bernard Gorman</assignee>
                                    <reporter username="bernard.gorman@mongodb.com">Bernard Gorman</reporter>
                        <labels>
                    </labels>
                <created>Fri, 5 Feb 2021 17:48:56 +0000</created>
                <updated>Sun, 29 Oct 2023 21:57:51 +0000</updated>
                            <resolved>Wed, 10 Mar 2021 20:34:12 +0000</resolved>
                                                    <fixVersion>4.9.0</fixVersion>
                                    <component>Index Maintenance</component>
                                        <votes>0</votes>
                                    <watches>4</watches>
                                                                                                                <comments>
                            <comment id="3657696" author="xgen-internal-githook" created="Wed, 10 Mar 2021 19:59:25 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Bernard Gorman&apos;, &apos;email&apos;: &apos;bernard.gorman@gmail.com&apos;, &apos;username&apos;: &apos;gormanb&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-54357&quot; title=&quot;Avoid normalizing partialFilterExpression when creating a new index&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-54357&quot;&gt;&lt;del&gt;SERVER-54357&lt;/del&gt;&lt;/a&gt; Avoid normalizing partialFilterExpression when creating a new index&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/3f601b592620eb2abd207e4c57cff5bf51b4e07e&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/3f601b592620eb2abd207e4c57cff5bf51b4e07e&lt;/a&gt;&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                                        </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 10 Mar 2021 19:59:25 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 48 weeks ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></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_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></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>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 48 weeks ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>bernard.gorman@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hytlin:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hyf4wv:</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_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="4462">Query Execution 2021-02-22</customfieldvalue>
    <customfieldvalue id="4464">Query Execution 2021-03-08</customfieldvalue>
    <customfieldvalue id="4466">Query Execution 2021-03-22</customfieldvalue>

                        </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|hyt7rr:</customfieldvalue>

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