Skip to content

Commit 6f47a44

Browse files
committed
fix painless script for interval function and FunctionN
1 parent 2d3d457 commit 6f47a44

File tree

5 files changed

+93
-44
lines changed

5 files changed

+93
-44
lines changed

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

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -850,7 +850,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
850850
| "ct": {
851851
| "script": {
852852
| "lang": "painless",
853-
| "source": "def param1 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); (param1 != null ? param1.minus(35, ChronoUnit.MINUTES) : null)"
853+
| "source": "def param1 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value.minus(35, ChronoUnit.MINUTES)); param1"
854854
| }
855855
| }
856856
| },
@@ -1263,7 +1263,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
12631263
| "q": {
12641264
| "script": {
12651265
| "lang": "painless",
1266-
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); def param2 = param1.withMonth((((param1.getMonthValue() - 1) / 3) * 3) + 1).withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS) : null; def param3 = DateTimeFormatter.ofPattern('yyyy-MM-dd'); (param1 == null) ? null : param3.format(param1)"
1266+
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); def param2 = param1 != null ? param1.withMonth((((param1.getMonthValue() - 1) / 3) * 3) + 1).withDayOfMonth(1).truncatedTo(ChronoUnit.DAYS) : null; def param3 = DateTimeFormatter.ofPattern('yyyy-MM-dd'); (param1 == null) ? null : param3.format(param2)"
12671267
| }
12681268
| },
12691269
| "m": {
@@ -1520,7 +1520,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
15201520
| "max": {
15211521
| "script": {
15221522
| "lang": "painless",
1523-
| "source": "def param1 = (!doc.containsKey('updatedAt') || doc['updatedAt'].empty ? null : doc['updatedAt'].value); def param2 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); (param1 == null || param2 == null) ? null : ChronoUnit.DAYS.between(param1, param2)"
1523+
| "source": "def param1 = (!doc.containsKey('updatedAt') || doc['updatedAt'].empty ? null : doc['updatedAt'].value); def param2 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); def param3 = DateTimeFormatter.ofPattern('yyyy-MM-dd HH:mm:ss.SSS XXX'); def param4 = (param2 == null) ? null : param3.parse(param2, ZonedDateTime::from); (param1 == null || param2 == null) ? null : ChronoUnit.DAYS.between(param1, param4)"
15241524
| }
15251525
| }
15261526
| }
@@ -1545,6 +1545,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
15451545
.replaceAll("&&", " && ")
15461546
.replaceAll("\\|\\|", " || ")
15471547
.replaceAll("ZonedDateTime", " ZonedDateTime")
1548+
.replaceAll("=DateTimeFormatter", " = DateTimeFormatter")
15481549
.replaceAll("SSSXXX", "SSS XXX")
15491550
.replaceAll("ddHH", "dd HH")
15501551
}
@@ -1571,7 +1572,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
15711572
| "lastSeen": {
15721573
| "script": {
15731574
| "lang": "painless",
1574-
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); (param1 != null ? param1.plus(10, ChronoUnit.DAYS) : null)"
1575+
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value.plus(10, ChronoUnit.DAYS)); param1"
15751576
| }
15761577
| }
15771578
| },
@@ -1600,7 +1601,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
16001601
.replaceAll("ChronoUnit", " ChronoUnit")
16011602
}
16021603

1603-
it should "handle date_sub function as script field" in {
1604+
it should "handle date_sub function as script field" in { // 30
16041605
val select: ElasticSearchRequest =
16051606
SQLQuery(dateSub)
16061607
val query = select.query
@@ -1622,7 +1623,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
16221623
| "lastSeen": {
16231624
| "script": {
16241625
| "lang": "painless",
1625-
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); (param1 != null ? param1.minus(10, ChronoUnit.DAYS) : null)"
1626+
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value.minus(10, ChronoUnit.DAYS)); param1"
16261627
| }
16271628
| }
16281629
| },
@@ -1673,7 +1674,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
16731674
| "lastSeen": {
16741675
| "script": {
16751676
| "lang": "painless",
1676-
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); (param1 != null ? param1.plus(10, ChronoUnit.DAYS) : null)"
1677+
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value.plus(10, ChronoUnit.DAYS)); param1"
16771678
| }
16781679
| }
16791680
| },
@@ -1724,7 +1725,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
17241725
| "lastSeen": {
17251726
| "script": {
17261727
| "lang": "painless",
1727-
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); (param1 != null ? param1.minus(10, ChronoUnit.DAYS) : null)"
1728+
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value.minus(10, ChronoUnit.DAYS)); param1"
17281729
| }
17291730
| }
17301731
| },
@@ -1905,7 +1906,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
19051906
| "c": {
19061907
| "script": {
19071908
| "lang": "painless",
1908-
| "source": "def param1 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); def param2 = ZonedDateTime.now(ZoneId.of('Z')).toLocalDate(); param1 != null ? param1 : param2"
1909+
| "source": "def param1 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value.minus(35, ChronoUnit.MINUTES)); def param2 = ZonedDateTime.now(ZoneId.of('Z')).toLocalDate(); param1 != null ? param1 : param2"
19091910
| }
19101911
| }
19111912
| },
@@ -1955,7 +1956,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
19551956
| "c": {
19561957
| "script": {
19571958
| "lang": "painless",
1958-
| "source": "def param1 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); def param2 = DateTimeFormatter.ofPattern('yyyy-MM-dd').parse(\"2025-09-11\", LocalDate::from); def param3 = param1 == param2.minus(2, ChronoUnit.DAYS) ? null : param1; def param4 = ZonedDateTime.now(ZoneId.of('Z')).toLocalDate(); param3 != null ? param3 : param4"
1959+
| "source": "def param1 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); def param2 = DateTimeFormatter.ofPattern('yyyy-MM-dd').parse(\"2025-09-11\", LocalDate::from).minus(2, ChronoUnit.DAYS); def param3 = param1 == param2 ? null : param1; def param4 = ZonedDateTime.now(ZoneId.of('Z')).toLocalDate(); param3 != null ? param3 : param4"
19591960
| }
19601961
| }
19611962
| },
@@ -2011,7 +2012,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
20112012
| "c": {
20122013
| "script": {
20132014
| "lang": "painless",
2014-
| "source": "def param1 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); def param2 = DateTimeFormatter.ofPattern('yyyy-MM-dd').parse(\"2025-09-11\", LocalDate::from); def param3 = param1 == param2 ? null : param1; def param4 = ZonedDateTime.now(ZoneId.of('Z')).toLocalDate(); try { param3 != null ? param3 : param4.atStartOfDay(ZoneId.of('Z')).minus(2, ChronoUnit.HOURS) } catch (Exception e) { return null; }"
2015+
| "source": "def param1 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); def param2 = DateTimeFormatter.ofPattern('yyyy-MM-dd').parse(\"2025-09-11\", LocalDate::from); def param3 = param1 == param2 ? null : param1; def param4 = ZonedDateTime.now(ZoneId.of('Z')).toLocalDate().minus(2, ChronoUnit.HOURS); try { param3 != null ? param3 : param4 } catch (Exception e) { return null; }"
20152016
| }
20162017
| },
20172018
| "c2": {
@@ -2095,7 +2096,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
20952096
| "c": {
20962097
| "script": {
20972098
| "lang": "painless",
2098-
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); def param2 = ZonedDateTime.now(ZoneId.of('Z')); def param3 = param1 == null ? false : (param1 > param2.minus(7, ChronoUnit.DAYS)); def param4 = (!doc.containsKey('lastSeen') || doc['lastSeen'].empty ? null : doc['lastSeen'].value); def param5 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); param3 ? param1 : param4 != null ? param4.plus(2, ChronoUnit.DAYS) : param5"
2099+
| "source": "def param1 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); def param2 = ZonedDateTime.now(ZoneId.of('Z')).minus(7, ChronoUnit.DAYS); def param3 = param1 == null ? false : (param1 > param2); def param4 = (!doc.containsKey('lastSeen') || doc['lastSeen'].empty ? null : doc['lastSeen'].value.plus(2, ChronoUnit.DAYS)); def param5 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); param3 ? param1 : param4 != null ? param4 : param5"
20992100
| }
21002101
| }
21012102
| },
@@ -2148,7 +2149,7 @@ class SQLQuerySpec extends AnyFlatSpec with Matchers {
21482149
| "c": {
21492150
| "script": {
21502151
| "lang": "painless",
2151-
| "source": "def param1 = ZonedDateTime.now(ZoneId.of('Z')).toLocalDate(); def param2 = param1.minus(7, ChronoUnit.DAYS); def param3 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value); def param4 = (param3 != null ? param3.minus(3, ChronoUnit.DAYS) : null); def param5 = (!doc.containsKey('lastSeen') || doc['lastSeen'].empty ? null : doc['lastSeen'].value); def param6 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); param2 == param4 ? param3 : param2 == param5 ? param5.plus(2, ChronoUnit.DAYS) : param6"
2152+
| "source": "def param1 = ZonedDateTime.now(ZoneId.of('Z')).toLocalDate().minus(7, ChronoUnit.DAYS); def param2 = (!doc.containsKey('lastUpdated') || doc['lastUpdated'].empty ? null : doc['lastUpdated'].value.minus(3, ChronoUnit.DAYS)); def param3 = (!doc.containsKey('lastSeen') || doc['lastSeen'].empty ? null : doc['lastSeen'].value.plus(2, ChronoUnit.DAYS)); def param4 = (!doc.containsKey('createdAt') || doc['createdAt'].empty ? null : doc['createdAt'].value); param1 == param2 ? param2 : param1 == param3 ? param3 : param4"
21522153
| }
21532154
| }
21542155
| },

0 commit comments

Comments
 (0)