Skip to content
Snippets Groups Projects
Merged Timm Fitschen requested to merge f-fix-145-large-integer into dev
1 unresolved thread
1 file
+ 8
0
Compare changes
  • Side-by-side
  • Inline
@@ -848,3 +848,98 @@ def test_141():
# switch back to admin user
db.configure_connection()
assert db.execute_query("FIND TestRT", unique=True).description == "Desc2"
def test_145():
"""Searching for large numbers results in wrong results if integer values
are used.
https://gitlab.com/caosdb/caosdb-server/-/issues/145
"""
db.Property("TestProp", datatype=db.TEXT).insert()
db.Property("TestPropInt", datatype=db.INTEGER).add_parent("TestProp").insert()
db.Property("TestPropDouble", datatype=db.DOUBLE).add_parent("TestProp").insert()
db.RecordType("TestRT").insert()
rec1 = db.Record("TestRec1").add_parent("TestRT").add_property(
"TestPropInt", 1_000_000_000).insert()
assert rec1.get_property("TestPropInt").value == 1_000_000_000
assert isinstance(rec1.get_property("TestPropInt").value, int)
rec2 = db.Record("TestRec2").add_parent("TestRT").add_property(
"TestPropDouble", 20_000_000_000).insert()
assert rec2.get_property("TestPropDouble").value == 20_000_000_000
assert isinstance(rec2.get_property("TestPropDouble").value, float)
assert db.execute_query("FIND TestRT WITH TestProp = 1000000000", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT WITH TestProp = 1000000000.0", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT WITH TestProp > 1000000000", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT WITH TestProp > 1000000000.0", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT WITH TestProp = 20000000000", unique=True).id == rec2.id
Please register or sign in to reply
assert db.execute_query("FIND TestRT WITH TestProp = 20000000000.0", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT WITH TestProp < 20000000000", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT WITH TestProp < 20000000000.0", unique=True).id == rec1.id
assert db.execute_query(
"FIND TestRT WITH TestPropInt < 10000000000000000000000000000000000000000000000000000000000",
unique=True).id == rec1.id
@pytest.mark.xfail(reason="Fix https://gitlab.com/caosdb/caosdb-server/-/issues/147")
def test_147():
"""Searching for integer numbers results in wrong results if floats are used.
https://gitlab.com/caosdb/caosdb-server/-/issues/147
"""
db.Property("TestProp", datatype=db.TEXT).insert()
db.Property("TestPropInt", datatype=db.INTEGER).add_parent("TestProp").insert()
db.RecordType("TestRT1").insert()
db.RecordType("TestRT2").insert()
rec1 = db.Record("TestRec1").add_parent("TestRT1").add_property(
"TestPropInt", 1).insert()
assert rec1.get_property("TestPropInt").value == 1
assert isinstance(rec1.get_property("TestPropInt").value, int)
rec2 = db.Record("TestRec2").add_parent("TestRT2").add_property(
"TestPropInt", -2).insert()
# Find the records
assert db.execute_query("FIND TestRT1 WITH TestProp < 1.9", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT1 WITH TestProp < 1.1", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT1 WITH TestProp = 1.0", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT1 WITH TestProp > 0.9", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT1 WITH TestProp > 0.1", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT1 WITH TestProp <= 1.9", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT1 WITH TestProp <= 1.1", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT1 WITH TestProp >= 0.9", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT1 WITH TestProp >= 0.1", unique=True).id == rec1.id
assert db.execute_query("FIND TestRT2 WITH TestProp < -1.1", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT2 WITH TestProp < -1.9", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT2 WITH TestProp = -2.0", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT2 WITH TestProp > -2.1", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT2 WITH TestProp > 2.9", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT2 WITH TestProp <= -1.1", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT2 WITH TestProp <= -1.9", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT2 WITH TestProp >= -2.1", unique=True).id == rec2.id
assert db.execute_query("FIND TestRT2 WITH TestProp >= 2.9", unique=True).id == rec2.id
# Don't find the records
assert len(db.execute_query("FIND TestRT1 WITH TestProp < 0.9")) == 0
assert len(db.execute_query("FIND TestRT1 WITH TestProp <= 0.9")) == 0
assert len(db.execute_query("FIND TestRT1 WITH TestProp > 1.1")) == 0
assert len(db.execute_query("FIND TestRT1 WITH TestProp >= 1.1")) == 0
assert len(db.execute_query("FIND TestRT2 WITH TestProp > -1.9")) == 0
assert len(db.execute_query("FIND TestRT2 WITH TestProp >= -1.9")) == 0
assert len(db.execute_query("FIND TestRT2 WITH TestProp < -2.1")) == 0
assert len(db.execute_query("FIND TestRT2 WITH TestProp <= -2.1")) == 0
# Smaller numbers, but querying across number types.
rec3 = db.Record("TestRec3").add_parent("TestRT").add_property("TestPropInt", 1).insert()
assert db.execute_query("FIND TestRT WITH TestPropInt < 2", unique=True).id == rec3.id
assert db.execute_query("FIND TestRT WITH TestPropInt < 2.5", unique=True).id == rec3.id
Loading