Skip to content

Commit 36f8004

Browse files
committed
add SQLFunctionWithIdentifier, update date_add, date_sub, date_trunc, parse_date, format_date, datetime_add, datetime_sub, parse_datetime, format_datetime parameters
1 parent 75c88f2 commit 36f8004

File tree

6 files changed

+456
-73
lines changed

6 files changed

+456
-73
lines changed

es6/sql-bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1339,4 +1339,140 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
13391339
.replaceAll("ZonedDateTime", " ZonedDateTime")
13401340
}
13411341

1342+
it should "handle date_add function as script field" in {
1343+
val select: ElasticSearchRequest =
1344+
SQLQuery(dateAdd)
1345+
val query = select.query
1346+
println(query)
1347+
query shouldBe
1348+
"""{
1349+
| "query": {
1350+
| "bool": {
1351+
| "filter": [
1352+
| {
1353+
| "exists": {
1354+
| "field": "identifier2"
1355+
| }
1356+
| }
1357+
| ]
1358+
| }
1359+
| },
1360+
| "script_fields": {
1361+
| "lastSeen": {
1362+
| "script": {
1363+
| "lang": "painless",
1364+
| "source": "doc['lastUpdated'].value.plus(10, ChronoUnit.DAYS)"
1365+
| }
1366+
| }
1367+
| },
1368+
| "_source": {
1369+
| "includes": [
1370+
| "identifier"
1371+
| ]
1372+
| }
1373+
|}""".stripMargin.replaceAll("\\s", "").replaceAll("ChronoUnit", " ChronoUnit")
1374+
}
1375+
1376+
it should "handle date_sub function as script field" in {
1377+
val select: ElasticSearchRequest =
1378+
SQLQuery(dateSub)
1379+
val query = select.query
1380+
println(query)
1381+
query shouldBe
1382+
"""{
1383+
| "query": {
1384+
| "bool": {
1385+
| "filter": [
1386+
| {
1387+
| "exists": {
1388+
| "field": "identifier2"
1389+
| }
1390+
| }
1391+
| ]
1392+
| }
1393+
| },
1394+
| "script_fields": {
1395+
| "lastSeen": {
1396+
| "script": {
1397+
| "lang": "painless",
1398+
| "source": "doc['lastUpdated'].value.minus(10, ChronoUnit.DAYS)"
1399+
| }
1400+
| }
1401+
| },
1402+
| "_source": {
1403+
| "includes": [
1404+
| "identifier"
1405+
| ]
1406+
| }
1407+
|}""".stripMargin.replaceAll("\\s", "").replaceAll("ChronoUnit", " ChronoUnit")
1408+
}
1409+
1410+
it should "handle datetime_add function as script field" in {
1411+
val select: ElasticSearchRequest =
1412+
SQLQuery(dateTimeAdd)
1413+
val query = select.query
1414+
println(query)
1415+
query shouldBe
1416+
"""{
1417+
| "query": {
1418+
| "bool": {
1419+
| "filter": [
1420+
| {
1421+
| "exists": {
1422+
| "field": "identifier2"
1423+
| }
1424+
| }
1425+
| ]
1426+
| }
1427+
| },
1428+
| "script_fields": {
1429+
| "lastSeen": {
1430+
| "script": {
1431+
| "lang": "painless",
1432+
| "source": "doc['lastUpdated'].value.plus(10, ChronoUnit.DAYS)"
1433+
| }
1434+
| }
1435+
| },
1436+
| "_source": {
1437+
| "includes": [
1438+
| "identifier"
1439+
| ]
1440+
| }
1441+
|}""".stripMargin.replaceAll("\\s+", "").replaceAll("ChronoUnit", " ChronoUnit")
1442+
}
1443+
1444+
it should "handle datetime_sub function as script field" in {
1445+
val select: ElasticSearchRequest =
1446+
SQLQuery(dateTimeSub)
1447+
val query = select.query
1448+
println(query)
1449+
query shouldBe
1450+
"""{
1451+
| "query": {
1452+
| "bool": {
1453+
| "filter": [
1454+
| {
1455+
| "exists": {
1456+
| "field": "identifier2"
1457+
| }
1458+
| }
1459+
| ]
1460+
| }
1461+
| },
1462+
| "script_fields": {
1463+
| "lastSeen": {
1464+
| "script": {
1465+
| "lang": "painless",
1466+
| "source": "doc['lastUpdated'].value.minus(10, ChronoUnit.DAYS)"
1467+
| }
1468+
| }
1469+
| },
1470+
| "_source": {
1471+
| "includes": [
1472+
| "identifier"
1473+
| ]
1474+
| }
1475+
|}""".stripMargin.replaceAll("\\s+", "").replaceAll("ChronoUnit", " ChronoUnit")
1476+
}
1477+
13421478
}

sql/bridge/src/test/scala/app/softnetwork/elastic/sql/SQLQuerySpec.scala

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,4 +1336,140 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
13361336
.replaceAll("ZonedDateTime", " ZonedDateTime")
13371337
}
13381338

1339+
it should "handle date_add function as script field" in {
1340+
val select: ElasticSearchRequest =
1341+
SQLQuery(dateAdd)
1342+
val query = select.query
1343+
println(query)
1344+
query shouldBe
1345+
"""{
1346+
| "query": {
1347+
| "bool": {
1348+
| "filter": [
1349+
| {
1350+
| "exists": {
1351+
| "field": "identifier2"
1352+
| }
1353+
| }
1354+
| ]
1355+
| }
1356+
| },
1357+
| "script_fields": {
1358+
| "lastSeen": {
1359+
| "script": {
1360+
| "lang": "painless",
1361+
| "source": "doc['lastUpdated'].value.plus(10, ChronoUnit.DAYS)"
1362+
| }
1363+
| }
1364+
| },
1365+
| "_source": {
1366+
| "includes": [
1367+
| "identifier"
1368+
| ]
1369+
| }
1370+
|}""".stripMargin.replaceAll("\\s", "").replaceAll("ChronoUnit", " ChronoUnit")
1371+
}
1372+
1373+
it should "handle date_sub function as script field" in {
1374+
val select: ElasticSearchRequest =
1375+
SQLQuery(dateSub)
1376+
val query = select.query
1377+
println(query)
1378+
query shouldBe
1379+
"""{
1380+
| "query": {
1381+
| "bool": {
1382+
| "filter": [
1383+
| {
1384+
| "exists": {
1385+
| "field": "identifier2"
1386+
| }
1387+
| }
1388+
| ]
1389+
| }
1390+
| },
1391+
| "script_fields": {
1392+
| "lastSeen": {
1393+
| "script": {
1394+
| "lang": "painless",
1395+
| "source": "doc['lastUpdated'].value.minus(10, ChronoUnit.DAYS)"
1396+
| }
1397+
| }
1398+
| },
1399+
| "_source": {
1400+
| "includes": [
1401+
| "identifier"
1402+
| ]
1403+
| }
1404+
|}""".stripMargin.replaceAll("\\s", "").replaceAll("ChronoUnit", " ChronoUnit")
1405+
}
1406+
1407+
it should "handle datetime_add function as script field" in {
1408+
val select: ElasticSearchRequest =
1409+
SQLQuery(dateTimeAdd)
1410+
val query = select.query
1411+
println(query)
1412+
query shouldBe
1413+
"""{
1414+
| "query": {
1415+
| "bool": {
1416+
| "filter": [
1417+
| {
1418+
| "exists": {
1419+
| "field": "identifier2"
1420+
| }
1421+
| }
1422+
| ]
1423+
| }
1424+
| },
1425+
| "script_fields": {
1426+
| "lastSeen": {
1427+
| "script": {
1428+
| "lang": "painless",
1429+
| "source": "doc['lastUpdated'].value.plus(10, ChronoUnit.DAYS)"
1430+
| }
1431+
| }
1432+
| },
1433+
| "_source": {
1434+
| "includes": [
1435+
| "identifier"
1436+
| ]
1437+
| }
1438+
|}""".stripMargin.replaceAll("\\s+", "").replaceAll("ChronoUnit", " ChronoUnit")
1439+
}
1440+
1441+
it should "handle datetime_sub function as script field" in {
1442+
val select: ElasticSearchRequest =
1443+
SQLQuery(dateTimeSub)
1444+
val query = select.query
1445+
println(query)
1446+
query shouldBe
1447+
"""{
1448+
| "query": {
1449+
| "bool": {
1450+
| "filter": [
1451+
| {
1452+
| "exists": {
1453+
| "field": "identifier2"
1454+
| }
1455+
| }
1456+
| ]
1457+
| }
1458+
| },
1459+
| "script_fields": {
1460+
| "lastSeen": {
1461+
| "script": {
1462+
| "lang": "painless",
1463+
| "source": "doc['lastUpdated'].value.minus(10, ChronoUnit.DAYS)"
1464+
| }
1465+
| }
1466+
| },
1467+
| "_source": {
1468+
| "includes": [
1469+
| "identifier"
1470+
| ]
1471+
| }
1472+
|}""".stripMargin.replaceAll("\\s+", "").replaceAll("ChronoUnit", " ChronoUnit")
1473+
}
1474+
13391475
}

0 commit comments

Comments
 (0)