OmniSciDB  72c90bc290
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FilterPushdownTestTableFunctions.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2021 OmniSci, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "../SystemFunctions/os/Shared/TableFunctionsCommon.hpp"
18 #include "TableFunctionsTesting.h"
19 
20 /*
21  This file contains testing UDTFs related to filter pushdown optimization.
22 
23  It is extremely long due to the combinatorial number of template functions
24  that need to be instantiated. We hope to implement automatic casting of
25  column inputs for UDTFs in the near future. When that is available, the
26  number of template functions can be reduced dramatically.
27 
28  NOTE: This file currently has no GPU UDTFs. If any GPU UDTFs are
29  added, it should be added to CUDA_TABLE_FUNCTION_FILES in CMakeLists.txt
30  */
31 
32 enum TFAggType { MIN, MAX };
33 
34 template <typename T>
35 TEMPLATE_INLINE T get_min_or_max(const Column<T>& col, const TFAggType min_or_max) {
36  const auto input_min_max = get_column_min_max(col);
37  if (min_or_max == TFAggType::MIN) {
38  return input_min_max.first;
39  }
40  return input_min_max.second;
41 }
42 
43 template <typename T>
45  const Column<T>& col2,
46  const TFAggType min_or_max) {
47  const auto input1_min_max = get_column_min_max(col1);
48  const auto input2_min_max = get_column_min_max(col2);
49  if (min_or_max == TFAggType::MIN) {
50  return input1_min_max.first < input2_min_max.first ? input1_min_max.first
51  : input2_min_max.first;
52  }
53  return input1_min_max.second > input2_min_max.second ? input1_min_max.second
54  : input2_min_max.second;
55 }
56 
57 #ifndef __CUDACC__
58 
59 template <typename K, typename T, typename Z>
60 NEVER_INLINE HOST int32_t
62  const TextEncodingNone& agg_type,
63  const Column<K>& input_id,
64  const Column<T>& input_x,
65  const Column<T>& input_y,
66  const Column<Z>& input_z,
67  Column<int32_t>& output_row_count,
68  Column<K>& output_id,
69  Column<T>& output_x,
70  Column<T>& output_y,
71  Column<Z>& output_z) {
72  const std::string agg_type_str = agg_type.getString();
73  const TFAggType min_or_max = agg_type_str == "MIN" ? TFAggType::MIN : TFAggType::MAX;
74  mgr.set_output_row_size(1);
75  output_row_count[0] = input_id.size();
76  output_id[0] = get_min_or_max(input_id, min_or_max);
77  output_x[0] = get_min_or_max(input_x, min_or_max);
78  output_y[0] = get_min_or_max(input_y, min_or_max);
79  output_z[0] = get_min_or_max(input_z, min_or_max);
80  return 1;
81 }
82 
83 template <typename K, typename T, typename Z>
85  const Column<K>& input_id,
86  const Column<T>& input_x,
87  const Column<T>& input_y,
88  const Column<Z>& input_z,
89  Column<K>& output_id,
90  Column<T>& output_x,
91  Column<T>& output_y,
92  Column<Z>& output_z) {
93  const int64_t input_size = input_id.size();
94  mgr.set_output_row_size(input_size);
95  for (int64_t input_idx = 0; input_idx < input_size; ++input_idx) {
96  output_id[input_idx] = input_id[input_idx];
97  output_x[input_idx] = input_x[input_idx];
98  output_y[input_idx] = input_y[input_idx];
99  output_z[input_idx] = input_z[input_idx];
100  }
101  return input_size;
102 }
103 
104 template <typename K, typename T, typename Z>
105 NEVER_INLINE HOST int32_t
107  const TextEncodingNone& agg_type,
108  const Column<K>& input1_id,
109  const Column<T>& input1_x,
110  const Column<T>& input1_y,
111  const Column<Z>& input1_z,
112  const Column<K>& input2_id,
113  const Column<T>& input2_x,
114  const Column<T>& input2_y,
115  const Column<Z>& input2_z,
116  const Column<T>& input2_w,
117  Column<int32_t>& output_row_count,
118  Column<K>& output_id,
119  Column<T>& output_x,
120  Column<T>& output_y,
121  Column<Z>& output_z,
122  Column<T>& output_w) {
123  mgr.set_output_row_size(1);
124  const std::string agg_type_str = agg_type.getString();
125  const TFAggType min_or_max = agg_type_str == "MIN" ? TFAggType::MIN : TFAggType::MAX;
126  output_row_count[0] = input1_id.size() + input2_id.size();
127  output_id[0] = get_min_or_max_union(input1_id, input2_id, min_or_max);
128  output_x[0] = get_min_or_max_union(input1_x, input2_x, min_or_max);
129  output_y[0] = get_min_or_max_union(input1_y, input2_y, min_or_max);
130  output_z[0] = get_min_or_max_union(input1_z, input2_z, min_or_max);
131  if (input2_w.size() > 0) {
132  const auto w_min_max = get_column_min_max(input2_w);
133  output_w[0] = agg_type_str == "MIN" ? w_min_max.first : w_min_max.second;
134  } else {
135  output_w.setNull(0);
136  }
137  return 1;
138 }
139 
140 template <typename K, typename T, typename Z>
141 NEVER_INLINE HOST int32_t
143  const Column<K>& input1_id,
144  const Column<T>& input1_x,
145  const Column<T>& input1_y,
146  const Column<Z>& input1_z,
147  const Column<K>& input2_id,
148  const Column<T>& input2_x,
149  const Column<T>& input2_y,
150  const Column<Z>& input2_z,
151  const Column<T>& input2_w,
152  Column<K>& output_id,
153  Column<T>& output_x,
154  Column<T>& output_y,
155  Column<Z>& output_z,
156  Column<T>& output_w) {
157  const int64_t input1_size = input1_id.size();
158  const int64_t input2_size = input2_id.size();
159  int64_t output_size = input1_size + input2_size;
160  mgr.set_output_row_size(output_size);
161  for (int64_t input1_idx = 0; input1_idx < input1_size; ++input1_idx) {
162  output_id[input1_idx] = input1_id[input1_idx];
163  output_x[input1_idx] = input1_x[input1_idx];
164  output_y[input1_idx] = input1_y[input1_idx];
165  output_z[input1_idx] = input1_z[input1_idx];
166  output_w.setNull(input1_idx);
167  }
168  for (int64_t input2_idx = 0; input2_idx < input2_size; ++input2_idx) {
169  output_id[input1_size + input2_idx] = input2_id[input2_idx];
170  output_x[input1_size + input2_idx] = input2_x[input2_idx];
171  output_y[input1_size + input2_idx] = input2_y[input2_idx];
172  output_z[input1_size + input2_idx] = input2_z[input2_idx];
173  output_w[input1_size + input2_idx] = input2_w[input2_idx];
174  }
175  return output_size;
176 }
177 
178 // explicit instantiations
179 
180 // 000
181 
182 template NEVER_INLINE HOST int32_t
184  const TextEncodingNone& agg_type,
185  const Column<int64_t>& input_id,
186  const Column<int64_t>& input_x,
187  const Column<int64_t>& input_y,
188  const Column<int64_t>& input_z,
189  Column<int32_t>& output_row_count,
190  Column<int64_t>& output_id,
191  Column<int64_t>& output_x,
192  Column<int64_t>& output_y,
193  Column<int64_t>& output_z);
194 
195 template NEVER_INLINE HOST int32_t
197  const Column<int64_t>& input_id,
198  const Column<int64_t>& input_x,
199  const Column<int64_t>& input_y,
200  const Column<int64_t>& input_z,
201  Column<int64_t>& output_id,
202  Column<int64_t>& output_x,
203  Column<int64_t>& output_y,
204  Column<int64_t>& output_z);
205 
206 template NEVER_INLINE HOST int32_t
208  const TextEncodingNone& agg_type,
209  const Column<int64_t>& input1_id,
210  const Column<int64_t>& input1_x,
211  const Column<int64_t>& input1_y,
212  const Column<int64_t>& input1_z,
213  const Column<int64_t>& input2_id,
214  const Column<int64_t>& input2_x,
215  const Column<int64_t>& input2_y,
216  const Column<int64_t>& input2_z,
217  const Column<int64_t>& input2_w,
218  Column<int32_t>& output_row_count,
219  Column<int64_t>& output_id,
220  Column<int64_t>& output_x,
221  Column<int64_t>& output_y,
222  Column<int64_t>& output_z,
223  Column<int64_t>& output_w);
224 
225 template NEVER_INLINE HOST int32_t
227  const Column<int64_t>& input1_id,
228  const Column<int64_t>& input1_x,
229  const Column<int64_t>& input1_y,
230  const Column<int64_t>& input1_z,
231  const Column<int64_t>& input2_id,
232  const Column<int64_t>& input2_x,
233  const Column<int64_t>& input2_y,
234  const Column<int64_t>& input2_z,
235  const Column<int64_t>& input2_w,
236  Column<int64_t>& output_id,
237  Column<int64_t>& output_x,
238  Column<int64_t>& output_y,
239  Column<int64_t>& output_z,
240  Column<int64_t>& output_w);
241 
242 // 001
243 
244 template NEVER_INLINE HOST int32_t
246  const TextEncodingNone& agg_type,
247  const Column<int64_t>& input_id,
248  const Column<int64_t>& input_x,
249  const Column<int64_t>& input_y,
250  const Column<double>& input_z,
251  Column<int32_t>& output_row_count,
252  Column<int64_t>& output_id,
253  Column<int64_t>& output_x,
254  Column<int64_t>& output_y,
255  Column<double>& output_z);
256 
257 template NEVER_INLINE HOST int32_t
259  const Column<int64_t>& input_id,
260  const Column<int64_t>& input_x,
261  const Column<int64_t>& input_y,
262  const Column<double>& input_z,
263  Column<int64_t>& output_id,
264  Column<int64_t>& output_x,
265  Column<int64_t>& output_y,
266  Column<double>& output_z);
267 
268 template NEVER_INLINE HOST int32_t
270  const TextEncodingNone& agg_type,
271  const Column<int64_t>& input1_id,
272  const Column<int64_t>& input1_x,
273  const Column<int64_t>& input1_y,
274  const Column<double>& input1_z,
275  const Column<int64_t>& input2_id,
276  const Column<int64_t>& input2_x,
277  const Column<int64_t>& input2_y,
278  const Column<double>& input2_z,
279  const Column<int64_t>& input2_w,
280  Column<int32_t>& output_row_count,
281  Column<int64_t>& output_id,
282  Column<int64_t>& output_x,
283  Column<int64_t>& output_y,
284  Column<double>& output_z,
285  Column<int64_t>& output_w);
286 
287 template NEVER_INLINE HOST int32_t
289  const Column<int64_t>& input1_id,
290  const Column<int64_t>& input1_x,
291  const Column<int64_t>& input1_y,
292  const Column<double>& input1_z,
293  const Column<int64_t>& input2_id,
294  const Column<int64_t>& input2_x,
295  const Column<int64_t>& input2_y,
296  const Column<double>& input2_z,
297  const Column<int64_t>& input2_w,
298  Column<int64_t>& output_id,
299  Column<int64_t>& output_x,
300  Column<int64_t>& output_y,
301  Column<double>& output_z,
302  Column<int64_t>& output_w);
303 
304 // 010
305 
306 template NEVER_INLINE HOST int32_t
308  const TextEncodingNone& agg_type,
309  const Column<TextEncodingDict>& input_id,
310  const Column<int64_t>& input_x,
311  const Column<int64_t>& input_y,
312  const Column<int64_t>& input_z,
313  Column<int32_t>& output_row_count,
314  Column<TextEncodingDict>& output_id,
315  Column<int64_t>& output_x,
316  Column<int64_t>& output_y,
317  Column<int64_t>& output_z);
318 
319 template NEVER_INLINE HOST int32_t
321  const Column<TextEncodingDict>& input_id,
322  const Column<int64_t>& input_x,
323  const Column<int64_t>& input_y,
324  const Column<int64_t>& input_z,
325  Column<TextEncodingDict>& output_id,
326  Column<int64_t>& output_x,
327  Column<int64_t>& output_y,
328  Column<int64_t>& output_z);
329 
330 template NEVER_INLINE HOST int32_t
332  const TextEncodingNone& agg_type,
333  const Column<TextEncodingDict>& input1_id,
334  const Column<int64_t>& input1_x,
335  const Column<int64_t>& input1_y,
336  const Column<int64_t>& input1_z,
337  const Column<TextEncodingDict>& input2_id,
338  const Column<int64_t>& input2_x,
339  const Column<int64_t>& input2_y,
340  const Column<int64_t>& input2_z,
341  const Column<int64_t>& input2_w,
342  Column<int32_t>& output_row_count,
343  Column<TextEncodingDict>& output_id,
344  Column<int64_t>& output_x,
345  Column<int64_t>& output_y,
346  Column<int64_t>& output_z,
347  Column<int64_t>& output_w);
348 
349 template NEVER_INLINE HOST int32_t
351  const Column<TextEncodingDict>& input1_id,
352  const Column<int64_t>& input1_x,
353  const Column<int64_t>& input1_y,
354  const Column<int64_t>& input1_z,
355  const Column<TextEncodingDict>& input2_id,
356  const Column<int64_t>& input2_x,
357  const Column<int64_t>& input2_y,
358  const Column<int64_t>& input2_z,
359  const Column<int64_t>& input2_w,
360  Column<TextEncodingDict>& output_id,
361  Column<int64_t>& output_x,
362  Column<int64_t>& output_y,
363  Column<int64_t>& output_z,
364  Column<int64_t>& output_w);
365 
366 // 011
367 
368 template NEVER_INLINE HOST int32_t
370  const TextEncodingNone& agg_type,
371  const Column<TextEncodingDict>& input_id,
372  const Column<int64_t>& input_x,
373  const Column<int64_t>& input_y,
374  const Column<double>& input_z,
375  Column<int32_t>& output_row_count,
376  Column<TextEncodingDict>& output_id,
377  Column<int64_t>& output_x,
378  Column<int64_t>& output_y,
379  Column<double>& output_z);
380 
381 template NEVER_INLINE HOST int32_t
383  const Column<TextEncodingDict>& input_id,
384  const Column<int64_t>& input_x,
385  const Column<int64_t>& input_y,
386  const Column<double>& input_z,
387  Column<TextEncodingDict>& output_id,
388  Column<int64_t>& output_x,
389  Column<int64_t>& output_y,
390  Column<double>& output_z);
391 
392 template NEVER_INLINE HOST int32_t
394  const TextEncodingNone& agg_type,
395  const Column<TextEncodingDict>& input1_id,
396  const Column<int64_t>& input1_x,
397  const Column<int64_t>& input1_y,
398  const Column<double>& input1_z,
399  const Column<TextEncodingDict>& input2_id,
400  const Column<int64_t>& input2_x,
401  const Column<int64_t>& input2_y,
402  const Column<double>& input2_z,
403  const Column<int64_t>& input2_w,
404  Column<int32_t>& output_row_count,
405  Column<TextEncodingDict>& output_id,
406  Column<int64_t>& output_x,
407  Column<int64_t>& output_y,
408  Column<double>& output_z,
409  Column<int64_t>& output_w);
410 
411 template NEVER_INLINE HOST int32_t
413  const Column<TextEncodingDict>& input1_id,
414  const Column<int64_t>& input1_x,
415  const Column<int64_t>& input1_y,
416  const Column<double>& input1_z,
417  const Column<TextEncodingDict>& input2_id,
418  const Column<int64_t>& input2_x,
419  const Column<int64_t>& input2_y,
420  const Column<double>& input2_z,
421  const Column<int64_t>& input2_w,
422  Column<TextEncodingDict>& output_id,
423  Column<int64_t>& output_x,
424  Column<int64_t>& output_y,
425  Column<double>& output_z,
426  Column<int64_t>& output_w);
427 
428 // 100
429 
430 template NEVER_INLINE HOST int32_t
432  const TextEncodingNone& agg_type,
433  const Column<int64_t>& input_id,
434  const Column<double>& input_x,
435  const Column<double>& input_y,
436  const Column<int64_t>& input_z,
437  Column<int32_t>& output_row_count,
438  Column<int64_t>& output_id,
439  Column<double>& output_x,
440  Column<double>& output_y,
441  Column<int64_t>& output_z);
442 
443 template NEVER_INLINE HOST int32_t
445  const Column<int64_t>& input_id,
446  const Column<double>& input_x,
447  const Column<double>& input_y,
448  const Column<int64_t>& input_z,
449  Column<int64_t>& output_id,
450  Column<double>& output_x,
451  Column<double>& output_y,
452  Column<int64_t>& output_z);
453 
454 template NEVER_INLINE HOST int32_t
456  const TextEncodingNone& agg_type,
457  const Column<int64_t>& input1_id,
458  const Column<double>& input1_x,
459  const Column<double>& input1_y,
460  const Column<int64_t>& input1_z,
461  const Column<int64_t>& input2_id,
462  const Column<double>& input2_x,
463  const Column<double>& input2_y,
464  const Column<int64_t>& input2_z,
465  const Column<double>& input2_w,
466  Column<int32_t>& output_row_count,
467  Column<int64_t>& output_id,
468  Column<double>& output_x,
469  Column<double>& output_y,
470  Column<int64_t>& output_z,
471  Column<double>& output_w);
472 
473 template NEVER_INLINE HOST int32_t
475  const Column<int64_t>& input1_id,
476  const Column<double>& input1_x,
477  const Column<double>& input1_y,
478  const Column<int64_t>& input1_z,
479  const Column<int64_t>& input2_id,
480  const Column<double>& input2_x,
481  const Column<double>& input2_y,
482  const Column<int64_t>& input2_z,
483  const Column<double>& input2_w,
484  Column<int64_t>& output_id,
485  Column<double>& output_x,
486  Column<double>& output_y,
487  Column<int64_t>& output_z,
488  Column<double>& output_w);
489 
490 // 101
491 
492 template NEVER_INLINE HOST int32_t
494  const TextEncodingNone& agg_type,
495  const Column<int64_t>& input_id,
496  const Column<double>& input_x,
497  const Column<double>& input_y,
498  const Column<double>& input_z,
499  Column<int32_t>& output_row_count,
500  Column<int64_t>& output_id,
501  Column<double>& output_x,
502  Column<double>& output_y,
503  Column<double>& output_z);
504 
505 template NEVER_INLINE HOST int32_t
507  const Column<int64_t>& input_id,
508  const Column<double>& input_x,
509  const Column<double>& input_y,
510  const Column<double>& input_z,
511  Column<int64_t>& output_id,
512  Column<double>& output_x,
513  Column<double>& output_y,
514  Column<double>& output_z);
515 
516 template NEVER_INLINE HOST int32_t
518  const TextEncodingNone& agg_type,
519  const Column<int64_t>& input1_id,
520  const Column<double>& input1_x,
521  const Column<double>& input1_y,
522  const Column<double>& input1_z,
523  const Column<int64_t>& input2_id,
524  const Column<double>& input2_x,
525  const Column<double>& input2_y,
526  const Column<double>& input2_z,
527  const Column<double>& input2_w,
528  Column<int32_t>& output_row_count,
529  Column<int64_t>& output_id,
530  Column<double>& output_x,
531  Column<double>& output_y,
532  Column<double>& output_z,
533  Column<double>& output_w);
534 
535 template NEVER_INLINE HOST int32_t
537  const Column<int64_t>& input1_id,
538  const Column<double>& input1_x,
539  const Column<double>& input1_y,
540  const Column<double>& input1_z,
541  const Column<int64_t>& input2_id,
542  const Column<double>& input2_x,
543  const Column<double>& input2_y,
544  const Column<double>& input2_z,
545  const Column<double>& input2_w,
546  Column<int64_t>& output_id,
547  Column<double>& output_x,
548  Column<double>& output_y,
549  Column<double>& output_z,
550  Column<double>& output_w);
551 
552 // 110
553 
554 template NEVER_INLINE HOST int32_t
556  const TextEncodingNone& agg_type,
557  const Column<TextEncodingDict>& input_id,
558  const Column<double>& input_x,
559  const Column<double>& input_y,
560  const Column<int64_t>& input_z,
561  Column<int32_t>& output_row_count,
562  Column<TextEncodingDict>& output_id,
563  Column<double>& output_x,
564  Column<double>& output_y,
565  Column<int64_t>& output_z);
566 
567 template NEVER_INLINE HOST int32_t
569  const Column<TextEncodingDict>& input_id,
570  const Column<double>& input_x,
571  const Column<double>& input_y,
572  const Column<int64_t>& input_z,
573  Column<TextEncodingDict>& output_id,
574  Column<double>& output_x,
575  Column<double>& output_y,
576  Column<int64_t>& output_z);
577 
578 template NEVER_INLINE HOST int32_t
580  const TextEncodingNone& agg_type,
581  const Column<TextEncodingDict>& input1_id,
582  const Column<double>& input1_x,
583  const Column<double>& input1_y,
584  const Column<int64_t>& input1_z,
585  const Column<TextEncodingDict>& input2_id,
586  const Column<double>& input2_x,
587  const Column<double>& input2_y,
588  const Column<int64_t>& input2_z,
589  const Column<double>& input2_w,
590  Column<int32_t>& output_row_count,
591  Column<TextEncodingDict>& output_id,
592  Column<double>& output_x,
593  Column<double>& output_y,
594  Column<int64_t>& output_z,
595  Column<double>& output_w);
596 
597 template NEVER_INLINE HOST int32_t
599  const Column<TextEncodingDict>& input1_id,
600  const Column<double>& input1_x,
601  const Column<double>& input1_y,
602  const Column<int64_t>& input1_z,
603  const Column<TextEncodingDict>& input2_id,
604  const Column<double>& input2_x,
605  const Column<double>& input2_y,
606  const Column<int64_t>& input2_z,
607  const Column<double>& input2_w,
608  Column<TextEncodingDict>& output_id,
609  Column<double>& output_x,
610  Column<double>& output_y,
611  Column<int64_t>& output_z,
612  Column<double>& output_w);
613 
614 // 111
615 
616 template NEVER_INLINE HOST int32_t
618  const TextEncodingNone& agg_type,
619  const Column<TextEncodingDict>& input_id,
620  const Column<double>& input_x,
621  const Column<double>& input_y,
622  const Column<double>& input_z,
623  Column<int32_t>& output_row_count,
624  Column<TextEncodingDict>& output_id,
625  Column<double>& output_x,
626  Column<double>& output_y,
627  Column<double>& output_z);
628 
629 template NEVER_INLINE HOST int32_t
631  const Column<TextEncodingDict>& input_id,
632  const Column<double>& input_x,
633  const Column<double>& input_y,
634  const Column<double>& input_z,
635  Column<TextEncodingDict>& output_id,
636  Column<double>& output_x,
637  Column<double>& output_y,
638  Column<double>& output_z);
639 
640 template NEVER_INLINE HOST int32_t
642  const TextEncodingNone& agg_type,
643  const Column<TextEncodingDict>& input1_id,
644  const Column<double>& input1_x,
645  const Column<double>& input1_y,
646  const Column<double>& input1_z,
647  const Column<TextEncodingDict>& input2_id,
648  const Column<double>& input2_x,
649  const Column<double>& input2_y,
650  const Column<double>& input2_z,
651  const Column<double>& input2_w,
652  Column<int32_t>& output_row_count,
653  Column<TextEncodingDict>& output_id,
654  Column<double>& output_x,
655  Column<double>& output_y,
656  Column<double>& output_z,
657  Column<double>& output_w);
658 
659 template NEVER_INLINE HOST int32_t
661  const Column<TextEncodingDict>& input1_id,
662  const Column<double>& input1_x,
663  const Column<double>& input1_y,
664  const Column<double>& input1_z,
665  const Column<TextEncodingDict>& input2_id,
666  const Column<double>& input2_x,
667  const Column<double>& input2_y,
668  const Column<double>& input2_z,
669  const Column<double>& input2_w,
670  Column<TextEncodingDict>& output_id,
671  Column<double>& output_x,
672  Column<double>& output_y,
673  Column<double>& output_z,
674  Column<double>& output_w);
675 
676 #endif
NEVER_INLINE HOST int32_t ct_pushdown_projection__cpu_template(TableFunctionManager &mgr, const Column< K > &input_id, const Column< T > &input_x, const Column< T > &input_y, const Column< Z > &input_z, Column< K > &output_id, Column< T > &output_x, Column< T > &output_y, Column< Z > &output_z)
void set_output_row_size(int64_t num_rows)
Definition: heavydbTypes.h:373
std::string getString() const
Definition: heavydbTypes.h:641
NEVER_INLINE HOST std::pair< T, T > get_column_min_max(const Column< T > &col)
DEVICE int64_t size() const
NEVER_INLINE HOST int32_t ct_pushdown_stats__cpu_template(TableFunctionManager &mgr, const TextEncodingNone &agg_type, const Column< K > &input_id, const Column< T > &input_x, const Column< T > &input_y, const Column< Z > &input_z, Column< int32_t > &output_row_count, Column< K > &output_id, Column< T > &output_x, Column< T > &output_y, Column< Z > &output_z)
TEMPLATE_INLINE T get_min_or_max(const Column< T > &col, const TFAggType min_or_max)
#define HOST
NEVER_INLINE HOST int32_t ct_union_pushdown_projection__cpu_template(TableFunctionManager &mgr, const Column< K > &input1_id, const Column< T > &input1_x, const Column< T > &input1_y, const Column< Z > &input1_z, const Column< K > &input2_id, const Column< T > &input2_x, const Column< T > &input2_y, const Column< Z > &input2_z, const Column< T > &input2_w, Column< K > &output_id, Column< T > &output_x, Column< T > &output_y, Column< Z > &output_z, Column< T > &output_w)
NEVER_INLINE HOST int32_t ct_union_pushdown_stats__cpu_template(TableFunctionManager &mgr, const TextEncodingNone &agg_type, const Column< K > &input1_id, const Column< T > &input1_x, const Column< T > &input1_y, const Column< Z > &input1_z, const Column< K > &input2_id, const Column< T > &input2_x, const Column< T > &input2_y, const Column< Z > &input2_z, const Column< T > &input2_w, Column< int32_t > &output_row_count, Column< K > &output_id, Column< T > &output_x, Column< T > &output_y, Column< Z > &output_z, Column< T > &output_w)
#define TEMPLATE_INLINE
Definition: heavydbTypes.h:59
TEMPLATE_INLINE T get_min_or_max_union(const Column< T > &col1, const Column< T > &col2, const TFAggType min_or_max)
DEVICE void setNull(int64_t index)
#define NEVER_INLINE