From 2104cc7ba9bce97fcf28111c03ac3a8c19c75f71 Mon Sep 17 00:00:00 2001 From: Zhibai Song Date: Mon, 6 Nov 2023 15:34:00 -0800 Subject: [PATCH] Explicit unnecessary cast should be eliminated (#1984) * Explicit unnecessary cast should be eliminated This commit can eliminate unnecessary explicit cast in where condition and tune the query to choose index in those conditions Task: BABEL-4176 Signed-off-by: Zhibai Song --- contrib/babelfishpg_tsql/src/hooks.c | 66 +++++++++++++++ .../expected/cast_eliminate-vu-cleanup.out | 5 ++ .../expected/cast_eliminate-vu-prepare.out | 6 ++ .../expected/cast_eliminate-vu-verify.out | 82 +++++++++++++++++++ test/JDBC/input/cast_eliminate-vu-cleanup.sql | 5 ++ test/JDBC/input/cast_eliminate-vu-prepare.sql | 6 ++ test/JDBC/input/cast_eliminate-vu-verify.sql | 26 ++++++ test/JDBC/parallel_query_jdbc_schedule | 1 + test/JDBC/upgrade/13_4/schedule | 3 +- test/JDBC/upgrade/13_5/schedule | 3 +- test/JDBC/upgrade/13_6/schedule | 2 +- test/JDBC/upgrade/13_7/schedule | 3 +- test/JDBC/upgrade/13_8/schedule | 3 +- test/JDBC/upgrade/13_9/schedule | 1 + test/JDBC/upgrade/14_10/schedule | 1 + test/JDBC/upgrade/14_3/schedule | 1 + test/JDBC/upgrade/14_5/schedule | 1 + test/JDBC/upgrade/14_6/schedule | 3 +- test/JDBC/upgrade/14_7/schedule | 3 +- test/JDBC/upgrade/14_8/schedule | 3 +- test/JDBC/upgrade/14_9/schedule | 3 +- test/JDBC/upgrade/15_1/schedule | 3 +- test/JDBC/upgrade/15_2/schedule | 1 + test/JDBC/upgrade/15_3/schedule | 3 +- test/JDBC/upgrade/15_4/schedule | 3 +- test/JDBC/upgrade/latest/schedule | 1 + 26 files changed, 226 insertions(+), 12 deletions(-) create mode 100644 test/JDBC/expected/cast_eliminate-vu-cleanup.out create mode 100644 test/JDBC/expected/cast_eliminate-vu-prepare.out create mode 100644 test/JDBC/expected/cast_eliminate-vu-verify.out create mode 100644 test/JDBC/input/cast_eliminate-vu-cleanup.sql create mode 100644 test/JDBC/input/cast_eliminate-vu-prepare.sql create mode 100644 test/JDBC/input/cast_eliminate-vu-verify.sql diff --git a/contrib/babelfishpg_tsql/src/hooks.c b/contrib/babelfishpg_tsql/src/hooks.c index ffd0be80c2..d105134022 100644 --- a/contrib/babelfishpg_tsql/src/hooks.c +++ b/contrib/babelfishpg_tsql/src/hooks.c @@ -17,6 +17,7 @@ #include "catalog/pg_trigger.h" #include "catalog/pg_trigger_d.h" #include "catalog/pg_type.h" +#include "catalog/pg_operator.h" #include "commands/copy.h" #include "commands/explain.h" #include "commands/tablecmds.h" @@ -38,6 +39,7 @@ #include "parser/parse_utilcmd.h" #include "parser/parse_target.h" #include "parser/parse_type.h" +#include "parser/parse_oper.h" #include "parser/parser.h" #include "parser/scanner.h" #include "parser/scansup.h" @@ -115,6 +117,7 @@ static void modify_RangeTblFunction_tupdesc(char *funcname, Node *expr, TupleDes static void sort_nulls_first(SortGroupClause * sortcl, bool reverse); static int getDefaultPosition(const List *default_positions, const ListCell *def_idx, int argPosition); static List* replace_pltsql_function_defaults(HeapTuple func_tuple, List *defaults, List *fargs); +static Node* optimize_explicit_cast(ParseState *pstate, Node *node); static ResTarget* make_restarget_from_colname(char * colName); static void transform_pivot_clause(ParseState *pstate, SelectStmt *stmt); @@ -220,6 +223,7 @@ static bbfCustomProcessUtility_hook_type prev_bbfCustomProcessUtility_hook = NUL static bbfSelectIntoUtility_hook_type prev_bbfSelectIntoUtility_hook = NULL; static bbfSelectIntoAddIdentity_hook_type prev_bbfSelectIntoAddIdentity_hook = NULL; static sortby_nulls_hook_type prev_sortby_nulls_hook = NULL; +static optimize_explicit_cast_hook_type prev_optimize_explicit_cast_hook = NULL; static table_variable_satisfies_visibility_hook_type prev_table_variable_satisfies_visibility = NULL; static table_variable_satisfies_update_hook_type prev_table_variable_satisfies_update = NULL; static table_variable_satisfies_vacuum_hook_type prev_table_variable_satisfies_vacuum = NULL; @@ -394,6 +398,9 @@ InstallExtendedHooks(void) pre_transform_pivot_clause_hook = transform_pivot_clause_hook; transform_pivot_clause_hook = transform_pivot_clause; + + prev_optimize_explicit_cast_hook = optimize_explicit_cast_hook; + optimize_explicit_cast_hook = optimize_explicit_cast; } void @@ -457,6 +464,7 @@ UninstallExtendedHooks(void) set_local_schema_for_func_hook = prev_set_local_schema_for_func_hook; bbf_get_sysadmin_oid_hook = prev_bbf_get_sysadmin_oid_hook; transform_pivot_clause_hook = pre_transform_pivot_clause_hook; + optimize_explicit_cast_hook = prev_optimize_explicit_cast_hook; } /***************************************** @@ -4317,6 +4325,9 @@ transform_pivot_clause(ParseState *pstate, SelectStmt *stmt) PLtsql_execstate *tsql_outmost_estat; int nestlevel; + if (sql_dialect != SQL_DIALECT_TSQL) + return; + new_src_sql_targetist = NULL; new_pivot_aliaslist = NULL; src_sql_groupbylist = NULL; @@ -4453,3 +4464,58 @@ transform_pivot_clause(ParseState *pstate, SelectStmt *stmt) tsql_outmost_estat->pivot_number++; MemoryContextSwitchTo(oldContext); } + +static Node* optimize_explicit_cast(ParseState *pstate, Node *node) +{ + if (sql_dialect != SQL_DIALECT_TSQL) + return node; + if (node == NULL) + return NULL; + if (IsA(node, FuncExpr)) + { + FuncExpr *f = (FuncExpr *) node; + if (f->funcformat == COERCE_EXPLICIT_CAST){ + Node* arg = (Node*)linitial(f->args); + if (nodeTag(arg) == T_Var && + ((Var*) arg)->vartype == INT4OID && + f->funcresulttype == INT8OID) + return optimize_explicit_cast(pstate, linitial(f->args)); + } + } + else if (IsA(node, BoolExpr)) + { + BoolExpr *r = (BoolExpr *) node; + ListCell *l; + foreach (l , r->args) + { + optimize_explicit_cast(pstate, (Node*)lfirst(l)); + } + } + else if (IsA(node, OpExpr)) + { + OpExpr *opExpr = (OpExpr*) node; + Form_pg_operator form; + HeapTuple tuple; + Node* node = optimize_explicit_cast(pstate, linitial(opExpr->args)); + Node* result = NULL; + if (node != linitial(opExpr->args)) + { + char *opname; + + tuple = SearchSysCache1(OPEROID, ObjectIdGetDatum(opExpr->opno)); + if (!HeapTupleIsValid(tuple)) + return node; // no need to error out in here, stop transform and quite, keep the original node + form = (Form_pg_operator) GETSTRUCT(tuple); + + opname = NameStr(form->oprname); + if (strcmp(opname, "=") == 0) + { + result =(Node*)make_op(pstate, list_make1(makeString(opname)), node, lsecond(opExpr->args), pstate->p_last_srf, -1); + } + ReleaseSysCache(tuple); + if (result) + return result; + } + } + return node; +} \ No newline at end of file diff --git a/test/JDBC/expected/cast_eliminate-vu-cleanup.out b/test/JDBC/expected/cast_eliminate-vu-cleanup.out new file mode 100644 index 0000000000..2b03d077b7 --- /dev/null +++ b/test/JDBC/expected/cast_eliminate-vu-cleanup.out @@ -0,0 +1,5 @@ +drop table cast_eliminate +GO + +drop table cast_eliminate2 +GO diff --git a/test/JDBC/expected/cast_eliminate-vu-prepare.out b/test/JDBC/expected/cast_eliminate-vu-prepare.out new file mode 100644 index 0000000000..9a843e3766 --- /dev/null +++ b/test/JDBC/expected/cast_eliminate-vu-prepare.out @@ -0,0 +1,6 @@ +CREATE TABLE cast_eliminate( [ROID] [int] NOT NULL PRIMARY KEY ); +GO + +CREATE TABLE cast_eliminate2( [ROID] [bigint] NOT NULL PRIMARY KEY ); +GO + diff --git a/test/JDBC/expected/cast_eliminate-vu-verify.out b/test/JDBC/expected/cast_eliminate-vu-verify.out new file mode 100644 index 0000000000..3f75d09b0d --- /dev/null +++ b/test/JDBC/expected/cast_eliminate-vu-verify.out @@ -0,0 +1,82 @@ +set babelfish_showplan_all on +GO + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = 1) +GO +~~START~~ +text +Query Text: SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = 1) +Index Only Scan using cast_eliminate_pkey on cast_eliminate (cost=0.15..8.17 rows=1 width=4) + Index Cond: (roid = 1) +~~END~~ + + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS int) = 1) +GO +~~START~~ +text +Query Text: SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS int) = 1) +Index Only Scan using cast_eliminate_pkey on cast_eliminate (cost=0.15..8.17 rows=1 width=4) + Index Cond: (roid = 1) +~~END~~ + + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (ROID = cast(1 as bigint)) +GO +~~START~~ +text +Query Text: SELECT 1 AS [C1] FROM cast_eliminate WHERE (ROID = cast(1 as bigint)) +Index Only Scan using cast_eliminate_pkey on cast_eliminate (cost=0.15..8.17 rows=1 width=4) + Index Cond: (roid = '1'::bigint) +~~END~~ + + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = cast( 1 as bigint )) +GO +~~START~~ +text +Query Text: SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = cast( 1 as bigint )) +Index Only Scan using cast_eliminate_pkey on cast_eliminate (cost=0.15..8.17 rows=1 width=4) + Index Cond: (roid = '1'::bigint) +~~END~~ + + +SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (CAST(ROID AS BIGINT) = 1) +GO +~~START~~ +text +Query Text: SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (CAST(ROID AS BIGINT) = 1) +Index Only Scan using cast_eliminate2_pkey on cast_eliminate2 (cost=0.15..8.17 rows=1 width=4) + Index Cond: (roid = 1) +~~END~~ + + +SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (CAST(ROID AS int) = 1) +GO +~~START~~ +text +Query Text: SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (CAST(ROID AS int) = 1) +Seq Scan on cast_eliminate2 (cost=0.00..43.90 rows=11 width=4) + Filter: ((roid)::integer = 1) +~~END~~ + + +SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (ROID = cast(1 as bigint)) +GO +~~START~~ +text +Query Text: SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (ROID = cast(1 as bigint)) +Index Only Scan using cast_eliminate2_pkey on cast_eliminate2 (cost=0.15..8.17 rows=1 width=4) + Index Cond: (roid = '1'::bigint) +~~END~~ + + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = cast( 1 as bigint )) +GO +~~START~~ +text +Query Text: SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = cast( 1 as bigint )) +Index Only Scan using cast_eliminate_pkey on cast_eliminate (cost=0.15..8.17 rows=1 width=4) + Index Cond: (roid = '1'::bigint) +~~END~~ + diff --git a/test/JDBC/input/cast_eliminate-vu-cleanup.sql b/test/JDBC/input/cast_eliminate-vu-cleanup.sql new file mode 100644 index 0000000000..2b03d077b7 --- /dev/null +++ b/test/JDBC/input/cast_eliminate-vu-cleanup.sql @@ -0,0 +1,5 @@ +drop table cast_eliminate +GO + +drop table cast_eliminate2 +GO diff --git a/test/JDBC/input/cast_eliminate-vu-prepare.sql b/test/JDBC/input/cast_eliminate-vu-prepare.sql new file mode 100644 index 0000000000..9a843e3766 --- /dev/null +++ b/test/JDBC/input/cast_eliminate-vu-prepare.sql @@ -0,0 +1,6 @@ +CREATE TABLE cast_eliminate( [ROID] [int] NOT NULL PRIMARY KEY ); +GO + +CREATE TABLE cast_eliminate2( [ROID] [bigint] NOT NULL PRIMARY KEY ); +GO + diff --git a/test/JDBC/input/cast_eliminate-vu-verify.sql b/test/JDBC/input/cast_eliminate-vu-verify.sql new file mode 100644 index 0000000000..def8283fc6 --- /dev/null +++ b/test/JDBC/input/cast_eliminate-vu-verify.sql @@ -0,0 +1,26 @@ +set babelfish_showplan_all on +GO + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = 1) +GO + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS int) = 1) +GO + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (ROID = cast(1 as bigint)) +GO + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = cast( 1 as bigint )) +GO + +SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (CAST(ROID AS BIGINT) = 1) +GO + +SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (CAST(ROID AS int) = 1) +GO + +SELECT 1 AS [C1] FROM cast_eliminate2 WHERE (ROID = cast(1 as bigint)) +GO + +SELECT 1 AS [C1] FROM cast_eliminate WHERE (CAST(ROID AS BIGINT) = cast( 1 as bigint )) +GO diff --git a/test/JDBC/parallel_query_jdbc_schedule b/test/JDBC/parallel_query_jdbc_schedule index aa8aff89cf..37c0861944 100644 --- a/test/JDBC/parallel_query_jdbc_schedule +++ b/test/JDBC/parallel_query_jdbc_schedule @@ -54,6 +54,7 @@ ignore#!#BABEL-4261 ignore#!#babel_collection ignore#!#binary-index-vu-verify ignore#!#pgr_select_into +ignore#!#cast_eliminate-vu-verify # Other or mixed issues ignore#!#545_1 diff --git a/test/JDBC/upgrade/13_4/schedule b/test/JDBC/upgrade/13_4/schedule index eec5aa1788..e062ac3fcb 100644 --- a/test/JDBC/upgrade/13_4/schedule +++ b/test/JDBC/upgrade/13_4/schedule @@ -216,4 +216,5 @@ timefromparts triggers_with_transaction BABEL-4046 getdate -AUTO_ANALYZE-before-15-5-or-14-10 \ No newline at end of file +AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/13_5/schedule b/test/JDBC/upgrade/13_5/schedule index 1398b4e434..34e94f09bb 100644 --- a/test/JDBC/upgrade/13_5/schedule +++ b/test/JDBC/upgrade/13_5/schedule @@ -269,4 +269,5 @@ timefromparts triggers_with_transaction BABEL-4046 getdate -AUTO_ANALYZE-before-15-5-or-14-10 \ No newline at end of file +AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/13_6/schedule b/test/JDBC/upgrade/13_6/schedule index 1cb07b1710..dba828acf2 100644 --- a/test/JDBC/upgrade/13_6/schedule +++ b/test/JDBC/upgrade/13_6/schedule @@ -325,4 +325,4 @@ BABEL-4046 getdate BABEL-4410 GRANT_SCHEMA -AUTO_ANALYZE-before-15-5-or-14-10 +AUTO_ANALYZE-before-15-5-or-14-10 \ No newline at end of file diff --git a/test/JDBC/upgrade/13_7/schedule b/test/JDBC/upgrade/13_7/schedule index e6ca20c6a5..e28559c77a 100644 --- a/test/JDBC/upgrade/13_7/schedule +++ b/test/JDBC/upgrade/13_7/schedule @@ -317,4 +317,5 @@ timefromparts triggers_with_transaction BABEL-4046 getdate -AUTO_ANALYZE-before-15-5-or-14-10 \ No newline at end of file +AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/13_8/schedule b/test/JDBC/upgrade/13_8/schedule index e6ca20c6a5..e28559c77a 100644 --- a/test/JDBC/upgrade/13_8/schedule +++ b/test/JDBC/upgrade/13_8/schedule @@ -317,4 +317,5 @@ timefromparts triggers_with_transaction BABEL-4046 getdate -AUTO_ANALYZE-before-15-5-or-14-10 \ No newline at end of file +AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/13_9/schedule b/test/JDBC/upgrade/13_9/schedule index d9b3f813ba..0aef9f87a0 100644 --- a/test/JDBC/upgrade/13_9/schedule +++ b/test/JDBC/upgrade/13_9/schedule @@ -322,3 +322,4 @@ getdate BABEL-4410 GRANT_SCHEMA AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/14_10/schedule b/test/JDBC/upgrade/14_10/schedule index bf6c7f856a..257464f17d 100644 --- a/test/JDBC/upgrade/14_10/schedule +++ b/test/JDBC/upgrade/14_10/schedule @@ -413,3 +413,4 @@ BABEL-4384 GRANT_SCHEMA default_params BABEL-3326 +cast_eliminate diff --git a/test/JDBC/upgrade/14_3/schedule b/test/JDBC/upgrade/14_3/schedule index 39bc516ff4..44c9f1af17 100644 --- a/test/JDBC/upgrade/14_3/schedule +++ b/test/JDBC/upgrade/14_3/schedule @@ -340,3 +340,4 @@ BABEL-2619 BABEL-4410 GRANT_SCHEMA AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/14_5/schedule b/test/JDBC/upgrade/14_5/schedule index 6a0b4cb65a..3adcf07f27 100644 --- a/test/JDBC/upgrade/14_5/schedule +++ b/test/JDBC/upgrade/14_5/schedule @@ -355,3 +355,4 @@ BABEL-2619 BABEL-4410 GRANT_SCHEMA AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/14_6/schedule b/test/JDBC/upgrade/14_6/schedule index 0e6237189e..a73a0b8193 100644 --- a/test/JDBC/upgrade/14_6/schedule +++ b/test/JDBC/upgrade/14_6/schedule @@ -388,4 +388,5 @@ BABEL_4330 BABEL-2619 BABEL-4410 GRANT_SCHEMA -AUTO_ANALYZE-before-15-5-or-14-10 \ No newline at end of file +AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/14_7/schedule b/test/JDBC/upgrade/14_7/schedule index 6ce3f1fb7d..a529a32193 100644 --- a/test/JDBC/upgrade/14_7/schedule +++ b/test/JDBC/upgrade/14_7/schedule @@ -408,4 +408,5 @@ BABEL-4046 getdate BABEL_4330 BABEL-2619 -AUTO_ANALYZE-before-15-5-or-14-10 \ No newline at end of file +AUTO_ANALYZE-before-15-5-or-14-10 +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/14_8/schedule b/test/JDBC/upgrade/14_8/schedule index b969e4b36f..bf7a3d58f6 100644 --- a/test/JDBC/upgrade/14_8/schedule +++ b/test/JDBC/upgrade/14_8/schedule @@ -407,4 +407,5 @@ getdate BABEL_4330 BABEL-2619 AUTO_ANALYZE-before-15-5-or-14-10 -default_params \ No newline at end of file +default_params +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/14_9/schedule b/test/JDBC/upgrade/14_9/schedule index daa8cd6b44..506057b037 100644 --- a/test/JDBC/upgrade/14_9/schedule +++ b/test/JDBC/upgrade/14_9/schedule @@ -409,4 +409,5 @@ BABEL_4330 BABEL-2619 BABEL-4410 AUTO_ANALYZE-before-15-5-or-14-10 -default_params \ No newline at end of file +default_params +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/15_1/schedule b/test/JDBC/upgrade/15_1/schedule index bd87f4add8..34c48c4096 100644 --- a/test/JDBC/upgrade/15_1/schedule +++ b/test/JDBC/upgrade/15_1/schedule @@ -386,4 +386,5 @@ BABEL-4046 getdate BABEL_4330 AUTO_ANALYZE-before-15-5-or-14-10 -default_params \ No newline at end of file +default_params +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/15_2/schedule b/test/JDBC/upgrade/15_2/schedule index 2499756425..747b86c415 100644 --- a/test/JDBC/upgrade/15_2/schedule +++ b/test/JDBC/upgrade/15_2/schedule @@ -418,3 +418,4 @@ BABEL-4410 GRANT_SCHEMA AUTO_ANALYZE-before-15-5-or-14-10 default_params +cast_eliminate diff --git a/test/JDBC/upgrade/15_3/schedule b/test/JDBC/upgrade/15_3/schedule index 869e23678d..0de3bb3dd4 100644 --- a/test/JDBC/upgrade/15_3/schedule +++ b/test/JDBC/upgrade/15_3/schedule @@ -438,4 +438,5 @@ BABEL-4046 getdate BABEL_4330 AUTO_ANALYZE-before-15-5-or-14-10 -default_params \ No newline at end of file +default_params +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/15_4/schedule b/test/JDBC/upgrade/15_4/schedule index b3226fa5b8..9b60c8c9cb 100644 --- a/test/JDBC/upgrade/15_4/schedule +++ b/test/JDBC/upgrade/15_4/schedule @@ -451,4 +451,5 @@ BABEL_4330 BABEL-4410 GRANT_SCHEMA AUTO_ANALYZE-before-15-5-or-14-10 -default_params \ No newline at end of file +default_params +cast_eliminate \ No newline at end of file diff --git a/test/JDBC/upgrade/latest/schedule b/test/JDBC/upgrade/latest/schedule index f236aa0816..ed96697ca5 100644 --- a/test/JDBC/upgrade/latest/schedule +++ b/test/JDBC/upgrade/latest/schedule @@ -482,3 +482,4 @@ BABEL-4279 BABEL-4484 pivot #AUTO_ANALYZE #uncomment this test when preparing for new minor version +cast_eliminate