<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 05:34:21 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-54740] Extend flexibility to the MatchExpression walkers</title>
                <link>https://jira.mongodb.org/browse/SERVER-54740</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;We have a generic walker at &lt;a href=&quot;https://github.com/mongodb/mongo/blob/master/src/mongo/db/query/tree_walker.h&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/master/src/mongo/db/query/tree_walker.h&lt;/a&gt; which is used for MatchExpressions. It would be nice to find a way to get the flexibility improvements made by &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-54709&quot; title=&quot;Add flexible agg expression walker&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-54709&quot;&gt;&lt;del&gt;SERVER-54709&lt;/del&gt;&lt;/a&gt; applied to both walkers or to merge them into one entity with the benefits of both.&lt;/p&gt;</description>
                <environment></environment>
        <key id="1631252">SERVER-54740</key>
            <summary>Extend flexibility to the MatchExpression walkers</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="10038" iconUrl="https://jira.mongodb.org/images/icons/subtask.gif" description="">Backlog</status>
                    <statusCategory id="2" key="new" colorName="default"/>
                                    <resolution id="-1">Unresolved</resolution>
                                        <assignee username="backlog-query-optimization">Backlog - Query Optimization</assignee>
                                    <reporter username="jacob.evans@mongodb.com">Jacob Evans</reporter>
                        <labels>
                            <label>quick-tech-debt</label>
                    </labels>
                <created>Tue, 23 Feb 2021 23:57:53 +0000</created>
                <updated>Tue, 6 Dec 2022 01:33:55 +0000</updated>
                                                                            <component>Querying</component>
                                        <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="4051264" author="JIRAUSER1258247" created="Sat, 11 Sep 2021 14:42:38 +0000"  >&lt;p&gt;As agreed with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=anton.korshunov&quot; class=&quot;user-hover&quot; rel=&quot;anton.korshunov&quot;&gt;anton.korshunov&lt;/a&gt;&#160;stopping work on this task. Once someone implements &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-59892&quot; title=&quot;Convert ExpressionWithPlaceholder into a MatchExpression&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-59892&quot;&gt;SERVER-59892&lt;/a&gt;, I can finish this up. Attach the current state of the task as diffs.&lt;/p&gt;</comment>
                            <comment id="4051263" author="JIRAUSER1258247" created="Sat, 11 Sep 2021 14:40:59 +0000"  >&lt;p&gt;Description of the attached patches:&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Replace query/tree_walker.h with pipeline/expression_walker.h.&lt;/li&gt;
	&lt;li&gt;Make NotMatchExpression inherit from ListOfMatchExpression in order to&#160;make it&apos;s storage a vector, and change getChildVector to return that&#160;vector instead of nullptr.&lt;/li&gt;
	&lt;li&gt;Convert the following classes: ElemMatchObjectMatchExpression,&#160;ElemMatchValueMatchExpression, ListOfMatchExpression to store&#160;their children as a vector of unique_ptr&amp;lt;MatchExpression&amp;gt;.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;Probably these patches also make some other relevant changes, I don&apos;t remember. The patches should be applied in increasing order.&lt;/p&gt;</comment>
                            <comment id="4051262" author="JIRAUSER1258247" created="Sat, 11 Sep 2021 14:36:45 +0000"  >&lt;p&gt;I tried various approaches to unify the two walkers -&#160;query/tree_walker.h and pipeline/expression_walker.h.&lt;/p&gt;

&lt;p&gt;The final approach we decided upon with &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=jacob.evans&quot; class=&quot;user-hover&quot; rel=&quot;jacob.evans&quot;&gt;jacob.evans&lt;/a&gt;&#160;is to:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Replace&#160;query/tree_walker.h with pipeline/expression_walker.h.&lt;/li&gt;
	&lt;li&gt;Make&#160;pipeline/expression_walker.h use a getChilVector method to access the children of the current node.&lt;/li&gt;
	&lt;li&gt;Make child storage of all MatchExpression classes be the same - a vector&amp;lt;unique_ptr&amp;lt;MatchExpression&amp;gt;&amp;gt;.&lt;/li&gt;
	&lt;li&gt;Implement getChildVector for all classes that are either missing it, or return a NULL instead of an actual vector.&lt;br/&gt;
This method should return the underlying vector storage.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The last point requires a number of changes to some MatchExpression classes that store their children in a class-specific way.&lt;/p&gt;

&lt;p&gt;All the above changes are implemented in the 3 patches attached to this Jira.&lt;/p&gt;

&lt;p&gt;The only thing left is to convert the storage of several &quot;InternalSchema*MatchExpression&quot; classes to a vector. In order for this to become doable, we need to first make&#160;ExpressionWithPlaceholder a proper MatchExpression class, which is filed as a separate task - &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-59892&quot; title=&quot;Convert ExpressionWithPlaceholder into a MatchExpression&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-59892&quot;&gt;SERVER-59892&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="3803739" author="JIRAUSER1258247" created="Fri, 21 May 2021 12:28:30 +0000"  >&lt;p&gt;This task should take into account&#160;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-54741&quot; title=&quot;Add overload with consts to Expression walk for read-only usage&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-54741&quot;&gt;&lt;del&gt;SERVER-54741&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="1872101">SERVER-59892</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="334466" name="s-54740-walker.patch1.diff" size="27688" author="timour.katchaounov@mongodb.com" created="Sat, 11 Sep 2021 14:38:25 +0000"/>
                            <attachment id="334467" name="s-54740-walker.patch2.diff" size="13156" author="timour.katchaounov@mongodb.com" created="Sat, 11 Sep 2021 14:38:33 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_12751" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
                        <customfieldname>Assigned Teams</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="25126"><![CDATA[Query Optimization]]></customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Fri, 21 May 2021 12:28:30 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        2 years, 21 weeks, 4 days 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_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>alexander.golin@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            2 years, 21 weeks, 4 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-query-optimization</customfieldvalue>
            <customfieldvalue>jacob.evans@mongodb.com</customfieldvalue>
            <customfieldvalue>timour.katchaounov@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hywgn3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hr2i3z:</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="4704">Query Optimization 2021-05-31</customfieldvalue>

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

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