55
66package org .opensearch .sql .expression .function ;
77
8+ import static org .opensearch .sql .calcite .utils .UserDefinedFunctionUtils .adaptExprMethodToUDF ;
9+ import static org .opensearch .sql .calcite .utils .UserDefinedFunctionUtils .adaptExprMethodWithPropertiesToUDF ;
10+
811import java .lang .reflect .InvocationTargetException ;
912import java .lang .reflect .Method ;
1013import java .util .List ;
2225import org .apache .calcite .sql .util .ReflectiveSqlOperatorTable ;
2326import org .apache .calcite .util .BuiltInMethod ;
2427import org .opensearch .sql .calcite .utils .PPLReturnTypes ;
25- import org .opensearch .sql .calcite .utils .UserDefinedFunctionUtils ;
2628import org .opensearch .sql .expression .datetime .DateTimeFunctions ;
2729import org .opensearch .sql .expression .function .udf .datetime .AddSubDateFunction ;
28- import org .opensearch .sql .expression .function .udf .datetime .AddSubTimeFunction ;
2930import org .opensearch .sql .expression .function .udf .datetime .CurrentFunction ;
3031import org .opensearch .sql .expression .function .udf .datetime .DateAddSubFunction ;
3132import org .opensearch .sql .expression .function .udf .datetime .DateFunction ;
@@ -77,8 +78,20 @@ public class PPLBuiltinOperators extends ReflectiveSqlOperatorTable {
7778 public static final SqlOperator UNIX_TIMESTAMP =
7879 new UnixTimestampFunction ().toUDF ("UNIX_TIMESTAMP" );
7980 public static final SqlOperator TO_SECONDS = new ToSecondsFunction ().toUDF ("TO_SECONDS" );
80- public static final SqlOperator ADDTIME = new AddSubTimeFunction (true ).toUDF ("ADDTIME" );
81- public static final SqlOperator SUBTIME = new AddSubTimeFunction (false ).toUDF ("SUBTIME" );
81+ public static final SqlOperator ADDTIME =
82+ adaptExprMethodWithPropertiesToUDF (
83+ DateTimeFunctions .class ,
84+ "exprAddTime" ,
85+ PPLReturnTypes .TIME_APPLY_RETURN_TYPE ,
86+ NullPolicy .ANY )
87+ .toUDF ("ADDTIME" );
88+ public static final SqlOperator SUBTIME =
89+ adaptExprMethodWithPropertiesToUDF (
90+ DateTimeFunctions .class ,
91+ "exprSubTime" ,
92+ PPLReturnTypes .TIME_APPLY_RETURN_TYPE ,
93+ NullPolicy .ANY )
94+ .toUDF ("SUBTIME" );
8295 public static final SqlOperator ADDDATE = new AddSubDateFunction (true ).toUDF ("ADDDATE" );
8396 public static final SqlOperator SUBDATE = new AddSubDateFunction (false ).toUDF ("SUBDATE" );
8497 public static final SqlOperator DATE_ADD = new DateAddSubFunction (true ).toUDF ("DATE_ADD" );
@@ -95,7 +108,7 @@ public class PPLBuiltinOperators extends ReflectiveSqlOperatorTable {
95108 public static final SqlOperator HOUR = new DatePartFunction (TimeUnit .HOUR ).toUDF ("HOUR" );
96109 public static final SqlOperator MINUTE = new DatePartFunction (TimeUnit .MINUTE ).toUDF ("MINUTE" );
97110 public static final SqlOperator MINUTE_OF_DAY =
98- UserDefinedFunctionUtils . adaptExprMethodToUDF (
111+ adaptExprMethodToUDF (
99112 DateTimeFunctions .class ,
100113 "exprMinuteOfDay" ,
101114 PPLReturnTypes .INTEGER_FORCE_NULLABLE ,
@@ -117,14 +130,14 @@ public class PPLBuiltinOperators extends ReflectiveSqlOperatorTable {
117130 public static final SqlOperator MONTHNAME =
118131 new PeriodNameFunction (TimeUnit .MONTH ).toUDF ("MONTHNAME" );
119132 public static final SqlOperator CONVERT_TZ =
120- UserDefinedFunctionUtils . adaptExprMethodToUDF (
133+ adaptExprMethodToUDF (
121134 DateTimeFunctions .class ,
122135 "exprConvertTZ" ,
123136 PPLReturnTypes .TIMESTAMP_FORCE_NULLABLE ,
124137 NullPolicy .ANY )
125138 .toUDF ("CONVERT_TZ" );
126139 public static final SqlOperator DATEDIFF =
127- UserDefinedFunctionUtils . adaptExprMethodWithPropertiesToUDF (
140+ adaptExprMethodWithPropertiesToUDF (
128141 DateTimeFunctions .class ,
129142 "exprDateDiff" ,
130143 ReturnTypes .BIGINT_FORCE_NULLABLE ,
@@ -134,50 +147,50 @@ public class PPLBuiltinOperators extends ReflectiveSqlOperatorTable {
134147 new TimestampDiffFunction ().toUDF ("TIMESTAMPDIFF" );
135148 public static final SqlOperator LAST_DAY = new LastDayFunction ().toUDF ("LAST_DAY" );
136149 public static final SqlOperator FROM_DAYS =
137- UserDefinedFunctionUtils . adaptExprMethodToUDF (
150+ adaptExprMethodToUDF (
138151 DateTimeFunctions .class ,
139152 "exprFromDays" ,
140153 PPLReturnTypes .DATE_FORCE_NULLABLE ,
141154 NullPolicy .ANY )
142155 .toUDF ("FROM_DAYS" );
143156 public static final SqlOperator FROM_UNIXTIME = new FromUnixTimeFunction ().toUDF ("FROM_UNIXTIME" );
144157 public static final SqlOperator GET_FORMAT =
145- UserDefinedFunctionUtils . adaptExprMethodToUDF (
158+ adaptExprMethodToUDF (
146159 DateTimeFunctions .class ,
147160 "exprGetFormat" ,
148161 ReturnTypes .VARCHAR .andThen (SqlTypeTransforms .FORCE_NULLABLE ),
149162 NullPolicy .ANY )
150163 .toUDF ("GET_FORMAT" );
151164 public static final SqlOperator MAKEDATE =
152- UserDefinedFunctionUtils . adaptExprMethodToUDF (
165+ adaptExprMethodToUDF (
153166 DateTimeFunctions .class ,
154167 "exprMakeDate" ,
155168 PPLReturnTypes .DATE_FORCE_NULLABLE ,
156169 NullPolicy .ANY )
157170 .toUDF ("MAKEDATE" );
158171 public static final SqlOperator MAKETIME =
159- UserDefinedFunctionUtils . adaptExprMethodToUDF (
172+ adaptExprMethodToUDF (
160173 DateTimeFunctions .class ,
161174 "exprMakeTime" ,
162175 PPLReturnTypes .TIME_FORCE_NULLABLE ,
163176 NullPolicy .ANY )
164177 .toUDF ("MAKETIME" );
165178 public static final SqlOperator PERIOD_DIFF =
166- UserDefinedFunctionUtils . adaptExprMethodToUDF (
179+ adaptExprMethodToUDF (
167180 DateTimeFunctions .class ,
168181 "exprPeriodDiff" ,
169182 PPLReturnTypes .INTEGER_FORCE_NULLABLE ,
170183 NullPolicy .ANY )
171184 .toUDF ("PERIOD_DIFF" );
172185 public static final SqlOperator PERIOD_ADD =
173- UserDefinedFunctionUtils . adaptExprMethodToUDF (
186+ adaptExprMethodToUDF (
174187 DateTimeFunctions .class ,
175188 "exprPeriodAdd" ,
176189 PPLReturnTypes .INTEGER_FORCE_NULLABLE ,
177190 NullPolicy .ANY )
178191 .toUDF ("PERIOD_ADD" );
179192 public static final SqlOperator STR_TO_DATE =
180- UserDefinedFunctionUtils . adaptExprMethodWithPropertiesToUDF (
193+ adaptExprMethodWithPropertiesToUDF (
181194 DateTimeFunctions .class ,
182195 "exprStrToDate" ,
183196 PPLReturnTypes .TIMESTAMP_FORCE_NULLABLE ,
@@ -186,51 +199,51 @@ public class PPLBuiltinOperators extends ReflectiveSqlOperatorTable {
186199 public static final SqlOperator SYSDATE = new SysdateFunction ().toUDF ("SYSDATE" );
187200 public static final SqlOperator SEC_TO_TIME = new SecToTimeFunction ().toUDF ("SEC_TO_TIME" );
188201 public static final SqlOperator TIME =
189- UserDefinedFunctionUtils . adaptExprMethodToUDF (
202+ adaptExprMethodToUDF (
190203 DateTimeFunctions .class ,
191204 "exprTime" ,
192205 PPLReturnTypes .TIME_FORCE_NULLABLE ,
193206 NullPolicy .ARG0 )
194207 .toUDF ("TIME" );
195208 public static final SqlOperator TIME_TO_SEC =
196- UserDefinedFunctionUtils . adaptExprMethodToUDF (
209+ adaptExprMethodToUDF (
197210 DateTimeFunctions .class ,
198211 "exprTimeToSec" ,
199212 ReturnTypes .BIGINT_FORCE_NULLABLE ,
200213 NullPolicy .ARG0 )
201214 .toUDF ("TIME_TO_SEC" );
202215 public static final SqlOperator TIMEDIFF =
203- UserDefinedFunctionUtils . adaptExprMethodToUDF (
216+ adaptExprMethodToUDF (
204217 DateTimeFunctions .class ,
205218 "exprTimeDiff" ,
206219 PPLReturnTypes .TIME_FORCE_NULLABLE ,
207220 NullPolicy .ANY )
208221 .toUDF ("TIME_DIFF" );
209222 public static final SqlOperator TIMESTAMPADD = new TimestampAddFunction ().toUDF ("TIMESTAMPADD" );
210223 public static final SqlOperator TO_DAYS =
211- UserDefinedFunctionUtils . adaptExprMethodToUDF (
224+ adaptExprMethodToUDF (
212225 DateTimeFunctions .class ,
213226 "exprToDays" ,
214227 ReturnTypes .BIGINT_FORCE_NULLABLE ,
215228 NullPolicy .ARG0 )
216229 .toUDF ("TO_DAYS" );
217230 public static final SqlOperator DATETIME = new DatetimeFunction ().toUDF ("DATETIME" );
218231 public static final SqlOperator UTC_DATE =
219- UserDefinedFunctionUtils . adaptExprMethodWithPropertiesToUDF (
232+ adaptExprMethodWithPropertiesToUDF (
220233 DateTimeFunctions .class ,
221234 "exprUtcDate" ,
222235 PPLReturnTypes .DATE_FORCE_NULLABLE ,
223236 NullPolicy .NONE )
224237 .toUDF ("UTC_DATE" );
225238 public static final SqlOperator UTC_TIME =
226- UserDefinedFunctionUtils . adaptExprMethodWithPropertiesToUDF (
239+ adaptExprMethodWithPropertiesToUDF (
227240 DateTimeFunctions .class ,
228241 "exprUtcTime" ,
229242 PPLReturnTypes .TIME_FORCE_NULLABLE ,
230243 NullPolicy .NONE )
231244 .toUDF ("UTC_TIME" );
232245 public static final SqlOperator UTC_TIMESTAMP =
233- UserDefinedFunctionUtils . adaptExprMethodWithPropertiesToUDF (
246+ adaptExprMethodWithPropertiesToUDF (
234247 DateTimeFunctions .class ,
235248 "exprUtcTimestamp" ,
236249 PPLReturnTypes .TIMESTAMP_FORCE_NULLABLE ,
0 commit comments