<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Wed Feb 07 21:36:37 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>[CSHARP-371] In BsonUtils ToDateTimeFromMillisecondsSinceEpoch and ToMillisecondsSinceEpoch should be mirrors of each other</title>
                <link>https://jira.mongodb.org/browse/CSHARP-371</link>
                <project id="10041" key="CSHARP">C# Driver</project>
                    <description>&lt;p&gt;ToMillisecondsSinceEpoch does not special case DateTimeMax.&lt;/p&gt;</description>
                <environment></environment>
        <key id="27392">CSHARP-371</key>
            <summary>In BsonUtils ToDateTimeFromMillisecondsSinceEpoch and ToMillisecondsSinceEpoch should be mirrors of each other</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="5" iconUrl="https://jira.mongodb.org/images/icons/priorities/trivial.svg">Trivial - P5</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="sridhar">Sridhar Nanjundeswaran</assignee>
                                    <reporter username="sridhar">Sridhar Nanjundeswaran</reporter>
                        <labels>
                    </labels>
                <created>Thu, 29 Dec 2011 06:11:46 +0000</created>
                <updated>Thu, 2 Apr 2015 18:27:52 +0000</updated>
                            <resolved>Tue, 3 Jan 2012 21:17:14 +0000</resolved>
                                    <version>1.3.1</version>
                                    <fixVersion>1.4</fixVersion>
                                                        <votes>0</votes>
                                    <watches>0</watches>
                                                                                                                <comments>
                            <comment id="77314" author="sridhar" created="Tue, 3 Jan 2012 21:17:14 +0000"  >&lt;p&gt;Special casing for min value not needed since it works as is. Also ensured that greater than DateTime.MaxValue or less than DateTime.MinValue throws the expected ArgumentOutOfRange exception&lt;/p&gt;</comment>
                            <comment id="76740" author="rstam" created="Fri, 30 Dec 2011 05:33:44 +0000"  >&lt;p&gt;Here&apos;s a unit test that might support the original notion that we should map MaxValue to MaxValue and MinValue to MinValue:&lt;/p&gt;

&lt;p/&gt;
&lt;div id=&quot;syntaxplugin&quot; class=&quot;syntaxplugin&quot; style=&quot;border: 1px dashed #bbb; border-radius: 5px !important; overflow: auto; max-height: 30em;&quot;&gt;
&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; style=&quot;font-size: 1em; line-height: 1.4em !important; font-weight: normal; font-style: normal; color: black;&quot;&gt;
		&lt;tbody &gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;  margin-top: 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;var bsonDateTimeMaxValue = new BsonDateTime(DateTime.MaxValue);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;Assert.AreEqual(DateTime.MaxValue, bsonDateTimeMaxValue.AsDateTime);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&amp;nbsp;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;var bsonDateTimeMinValue = new BsonDateTime(DateTime.MinValue);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
				&lt;tr id=&quot;syntaxplugin_code_and_gutter&quot;&gt;
						&lt;td  style=&quot; line-height: 1.4em !important; padding: 0em; vertical-align: top;&quot;&gt;
					&lt;pre style=&quot;font-size: 1em; margin: 0 10px;   margin-bottom: 10px;  width: auto; padding: 0;&quot;&gt;&lt;span style=&quot;color: black; font-family: &apos;Consolas&apos;, &apos;Bitstream Vera Sans Mono&apos;, &apos;Courier New&apos;, Courier, monospace !important;&quot;&gt;Assert.AreEqual(DateTime.MinValue, bsonDateTime.MinValue.AsDateTime);&lt;/span&gt;&lt;/pre&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
			&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p/&gt;

&lt;p&gt;If these unit tests don&apos;t pass, what is the rational for them not passing? I&apos;m not 100% sure they should pass, but it does feel difficult to explain why they wouldn&apos;t.&lt;/p&gt;

&lt;p&gt;And there should probably be similar unit tests to see what happens when you serialize a BsonDateTime created from DateTime.MaxValue and DateTime.MinValue. If you insert MaxValue/MinValue into a collection and read it back what do you get?&lt;/p&gt;</comment>
                            <comment id="76691" author="rstam" created="Thu, 29 Dec 2011 23:37:35 +0000"  >&lt;p&gt;Note: currently all callers of ToDateTimeFromMillisecondsSinceEpoch from within the driver itself would appear to always call this method with a millisecondsSinceEpoch value that is greater than DateTime.MinValue and less than DateTime.MaxValue. Therefore the mapping is always valid.&lt;/p&gt;

&lt;p&gt;An alternative to mapping Max to Max (and Min to Min which is not being done) is to throw an exception if the value being passed in cannot be mapped to a valid .NET DateTime.&lt;/p&gt;

&lt;p&gt;After seeing how ToDateTimeFromMillisecondsSinceEpoch is used I think an ArgumentOutOfRange exception is appropriate.&lt;/p&gt;

&lt;p&gt;ToMillisecondsSinceEpoch can&apos;t fail since the range of .NET DateTime is a subset of the range of BSON DateTimes, so it probably doesn&apos;t need to change at all.&lt;/p&gt;</comment>
                    </comments>
                    <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_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hrh847:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>14114</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>