<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 03:29:27 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-12732] Permit delta-based updates (update by a damage vector) to indexed fields</title>
                <link>https://jira.mongodb.org/browse/SERVER-12732</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;The update code has two paths for writing an update to a document:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&quot;Update with damages&quot;. This path computes a &quot;damage vector&quot;, which consists of a set of damages to apply to a document. Each damage is a byte array, along with an offset at which to copy this byte array into the document. This is essentially a delta-based description of the update. This is an optimized code path which can apply the update to storage more efficiently.&lt;/li&gt;
	&lt;li&gt;The regular update path, in which the &lt;tt&gt;UpdateDriver&lt;/tt&gt; computes the full post-image and then writes the resulting complete post-image to the &lt;tt&gt;Collection&lt;/tt&gt;.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The update with damages path cannot currently be used for updates that affect indexes. (&lt;a href=&quot;https://github.com/mongodb/mongo/blob/67b5cff517548bc943c819308da452a2b35f5c28/src/mongo/db/update/update_driver.cpp#L270-L272&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;See the code here&lt;/a&gt; where we turn off in-place updates when indexes are affected.) We should lift this restriction in order to allow more updates to use the optimized code path.&lt;/p&gt;

&lt;h5&gt;&lt;a name=&quot;Originaldescription&quot;&gt;&lt;/a&gt;Original description&lt;/h5&gt;

&lt;p&gt;In the current update framework updates to indexed fields cannot be &apos;fastmods&apos;, meaning that they require re-serializing the document.&lt;/p&gt;

&lt;p&gt;This makes simple updates to indexed fields more expensive than they need to be.&lt;/p&gt;

&lt;p&gt;We should improve the interaction between the update framework and the index update subsystem to permit fastmod updates to indexed fields.&lt;/p&gt;</description>
                <environment></environment>
        <key id="111068">SERVER-12732</key>
            <summary>Permit delta-based updates (update by a damage vector) to indexed fields</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="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-execution">Backlog - Query Execution</assignee>
                                    <reporter username="andrew.morrow@mongodb.com">Andrew Morrow</reporter>
                        <labels>
                            <label>Performance</label>
                    </labels>
                <created>Fri, 14 Feb 2014 16:16:00 +0000</created>
                <updated>Tue, 6 Dec 2022 05:11:44 +0000</updated>
                                                                            <component>Write Ops</component>
                                        <votes>2</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="1873286" author="david.storch" created="Tue, 24 Apr 2018 21:36:38 +0000"  >&lt;p&gt;This limitation still exists. The code which computes the set of index keys to delete and index keys to insert relies on the full pre-image and post-image of the document:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/mongodb/mongo/blob/67b5cff517548bc943c819308da452a2b35f5c28/src/mongo/db/index/index_access_method.cpp#L343-L370&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/blob/67b5cff517548bc943c819308da452a2b35f5c28/src/mongo/db/index/index_access_method.cpp#L343-L370&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Removing this restriction would require us to improve the key generation code to be able to compute index key changes from the damage vector.&lt;/p&gt;</comment>
                            <comment id="505051" author="jblackburn" created="Tue, 25 Feb 2014 18:57:42 +0000"  >&lt;p&gt;See also: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-12886&quot; title=&quot;Make non-fastmod updates perform work proportional to the update size&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-12886&quot;&gt;&lt;del&gt;SERVER-12886&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This can be fixed by something like:&lt;br/&gt;
&lt;a href=&quot;https://github.com/jamesblackburn/mongo/compare/SERVER-12886&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/jamesblackburn/mongo/compare/SERVER-12886&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;which implements &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-66&quot; title=&quot;do memcmp before memcpy for update?&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-66&quot;&gt;&lt;del&gt;SERVER-66&lt;/del&gt;&lt;/a&gt;.  Essentially it attempts to write back just dirty pages, which makes a big difference to small updates to larger documents.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                                        </inwardlinks>
                                    </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_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, 25 Feb 2014 18:57:42 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        5 years, 42 weeks, 1 day 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>
                            5 years, 42 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10000" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Old_Backport</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10000"><![CDATA[No]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>andrew.morrow@mongodb.com</customfieldvalue>
            <customfieldvalue>backlog-query-execution</customfieldvalue>
            <customfieldvalue>david.storch@mongodb.com</customfieldvalue>
            <customfieldvalue>jblackburn</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|hrm1k7:</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>4670</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|hsox53:</customfieldvalue>

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