From 7a9af89f2d1fe999cf89edc890ece16494fb256f Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 2 Nov 2023 13:44:32 +0100 Subject: [PATCH] libsmartcols: prefer float in filter expression Reported-by: Masatake YAMATO Addresses: https://github.com/util-linux/util-linux/pull/2531#discussion_r1373797202 Signed-off-by: Karel Zak --- libsmartcols/src/filter-expr.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libsmartcols/src/filter-expr.c b/libsmartcols/src/filter-expr.c index d3229d00eb..16a476bde8 100644 --- a/libsmartcols/src/filter-expr.c +++ b/libsmartcols/src/filter-expr.c @@ -141,7 +141,7 @@ static int guess_expr_datatype(struct filter_expr *n) { int type; int l = node_get_datatype(n->left), - r = node_get_datatype(n->right); + r = node_get_datatype(n->right); if (l == r) type = l; @@ -159,6 +159,11 @@ static int guess_expr_datatype(struct filter_expr *n) type = l; else type = l; + + /* Always prefer float before number */ + if (type == SCOLS_DATA_U64 + && (r == SCOLS_DATA_FLOAT || l == SCOLS_DATA_FLOAT)) + type = SCOLS_DATA_FLOAT; } DBG(FPARAM, ul_debugobj(n, " expr datatype: %d", type)); -- 2.47.3