<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:07:04 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-67019] Rename StringSet and StringDataSet to clarify they are unordered</title>
                <link>https://jira.mongodb.org/browse/SERVER-67019</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;I was just working on a patch and incorrectly assumed that we had no data structure that could support an unordered set of unowned strings (StringData) other than this one: &lt;a href=&quot;https://github.com/10gen/mongo/blob/master/src/mongo/base/string_data_comparator_interface.h#L80&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;&lt;tt&gt;StringData::ComparatorInterface::StringDataUnorderedSet&lt;/tt&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It turns out that `StringDataSet` is the same thing, but without the collator interface virtual method overhead. In my context I never needed to support collation, so this would have been the better choice.&lt;/p&gt;

&lt;p&gt;To improve visibility and discoverability, I would suggest `UnorderedStringSet` and `UnorderedStringDataSet`.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2061782">SERVER-67019</key>
            <summary>Rename StringSet and StringDataSet to clarify they are unordered</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="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="12300">Won&apos;t Do</resolution>
                                        <assignee username="charlie.swanson@mongodb.com">Charlie Swanson</assignee>
                                    <reporter username="charlie.swanson@mongodb.com">Charlie Swanson</reporter>
                        <labels>
                    </labels>
                <created>Fri, 3 Jun 2022 18:30:44 +0000</created>
                <updated>Tue, 16 Aug 2022 19:47:25 +0000</updated>
                            <resolved>Tue, 16 Aug 2022 19:47:25 +0000</resolved>
                                                                    <component>Internal Code</component>
                                        <votes>0</votes>
                                    <watches>5</watches>
                                                                                                                <comments>
                            <comment id="4755453" author="charlie.swanson" created="Tue, 16 Aug 2022 19:47:25 +0000"  >&lt;p&gt;I&apos;m going to close this as &quot;Won&apos;t Do&quot; since I didn&apos;t anticipate any pushback on the naming. Mathias and I are on different pages, so it seems many team members might be as well. My thinking was that everyone has gotten used to the heavily verbose unordered_blah in C++ standards, so we should just get on board with the verbosity and not have any confusion. &lt;/p&gt;</comment>
                            <comment id="4622843" author="redbeard0531" created="Fri, 17 Jun 2022 08:01:32 +0000"  >&lt;p&gt;&quot;Hash&quot; is certainly better than &quot;Unordered&quot;, but I personally would just leave it off. &lt;tt&gt;StringSet&lt;/tt&gt; is our goto type if you want a set of string, and &lt;tt&gt;StringMap&amp;lt;V&amp;gt;&lt;/tt&gt; is our goto type if you want a map from strings to &lt;tt&gt;V&lt;/tt&gt;. Nice and simple. I don&apos;t think we need to describe every detail about the type in its name, especially very common types like &lt;tt&gt;StringMap&lt;/tt&gt;. If you want to know about how it is implemented, that is a good time to go look at the header (maybe we could use some more comments here? Although a typedef to &lt;tt&gt;absl::flat_hash_map&lt;/tt&gt; seems clear enough that it is a hash table I guess). I recognize that the other types in the family are much newer and therefore less widely used, but I think it makes sense to keep the naming consistent there.&lt;/p&gt;</comment>
                            <comment id="4607003" author="charlie.swanson" created="Fri, 10 Jun 2022 14:03:21 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=mathias%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;mathias@mongodb.com&quot;&gt;mathias@mongodb.com&lt;/a&gt; thanks for the commentary. I can understand the criticisms you present, the names would get very long. I am somewhat confused by your comment though. The last paragraph seems to imply to me that you do not want to bother renaming these at all? But the first part indicates maybe you&apos;re still in favor of a clarification here, but you think the word &quot;unordered&quot; is too long? So maybe would propose something like &lt;tt&gt;String(Data)?HashSet&lt;/tt&gt; and &lt;tt&gt;String(Data)?HashMap&lt;/tt&gt;?&lt;/p&gt;</comment>
                            <comment id="4604494" author="redbeard0531" created="Thu, 9 Jun 2022 13:35:39 +0000"  >&lt;p&gt;Personally, I&apos;d rather we not make the names of &lt;tt&gt;String(Data)?(Set|Map)&lt;/tt&gt; worse just to match the naming of the stdlib. The stdlib&apos;s use of &lt;tt&gt;unordered&lt;/tt&gt; is the result of a lot of historical bad decisions, including that some implementations already had something with the name &lt;tt&gt;std::hash_map&lt;/tt&gt; as a non-portable extension. Note that even absl which backs our &lt;tt&gt;stdx::unordered_foo&lt;/tt&gt; types uses &lt;tt&gt;(node|flat)&lt;em&gt;hash&lt;/em&gt;(map|set)&lt;/tt&gt; rather than &lt;tt&gt;unordered&lt;/tt&gt;, even though it aims for std compatability.&lt;/p&gt;

&lt;p&gt;I think the best way to think of &lt;tt&gt;StringMap&amp;lt;V&amp;gt;&lt;/tt&gt; and friends is that they should be the default type you use when you want to establish a mapping between a &lt;tt&gt;string&lt;/tt&gt; or &lt;tt&gt;StringData&lt;/tt&gt; and some &lt;tt&gt;V&lt;/tt&gt;. You should consider using it first and only use another type if you need different guarantees (eg, collation-aware comparisons, node-based invalidation rules, or a well-defined iteration order).&lt;/p&gt;</comment>
                            <comment id="4599740" author="JIRAUSER1260027" created="Tue, 7 Jun 2022 15:22:21 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=charlie.swanson%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;charlie.swanson@mongodb.com&quot;&gt;charlie.swanson@mongodb.com&lt;/a&gt;: Would you like to do this? Meanwhile, I&apos;m putting it in Backlog &lt;/p&gt;</comment>
                            <comment id="4593847" author="charlie.swanson" created="Fri, 3 Jun 2022 18:31:26 +0000"  >&lt;p&gt;meta note: I&apos;m not sure who owns this code now... Definitely could have the wrong backlog. I am also happy to do this if I could get someone considered to be a maintainer to volunteer to review.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>6.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 6 Jun 2022 18:23:09 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 25 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>charlie.swanson@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 25 weeks, 1 day ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>charlie.swanson@mongodb.com</customfieldvalue>
            <customfieldvalue>mathias@mongodb.com</customfieldvalue>
            <customfieldvalue>sebastien.mendez@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i0xff3:</customfieldvalue>

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

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