<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:11:01 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-68516] [CQF] Always translate projections to ABT using ProjectionExecutor</title>
                <link>https://jira.mongodb.org/browse/SERVER-68516</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;&lt;del&gt;This is an extension and continuation of &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66846&quot; title=&quot;Translate $project by walking over ProjectionAST&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66846&quot;&gt;&lt;del&gt;SERVER-66846&lt;/del&gt;&lt;/a&gt;. The previous approach used a projection_executor, which we do not want to use in translating $project queries. &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66846&quot; title=&quot;Translate $project by walking over ProjectionAST&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66846&quot;&gt;&lt;del&gt;SERVER-66846&lt;/del&gt;&lt;/a&gt; only covers translating simple inclusion and exclusion projections from ProjectionAST.&lt;/del&gt;&#160;&lt;/p&gt;

&lt;p&gt;This ticket was originally intended to change all the projection translation code to use the ProjectionAST. However, while implementing that, we discovered that ProjectionAST has no way to represent $addFields and $replaceRoot projections, which already had test-only support in CQF via the ProjectionExecutor codepath. While ideally we use parse trees as input to ABT translation instead of runtime data structures, in this case we chose to be more pragmatic and exercise more of the optimizer&apos;s code sooner. In the future, the current ABT translation will be replaced with a proper BSON &amp;gt; CST {} &amp;gt; ABT translation; hence, we don&apos;t get much value out of moving to the ProjectionAST right now. As a result, we chose to repurpose this ticket to undo the changes in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66846&quot; title=&quot;Translate $project by walking over ProjectionAST&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66846&quot;&gt;&lt;del&gt;SERVER-66846&lt;/del&gt;&lt;/a&gt; (with updates, as the revert is not clean).&lt;/p&gt;</description>
                <environment></environment>
        <key id="2105024">SERVER-68516</key>
            <summary>[CQF] Always translate projections to ABT using ProjectionExecutor</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="ben.shteinfeld@mongodb.com">Ben Shteinfeld</assignee>
                                    <reporter username="emily.wang@mongodb.com">Emily Wang</reporter>
                        <labels>
                    </labels>
                <created>Tue, 2 Aug 2022 19:26:52 +0000</created>
                <updated>Sun, 29 Oct 2023 21:35:00 +0000</updated>
                            <resolved>Fri, 18 Nov 2022 14:59:19 +0000</resolved>
                                                    <fixVersion>6.3.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>7</watches>
                                                                                                                <comments>
                            <comment id="4992737" author="xgen-internal-githook" created="Fri, 18 Nov 2022 13:27:37 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Ben Shteinfeld&apos;, &apos;email&apos;: &apos;ben.shteinfeld@mongodb.com&apos;, &apos;username&apos;: &apos;bshteinfeld&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-68516&quot; title=&quot;[CQF] Always translate projections to ABT using ProjectionExecutor&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-68516&quot;&gt;&lt;del&gt;SERVER-68516&lt;/del&gt;&lt;/a&gt; Revert back to always using `ProjectionExecutor` to translate projections to ABT&lt;/p&gt;

&lt;p&gt;In &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66846&quot; title=&quot;Translate $project by walking over ProjectionAST&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66846&quot;&gt;&lt;del&gt;SERVER-66846&lt;/del&gt;&lt;/a&gt;, we started using `ProjectionAST` as the input to ABT translations for inclusion/exclusion projections. &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-68516&quot; title=&quot;[CQF] Always translate projections to ABT using ProjectionExecutor&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-68516&quot;&gt;&lt;del&gt;SERVER-68516&lt;/del&gt;&lt;/a&gt; was originally intended to update `$addFields` and `$replaceRoot` projections to also use the `ProjectionAST` codepath. However, we realized that `ProjectionAST` is not capable of representing these projections. So rather than losing functionality or maintaining two translation codepaths, we revert back to using `ProjectionExecutor` for translation.&lt;/p&gt;

&lt;p&gt;Note this patch is not a clean revert of &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66846&quot; title=&quot;Translate $project by walking over ProjectionAST&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66846&quot;&gt;&lt;del&gt;SERVER-66846&lt;/del&gt;&lt;/a&gt;. The diffs are:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Keeping the tests which the original commit introduced&lt;/li&gt;
	&lt;li&gt;Adding additional fallback logic for agg expressions and ensuring that the `_rootReplacementExpression` of a `ProjectionExecutor` is checked during the fallback mechanism. This was discovered because of a new test-case, added after  &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66846&quot; title=&quot;Translate $project by walking over ProjectionAST&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66846&quot;&gt;&lt;del&gt;SERVER-66846&lt;/del&gt;&lt;/a&gt;, for falling back to classic when a find query has a positional projection.&lt;/li&gt;
	&lt;li&gt;Updated comments&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/35c1d35f4870510bc0923e3db49eb026dcf93f32&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/35c1d35f4870510bc0923e3db49eb026dcf93f32&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</comment>
                            <comment id="4764184" author="JIRAUSER1269474" created="Fri, 19 Aug 2022 17:59:48 +0000"  >&lt;p&gt;Work done so far is Expression projections are implemented (including $slice and computedPaths), and $replaceRoot is implemented. $addFields is a work-in-progress (and also more complicated)&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/10gen/mongo/tree/emilywang/SERVER-68516&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/10gen/mongo/tree/emilywang/SERVER-68516&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4757473" author="JIRAUSER1269474" created="Wed, 17 Aug 2022 14:29:52 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=david.storch%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;david.storch@mongodb.com&quot;&gt;david.storch@mongodb.com&lt;/a&gt; I think this ticket was named badly &#8211; originally these features already existed and had corresponding tests, but because work in &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66846&quot; title=&quot;Translate $project by walking over ProjectionAST&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66846&quot;&gt;&lt;del&gt;SERVER-66846&lt;/del&gt;&lt;/a&gt; was split between some milestone 2 and 3 features, I split off this ticket. This ticket is just to add back all the existing features that was made unsupported in &#160;&lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66846&quot; title=&quot;Translate $project by walking over ProjectionAST&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66846&quot;&gt;&lt;del&gt;SERVER-66846&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</comment>
                            <comment id="4754916" author="david.storch" created="Tue, 16 Aug 2022 17:12:14 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=emily.wang%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;emily.wang@mongodb.com&quot;&gt;emily.wang@mongodb.com&lt;/a&gt; &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=nicholas.zolnierz%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;nicholas.zolnierz@mongodb.com&quot;&gt;nicholas.zolnierz@mongodb.com&lt;/a&gt; this should probably not be housed in the ABT project, right? I&apos;m assuming that we won&apos;t do this work just yet since it pertains to CQF milestone 3.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10011">
                    <name>Depends</name>
                                                                <inwardlinks description="is depended on by">
                                        <issuelink>
            <issuekey id="2124568">SERVER-69231</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2159344">SERVER-70582</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </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>2.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>Tue, 16 Aug 2022 17:12:14 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 11 weeks, 5 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_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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2512</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>
                            1 year, 11 weeks, 5 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>ben.shteinfeld@mongodb.com</customfieldvalue>
            <customfieldvalue>david.storch@mongodb.com</customfieldvalue>
            <customfieldvalue>emily.wang@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|i14ten:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i0nm9c:</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_22250" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Special Downgrade Instructions Required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="23343"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="5913">QO 2022-10-03</customfieldvalue>
    <customfieldvalue id="5914">QE 2022-10-17</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|i14fjz:</customfieldvalue>

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