Skip to content

Commit 47a4d5e

Browse files
committed
fixes
1 parent de0d237 commit 47a4d5e

1 file changed

Lines changed: 14 additions & 1 deletion

File tree

src/query_farm_server_base/duckdb_serialized_expression.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,18 @@ def interpret_uhugeint(value: dict[str, Any]) -> str:
6565
return str((upper << 64) | lower)
6666

6767

68+
def interpret_hugeint(value: dict) -> str:
69+
upper = value["upper"]
70+
lower = value["lower"]
71+
result = (upper << 64) | lower
72+
73+
# If the highest bit (bit 127) is set, interpret as negative
74+
if upper & (1 << 63):
75+
result -= 1 << 128
76+
77+
return str(result)
78+
79+
6880
def decode_uuid(value: dict[str, int]) -> str:
6981
assert "upper" in value and "lower" in value, "Invalid GUID format"
7082

@@ -332,10 +344,11 @@ def e_to_s(expr: dict[str, Any]) -> str:
332344
return interpret_real(expression["value"]["value"])
333345
elif expression["value"]["type"]["id"] == "UHUGEINT":
334346
return interpret_uhugeint(expression["value"]["value"])
347+
elif expression["value"]["type"]["id"] == "HUGEINT":
348+
return interpret_hugeint(expression["value"]["value"])
335349
elif expression["value"]["type"]["id"] in (
336350
"BIGINT",
337351
"INTEGER",
338-
"HUGEINT",
339352
"TINYINT",
340353
"SMALLINT",
341354
"UBIGINT",

0 commit comments

Comments
 (0)