@@ -62,41 +62,34 @@ private PPLOperandTypes() {}
6262
6363 public static final UDFOperandMetadata NONE = UDFOperandMetadata .wrap (OperandTypes .family ());
6464 public static final UDFOperandMetadata OPTIONAL_ANY =
65- UDFOperandMetadata .wrap (
66- (CompositeOperandTypeChecker )
67- OperandTypes .family (SqlTypeFamily .ANY ).or (OperandTypes .family ()));
65+ UDFOperandMetadata .wrap (OperandTypes .family (SqlTypeFamily .ANY ).or (OperandTypes .family ()));
66+
6867 public static final UDFOperandMetadata OPTIONAL_INTEGER =
69- UDFOperandMetadata .wrap (
70- (CompositeOperandTypeChecker ) OperandTypes .INTEGER .or (OperandTypes .family ()));
71- public static final UDFOperandMetadata STRING =
72- UDFOperandMetadata .wrap ((FamilyOperandTypeChecker ) OperandTypes .CHARACTER );
73- public static final UDFOperandMetadata INTEGER =
74- UDFOperandMetadata .wrap ((FamilyOperandTypeChecker ) OperandTypes .INTEGER );
75- public static final UDFOperandMetadata NUMERIC =
76- UDFOperandMetadata .wrap ((FamilyOperandTypeChecker ) OperandTypes .NUMERIC );
68+ UDFOperandMetadata .wrap (OperandTypes .INTEGER .or (OperandTypes .family ()));
69+ public static final UDFOperandMetadata STRING = UDFOperandMetadata .wrap (OperandTypes .CHARACTER );
70+ public static final UDFOperandMetadata INTEGER = UDFOperandMetadata .wrap (OperandTypes .INTEGER );
71+ public static final UDFOperandMetadata NUMERIC = UDFOperandMetadata .wrap (OperandTypes .NUMERIC );
7772
7873 public static final UDFOperandMetadata NUMERIC_OPTIONAL_STRING =
7974 UDFOperandMetadata .wrap (
80- (CompositeOperandTypeChecker )
81- OperandTypes .NUMERIC .or (
82- OperandTypes .family (SqlTypeFamily .NUMERIC , SqlTypeFamily .CHARACTER )));
75+ OperandTypes .NUMERIC .or (
76+ OperandTypes .family (SqlTypeFamily .NUMERIC , SqlTypeFamily .CHARACTER )));
8377
8478 public static final UDFOperandMetadata ANY_OPTIONAL_INTEGER =
8579 UDFOperandMetadata .wrap (
86- (CompositeOperandTypeChecker )
87- OperandTypes .ANY .or (OperandTypes .family (SqlTypeFamily .ANY , SqlTypeFamily .INTEGER )));
80+ OperandTypes .ANY .or (OperandTypes .family (SqlTypeFamily .ANY , SqlTypeFamily .INTEGER )));
8881 public static final SqlOperandTypeChecker ANY_OPTIONAL_TIMESTAMP =
8982 OperandTypes .ANY .or (OperandTypes .family (SqlTypeFamily .ANY , SqlTypeFamily .TIMESTAMP ));
9083 public static final UDFOperandMetadata INTEGER_INTEGER =
91- UDFOperandMetadata .wrap (( FamilyOperandTypeChecker ) OperandTypes .INTEGER_INTEGER );
84+ UDFOperandMetadata .wrap (OperandTypes .INTEGER_INTEGER );
9285 public static final UDFOperandMetadata STRING_STRING =
93- UDFOperandMetadata .wrap (( FamilyOperandTypeChecker ) OperandTypes .CHARACTER_CHARACTER );
86+ UDFOperandMetadata .wrap (OperandTypes .CHARACTER_CHARACTER );
9487 public static final UDFOperandMetadata STRING_STRING_STRING =
9588 UDFOperandMetadata .wrap (
9689 OperandTypes .family (
9790 SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER ));
9891 public static final UDFOperandMetadata NUMERIC_NUMERIC =
99- UDFOperandMetadata .wrap (( FamilyOperandTypeChecker ) OperandTypes .NUMERIC_NUMERIC );
92+ UDFOperandMetadata .wrap (OperandTypes .NUMERIC_NUMERIC );
10093 public static final UDFOperandMetadata STRING_INTEGER =
10194 UDFOperandMetadata .wrap (OperandTypes .family (SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER ));
10295 public static final UDFOperandMetadata STRING_STRING_INTEGER =
@@ -106,9 +99,8 @@ private PPLOperandTypes() {}
10699
107100 public static final UDFOperandMetadata STRING_OR_STRING_INTEGER =
108101 UDFOperandMetadata .wrap (
109- (CompositeOperandTypeChecker )
110- OperandTypes .family (SqlTypeFamily .CHARACTER )
111- .or (OperandTypes .family (SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER )));
102+ OperandTypes .family (SqlTypeFamily .CHARACTER )
103+ .or (OperandTypes .family (SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER )));
112104
113105 public static final UDFOperandMetadata STRING_STRING_INTEGER_INTEGER =
114106 UDFOperandMetadata .wrap (
@@ -120,9 +112,8 @@ private PPLOperandTypes() {}
120112
121113 public static final UDFOperandMetadata NUMERIC_STRING_OR_STRING_STRING =
122114 UDFOperandMetadata .wrap (
123- (CompositeOperandTypeChecker )
124- (OperandTypes .family (SqlTypeFamily .NUMERIC , SqlTypeFamily .STRING ))
125- .or (OperandTypes .family (SqlTypeFamily .STRING , SqlTypeFamily .STRING )));
115+ (OperandTypes .family (SqlTypeFamily .NUMERIC , SqlTypeFamily .STRING ))
116+ .or (OperandTypes .family (SqlTypeFamily .STRING , SqlTypeFamily .STRING )));
126117
127118 public static final UDFOperandMetadata NUMERIC_NUMERIC_OPTIONAL_NUMERIC_SYMBOL =
128119 UDFOperandMetadata .wrap (
@@ -146,61 +137,61 @@ private PPLOperandTypes() {}
146137
147138 public static final UDFOperandMetadata WIDTH_BUCKET_OPERAND =
148139 UDFOperandMetadata .wrap (
149- (CompositeOperandTypeChecker )
150- // 1. Numeric fields: bin age span=10
151- OperandTypes .family (
152- SqlTypeFamily .NUMERIC ,
140+
141+ // 1. Numeric fields: bin age span=10
142+ OperandTypes .family (
143+ SqlTypeFamily .NUMERIC ,
144+ SqlTypeFamily .INTEGER ,
145+ SqlTypeFamily .NUMERIC ,
146+ SqlTypeFamily .NUMERIC )
147+ // 2. Timestamp fields with OpenSearch type system
148+ // Used in: Production + Integration tests (CalciteBinCommandIT)
149+ .or (
150+ OperandTypes .family (
151+ SqlTypeFamily .TIMESTAMP ,
153152 SqlTypeFamily .INTEGER ,
154- SqlTypeFamily .NUMERIC ,
155- SqlTypeFamily .NUMERIC )
156- // 2. Timestamp fields with OpenSearch type system
157- // Used in: Production + Integration tests (CalciteBinCommandIT)
158- .or (
159- OperandTypes .family (
160- SqlTypeFamily .TIMESTAMP ,
161- SqlTypeFamily .INTEGER ,
162- SqlTypeFamily .CHARACTER , // TIMESTAMP - TIMESTAMP = INTERVAL (as STRING)
163- SqlTypeFamily .TIMESTAMP ))
164- // 3. Timestamp fields with Calcite SCOTT schema
165- // Used in: Unit tests (CalcitePPLBinTest)
166- .or (
167- OperandTypes .family (
168- SqlTypeFamily .TIMESTAMP ,
169- SqlTypeFamily .INTEGER ,
170- SqlTypeFamily .TIMESTAMP , // TIMESTAMP - TIMESTAMP = TIMESTAMP
171- SqlTypeFamily .TIMESTAMP ))
172- // DATE field with OpenSearch type system
173- // Used in: Production + Integration tests (CalciteBinCommandIT)
174- .or (
175- OperandTypes .family (
176- SqlTypeFamily .DATE ,
177- SqlTypeFamily .INTEGER ,
178- SqlTypeFamily .CHARACTER , // DATE - DATE = INTERVAL (as STRING)
179- SqlTypeFamily .DATE ))
180- // DATE field with Calcite SCOTT schema
181- // Used in: Unit tests (CalcitePPLBinTest)
182- .or (
183- OperandTypes .family (
184- SqlTypeFamily .DATE ,
185- SqlTypeFamily .INTEGER ,
186- SqlTypeFamily .DATE , // DATE - DATE = DATE
187- SqlTypeFamily .DATE ))
188- // TIME field with OpenSearch type system
189- // Used in: Production + Integration tests (CalciteBinCommandIT)
190- .or (
191- OperandTypes .family (
192- SqlTypeFamily .TIME ,
193- SqlTypeFamily .INTEGER ,
194- SqlTypeFamily .CHARACTER , // TIME - TIME = INTERVAL (as STRING)
195- SqlTypeFamily .TIME ))
196- // TIME field with Calcite SCOTT schema
197- // Used in: Unit tests (CalcitePPLBinTest)
198- .or (
199- OperandTypes .family (
200- SqlTypeFamily .TIME ,
201- SqlTypeFamily .INTEGER ,
202- SqlTypeFamily .TIME , // TIME - TIME = TIME
203- SqlTypeFamily .TIME )));
153+ SqlTypeFamily .CHARACTER , // TIMESTAMP - TIMESTAMP = INTERVAL (as STRING)
154+ SqlTypeFamily .TIMESTAMP ))
155+ // 3. Timestamp fields with Calcite SCOTT schema
156+ // Used in: Unit tests (CalcitePPLBinTest)
157+ .or (
158+ OperandTypes .family (
159+ SqlTypeFamily .TIMESTAMP ,
160+ SqlTypeFamily .INTEGER ,
161+ SqlTypeFamily .TIMESTAMP , // TIMESTAMP - TIMESTAMP = TIMESTAMP
162+ SqlTypeFamily .TIMESTAMP ))
163+ // DATE field with OpenSearch type system
164+ // Used in: Production + Integration tests (CalciteBinCommandIT)
165+ .or (
166+ OperandTypes .family (
167+ SqlTypeFamily .DATE ,
168+ SqlTypeFamily .INTEGER ,
169+ SqlTypeFamily .CHARACTER , // DATE - DATE = INTERVAL (as STRING)
170+ SqlTypeFamily .DATE ))
171+ // DATE field with Calcite SCOTT schema
172+ // Used in: Unit tests (CalcitePPLBinTest)
173+ .or (
174+ OperandTypes .family (
175+ SqlTypeFamily .DATE ,
176+ SqlTypeFamily .INTEGER ,
177+ SqlTypeFamily .DATE , // DATE - DATE = DATE
178+ SqlTypeFamily .DATE ))
179+ // TIME field with OpenSearch type system
180+ // Used in: Production + Integration tests (CalciteBinCommandIT)
181+ .or (
182+ OperandTypes .family (
183+ SqlTypeFamily .TIME ,
184+ SqlTypeFamily .INTEGER ,
185+ SqlTypeFamily .CHARACTER , // TIME - TIME = INTERVAL (as STRING)
186+ SqlTypeFamily .TIME ))
187+ // TIME field with Calcite SCOTT schema
188+ // Used in: Unit tests (CalcitePPLBinTest)
189+ .or (
190+ OperandTypes .family (
191+ SqlTypeFamily .TIME ,
192+ SqlTypeFamily .INTEGER ,
193+ SqlTypeFamily .TIME , // TIME - TIME = TIME
194+ SqlTypeFamily .TIME )));
204195
205196 public static final UDFOperandMetadata NUMERIC_NUMERIC_NUMERIC_NUMERIC_NUMERIC =
206197 UDFOperandMetadata .wrap (
@@ -212,103 +203,85 @@ private PPLOperandTypes() {}
212203 SqlTypeFamily .NUMERIC ));
213204 public static final UDFOperandMetadata STRING_OR_INTEGER_INTEGER_INTEGER =
214205 UDFOperandMetadata .wrap (
215- (CompositeOperandTypeChecker )
216- OperandTypes .family (
217- SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER , SqlTypeFamily .INTEGER )
218- .or (
219- OperandTypes .family (
220- SqlTypeFamily .INTEGER , SqlTypeFamily .INTEGER , SqlTypeFamily .INTEGER )));
206+ OperandTypes .family (SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER , SqlTypeFamily .INTEGER )
207+ .or (
208+ OperandTypes .family (
209+ SqlTypeFamily .INTEGER , SqlTypeFamily .INTEGER , SqlTypeFamily .INTEGER )));
221210
222211 public static final UDFOperandMetadata OPTIONAL_DATE_OR_TIMESTAMP_OR_NUMERIC =
223212 UDFOperandMetadata .wrap (
224- (CompositeOperandTypeChecker )
225- OperandTypes .DATETIME .or (OperandTypes .NUMERIC ).or (OperandTypes .family ()));
213+ OperandTypes .DATETIME .or (OperandTypes .NUMERIC ).or (OperandTypes .family ()));
226214
227215 public static final UDFOperandMetadata DATETIME_OR_STRING =
228- UDFOperandMetadata .wrap (
229- (CompositeOperandTypeChecker ) OperandTypes .DATETIME .or (OperandTypes .CHARACTER ));
216+ UDFOperandMetadata .wrap (OperandTypes .DATETIME .or (OperandTypes .CHARACTER ));
230217 public static final UDFOperandMetadata TIME_OR_TIMESTAMP_OR_STRING =
231218 UDFOperandMetadata .wrap (
232- (CompositeOperandTypeChecker )
233- OperandTypes .CHARACTER .or (OperandTypes .TIME ).or (OperandTypes .TIMESTAMP ));
219+ OperandTypes .CHARACTER .or (OperandTypes .TIME ).or (OperandTypes .TIMESTAMP ));
234220 public static final UDFOperandMetadata DATE_OR_TIMESTAMP_OR_STRING =
235- UDFOperandMetadata .wrap (
236- (CompositeOperandTypeChecker ) OperandTypes .DATE_OR_TIMESTAMP .or (OperandTypes .CHARACTER ));
221+ UDFOperandMetadata .wrap (OperandTypes .DATE_OR_TIMESTAMP .or (OperandTypes .CHARACTER ));
237222 public static final UDFOperandMetadata DATETIME_OR_STRING_OR_INTEGER =
238223 UDFOperandMetadata .wrap (
239- (CompositeOperandTypeChecker )
240- OperandTypes .DATETIME .or (OperandTypes .CHARACTER ).or (OperandTypes .INTEGER ));
224+ OperandTypes .DATETIME .or (OperandTypes .CHARACTER ).or (OperandTypes .INTEGER ));
241225
242226 public static final UDFOperandMetadata DATETIME_OPTIONAL_INTEGER =
243227 UDFOperandMetadata .wrap (
244- (CompositeOperandTypeChecker )
245- OperandTypes .DATETIME .or (
246- OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .INTEGER )));
228+ OperandTypes .DATETIME .or (
229+ OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .INTEGER )));
247230 public static final UDFOperandMetadata ANY_DATETIME_OR_STRING =
248231 UDFOperandMetadata .wrap (
249- (CompositeOperandTypeChecker )
250- OperandTypes .family (SqlTypeFamily .ANY )
251- .or (OperandTypes .family (SqlTypeFamily .ANY , SqlTypeFamily .DATETIME ))
252- .or (OperandTypes .family (SqlTypeFamily .ANY , SqlTypeFamily .STRING )));
232+ OperandTypes .family (SqlTypeFamily .ANY )
233+ .or (OperandTypes .family (SqlTypeFamily .ANY , SqlTypeFamily .DATETIME ))
234+ .or (OperandTypes .family (SqlTypeFamily .ANY , SqlTypeFamily .STRING )));
253235
254236 public static final UDFOperandMetadata DATETIME_DATETIME =
255237 UDFOperandMetadata .wrap (OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .DATETIME ));
256238 public static final UDFOperandMetadata DATETIME_OR_STRING_STRING =
257239 UDFOperandMetadata .wrap (
258- (CompositeOperandTypeChecker )
259- OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .CHARACTER )
260- .or (OperandTypes .CHARACTER_CHARACTER ));
240+ OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .CHARACTER )
241+ .or (OperandTypes .CHARACTER_CHARACTER ));
261242 public static final UDFOperandMetadata DATETIME_OR_STRING_DATETIME_OR_STRING =
262243 UDFOperandMetadata .wrap (
263- (CompositeOperandTypeChecker )
264- OperandTypes .CHARACTER_CHARACTER
265- .or (OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .DATETIME ))
266- .or (OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .CHARACTER ))
267- .or (OperandTypes .family (SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME )));
244+ OperandTypes .CHARACTER_CHARACTER
245+ .or (OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .DATETIME ))
246+ .or (OperandTypes .family (SqlTypeFamily .DATETIME , SqlTypeFamily .CHARACTER ))
247+ .or (OperandTypes .family (SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME )));
268248 public static final UDFOperandMetadata STRING_TIMESTAMP =
269249 UDFOperandMetadata .wrap (
270250 OperandTypes .family (SqlTypeFamily .CHARACTER , SqlTypeFamily .TIMESTAMP ));
271251 public static final UDFOperandMetadata STRING_DATETIME =
272252 UDFOperandMetadata .wrap (OperandTypes .family (SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME ));
273253 public static final UDFOperandMetadata DATETIME_INTERVAL =
274- UDFOperandMetadata .wrap (( FamilyOperandTypeChecker ) OperandTypes .DATETIME_INTERVAL );
254+ UDFOperandMetadata .wrap (OperandTypes .DATETIME_INTERVAL );
275255 public static final UDFOperandMetadata TIME_TIME =
276256 UDFOperandMetadata .wrap (OperandTypes .family (SqlTypeFamily .TIME , SqlTypeFamily .TIME ));
277257
278258 public static final UDFOperandMetadata TIMESTAMP_OR_STRING_STRING_STRING =
279259 UDFOperandMetadata .wrap (
280- (CompositeOperandTypeChecker )
281- OperandTypes .family (
282- SqlTypeFamily .TIMESTAMP , SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER )
283- .or (
284- OperandTypes .family (
285- SqlTypeFamily .CHARACTER ,
286- SqlTypeFamily .CHARACTER ,
287- SqlTypeFamily .CHARACTER )));
260+ OperandTypes .family (
261+ SqlTypeFamily .TIMESTAMP , SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER )
262+ .or (
263+ OperandTypes .family (
264+ SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER )));
288265 public static final UDFOperandMetadata STRING_INTEGER_DATETIME_OR_STRING =
289266 UDFOperandMetadata .wrap (
290- (CompositeOperandTypeChecker )
291- OperandTypes .family (
292- SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER , SqlTypeFamily .CHARACTER )
293- .or (
294- OperandTypes .family (
295- SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER , SqlTypeFamily .DATETIME )));
267+ OperandTypes .family (
268+ SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER , SqlTypeFamily .CHARACTER )
269+ .or (
270+ OperandTypes .family (
271+ SqlTypeFamily .CHARACTER , SqlTypeFamily .INTEGER , SqlTypeFamily .DATETIME )));
296272 public static final UDFOperandMetadata INTERVAL_DATETIME_DATETIME =
297273 UDFOperandMetadata .wrap (
298- (CompositeOperandTypeChecker )
299- OperandTypes .family (
300- SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME , SqlTypeFamily .DATETIME )
301- .or (
302- OperandTypes .family (
303- SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME ))
304- .or (
305- OperandTypes .family (
306- SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME , SqlTypeFamily .CHARACTER ))
307- .or (
308- OperandTypes .family (
309- SqlTypeFamily .CHARACTER ,
310- SqlTypeFamily .CHARACTER ,
311- SqlTypeFamily .CHARACTER )));
274+ OperandTypes .family (
275+ SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME , SqlTypeFamily .DATETIME )
276+ .or (
277+ OperandTypes .family (
278+ SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME ))
279+ .or (
280+ OperandTypes .family (
281+ SqlTypeFamily .CHARACTER , SqlTypeFamily .DATETIME , SqlTypeFamily .CHARACTER ))
282+ .or (
283+ OperandTypes .family (
284+ SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER , SqlTypeFamily .CHARACTER )));
312285
313286 /**
314287 * Operand type checker that accepts any scalar type. This includes numeric types, strings,
0 commit comments