Review Board 1.7.22


Column Column, and Column Scalar vectorized execution tests

Review Request #11133 - Created May 13, 2013 and submitted

tony murphy
vectorization
HIVE-4553
Reviewers
hive
hanson5b, jitendra, rusanu, sarvesh.sn
hive-git
This patch adds Column Column, and Column Scalar vectorized execution tests. These tests are generated in parallel with the vectorized expressions. The tests focus is on validating the column vector and the vectorized row batch metadata regarding nulls, repeating, and selection.

Overview of Changes:

CodeGen.java:
+ joinPath, getCamelCaseType, readFile and writeFile made static for use in TestCodeGen.java.
+ filter types now specify null as their output type rather than "doesn't matter" to make detection for test generation easier.
+ support for test generation added.

TestCodeGen.java & Templates: 
     TestClass.txt
     TestColumnColumnFilterVectorExpressionEvaluation.txt,
     TestColumnColumnOperationVectorExpressionEvaluation.txt,
     TestColumnScalarFilterVectorExpressionEvaluation.txt,
     TestColumnScalarOperationVectorExpressionEvaluation.txt
+This class is mutable and maintains a hashmap of TestSuiteClassName to test cases. The tests cases are added over the course of vectorized expressions class generation, with test classes being outputted at the end. For each column vector (inputs and/or outputs) a matrix of pairwise covering Booleans is used to generate test cases across nulls and repeating dimensions. Based on the input column vector(s) nulls and repeating states the states of the output column vector (if there is one) is validated, along with the null vector. For filter operations the selection vector is validated against the generated data. Each template corresponds to a class representing a test suite.

VectorizedRowGroupUtil.java
+added methods generateLongColumnVector and generateDoubleColumnVector for generating the respective column vectors with optional nulls and/or repeating values.
generated tests, and ran them.
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/CodeGen.java
Revision 53d9a7a New Change
[20] 213 lines
[+20] [+] public class CodeGen {
214
        {"VectorUDAFVar", "VectorUDAFStdSampLong", "long", "Math.sqrt(myagg.variance / (myagg.count-1.0))", "stddev_samp", "_FUNC_(x) - Returns the sample standard deviation of a set of numbers (vectorized, long)"},
214
        {"VectorUDAFVar", "VectorUDAFStdSampLong", "long", "Math.sqrt(myagg.variance / (myagg.count-1.0))", "stddev_samp", "_FUNC_(x) - Returns the sample standard deviation of a set of numbers (vectorized, long)"},
215
        {"VectorUDAFVar", "VectorUDAFStdSampDouble", "double", "Math.sqrt(myagg.variance / (myagg.count-1.0))", "stddev_samp", "_FUNC_(x) - Returns the sample standard deviation of a set of numbers (vectorized, double)"},
215
        {"VectorUDAFVar", "VectorUDAFStdSampDouble", "double", "Math.sqrt(myagg.variance / (myagg.count-1.0))", "stddev_samp", "_FUNC_(x) - Returns the sample standard deviation of a set of numbers (vectorized, double)"},
216

    
   
216

   
217
    };
217
    };
218

    
   
218

   

    
   
219

   
219
  private final String templateDirectory;
220
  private final String templateDirectory;
220
  private final String outputDirectory;
221
  private final String outputDirectory;

    
   
222
  private final TestCodeGen testCodeGen;
221

    
   
223

   
222
    private static String joinPath(String...parts) {
224
  static String joinPath(String...parts) {
223
    String path = parts[0];
225
    String path = parts[0];
224
    for (int i=1; i < parts.length; ++i) {
226
    for (int i=1; i < parts.length; ++i) {
225
      path += File.separatorChar + parts[i];
227
      path += File.separatorChar + parts[i];
226
    }
228
    }
227
    return path;
229
    return path;
228
  }
230
  }
229

    
   
231

   
230
  public CodeGen() {
232
  public CodeGen() {
231
    templateDirectory = System.getProperty("user.dir");
233
    templateDirectory = System.getProperty("user.dir");
232
    File f = new File(templateDirectory);
234
    File f = new File(templateDirectory);
233
    outputDirectory = joinPath(f.getParent(), "gen");
235
    outputDirectory = joinPath(f.getParent(), "gen");

    
   
236
    testCodeGen =  new TestCodeGen(joinPath(f.getParent(), "test"),templateDirectory);
234
  }
237
  }
235

    
   
238

   
236
  public CodeGen(String templateDirectory, String outputDirectory) {
239
  public CodeGen(String templateDirectory, String outputDirectory, String testOutputDirectory) {
237
    this.templateDirectory = templateDirectory;
240
    this.templateDirectory = templateDirectory;
238
    this.outputDirectory = outputDirectory;
241
    this.outputDirectory = outputDirectory;

    
   
242
    testCodeGen =  new TestCodeGen(testOutputDirectory,templateDirectory);
239
  }
243
  }
240

    
   
244

   
241
  /**
245
  /**
242
   * @param args
246
   * @param args
243
   * @throws Exception
247
   * @throws Exception
244
   */
248
   */
245
  public static void main(String[] args) throws Exception {
249
  public static void main(String[] args) throws Exception {
246
    CodeGen gen;
250
    CodeGen gen;
247
    if (args != null && args[0] != null) {
251
    if (args == null || args.length==0) {
248
      gen = new CodeGen(args[0], args[1]);

   
249
    } else {

   
250
      gen = new CodeGen();
252
      gen = new CodeGen();

    
   
253
    } else if (args.length==3) {

    
   
254
      gen = new CodeGen(args[0], args[1], args[2]);

    
   
255
    }else{

    
   
256
      System.out.println("args: <templateDir> <outputDir> <testOutputDir>");

    
   
257
      return;
251
    }
258
    }
252
    gen.generate();
259
    gen.generate();
253
  }
260
  }
254

    
   
261

   
255
  private void generate() throws Exception {
262
  private void generate() throws Exception {
[+20] [20] 19 lines
[+20] public static void main(String[] args) throws Exception {
275
        generateFilterStringColumnCompareColumn(tdesc);
282
        generateFilterStringColumnCompareColumn(tdesc);
276
      } else {
283
      } else {
277
        continue;
284
        continue;
278
      }
285
      }
279
    }
286
    }

    
   
287
    testCodeGen.generateTestSuites();
280
  }
288
  }
281

    
   
289

   
282
  private void generateVectorUDAFMinMax(String[] tdesc) throws Exception {
290
  private void generateVectorUDAFMinMax(String[] tdesc) throws Exception {
283
    String className = tdesc[1];
291
    String className = tdesc[1];
284
    String valueType = tdesc[2];
292
    String valueType = tdesc[2];
[+20] [20] 120 lines
[+20] [+] private void generateFilterStringColumnCompareScalar(String[] tdesc, String className) throws IOException {
405
    //The variables are all same as ColumnCompareScalar except that
413
    //The variables are all same as ColumnCompareScalar except that
406
    //this template doesn't need a return type. Pass anything as return type.
414
    //this template doesn't need a return type. Pass anything as return type.
407
    String operatorName = tdesc[1];
415
    String operatorName = tdesc[1];
408
    String operandType1 = tdesc[2];
416
    String operandType1 = tdesc[2];
409
    String operandType2 = tdesc[3];
417
    String operandType2 = tdesc[3];
410
    String className = "Filter" + this.getCamelCaseType(operandType1)
418
    String className = "Filter" + getCamelCaseType(operandType1)
411
        + "Col" + operatorName + this.getCamelCaseType(operandType2) + "Column";
419
        + "Col" + operatorName + getCamelCaseType(operandType2) + "Column";
412
    generateColumnBinaryOperatorColumn(tdesc, "doesn't matter", className);
420
    generateColumnBinaryOperatorColumn(tdesc, null, className);
413
  }
421
  }
414

    
   
422

   
415
  private void generateColumnUnaryMinus(String[] tdesc) throws IOException {
423
  private void generateColumnUnaryMinus(String[] tdesc) throws IOException {
416
    String operandType = tdesc[1];
424
    String operandType = tdesc[1];
417
    String inputColumnVectorType = this.getColumnVectorType(operandType);
425
    String inputColumnVectorType = this.getColumnVectorType(operandType);
418
    String outputColumnVectorType = inputColumnVectorType;
426
    String outputColumnVectorType = inputColumnVectorType;
419
    String returnType = operandType;
427
    String returnType = operandType;
420
    String className = this.getCamelCaseType(operandType) + "ColUnaryMinus";
428
    String className = getCamelCaseType(operandType) + "ColUnaryMinus";
421
    String outputFile = joinPath(this.outputDirectory, className + ".java");
429
    String outputFile = joinPath(this.outputDirectory, className + ".java");
422
    String templateFile = joinPath(this.templateDirectory, tdesc[0] + ".txt");
430
    String templateFile = joinPath(this.templateDirectory, tdesc[0] + ".txt");
423
    String templateString = readFile(templateFile);
431
    String templateString = readFile(templateFile);
424
    // Expand, and write result
432
    // Expand, and write result
425
    templateString = templateString.replaceAll("<ClassName>", className);
433
    templateString = templateString.replaceAll("<ClassName>", className);
[+20] [20] 6 lines
[+20] private void generateColumnUnaryMinus(String[] tdesc) throws IOException {
432

    
   
440

   
433
  private void generateColumnArithmeticColumn(String [] tdesc) throws IOException {
441
  private void generateColumnArithmeticColumn(String [] tdesc) throws IOException {
434
    String operatorName = tdesc[1];
442
    String operatorName = tdesc[1];
435
    String operandType1 = tdesc[2];
443
    String operandType1 = tdesc[2];
436
    String operandType2 = tdesc[3];
444
    String operandType2 = tdesc[3];
437
    String className = this.getCamelCaseType(operandType1)
445
    String className = getCamelCaseType(operandType1)
438
        + "Col" + operatorName + this.getCamelCaseType(operandType2) + "Column";
446
        + "Col" + operatorName + getCamelCaseType(operandType2) + "Column";
439
    String returnType = getArithmeticReturnType(operandType1, operandType2);
447
    String returnType = getArithmeticReturnType(operandType1, operandType2);
440
    generateColumnBinaryOperatorColumn(tdesc, returnType, className);
448
    generateColumnBinaryOperatorColumn(tdesc, returnType, className);
441
  }
449
  }
442

    
   
450

   
443
  private void generateFilterColumnCompareScalar(String[] tdesc) throws IOException {
451
  private void generateFilterColumnCompareScalar(String[] tdesc) throws IOException {
444
    //The variables are all same as ColumnCompareScalar except that
452
    //The variables are all same as ColumnCompareScalar except that
445
    //this template doesn't need a return type. Pass anything as return type.
453
    //this template doesn't need a return type. Pass anything as return type.
446
    String operatorName = tdesc[1];
454
    String operatorName = tdesc[1];
447
    String operandType1 = tdesc[2];
455
    String operandType1 = tdesc[2];
448
    String operandType2 = tdesc[3];
456
    String operandType2 = tdesc[3];
449
    String className = "Filter" + this.getCamelCaseType(operandType1)
457
    String className = "Filter" + getCamelCaseType(operandType1)
450
        + "Col" + operatorName + this.getCamelCaseType(operandType2) + "Scalar";
458
        + "Col" + operatorName + getCamelCaseType(operandType2) + "Scalar";
451
    generateColumnBinaryOperatorScalar(tdesc, "doesn't matter", className);
459
    generateColumnBinaryOperatorScalar(tdesc, null, className);
452
  }
460
  }
453

    
   
461

   
454
  private void generateFilterScalarCompareColumn(String[] tdesc) throws IOException {
462
  private void generateFilterScalarCompareColumn(String[] tdesc) throws IOException {
455
    //this template doesn't need a return type. Pass anything as return type.
463
    //this template doesn't need a return type. Pass anything as return type.
456
    String operatorName = tdesc[1];
464
    String operatorName = tdesc[1];
457
    String operandType1 = tdesc[2];
465
    String operandType1 = tdesc[2];
458
    String operandType2 = tdesc[3];
466
    String operandType2 = tdesc[3];
459
    String className = "Filter" + this.getCamelCaseType(operandType1)
467
    String className = "Filter" + getCamelCaseType(operandType1)
460
        + "Scalar" + operatorName + this.getCamelCaseType(operandType2) + "Column";
468
        + "Scalar" + operatorName + getCamelCaseType(operandType2) + "Column";
461
    generateScalarBinaryOperatorColumn(tdesc, "doesn't matter", className);
469
    generateScalarBinaryOperatorColumn(tdesc, null, className);
462
  }
470
  }
463

    
   
471

   
464
  private void generateColumnCompareScalar(String[] tdesc) throws IOException {
472
  private void generateColumnCompareScalar(String[] tdesc) throws IOException {
465
    String operatorName = tdesc[1];
473
    String operatorName = tdesc[1];
466
    String operandType1 = tdesc[2];
474
    String operandType1 = tdesc[2];
467
    String operandType2 = tdesc[3];
475
    String operandType2 = tdesc[3];
468
    String returnType = "long";
476
    String returnType = "long";
469
    String className = this.getCamelCaseType(operandType1)
477
    String className = getCamelCaseType(operandType1)
470
        + "Col" + operatorName + this.getCamelCaseType(operandType2) + "Scalar";
478
        + "Col" + operatorName + getCamelCaseType(operandType2) + "Scalar";
471
    generateColumnBinaryOperatorScalar(tdesc, returnType, className);
479
    generateColumnBinaryOperatorScalar(tdesc, returnType, className);
472
  }
480
  }
473

    
   
481

   
474
  private void generateColumnBinaryOperatorColumn(String[] tdesc, String returnType,
482
  private void generateColumnBinaryOperatorColumn(String[] tdesc, String returnType,
475
         String className) throws IOException {
483
         String className) throws IOException {
[+20] [20] 15 lines
[+20] private void generateColumnBinaryOperatorColumn(String[] tdesc, String returnType,
491
    templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
499
    templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
492
    templateString = templateString.replaceAll("<OperandType1>", operandType1);
500
    templateString = templateString.replaceAll("<OperandType1>", operandType1);
493
    templateString = templateString.replaceAll("<OperandType2>", operandType2);
501
    templateString = templateString.replaceAll("<OperandType2>", operandType2);
494
    templateString = templateString.replaceAll("<ReturnType>", returnType);
502
    templateString = templateString.replaceAll("<ReturnType>", returnType);
495
    writeFile(outputFile, templateString);
503
    writeFile(outputFile, templateString);

    
   
504

   

    
   
505
    if(returnType==null){

    
   
506
      testCodeGen.addColumnColumnFilterTestCases(

    
   
507
          className,

    
   
508
          inputColumnVectorType1,

    
   
509
          inputColumnVectorType2,

    
   
510
          operatorSymbol);

    
   
511
    }else{

    
   
512
      testCodeGen.addColumnColumnOperationTestCases(

    
   
513
          className,

    
   
514
          inputColumnVectorType1,

    
   
515
          inputColumnVectorType2,

    
   
516
          outputColumnVectorType);

    
   
517
    }
496
  }
518
  }
497

    
   
519

   
498
  private void generateColumnBinaryOperatorScalar(String[] tdesc, String returnType,
520
  private void generateColumnBinaryOperatorScalar(String[] tdesc, String returnType,
499
     String className) throws IOException {
521
     String className) throws IOException {
500
    String operandType1 = tdesc[2];
522
    String operandType1 = tdesc[2];
[+20] [20] 12 lines
[+20] private void generateColumnBinaryOperatorScalar(String[] tdesc, String returnType,
513
    templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
535
    templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
514
    templateString = templateString.replaceAll("<OperandType1>", operandType1);
536
    templateString = templateString.replaceAll("<OperandType1>", operandType1);
515
    templateString = templateString.replaceAll("<OperandType2>", operandType2);
537
    templateString = templateString.replaceAll("<OperandType2>", operandType2);
516
    templateString = templateString.replaceAll("<ReturnType>", returnType);
538
    templateString = templateString.replaceAll("<ReturnType>", returnType);
517
    writeFile(outputFile, templateString);
539
    writeFile(outputFile, templateString);

    
   
540

   

    
   
541
    if(returnType==null)

    
   
542
    {

    
   
543
      testCodeGen.addColumnScalarFilterTestCases(

    
   
544
          true,

    
   
545
          className,

    
   
546
          inputColumnVectorType,

    
   
547
          operandType2,

    
   
548
          operatorSymbol);

    
   
549
    }else

    
   
550
    {

    
   
551
      testCodeGen.addColumnScalarOperationTestCases(

    
   
552
          true,

    
   
553
          className,

    
   
554
          inputColumnVectorType,

    
   
555
          outputColumnVectorType,

    
   
556
          operandType2);

    
   
557
    }

    
   
558

   
518
  }
559
  }
519

    
   
560

   
520
  private void generateScalarBinaryOperatorColumn(String[] tdesc, String returnType,
561
  private void generateScalarBinaryOperatorColumn(String[] tdesc, String returnType,
521
     String className) throws IOException {
562
     String className) throws IOException {
522
     String operandType1 = tdesc[2];
563
     String operandType1 = tdesc[2];
[+20] [20] 12 lines
[+20] private void generateScalarBinaryOperatorColumn(String[] tdesc, String returnType,
535
     templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
576
     templateString = templateString.replaceAll("<OperatorSymbol>", operatorSymbol);
536
     templateString = templateString.replaceAll("<OperandType1>", operandType1);
577
     templateString = templateString.replaceAll("<OperandType1>", operandType1);
537
     templateString = templateString.replaceAll("<OperandType2>", operandType2);
578
     templateString = templateString.replaceAll("<OperandType2>", operandType2);
538
     templateString = templateString.replaceAll("<ReturnType>", returnType);
579
     templateString = templateString.replaceAll("<ReturnType>", returnType);
539
     writeFile(outputFile, templateString);
580
     writeFile(outputFile, templateString);

    
   
581

   

    
   
582
     if(returnType==null)

    
   
583
     {

    
   
584
       testCodeGen.addColumnScalarFilterTestCases(

    
   
585
           false,

    
   
586
           className,

    
   
587
           inputColumnVectorType,

    
   
588
           operandType1,

    
   
589
           operatorSymbol);

    
   
590
     }else

    
   
591
     {

    
   
592
       testCodeGen.addColumnScalarOperationTestCases(

    
   
593
           false,

    
   
594
           className,

    
   
595
           inputColumnVectorType,

    
   
596
           outputColumnVectorType,

    
   
597
           operandType1);

    
   
598
     }
540
   }
599
   }
541

    
   
600

   
542
  //Binary arithmetic operator
601
  //Binary arithmetic operator
543
  private void generateColumnArithmeticScalar(String[] tdesc) throws IOException {
602
  private void generateColumnArithmeticScalar(String[] tdesc) throws IOException {
544
    String operatorName = tdesc[1];
603
    String operatorName = tdesc[1];
545
    String operandType1 = tdesc[2];
604
    String operandType1 = tdesc[2];
546
    String operandType2 = tdesc[3];
605
    String operandType2 = tdesc[3];
547
    String className = this.getCamelCaseType(operandType1)
606
    String className = getCamelCaseType(operandType1)
548
        + "Col" + operatorName + this.getCamelCaseType(operandType2) + "Scalar";
607
        + "Col" + operatorName + getCamelCaseType(operandType2) + "Scalar";
549
    String returnType = getArithmeticReturnType(operandType1, operandType2);
608
    String returnType = getArithmeticReturnType(operandType1, operandType2);
550
    generateColumnBinaryOperatorScalar(tdesc, returnType, className);
609
    generateColumnBinaryOperatorScalar(tdesc, returnType, className);
551
  }
610
  }
552

    
   
611

   
553
  private void generateScalarArithmeticColumn(String[] tdesc) throws IOException {
612
  private void generateScalarArithmeticColumn(String[] tdesc) throws IOException {
554
    String operatorName = tdesc[1];
613
    String operatorName = tdesc[1];
555
    String operandType1 = tdesc[2];
614
    String operandType1 = tdesc[2];
556
    String operandType2 = tdesc[3];
615
    String operandType2 = tdesc[3];
557
    String className = this.getCamelCaseType(operandType1)
616
    String className = getCamelCaseType(operandType1)
558
        + "Scalar" + operatorName + this.getCamelCaseType(operandType2) + "Column";
617
        + "Scalar" + operatorName + getCamelCaseType(operandType2) + "Column";
559
    String returnType = getArithmeticReturnType(operandType1, operandType2);
618
    String returnType = getArithmeticReturnType(operandType1, operandType2);
560
    generateScalarBinaryOperatorColumn(tdesc, returnType, className);
619
    generateScalarBinaryOperatorColumn(tdesc, returnType, className);
561
  }
620
  }
562

    
   
621

   
563
  private void writeFile(String outputFile, String str) throws IOException {
622

   

    
   
623
   static void writeFile(String outputFile, String str) throws IOException {
564
    BufferedWriter w = new BufferedWriter(new FileWriter(outputFile));
624
    BufferedWriter w = new BufferedWriter(new FileWriter(outputFile));
565
    w.write(str);
625
    w.write(str);
566
    w.close();
626
    w.close();
567
  }
627
  }
568

    
   
628

   
569
  private String readFile(String templateFile) throws IOException {
629
   static String readFile(String templateFile) throws IOException {
570
    BufferedReader r = new BufferedReader(new FileReader(templateFile));
630
    BufferedReader r = new BufferedReader(new FileReader(templateFile));
571
    String line = r.readLine();
631
    String line = r.readLine();
572
    StringBuilder b = new StringBuilder();
632
    StringBuilder b = new StringBuilder();
573
    while (line != null) {
633
    while (line != null) {
574
      b.append(line);
634
      b.append(line);
575
      b.append("\n");
635
      b.append("\n");
576
      line = r.readLine();
636
      line = r.readLine();
577
    }
637
    }
578
    r.close();
638
    r.close();
579
    return b.toString();
639
    return b.toString();
580
  }
640
  }
581

    
   
641

   
582
  private String getCamelCaseType(String type) {
642
   static String getCamelCaseType(String type) {
583
    if (type.equals("long")) {
643
    if (type.equals("long")) {
584
      return "Long";
644
      return "Long";
585
    } else if (type.equals("double")) {
645
    } else if (type.equals("double")) {
586
      return "Double";
646
      return "Double";
587
    } else {
647
    } else {
[+20] [20] 10 lines
[+20] [+] private String getArithmeticReturnType(String operandType1,
598
      return "long";
658
      return "long";
599
    }
659
    }
600
  }
660
  }
601

    
   
661

   
602
  private String getColumnVectorType(String primitiveType) {
662
  private String getColumnVectorType(String primitiveType) {
603
    if (primitiveType.equals("long")) {
663
    if(primitiveType!=null && primitiveType.equals("double")) {
604
      return "LongColumnVector";

   
605
    } else if (primitiveType.equals("double")) {

   
606
      return "DoubleColumnVector";
664
      return "DoubleColumnVector";
607
    }
665
    }
608
    return "LongColumnVector";
666
    return "LongColumnVector";
609
  }
667
  }
610

    
   
668

   
[+20] [20] 19 lines
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestClass.txt
New File
 
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestCodeGen.java
New File
 
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestColumnColumnFilterVectorExpressionEvaluation.txt
New File
 
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestColumnColumnOperationVectorExpressionEvaluation.txt
New File
 
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestColumnScalarFilterVectorExpressionEvaluation.txt
New File
 
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestColumnScalarOperationVectorExpressionEvaluation.txt
New File
 
ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnColumnFilterVectorExpressionEvaluation.java
New File
 
ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnColumnOperationVectorExpressionEvaluation.java
New File
 
ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnScalarFilterVectorExpressionEvaluation.java
New File
 
ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnScalarOperationVectorExpressionEvaluation.java
New File
 
ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java
Revision 8a07567 New Change
 
  1. ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/CodeGen.java: Loading...
  2. ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestClass.txt: Loading...
  3. ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestCodeGen.java: Loading...
  4. ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestColumnColumnFilterVectorExpressionEvaluation.txt: Loading...
  5. ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestColumnColumnOperationVectorExpressionEvaluation.txt: Loading...
  6. ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestColumnScalarFilterVectorExpressionEvaluation.txt: Loading...
  7. ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/templates/TestColumnScalarOperationVectorExpressionEvaluation.txt: Loading...
  8. ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnColumnFilterVectorExpressionEvaluation.java: Loading...
  9. ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnColumnOperationVectorExpressionEvaluation.java: Loading...
  10. ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnScalarFilterVectorExpressionEvaluation.java: Loading...
  11. ql/src/test/org/apache/hadoop/hive/ql/exec/vector/expressions/gen/TestColumnScalarOperationVectorExpressionEvaluation.java: Loading...
  12. ql/src/test/org/apache/hadoop/hive/ql/exec/vector/util/VectorizedRowGroupGenUtil.java: Loading...