Skip to content

Commit 3c87c76

Browse files
committed
docs: improve doc for decimal
1 parent 74f6f62 commit 3c87c76

File tree

2 files changed

+81
-3
lines changed

2 files changed

+81
-3
lines changed

questdb-rs/src/ingress/buffer.rs

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -976,6 +976,76 @@ impl Buffer {
976976
}
977977

978978
/// Record a decimal value for the given column.
979+
///
980+
/// ```no_run
981+
/// # use questdb::Result;
982+
/// # use questdb::ingress::{Buffer, SenderBuilder};
983+
/// # fn main() -> Result<()> {
984+
/// # let mut sender = SenderBuilder::from_conf("https::addr=localhost:9000;")?.build()?;
985+
/// # let mut buffer = sender.new_buffer();
986+
/// # buffer.table("x")?;
987+
/// buffer.column_decimal("col_name", "123.45")?;
988+
/// # Ok(())
989+
/// # }
990+
/// ```
991+
///
992+
/// or
993+
///
994+
/// ```no_run
995+
/// # use questdb::Result;
996+
/// # use questdb::ingress::{Buffer, SenderBuilder};
997+
/// use questdb::ingress::ColumnName;
998+
///
999+
/// # fn main() -> Result<()> {
1000+
/// # let mut sender = SenderBuilder::from_conf("https::addr=localhost:9000;")?.build()?;
1001+
/// # let mut buffer = sender.new_buffer();
1002+
/// # buffer.table("x")?;
1003+
/// let col_name = ColumnName::new("col_name")?;
1004+
/// buffer.column_decimal(col_name, "123.45")?;
1005+
/// # Ok(())
1006+
/// # }
1007+
/// ```
1008+
///
1009+
/// With `rust_decimal` feature enabled:
1010+
///
1011+
/// ```no_run
1012+
/// # #[cfg(feature = "rust_decimal")]
1013+
/// # {
1014+
/// # use questdb::Result;
1015+
/// # use questdb::ingress::{Buffer, SenderBuilder};
1016+
/// use rust_decimal::Decimal;
1017+
/// use std::str::FromStr;
1018+
///
1019+
/// # fn main() -> Result<()> {
1020+
/// # let mut sender = SenderBuilder::from_conf("https::addr=localhost:9000;")?.build()?;
1021+
/// # let mut buffer = sender.new_buffer();
1022+
/// # buffer.table("x")?;
1023+
/// let value = Decimal::from_str("123.45")?;
1024+
/// buffer.column_decimal("col_name", &value)?;
1025+
/// # Ok(())
1026+
/// # }
1027+
/// # }
1028+
/// ```
1029+
///
1030+
/// With `bigdecimal` feature enabled:
1031+
///
1032+
/// ```no_run
1033+
/// # #[cfg(feature = "bigdecimal")]
1034+
/// # {
1035+
/// # use questdb::Result;
1036+
/// # use questdb::ingress::{Buffer, SenderBuilder};
1037+
/// use bigdecimal::BigDecimal;
1038+
/// use std::str::FromStr;
1039+
///
1040+
/// # fn main() -> Result<()> {
1041+
/// # let mut sender = SenderBuilder::from_conf("https::addr=localhost:9000;")?.build()?;
1042+
/// # let mut buffer = sender.new_buffer();
1043+
/// # buffer.table("x")?;
1044+
/// let value = BigDecimal::from_str("0.123456789012345678901234567890")?;
1045+
/// buffer.column_decimal("col_name", &value)?;
1046+
/// # Ok(())
1047+
/// # }
1048+
/// # }
9791049
/// ```
9801050
pub fn column_decimal<'a, N, S>(&mut self, name: N, value: S) -> crate::Result<&mut Self>
9811051
where

questdb-rs/src/ingress/decimal.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,17 @@ use crate::{error, ingress::must_escape_unquoted, Result};
4747
/// 4. Length: 1 byte - number of bytes in the unscaled value
4848
/// 5. Unscaled value: variable-length byte array in two's complement format, big-endian
4949
///
50-
/// Example: For decimal `123.45` with scale 2 and unscaled value 12345:
51-
/// ```text
52-
/// = [DECIMAL_BINARY_FORMAT_TYPE] [2] [2] [0x30] [0x39]
50+
/// Example: For decimal `123.45` with scale 2:
51+
/// ```
52+
/// Unscaled value: 12345
53+
/// Binary representation:
54+
/// = [23] [2] [2] [0x30] [0x39]
55+
/// │ │ │ │ └───────────┘
56+
/// │ │ │ │ └─ Mantissa bytes (12345 in big-endian)
57+
/// │ │ │ └─ Length: 2 bytes
58+
/// │ │ └─ Scale: 2
59+
/// │ └─ Type: DECIMAL_BINARY_FORMAT_TYPE (23)
60+
/// └─ Binary marker: '='
5361
/// ```
5462
///
5563
/// # Binary Format Notes

0 commit comments

Comments
 (0)