@@ -26,7 +26,7 @@ pub trait BufferReadIntervalExt {
2626pub struct Interval {
2727 pub months : i32 ,
2828 pub days : i32 ,
29- pub nanos : i64 ,
29+ pub micros : i64 ,
3030}
3131
3232impl Display for Interval {
@@ -72,11 +72,11 @@ impl IntervalToStringCast {
7272 }
7373 }
7474
75- fn format_nanos ( mut nanos : i64 , buffer : & mut [ u8 ] , length : & mut usize ) {
76- if nanos < 0 {
77- nanos = -nanos ;
75+ fn format_micros ( mut micros : i64 , buffer : & mut [ u8 ] , length : & mut usize ) {
76+ if micros < 0 {
77+ micros = -micros ;
7878 }
79- let s = format ! ( "{:09 }" , nanos ) ;
79+ let s = format ! ( "{:06 }" , micros ) ;
8080 let bytes = s. as_bytes ( ) ;
8181 buffer[ * length..* length + bytes. len ( ) ] . copy_from_slice ( bytes) ;
8282 * length += bytes. len ( ) ;
@@ -97,23 +97,23 @@ impl IntervalToStringCast {
9797 if interval. days != 0 {
9898 Self :: format_interval_value ( interval. days , buffer, & mut length, " day" ) ;
9999 }
100- if interval. nanos != 0 {
100+ if interval. micros != 0 {
101101 if length != 0 {
102102 buffer[ length] = b' ' ;
103103 length += 1 ;
104104 }
105- let mut nanos = interval. nanos ;
105+ let mut nanos = interval. micros ;
106106 if nanos < 0 {
107107 buffer[ length] = b'-' ;
108108 length += 1 ;
109109 nanos = -nanos;
110110 }
111- let hour = nanos / NANO_PER_HOUR ;
112- nanos -= hour * NANO_PER_HOUR ;
113- let min = nanos / NANO_PER_MINUTE ;
114- nanos -= min * NANO_PER_MINUTE ;
115- let sec = nanos / NANO_PER_SEC ;
116- nanos -= sec * NANO_PER_SEC ;
111+ let hour = nanos / MICROS_PER_HOUR ;
112+ nanos -= hour * MICROS_PER_HOUR ;
113+ let min = nanos / MICROS_PER_MINUTE ;
114+ nanos -= min * MICROS_PER_MINUTE ;
115+ let sec = nanos / MICROS_PER_SEC ;
116+ nanos -= sec * MICROS_PER_SEC ;
117117
118118 Self :: format_signed_number ( hour, buffer, & mut length) ;
119119 buffer[ length] = b':' ;
@@ -125,7 +125,7 @@ impl IntervalToStringCast {
125125 if nanos != 0 {
126126 buffer[ length] = b'.' ;
127127 length += 1 ;
128- Self :: format_nanos ( nanos, buffer, & mut length) ;
128+ Self :: format_micros ( nanos, buffer, & mut length) ;
129129 }
130130 } else if length == 0 {
131131 buffer[ ..8 ] . copy_from_slice ( b"00:00:00" ) ;
@@ -213,7 +213,7 @@ impl Interval {
213213 }
214214 result. months = -result. months ;
215215 result. days = -result. days ;
216- result. nanos = -result. nanos ;
216+ result. micros = -result. micros ;
217217 return Ok ( result) ;
218218 }
219219 _ => {
@@ -261,12 +261,12 @@ fn parse_number(bytes: &[u8]) -> Result<(i64, i64, usize)> {
261261 if pos < bytes. len ( ) && bytes[ pos] == b':' {
262262 let time_bytes = & bytes[ pos..] ;
263263 let mut time_pos = 0 ;
264- let mut total_nanos: i64 = number * 60 * 60 * NANO_PER_SEC ;
264+ let mut total_nanos: i64 = number * 60 * 60 * MICROS_PER_SEC ;
265265 let mut colon_count = 0 ;
266266
267267 while colon_count < 2 && time_bytes. len ( ) > time_pos {
268268 let ( minute, _, next_pos) = parse_time_part ( & time_bytes[ time_pos..] ) ?;
269- let minute_nanos = minute * 60 * NANO_PER_SEC ;
269+ let minute_nanos = minute * 60 * MICROS_PER_SEC ;
270270 total_nanos += minute_nanos;
271271 time_pos += next_pos;
272272
@@ -279,7 +279,7 @@ fn parse_number(bytes: &[u8]) -> Result<(i64, i64, usize)> {
279279 }
280280 if time_bytes. len ( ) > time_pos {
281281 let ( seconds, nanos, next_pos) = parse_time_part_with_nanos ( & time_bytes[ time_pos..] ) ?;
282- total_nanos += seconds * NANO_PER_SEC + nanos;
282+ total_nanos += seconds * MICROS_PER_SEC + nanos;
283283 time_pos += next_pos;
284284 }
285285 return Ok ( ( total_nanos, 0 , pos + time_pos) ) ;
@@ -390,11 +390,10 @@ fn try_get_date_part_specifier(specifier_str: &str) -> Result<DatePartSpecifier>
390390 }
391391}
392392
393- const NANO_PER_SEC : i64 = 1_000_000_000 ;
394- const NANO_PER_MSEC : i64 = 1_000_000 ;
395- const NANO_PER_MICROS : i64 = 1_000 ;
396- const NANO_PER_MINUTE : i64 = 60 * NANO_PER_SEC ;
397- const NANO_PER_HOUR : i64 = 60 * NANO_PER_MINUTE ;
393+ const MICROS_PER_SEC : i64 = 1_000_000 ;
394+ const MICROS_PER_MSEC : i64 = 1_000 ;
395+ const MICROS_PER_MINUTE : i64 = 60 * MICROS_PER_SEC ;
396+ const MICROS_PER_HOUR : i64 = 60 * MICROS_PER_MINUTE ;
398397const DAYS_PER_WEEK : i32 = 7 ;
399398const MONTHS_PER_QUARTER : i32 = 3 ;
400399const MONTHS_PER_YEAR : i32 = 12 ;
@@ -409,12 +408,12 @@ fn apply_specifier(
409408 specifier_str : & str ,
410409) -> Result < ( ) > {
411410 if specifier_str. is_empty ( ) {
412- result. nanos = result
413- . nanos
411+ result. micros = result
412+ . micros
414413 . checked_add ( number)
415414 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?;
416- result. nanos = result
417- . nanos
415+ result. micros = result
416+ . micros
418417 . checked_add ( fraction)
419418 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?;
420419 return Ok ( ( ) ) ;
@@ -515,51 +514,47 @@ fn apply_specifier(
515514 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?;
516515 }
517516 DatePartSpecifier :: Microseconds => {
518- result. nanos = result
519- . nanos
520- . checked_add (
521- number
522- . checked_mul ( NANO_PER_MICROS )
523- . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?,
524- )
517+ result. micros = result
518+ . micros
519+ . checked_add ( number)
525520 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?;
526521 }
527522 DatePartSpecifier :: Milliseconds => {
528- result. nanos = result
529- . nanos
523+ result. micros = result
524+ . micros
530525 . checked_add (
531526 number
532- . checked_mul ( NANO_PER_MSEC )
527+ . checked_mul ( MICROS_PER_MSEC )
533528 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?,
534529 )
535530 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?;
536531 }
537532 DatePartSpecifier :: Second => {
538- result. nanos = result
539- . nanos
533+ result. micros = result
534+ . micros
540535 . checked_add (
541536 number
542- . checked_mul ( NANO_PER_SEC )
537+ . checked_mul ( MICROS_PER_SEC )
543538 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?,
544539 )
545540 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?;
546541 }
547542 DatePartSpecifier :: Minute => {
548- result. nanos = result
549- . nanos
543+ result. micros = result
544+ . micros
550545 . checked_add (
551546 number
552- . checked_mul ( NANO_PER_MINUTE )
547+ . checked_mul ( MICROS_PER_MINUTE )
553548 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?,
554549 )
555550 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?;
556551 }
557552 DatePartSpecifier :: Hour => {
558- result. nanos = result
559- . nanos
553+ result. micros = result
554+ . micros
560555 . checked_add (
561556 number
562- . checked_mul ( NANO_PER_HOUR )
557+ . checked_mul ( MICROS_PER_HOUR )
563558 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?,
564559 )
565560 . ok_or ( ErrorCode :: BadArguments ( "Overflow" . to_string ( ) ) ) ?;
0 commit comments