From 5e0f00427145007bc5fe9a93de31efe0d5b656e5 Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Tue, 17 Dec 2024 22:14:31 -0800 Subject: [PATCH 1/2] lang (fix): Fix decimal vs double comparison in text expr --- spec/basic/dot-apply.wv | 1 - spec/basic/double.wv | 3 +++ .../src/main/scala/wvlet/lang/runner/QueryExecutor.scala | 5 +++-- 3 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 spec/basic/double.wv diff --git a/spec/basic/dot-apply.wv b/spec/basic/dot-apply.wv index 173395d1..ef72abfa 100644 --- a/spec/basic/dot-apply.wv +++ b/spec/basic/dot-apply.wv @@ -1,3 +1,2 @@ select 1.234.round(1) - test _.rows is [[1.2]] diff --git a/spec/basic/double.wv b/spec/basic/double.wv new file mode 100644 index 00000000..8abde7d1 --- /dev/null +++ b/spec/basic/double.wv @@ -0,0 +1,3 @@ +select 0.123.to_double.round(1) +test _.rows is [[0.1]] + diff --git a/wvlet-runner/src/main/scala/wvlet/lang/runner/QueryExecutor.scala b/wvlet-runner/src/main/scala/wvlet/lang/runner/QueryExecutor.scala index aebcfd25..339f2cc2 100644 --- a/wvlet-runner/src/main/scala/wvlet/lang/runner/QueryExecutor.scala +++ b/wvlet-runner/src/main/scala/wvlet/lang/runner/QueryExecutor.scala @@ -528,7 +528,8 @@ class QueryExecutor( case b: BooleanLiteral => b.booleanValue case d: DecimalLiteral => - d.value + // TODO Using Double for simplicity, but this process should preserve the precision + d.value.toDouble case n: NullLiteral => null case a: ArrayConstructor => @@ -540,7 +541,7 @@ class QueryExecutor( } .toMap case other => - warn(s"Test expression ${e} is not supported yet.") + workEnv.warn(s"Test expression ${e} is not supported yet.") () def trim(v: Any): Any = From 940adf39344128c3f1864154e2d11d35fd0a9825 Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Tue, 17 Dec 2024 22:19:34 -0800 Subject: [PATCH 2/2] Use string cmp --- spec/basic/double.wv | 4 ++-- .../src/main/scala/wvlet/lang/runner/QueryExecutor.scala | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/spec/basic/double.wv b/spec/basic/double.wv index 8abde7d1..d3a8d048 100644 --- a/spec/basic/double.wv +++ b/spec/basic/double.wv @@ -1,3 +1,3 @@ -select 0.123.to_double.round(1) -test _.rows is [[0.1]] +select 0.123.to_double.round(1).to_string +test _.rows is [['0.1']] diff --git a/wvlet-runner/src/main/scala/wvlet/lang/runner/QueryExecutor.scala b/wvlet-runner/src/main/scala/wvlet/lang/runner/QueryExecutor.scala index 339f2cc2..d096c2cf 100644 --- a/wvlet-runner/src/main/scala/wvlet/lang/runner/QueryExecutor.scala +++ b/wvlet-runner/src/main/scala/wvlet/lang/runner/QueryExecutor.scala @@ -528,8 +528,7 @@ class QueryExecutor( case b: BooleanLiteral => b.booleanValue case d: DecimalLiteral => - // TODO Using Double for simplicity, but this process should preserve the precision - d.value.toDouble + d.value case n: NullLiteral => null case a: ArrayConstructor =>