Skip to content

Commit 888860d

Browse files
authored
Merge pull request #52 from Intreecom/bugfix/floats
2 parents d8d01c1 + 31d6d21 commit 888860d

File tree

6 files changed

+29
-7
lines changed

6 files changed

+29
-7
lines changed

.github/workflows/test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
- 9042:9042
6565
strategy:
6666
matrix:
67-
py_version: ["3.8", "3.9", "3.10", "3.11"]
67+
py_version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
6868
job:
6969
- os: ubuntu-latest
7070
ssl_cmd: sudo apt-get update && sudo apt-get install libssl-dev openssl

.python-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
3.12.2
12
3.11.4
23
3.10.12
34
3.9.17

python/tests/test_bindings.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,23 @@ async def test_named_parameters(scylla: Scylla) -> None:
108108
assert res.first() == to_insert
109109

110110

111+
@pytest.mark.anyio
112+
async def test_floats(scylla: Scylla) -> None:
113+
table_name = random_string(4)
114+
my_float = 1.234
115+
await scylla.execute(
116+
f"CREATE TABLE {table_name} (id INT, fl FLOAT, PRIMARY KEY (id))",
117+
)
118+
insert_query = f"INSERT INTO {table_name}(id, fl) VALUES (?, ?)"
119+
120+
await scylla.execute(insert_query, [1, my_float])
121+
122+
res = await scylla.execute(f"SELECT fl FROM {table_name}")
123+
scalar = res.scalar()
124+
assert scalar
125+
assert abs(scalar - my_float) < 0.001
126+
127+
111128
@pytest.mark.anyio
112129
async def test_timestamps(scylla: Scylla) -> None:
113130
table_name = random_string(4)

src/query_builder/update.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::fmt::Display;
2+
13
use pyo3::{pyclass, pymethods, types::PyDict, PyAny, PyRefMut, Python};
24
use scylla::{frame::value::LegacySerializedValues, query::Query};
35

@@ -17,12 +19,12 @@ enum UpdateAssignment {
1719
Dec(String, String),
1820
}
1921

20-
impl ToString for UpdateAssignment {
21-
fn to_string(&self) -> String {
22+
impl Display for UpdateAssignment {
23+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
2224
match self {
23-
UpdateAssignment::Simple(name) => format!("{name} = ?"),
24-
UpdateAssignment::Inc(left, right) => format!("{left} = {right} + ?"),
25-
UpdateAssignment::Dec(left, right) => format!("{left} = {right} - ?"),
25+
UpdateAssignment::Simple(name) => f.write_fmt(format_args!("{name} = ?")),
26+
UpdateAssignment::Inc(left, right) => f.write_fmt(format_args!("{left} = {right} + ?")),
27+
UpdateAssignment::Dec(left, right) => f.write_fmt(format_args!("{left} = {right} - ?")),
2628
}
2729
}
2830
}

src/utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ pub fn cql_to_py<'a>(
369369
.ok_or(ScyllaPyError::ValueDowncastError(col_name.into(), "Double"))
370370
.map(|val| val.to_object(py).into_ref(py)),
371371
ColumnType::Float => unwrapped_value
372-
.as_double()
372+
.as_float()
373373
.ok_or(ScyllaPyError::ValueDowncastError(col_name.into(), "Float"))
374374
.map(|val| val.to_object(py).into_ref(py)),
375375
ColumnType::Int => unwrapped_value

tox.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
[tox]
22
isolated_build = true
33
env_list =
4+
py312
45
py311
56
py310
67
py39
78
py38
89

910
[gh]
1011
python =
12+
3.12 = py312
1113
3.11 = py311
1214
3.10 = py310
1315
3.9 = py39

0 commit comments

Comments
 (0)