Skip to content

Commit

Permalink
Adding CSV tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
afoucret committed Nov 18, 2024
1 parent 5f6e321 commit 21a37c8
Show file tree
Hide file tree
Showing 3 changed files with 159 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
###############################################
# Tests for KQL function
#

kqlWithField
required_capability: kql_function

// tag::kql-with-field[]
FROM books
| WHERE KQL("author: Faulkner")
| KEEP book_no, author
| SORT book_no
| LIMIT 5;
// end::kql-with-field[]

// tag::kql-with-field-result[]
book_no:keyword | author:text
2378 | [Carol Faulkner, Holly Byers Ochoa, Lucretia Mott]
2713 | William Faulkner
2847 | Colleen Faulkner
2883 | William Faulkner
3293 | Danny Faulkner
;
// end::kql-with-field-result[]

kqlWithMultipleFields
required_capability: kql_function

from books
| where kql("title:Return* AND author:*Tolkien")
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
2714 | Return of the King Being the Third Part of The Lord of the Rings
7350 | Return of the Shadow
;

kqlWithQueryExpressions
required_capability: kql_function

from books
| where kql(CONCAT("title:Return*", " AND author:*Tolkien"))
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
2714 | Return of the King Being the Third Part of The Lord of the Rings
7350 | Return of the Shadow
;

kqlWithConjunction
required_capability: kql_function

from books
| where kql("title: Rings") and ratings > 4.6
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
4023 | A Tolkien Compass: Including J. R. R. Tolkien's Guide to the Names in The Lord of the Rings
7140 | The Lord of the Rings Poster Collection: Six Paintings by Alan Lee (No. 1)
;

kqlWithFunctionPushedToLucene
required_capability: kql_function

from hosts
| where kql("host: beta") and cidr_match(ip1, "127.0.0.2/32", "127.0.0.3/32")
| keep card, host, ip0, ip1;
ignoreOrder:true

card:keyword |host:keyword |ip0:ip |ip1:ip
eth1 |beta |127.0.0.1 |127.0.0.2
;

kqlWithNonPushableConjunction
required_capability: kql_function

from books
| where kql("title: Rings") and length(title) > 75
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
4023 |A Tolkien Compass: Including J. R. R. Tolkien's Guide to the Names in The Lord of the Rings
;

kqlWithMultipleWhereClauses
required_capability: kql_function

from books
| where kql("title: rings")
| where kql("year > 1 AND year < 2005")
| keep book_no, title;
ignoreOrder:true

book_no:keyword | title:text
4023 | A Tolkien Compass: Including J. R. R. Tolkien's Guide to the Names in The Lord of the Rings
7140 | The Lord of the Rings Poster Collection: Six Paintings by Alan Lee (No. 1)
;


kqlWithMultivaluedTextField
required_capability: kql_function

from employees
| where kql("job_positions: Tech Lead AND job_positions:(Reporting Analyst)")
| keep emp_no, first_name, last_name;
ignoreOrder:true

emp_no:integer | first_name:keyword | last_name:keyword
10004 | Chirstian | Koblick
10010 | Duangkaew | Piveteau
10011 | Mary | Sluis
10088 | Jungsoon | Syrzycki
10093 | Sailaja | Desikan
10097 | Remzi | Waschkowski
;

kqlWithMultivaluedNumericField
required_capability: kql_function

from employees
| where kql("salary_change > 14")
| keep emp_no, first_name, last_name, salary_change;
ignoreOrder:true

emp_no:integer | first_name:keyword | last_name:keyword | salary_change:double
10003 | Parto | Bamford | [12.82, 14.68]
10015 | Guoxiang | Nooteboom | [12.4, 14.25]
10023 | Bojan | Montemayor | [0.8, 14.63]
10040 | Weiyi | Meriste | [-8.94, 1.92, 6.97, 14.74]
10061 | Tse | Herber | [-2.58, -0.95, 14.39]
10065 | Satosi | Awdeh | [-9.81, -1.47, 14.44]
10099 | Valter | Sullins | [-8.78, -3.98, 10.71, 14.26]
;

testMultiValuedFieldWithConjunction
required_capability: kql_function

from employees
| where (kql("job_positions: (Data Scientist) OR job_positions:(Support Engineer)")) and gender == "F"
| keep emp_no, first_name, last_name;
ignoreOrder:true

emp_no:integer | first_name:keyword | last_name:keyword
10023 | Bojan | Montemayor
10041 | Uri | Lenart
10044 | Mingsen | Casley
10053 | Sanjiv | Zschoche
10069 | Margareta | Bierman
;
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.elasticsearch.xpack.esql.core.expression.Expression;
import org.elasticsearch.xpack.esql.core.tree.NodeInfo;
import org.elasticsearch.xpack.esql.core.tree.Source;
import org.elasticsearch.xpack.esql.expression.function.Example;
import org.elasticsearch.xpack.esql.expression.function.FunctionInfo;
import org.elasticsearch.xpack.esql.expression.function.Param;
import org.elasticsearch.xpack.esql.io.stream.PlanStreamInput;
Expand All @@ -31,7 +32,7 @@ public class Kql extends FullTextFunction {
returnType = "boolean",
preview = true,
description = "Performs a KQL query. Returns true if the provided KQL query string matches the row.",
examples = {}
examples = { @Example(file = "kql-function", tag = "kql-with-field") }
)
public Kql(
Source source,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,10 @@ public final void test() throws Throwable {
"can't use MATCH function in csv tests",
testCase.requiredCapabilities.contains(EsqlCapabilities.Cap.MATCH_FUNCTION.capabilityName())
);
assumeFalse(
"can't use KQL function in csv tests",
testCase.requiredCapabilities.contains(EsqlCapabilities.Cap.KQL_FUNCTION.capabilityName())
);

if (Build.current().isSnapshot()) {
assertThat(
Expand Down

0 comments on commit 21a37c8

Please sign in to comment.