@@ -27,7 +27,7 @@ public class SQLFunctions {
27
27
);
28
28
29
29
30
- public static Tuple <String , String > function (String methodName , List <KVValue > paramers , String name ) {
30
+ public static Tuple <String , String > function (String methodName , List <KVValue > paramers , String name , boolean returnValue ) {
31
31
Tuple <String , String > functionStr = null ;
32
32
switch (methodName ) {
33
33
case "split" :
@@ -113,6 +113,12 @@ public static Tuple<String, String> function(String methodName, List<KVValue> pa
113
113
default :
114
114
115
115
}
116
+ if (returnValue ){
117
+ String generatedFieldName = functionStr .v1 ();
118
+ String returnCommand = ";return " + generatedFieldName +";" ;
119
+ String newScript = functionStr .v2 () + returnCommand ;
120
+ functionStr = new Tuple (generatedFieldName , newScript );
121
+ }
116
122
return functionStr ;
117
123
}
118
124
@@ -143,12 +149,14 @@ public static Tuple<String, String> concat_ws(String split, List<SQLExpr> column
143
149
//split(Column str, java.lang.String pattern)
144
150
public static Tuple <String , String > split (String strColumn , String pattern , int index , String valueName ) {
145
151
String name = "split_" + random ();
152
+ String script = "" ;
146
153
if (valueName == null ) {
147
- return new Tuple (name , "def " + name + " = doc['" + strColumn + "'].value.split('" + pattern + "')[" + index + "]" );
154
+ script = "def " + name + " = doc['" + strColumn + "'].value.split('" + pattern + "')[" + index + "]" ;
155
+
148
156
} else {
149
- return new Tuple ( name , strColumn + "; def " + name + " = " + valueName + ".split('" + pattern + "')[" + index + "]" ) ;
157
+ script = "; def " + name + " = " + valueName + ".split('" + pattern + "')[" + index + "]" ;
150
158
}
151
-
159
+ return new Tuple ( name , script );
152
160
}
153
161
154
162
public static Tuple <String , String > date_format (String strColumn , String pattern , String valueName ) {
@@ -190,11 +198,10 @@ public static Tuple<String, String> divide(SQLExpr a, SQLExpr b) {
190
198
public static Tuple <String , String > binaryOpertator (String methodName , String operator , SQLExpr a , SQLExpr b ) {
191
199
192
200
String name = methodName + "_" + random ();
193
-
194
201
return new Tuple (name ,
195
202
scriptDeclare (a ) + scriptDeclare (b ) +
196
203
convertType (a ) + convertType (b ) +
197
- " def " + name + " = " + extractName (a ) + " " + operator + " " + extractName (b )) ;
204
+ " def " + name + " = " + extractName (a ) + " " + operator + " " + extractName (b ) ) ;
198
205
}
199
206
200
207
private static boolean isProperty (SQLExpr expr ) {
@@ -227,7 +234,8 @@ private static String convertType(SQLExpr script) {
227
234
if (newScript .trim ().startsWith ("def " )) {
228
235
//for now ,if variant is string,then change to double.
229
236
String temp = newScript .substring (4 ).split ("=" )[0 ].trim ();
230
- return " if( " + temp + " instanceof String) " + temp + "=" + temp .trim () + ".toDouble(); " ;
237
+
238
+ return " if( " + temp + " instanceof String) " + temp + "= Double.parseDouble(" + temp .trim () + "); " ;
231
239
} else return "" ;
232
240
233
241
@@ -248,13 +256,13 @@ public static Tuple<String, String> log10(String strColumn, String valueName) {
248
256
249
257
public static Tuple <String , String > sqrt (String strColumn , String valueName ) {
250
258
251
- return mathSingleValueTemplate ("sqrt" , strColumn , valueName );
259
+ return mathSingleValueTemplate ("Math. sqrt" , "sqrt" , strColumn , valueName );
252
260
253
261
}
254
262
255
263
public static Tuple <String , String > round (String strColumn , String valueName ) {
256
264
257
- return mathSingleValueTemplate ("round" , strColumn , valueName );
265
+ return mathSingleValueTemplate ("Math.round" , " round" , strColumn , valueName );
258
266
259
267
}
260
268
@@ -265,7 +273,10 @@ public static Tuple<String, String> trim(String strColumn, String valueName) {
265
273
}
266
274
267
275
public static Tuple <String , String > mathSingleValueTemplate (String methodName , String strColumn , String valueName ) {
268
- String name = methodName + "_" + random ();
276
+ return mathSingleValueTemplate (methodName ,methodName , strColumn ,valueName );
277
+ }
278
+ public static Tuple <String , String > mathSingleValueTemplate (String methodName ,String fieldName , String strColumn , String valueName ) {
279
+ String name = fieldName + "_" + random ();
269
280
if (valueName == null ) {
270
281
return new Tuple (name , "def " + name + " = " + methodName + "(doc['" + strColumn + "'].value)" );
271
282
} else {
@@ -277,7 +288,7 @@ public static Tuple<String, String> mathSingleValueTemplate(String methodName, S
277
288
public static Tuple <String , String > strSingleValueTemplate (String methodName , String strColumn , String valueName ) {
278
289
String name = methodName + "_" + random ();
279
290
if (valueName == null ) {
280
- return new Tuple (name , "def " + name + " = doc['" + strColumn + "'].value." + methodName + "()" );
291
+ return new Tuple (name , "def " + name + " = doc['" + strColumn + "'].value." + methodName + "()" );
281
292
} else {
282
293
return new Tuple (name , strColumn + "; def " + name + " = " + valueName + "." + methodName + "()" );
283
294
}
@@ -286,7 +297,7 @@ public static Tuple<String, String> strSingleValueTemplate(String methodName, St
286
297
287
298
public static Tuple <String , String > floor (String strColumn , String valueName ) {
288
299
289
- return mathSingleValueTemplate ("floor" , strColumn , valueName );
300
+ return mathSingleValueTemplate ("Math. floor" , "floor" , strColumn , valueName );
290
301
291
302
}
292
303
@@ -306,7 +317,7 @@ public static Tuple<String, String> substring(String strColumn, int pos, int len
306
317
public static Tuple <String , String > split (String strColumn , String pattern , String valueName ) {
307
318
String name = "split_" + random ();
308
319
if (valueName == null ) {
309
- return new Tuple (name , "def " + name + " = doc['" + strColumn + "'].value.split('" + pattern + "')" );
320
+ return new Tuple (name , "def " + name + " = doc['" + strColumn + "'].value.split('" + pattern + "')" );
310
321
} else {
311
322
return new Tuple (name , strColumn + "; def " + name + " = " + valueName + ".split('" + pattern + "')" );
312
323
}
0 commit comments