<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 22:02:00 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>[CXX-1269] Audit driver against Collation spec</title>
                <link>https://jira.mongodb.org/browse/CXX-1269</link>
                <project id="11980" key="CXX">C++ Driver</project>
                    <description>&lt;p&gt;Revalidate driver against:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-291&quot; title=&quot;Support providing collation per operation&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-291&quot;&gt;&lt;del&gt;DRIVERS-291&lt;/del&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="366249">CXX-1269</key>
            <summary>Audit driver against Collation spec</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="9">Done</resolution>
                                        <assignee username="rassi">J Rassi</assignee>
                                    <reporter username="david.golden@mongodb.com">David Golden</reporter>
                        <labels>
                    </labels>
                <created>Mon, 20 Mar 2017 15:34:36 +0000</created>
                <updated>Mon, 15 May 2017 21:02:34 +0000</updated>
                            <resolved>Mon, 15 May 2017 15:18:39 +0000</resolved>
                                                    <fixVersion>3.2.0-rc0</fixVersion>
                                    <component>Testing</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="1571210" author="rassi@10gen.com" created="Mon, 15 May 2017 15:18:39 +0000"  >&lt;p&gt;I have re-validated the C++ driver for &lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-291&quot; title=&quot;Support providing collation per operation&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-291&quot;&gt;&lt;del&gt;DRIVERS-291&lt;/del&gt;&lt;/a&gt;, and have filed &lt;a href=&quot;https://jira.mongodb.org/browse/CXX-1339&quot; title=&quot;Write additional collation integration tests&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CXX-1339&quot;&gt;&lt;del&gt;CXX-1339&lt;/del&gt;&lt;/a&gt; for follow-up work required for the driver to be fully validated against this DRIVERS ticket.   See below for full notes of audit (bolded text indicates problematic or potentially problematic areas, which are re-summarized in &lt;a href=&quot;https://jira.mongodb.org/browse/CXX-1339&quot; title=&quot;Write additional collation integration tests&quot; class=&quot;issue-link&quot; data-issue-key=&quot;CXX-1339&quot;&gt;&lt;del&gt;CXX-1339&lt;/del&gt;&lt;/a&gt;).&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/browse/DRIVERS-291&quot; title=&quot;Support providing collation per operation&quot; class=&quot;issue-link&quot; data-issue-key=&quot;DRIVERS-291&quot;&gt;&lt;del&gt;DRIVERS-291&lt;/del&gt;&lt;/a&gt; includes changes to three specs:&lt;/p&gt;
&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/cbae444815d8790c74c897924b5ae12ae36cf649/source/crud/crud.rst&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;CRUD&lt;/a&gt;:
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;The &quot;collation&quot; option is added to several options/model classes.  These (A) must be sent to the server if the user specifies them, and (B) the associated database operations must fail if the server version is &amp;lt;3.4.
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;options::aggregate: A and B tested by &quot;aggregation with collation&quot; test.&lt;/li&gt;
			&lt;li&gt;options::count: A and B tested by &quot;count with collation&quot; test.&lt;/li&gt;
			&lt;li&gt;options::distinct: A and B tested by &quot;distinct with collation&quot; test.&lt;/li&gt;
			&lt;li&gt;options::find: A and B tested by &quot;find with collation&quot; and &quot;find_one with collation&quot; tests.&lt;/li&gt;
			&lt;li&gt;options::update: A and B tested by &quot;update_one with collation&quot; and &quot;update_many with collation&quot; tests.&lt;/li&gt;
			&lt;li&gt;options::delete_options: A and B tested by &quot;delete_one with collation&quot; and &quot;delete_many with collation&quot; tests.&lt;/li&gt;
			&lt;li&gt;options::find_one_and_delete: A and B tested by &quot;find_one_and_delete works / with collation&quot; test.&lt;/li&gt;
			&lt;li&gt;options::find_one_and_replace: A and B tested by &quot;find_one_and_replace works / with collation&quot; test.&lt;/li&gt;
			&lt;li&gt;options::find_one_and_update: A and B tested by &quot;find_one_and_update works / with collation&quot; test.&lt;/li&gt;
			&lt;li&gt;model::delete_one: A tested by &quot;delete_one with collation invokes mongoc_bulk_operation_remove_one_with_opts with collation&quot; test.  &lt;b&gt;B verified manually by libmongoc code inspection: &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/blob/1.5.0/src/mongoc/mongoc-write-command.c#L1274-L1281&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/blob/1.5.0/src/mongoc/mongoc-write-command.c#L1274-L1281&lt;/a&gt;.  API guarantee for mongoc_bulk_operation_execute() is undocumented, as far as I can tell.&lt;/b&gt;&lt;/li&gt;
			&lt;li&gt;model::delete_many: A tested by &quot;delete_many with collation invokes mongoc_bulk_operation_remove_many_with_opts with collation&quot; test.  B verified manually via same method as model::delete_one.&lt;/li&gt;
			&lt;li&gt;model::replace_one: A tested by &quot;replace_one with collation invokes mongoc_bulk_operation_replace_one_with_opts with collation&quot; test.  B verified manually via same method as model::delete_one.&lt;/li&gt;
			&lt;li&gt;model::update_one: A tested by &quot;update_one with collation invokes mongoc_bulk_operation_update_one_with_opts with collation&quot; test.  B verified manually via same method as model::delete_one.&lt;/li&gt;
			&lt;li&gt;model::update_many: A tested by &quot;update_many with collation invokes mongoc_bulk_operation_update_many_with_opts with collation&quot; test.  B verified manually via same method as model::delete_one.&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;Database operations for update / delete (via both CRUD methods and write models) must fail when using unacknowledged writes if a collation is specified.
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;&lt;b&gt;Verified manually by libmongoc code inspection: &lt;a href=&quot;https://github.com/mongodb/mongo-c-driver/blob/1.5.0/src/mongoc/mongoc-write-command.c#L1262-L1268&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo-c-driver/blob/1.5.0/src/mongoc/mongoc-write-command.c#L1262-L1268&lt;/a&gt;.  API guarantee for mongoc_bulk_operation_execute() is undocumented, as far as I can tell.&lt;/b&gt;&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/4e3189d77fff62cc1c88a18e62816ff1e14a7837/source/index-management.rst&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Index management&lt;/a&gt;
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;The &quot;collation&quot; option is added to index options.
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;options::index: tested by &quot;create_index tests / with collation&quot;.&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;https://github.com/mongodb/specifications/blob/9709b0e3981430335d0085c3b3545b5329124d7d/source/collation/collation.rst&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;Collation&lt;/a&gt;
	&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
		&lt;li&gt;&quot;Collation Document Model&quot; section
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;The driver doesn&apos;t have a collation document model, collation is specified by bsoncxx::document::value.&lt;/li&gt;
			&lt;li&gt;The driver doesn&apos;t inspect the contents of the &quot;collation&quot; document.&lt;/li&gt;
			&lt;li&gt;mongocxx::database::run_command() doesn&apos;t inspect the &quot;collation&quot; subdocument.  Possibly a &lt;b&gt;candidate for testing&lt;/b&gt;, since we don&apos;t have a guarantee that the C driver method we use doesn&apos;t do this.&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;&quot;API&quot; section.
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;The &quot;create collection&quot; helper must take a default collation.
			&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
				&lt;li&gt;options::create_collection: tested by &quot;A database may create a collection via create_collection / with collation&quot; test.&lt;/li&gt;
				&lt;li&gt;options::create_view: tested by &quot;A database may create a view via create_view / with collation&quot; test.&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/li&gt;
			&lt;li&gt;All helpers for aggregate, count, distinct, find (command only), findAndModify, geoNear, group, mapReduce, delete (command only), update (command only) must be updated.
			&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
				&lt;li&gt;All helpers present in the driver have been updated.&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;&quot;Require maxWireVersion 5&quot; section
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;See above: all tests noted in this comment have &quot;Require maxWireVersion 5&quot; sections&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;&quot;Opcode-based Unacknowledged Writes&quot; section
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;See &quot;Database operations for update / delete...&quot; above.&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;&quot;Setting a default collation on a collection&quot; section
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;See &apos;The &quot;create collection&quot; helper&apos; above.&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;&quot;BulkWrite API&quot; section
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;See &quot;model::xxx&quot; above.&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
		&lt;li&gt;&quot;Test Plan&quot; section
		&lt;ul class=&quot;alternate&quot; type=&quot;square&quot;&gt;
			&lt;li&gt;&lt;b&gt;&quot;drivers should test that two indexes can be created with identical key patterns and different collations&quot; test ... then, the test should ensure that the correct index is dropped when delete_one is called with an index name&quot; =&amp;gt; C++ driver is lacking such a test&lt;/b&gt;.&lt;/li&gt;
			&lt;li&gt;&quot;Errors are raised in each place Collation can be provided to a API method and the selected server has maxWireVersion &amp;lt; 5.&quot; =&amp;gt; yes, we do this.&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;
</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10012">
                    <name>Related</name>
                                                                <inwardlinks description="is related to">
                                        <issuelink>
            <issuekey id="383561">CXX-1339</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                    <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>CXX-1293</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hraruf:</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_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="1715">Perl/CXX 2017-05-26</customfieldvalue>

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