mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-08-18 03:58:29 +00:00
feat: Implement RegionScanner for SeqScan (#4060)
* feat: ordered builder wip * feat: impl RegionScanner for SeqScan * feat: implement scan_partition and build_stream * chore: return SeqScan as RegionScanner * fix: group parts * feat: split parts * chore: reader metrics * chore: metrics * chore: remove unused codes * chore: support holding a group of ranges in ScanPart * feat: group ScanParts to ScanParts * feat: impl SeqScanner again * chore: observe build cost in ScannerMetrics * chore: fix compiler warnings * style: fix clippy * docs: update config docs * chore: forward DisplayAs to scanner * test: update sqlness tests * chore: update debug fmt * chore: custom debug for timestamp fix test compiling issue with common-macro when running cargo nextest -p common-time * chore: update debug format * feat: update fmt for scan part * chore: fix warning * fix: sanitize parallelism * feat: split parts * test: fix config api test * feat: update logs * chore: Revert "chore: remove unused codes" This reverts commit b548b30a01eeded59b1a0a8d89f9293ca63afc41. * chore: Revert "docs: update config docs" This reverts commit a7997e78d6ddcf635560574de8c1948c495bdd12. * feat: each partition scan files in parallel * test: fix config api test * docs: fix typo * chore: address comments, simplify tests * feat: global semaphore * feat: always spawn task * chore: simplify default explain output format * handle output partiton number is 0 Signed-off-by: Ruihang Xia <waynestxia@gmail.com> * fix typo Signed-off-by: Ruihang Xia <waynestxia@gmail.com> --------- Signed-off-by: Ruihang Xia <waynestxia@gmail.com> Co-authored-by: Ruihang Xia <waynestxia@gmail.com>
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
|
||||
use core::default::Default;
|
||||
use std::cmp::Ordering;
|
||||
use std::fmt::{Display, Formatter, Write};
|
||||
use std::fmt::{self, Display, Formatter, Write};
|
||||
use std::hash::{Hash, Hasher};
|
||||
use std::time::Duration;
|
||||
|
||||
@@ -41,7 +41,7 @@ use crate::{error, Interval};
|
||||
/// # Note:
|
||||
/// For values out of range, you can still store these timestamps, but while performing arithmetic
|
||||
/// or formatting operations, it will return an error or just overflow.
|
||||
#[derive(Debug, Clone, Default, Copy, Serialize, Deserialize)]
|
||||
#[derive(Clone, Default, Copy, Serialize, Deserialize)]
|
||||
pub struct Timestamp {
|
||||
value: i64,
|
||||
unit: TimeUnit,
|
||||
@@ -498,6 +498,12 @@ impl From<Timestamp> for serde_json::Value {
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Debug for Timestamp {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "{}::{}", self.value, self.unit)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||
pub enum TimeUnit {
|
||||
Second,
|
||||
@@ -1382,4 +1388,24 @@ mod tests {
|
||||
Timestamp::MAX_SECOND.to_timezone_aware_string(Some(&Timezone::Named(Tz::UTC)))
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_debug_timestamp() {
|
||||
assert_eq!(
|
||||
"1000::Second",
|
||||
format!("{:?}", Timestamp::new(1000, TimeUnit::Second))
|
||||
);
|
||||
assert_eq!(
|
||||
"1001::Millisecond",
|
||||
format!("{:?}", Timestamp::new(1001, TimeUnit::Millisecond))
|
||||
);
|
||||
assert_eq!(
|
||||
"1002::Microsecond",
|
||||
format!("{:?}", Timestamp::new(1002, TimeUnit::Microsecond))
|
||||
);
|
||||
assert_eq!(
|
||||
"1003::Nanosecond",
|
||||
format!("{:?}", Timestamp::new(1003, TimeUnit::Nanosecond))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user