<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:54:49 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-84366] Incorrect selectivity in explain for complex physical plans</title>
                <link>https://jira.mongodb.org/browse/SERVER-84366</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;The implementation of &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-83441&quot; title=&quot;Pushdown top-level fields from FilterNode into PhysicalScanNode&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-83441&quot;&gt;&lt;del&gt;SERVER-83441&lt;/del&gt;&lt;/a&gt; introduces a new way to construct a physical plan from a FilterNode when the FilterNode is directly on top of a ScanNode. In this case, similar to the approach in the implementer for SargableNode, the FilterNode implementer creates a complex physical plan consisting directly of a FilterNode on top of a PhysicalScanNode.&lt;/p&gt;

&lt;p&gt;The selectivities of both physical nodes computed during their creation are correct, however the infrastructure in the optimizer that is supposed to pass this information to explain is not designed to do this correctly. The result is that explain shows the same CE for the PhysicalScanNode as the one of the FilterNode. Apparently explain picks the selectivity for the whole group instead of the specific per-node selectivity.&lt;/p&gt;

&lt;p&gt;As &lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=david.percy%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;david.percy@mongodb.com&quot;&gt;david.percy@mongodb.com&lt;/a&gt; said:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;it seems like there isn&#8217;t a quick fix for this.&#160; It&#8217;s a bug in these interfaces: * NodeToGroupPropsMap is a confusing mixture of properties used for different purposes&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;explain wants to show per-physical-node properties&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;takes &#8220;group props&#8221; and displays it per-node: very misleading&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;plan extraction does not return per-node properties&lt;/li&gt;
&lt;/ul&gt;


&lt;ul&gt;
	&lt;li&gt;the memo only record properties at group boundaries&lt;/li&gt;
	&lt;li&gt;implementers only return properties at group boundaries&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;I think the solution is to change explain to only print properties at a group boundary.&#160; And that seems unrelated to your work avoiding Sargable node.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&#160;&lt;br/&gt;
There are at least two possible approaches: * Extend/improve the optimizer logic around how node properties are propagated to explan, and make explain pick the correct properties of each node.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Impose a limitation that physical rewrites can only produce one physical node per logical node, and reimplement &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-83441&quot; title=&quot;Pushdown top-level fields from FilterNode into PhysicalScanNode&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-83441&quot;&gt;&lt;del&gt;SERVER-83441&lt;/del&gt;&lt;/a&gt;. This looks very limiting, and is less desirable.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&#160;&lt;/p&gt;</description>
                <environment></environment>
        <key id="2530439">SERVER-84366</key>
            <summary>Incorrect selectivity in explain for complex physical plans</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="timour.katchaounov@mongodb.com">Timour Katchaounov</reporter>
                        <labels>
                    </labels>
                <created>Thu, 21 Dec 2023 08:47:56 +0000</created>
                <updated>Fri, 22 Dec 2023 01:01:25 +0000</updated>
                                                                                                <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                    <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="2505137">SERVER-83441</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="2505431">SERVER-83456</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>0.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_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        6 weeks, 6 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_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-3240</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>dbeng-pm-bot</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            6 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>backlog-query-optimization</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|i35kv3:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i2nby4:</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_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|i3570f:</customfieldvalue>

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