把SQL 添加到自动化测试用例。
./sql/core/src/test/resources/sql-tests/inputs
目录存放原始的SQL. ./sql/core/src/test/resources/sql-tests/results
存放SQL的执行结果。在执行测试时,根据最新生成的结果和 ./sql/core/src/test/resources/sql-tests/results
进行对比。如果一样,则测试成功,否则失败。
SQLQueryTestSuite 是执行这些 SQL 的地方,对于 inputs 目录的每个文件,生成一个case。
如在inputs下增加一个 sum.sql 内容如下。
--SET spark.sql.codegen.wholeStage=true
CREATE table t_sum_decimal (c1 decimal);
insert into t_sum_decimal values(1.0),(2.0),(3.0),(null);
select sum(c1/2) from t_sum_decimal;
explain codegen select sum(c1/2) from t_sum_decimal;
drop table t_sum_decimal;
生成对应的 resuts。
SPARK_GENERATE_GOLDEN_FILES=1 build/sbt "sql/testOnly *SQLQueryTestSuite -- -z sum.sql"