Simplify and optimize SQLish builtins
This commit is contained in:
1 parent
a1626adb7e
commit
76e72a301d
2 files changed
+14
-7
No files matched your search
+3
-7
@@ -263,11 +263,7 @@ def walk(f):
|
||||
|
||||
# SQL-ish operators here:
|
||||
def INDEX(stream; idx_expr):
|
||||
reduce stream as $row ({};
|
||||
.[$row|idx_expr|
|
||||
if type != "string" then tojson
|
||||
else .
|
||||
end] |= $row);
|
||||
reduce stream as $row ({}; .[$row|idx_expr|tostring] = $row);
|
||||
def INDEX(idx_expr): INDEX(.[]; idx_expr);
|
||||
def JOIN($idx; idx_expr):
|
||||
[.[] | [., $idx[idx_expr]]];
|
||||
@@ -275,5 +271,5 @@ def JOIN($idx; stream; idx_expr):
|
||||
stream | [., $idx[idx_expr]];
|
||||
def JOIN($idx; stream; idx_expr; join_expr):
|
||||
stream | [., $idx[idx_expr]] | join_expr;
|
||||
def IN(s): reduce (first(select(. == s)) | true) as $v (false; if . or $v then true else false end);
|
||||
def IN(src; s): reduce (src|IN(s)) as $v (false; if . or $v then true else false end);
|
||||
def IN(s): any(s == .; .);
|
||||
def IN(src; s): any(src == s; .);
|
||||
@@ -1575,6 +1575,17 @@ true
|
||||
true
|
||||
true
|
||||
|
||||
range(5;13)|IN(range(0;10;3))
|
||||
null
|
||||
false
|
||||
true
|
||||
false
|
||||
false
|
||||
true
|
||||
false
|
||||
false
|
||||
false
|
||||
|
||||
range(10;12)|IN(range(10))
|
||||
null
|
||||
false
|
||||
|
||||
Reference in new issue
Block a user