diff --git a/contrib/babelfishpg_tsql/src/hooks.c b/contrib/babelfishpg_tsql/src/hooks.c index 9fb053e1f4..b0f955b5d5 100644 --- a/contrib/babelfishpg_tsql/src/hooks.c +++ b/contrib/babelfishpg_tsql/src/hooks.c @@ -164,6 +164,10 @@ static bool plsql_TriggerRecursiveCheck(ResultRelInfo *resultRelInfo); static bool bbf_check_rowcount_hook(int es_processed); static char *get_local_schema_for_bbf_functions(Oid proc_nsp_oid); +extern bool called_from_tsql_insert_exec(); +extern Datum pltsql_exec_tsql_cast_value(Datum value, bool *isnull, + Oid valtype, int32 valtypmod, + Oid reqtype, int32 reqtypmod); /***************************************** * Replication Hooks @@ -231,6 +235,8 @@ static set_local_schema_for_func_hook_type prev_set_local_schema_for_func_hook = static bbf_get_sysadmin_oid_hook_type prev_bbf_get_sysadmin_oid_hook = NULL; /* TODO: do we need to use variable to store hook value before transfrom pivot? No other function uses the same hook, should be redundant */ static transform_pivot_clause_hook_type pre_transform_pivot_clause_hook = NULL; +static called_from_tsql_insert_exec_hook_type pre_called_from_tsql_insert_exec_hook = NULL; +static exec_tsql_cast_value_hook_type pre_exec_tsql_cast_value_hook = NULL; /***************************************** * Install / Uninstall @@ -396,6 +402,12 @@ InstallExtendedHooks(void) prev_optimize_explicit_cast_hook = optimize_explicit_cast_hook; optimize_explicit_cast_hook = optimize_explicit_cast; + + pre_called_from_tsql_insert_exec_hook = called_from_tsql_insert_exec_hook; + called_from_tsql_insert_exec_hook = called_from_tsql_insert_exec; + + pre_exec_tsql_cast_value_hook = exec_tsql_cast_value_hook; + exec_tsql_cast_value_hook = pltsql_exec_tsql_cast_value; } void @@ -459,6 +471,7 @@ UninstallExtendedHooks(void) 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; + called_from_tsql_insert_exec_hook = pre_called_from_tsql_insert_exec_hook; } /***************************************** diff --git a/contrib/babelfishpg_tsql/src/pl_exec-2.c b/contrib/babelfishpg_tsql/src/pl_exec-2.c index ca90cfe7d4..341901bc1d 100644 --- a/contrib/babelfishpg_tsql/src/pl_exec-2.c +++ b/contrib/babelfishpg_tsql/src/pl_exec-2.c @@ -4,7 +4,9 @@ #include "funcapi.h" #include "access/table.h" +#include "access/attmap.h" #include "catalog/namespace.h" +#include "catalog/pg_attribute.h" #include "catalog/pg_language.h" #include "commands/proclang.h" #include "executor/tstoreReceiver.h" @@ -64,6 +66,7 @@ static bool is_char_identstart(char c); static bool is_char_identpart(char c); void read_param_def(InlineCodeBlockArgs *args, const char *paramdefstr); +bool called_from_tsql_insert_exec(void); void cache_inline_args(PLtsql_function *func, InlineCodeBlockArgs *args); InlineCodeBlockArgs *create_args(int numargs); InlineCodeBlockArgs *clone_inline_args(InlineCodeBlockArgs *args); @@ -101,6 +104,7 @@ extern SPIPlanPtr prepare_stmt_exec(PLtsql_execstate *estate, PLtsql_function *f extern int sp_prepare_count; BulkCopyStmt *cstmt = NULL; +bool called_from_tsql_insert_execute = false; int insert_bulk_rows_per_batch = DEFAULT_INSERT_BULK_ROWS_PER_BATCH; int insert_bulk_kilobytes_per_batch = DEFAULT_INSERT_BULK_PACKET_SIZE; @@ -112,7 +116,7 @@ static bool prev_insert_bulk_keep_nulls = false; /* return a underlying node if n is implicit casting and underlying node is a certain type of node */ static Node *get_underlying_node_from_implicit_casting(Node *n, NodeTag underlying_nodetype); - + /* * The pltsql_proc_return_code global variable is used to record the * return code (RETURN 41 + 1) of the most recently completed procedure @@ -2984,6 +2988,13 @@ exec_stmt_grantdb(PLtsql_execstate *estate, PLtsql_stmt_grantdb *stmt) return PLTSQL_RC_OK; } +bool called_from_tsql_insert_exec() +{ + if (sql_dialect != SQL_DIALECT_TSQL) + return false; + return called_from_tsql_insert_execute; +} + /* * For naked SELECT stmt in INSERT ... EXECUTE, instead of pushing the result to * the client, we accumulate the result in estate->tuple_store (similar to @@ -3007,10 +3018,11 @@ exec_stmt_insert_execute_select(PLtsql_execstate *estate, PLtsql_expr *query) /* Use eval_mcontext for tuple conversion work */ oldcontext = MemoryContextSwitchTo(get_eval_mcontext(estate)); + called_from_tsql_insert_execute = true; tupmap = convert_tuples_by_position(portal->tupDesc, estate->tuple_store_desc, gettext_noop("structure of query does not match function result type")); - + called_from_tsql_insert_execute = false; while (true) { uint64 i; @@ -3028,7 +3040,11 @@ exec_stmt_insert_execute_select(PLtsql_execstate *estate, PLtsql_expr *query) HeapTuple tuple = SPI_tuptable->vals[i]; if (tupmap) + { + called_from_tsql_insert_execute = true; tuple = execute_attr_map_tuple(tuple, tupmap); + called_from_tsql_insert_execute = false; + } tuplestore_puttuple(estate->tuple_store, tuple); if (tupmap) heap_freetuple(tuple); @@ -3118,7 +3134,6 @@ exec_stmt_insert_bulk(PLtsql_execstate *estate, PLtsql_stmt_insert_bulk *stmt) return PLTSQL_RC_OK; } - int exec_stmt_dbcc(PLtsql_execstate *estate, PLtsql_stmt_dbcc *stmt) { switch (stmt->dbcc_stmt_type) @@ -3132,7 +3147,6 @@ int exec_stmt_dbcc(PLtsql_execstate *estate, PLtsql_stmt_dbcc *stmt) return PLTSQL_RC_OK; } - void exec_stmt_dbcc_checkident(PLtsql_stmt_dbcc *stmt) { struct dbcc_checkident dbcc_stmt = stmt->dbcc_stmt_data.dbcc_checkident; diff --git a/contrib/babelfishpg_tsql/src/pl_exec.c b/contrib/babelfishpg_tsql/src/pl_exec.c index 2beef6a34a..71f1deb51e 100644 --- a/contrib/babelfishpg_tsql/src/pl_exec.c +++ b/contrib/babelfishpg_tsql/src/pl_exec.c @@ -429,6 +429,9 @@ static Datum exec_cast_value(PLtsql_execstate *estate, Datum value, bool *isnull, Oid valtype, int32 valtypmod, Oid reqtype, int32 reqtypmod); +Datum pltsql_exec_tsql_cast_value(Datum value, bool *isnull, + Oid valtype, int32 valtypmod, + Oid reqtype, int32 reqtypmod); static pltsql_CastHashEntry *get_cast_hashentry(PLtsql_execstate *estate, Oid srctype, int32 srctypmod, Oid dsttype, int32 dsttypmod); @@ -4347,7 +4350,6 @@ pltsql_estate_setup(PLtsql_execstate *estate, estate->insert_exec = (func->fn_prokind == PROKIND_PROCEDURE || strcmp(func->fn_signature, "inline_code_block") == 0) && rsi; - estate->pivot_number = 0; estate->pivot_parsetree_list = NIL; @@ -10385,3 +10387,13 @@ get_original_query_string(void) { return original_query_string; } + +Datum pltsql_exec_tsql_cast_value(Datum value, bool *isnull, + Oid valtype, int32 valtypmod, + Oid reqtype, int32 reqtypmod) +{ + return exec_cast_value(get_current_tsql_estate(), + value, isnull, + valtype, valtypmod, + reqtype, reqtypmod); +} diff --git a/contrib/babelfishpg_tsql/src/pl_handler.c b/contrib/babelfishpg_tsql/src/pl_handler.c index 9376b161aa..45f546e4b2 100644 --- a/contrib/babelfishpg_tsql/src/pl_handler.c +++ b/contrib/babelfishpg_tsql/src/pl_handler.c @@ -4783,6 +4783,7 @@ pltsql_inline_handler(PG_FUNCTION_ARGS) rsinfo.isDone = ExprSingleResult; rsinfo.setResult = NULL; rsinfo.setDesc = NULL; + ReleaseTupleDesc(reldesc); } /* And run the function */ @@ -4849,6 +4850,7 @@ pltsql_inline_handler(PG_FUNCTION_ARGS) dest->receiveSlot(slot, dest); ExecClearTuple(slot); } + ReleaseTupleDesc(rsinfo.expectedDesc); ExecDropSingleTupleTableSlot(slot); } diff --git a/test/JDBC/expected/BABEL-2999-vu-cleanup.out b/test/JDBC/expected/BABEL-2999-vu-cleanup.out new file mode 100644 index 0000000000..4b79d8c4f6 --- /dev/null +++ b/test/JDBC/expected/BABEL-2999-vu-cleanup.out @@ -0,0 +1,29 @@ +drop table if exists t2_BABEL2999; +GO + +drop table t1_BABEL2999; +GO + +drop table t3_BABEL2999; +GO + +drop table t3_BABEL2999_2; +GO + +drop procedure p1_BABEL2999; +GO + +drop procedure p2_BABEL2999 +GO + +drop procedure p3_BABEL2999 +GO + +drop table t4_BABEL2999; +GO + +drop table t5_BABEL2999; +GO + +drop table t6_BABEL2999 +GO diff --git a/test/JDBC/expected/BABEL-2999-vu-prepare.out b/test/JDBC/expected/BABEL-2999-vu-prepare.out new file mode 100644 index 0000000000..7d9b0bda16 --- /dev/null +++ b/test/JDBC/expected/BABEL-2999-vu-prepare.out @@ -0,0 +1,32 @@ +drop table if exists t1_BABEL2999; +GO + +create table t1_BABEL2999(b varchar(10)); +GO + +create table t2_BABEL2999(b int); +GO + +create table t3_BABEL2999(b varchar); +GO + +create procedure p1_BABEL2999 as select 'abc'; +GO + +create procedure p2_BABEL2999 as select 555; +GO + +create table t3_BABEL2999_2(a int, b datetime, c varchar(20)) +GO + +create procedure p3_BABEL2999 as select '123', 123, 123; +GO + +create table t4_BABEL2999( a binary(30), b varbinary(30), c varchar(30), d datetime, e smalldatetime) +GO + +create table t5_BABEL2999( a decimal, b numeric) +GO + +create table t6_BABEL2999( a int, b tinyint, c smallint) +GO diff --git a/test/JDBC/expected/BABEL-2999-vu-verify.out b/test/JDBC/expected/BABEL-2999-vu-verify.out new file mode 100644 index 0000000000..8d6ceb3d3e --- /dev/null +++ b/test/JDBC/expected/BABEL-2999-vu-verify.out @@ -0,0 +1,227 @@ +insert into t1_BABEL2999 exec('Select ''5'''); +GO +~~ROW COUNT: 1~~ + + +insert into t1_BABEL2999 exec('Select 5'); +GO +~~ROW COUNT: 1~~ + + +insert into t1_BABEL2999 exec('Select ''5'''); +GO +~~ROW COUNT: 1~~ + + +insert into t1_BABEL2999 exec('Select ''hello'''); +GO +~~ROW COUNT: 1~~ + + +insert into t1_BABEL2999 exec('SELECT ''helloworld'''); +GO +~~ROW COUNT: 1~~ + + +insert into t1_BABEL2999 exec('SELECT ''helloworldhello'''); +GO +~~ERROR (Code: 8152)~~ + +~~ERROR (Message: value too long for type character varying(10))~~ + + +select b from t1_BABEL2999 order by b; +GO +~~START~~ +varchar +5 +5 +5 +hello +helloworld +~~END~~ + + +insert into t2_BABEL2999 exec('Select ''5'''); -- varchar to int +GO +~~ROW COUNT: 1~~ + + +insert into t2_BABEL2999 exec('Select 5'); -- int to int +GO +~~ROW COUNT: 1~~ + + +insert into t2_BABEL2999 SELECT '5'; +GO +~~ROW COUNT: 1~~ + + +select b from t2_BABEL2999 order by b; +GO +~~START~~ +int +5 +5 +5 +~~END~~ + + +insert into t3_BABEL2999 exec('Select ''5'''); +GO +~~ROW COUNT: 1~~ + + +insert into t3_BABEL2999 exec('Select 5'); +GO +~~ROW COUNT: 1~~ + + +insert into t3_BABEL2999 exec('Select ''5'''); +GO +~~ROW COUNT: 1~~ + + +select b from t3_BABEL2999 order by b; +GO +~~START~~ +varchar +5 +5 +5 +~~END~~ + + +delete from t1_BABEL2999 +GO +~~ROW COUNT: 5~~ + + +insert into t1_BABEL2999 exec p1_BABEL2999; +GO +~~ROW COUNT: 1~~ + + +insert into t1_BABEL2999 exec('exec p1_BABEL2999'); +GO +~~ROW COUNT: 1~~ + + +select * from t1_BABEL2999; +GO +~~START~~ +varchar +abc +abc +~~END~~ + + +insert t3_BABEL2999_2 exec('select ''123'', 123, 123'); +GO +~~ROW COUNT: 1~~ + + +insert into t3_BABEL2999_2 exec p3_BABEL2999 +GO +~~ROW COUNT: 1~~ + + +insert into t3_BABEL2999_2 select '123', 123, 123 +GO +~~ROW COUNT: 1~~ + + +select * from t3_BABEL2999_2; +GO +~~START~~ +int#!#datetime#!#varchar +123#!#1900-05-04 00:00:00.0#!#123 +123#!#1900-05-04 00:00:00.0#!#123 +123#!#1900-05-04 00:00:00.0#!#123 +~~END~~ + + +insert into t3_BABEL2999_2 exec('select ''123'''); +GO +~~ERROR (Code: 33557097)~~ + +~~ERROR (Message: structure of query does not match function result type)~~ + + +insert into t3_BABEL2999_2 exec('select 123, 123'); +GO +~~ERROR (Code: 33557097)~~ + +~~ERROR (Message: structure of query does not match function result type)~~ + + +insert into t4_BABEL2999 exec('select 123, 123, 123, 123, 123') +GO +~~ROW COUNT: 1~~ + + +insert into t4_BABEL2999 exec('select cast(123 as binary), cast(123 as varbinary), 123, cast(123 as datetime), cast(123 as smalldatetime)') +GO +~~ROW COUNT: 1~~ + + +insert into t4_BABEL2999 select 123, 123, 123, 123, 123 +GO +~~ROW COUNT: 1~~ + + +insert into t4_BABEL2999 exec('select ''123'', ''123'', ''123'', ''123'', ''123'''); +GO +~~ERROR (Code: 33557097)~~ + +~~ERROR (Message: Implicit conversion from data type varchar to binary is not allowed. Use the CONVERT function to run this query.)~~ + + +select * from t4_BABEL2999 +GO +~~START~~ +binary#!#varbinary#!#varchar#!#datetime#!#smalldatetime +00000000000000000000000000000000000000000000000000000000007B#!#0000007B#!#123#!#1900-05-04 00:00:00.0#!#1900-05-04 00:00:00.0 +00000000000000000000000000000000000000000000000000000000007B#!#0000007B#!#123#!#1900-05-04 00:00:00.0#!#1900-05-04 00:00:00.0 +00000000000000000000000000000000000000000000000000000000007B#!#0000007B#!#123#!#1900-05-04 00:00:00.0#!#1900-05-04 00:00:00.0 +~~END~~ + + +insert into t5_BABEL2999 exec('select ''1.234'', ''33.33'''); +GO +~~ROW COUNT: 1~~ + + +select * from t5_BABEL2999 +GO +~~START~~ +numeric#!#numeric +1#!#33 +~~END~~ + + +insert into t6_BABEL2999 exec('select 1,2,3') +GO +~~ROW COUNT: 1~~ + + +insert into t6_BABEL2999 exec('select ''1'',''2'',''3''') +GO +~~ROW COUNT: 1~~ + + +insert into t6_BABEL2999 exec('select c,b,a from t6_BABEL2999') +GO +~~ROW COUNT: 2~~ + + +select * from t6_BABEL2999 +GO +~~START~~ +int#!#tinyint#!#smallint +1#!#2#!#3 +1#!#2#!#3 +3#!#2#!#1 +3#!#2#!#1 +~~END~~ + diff --git a/test/JDBC/input/BABEL-2999-vu-cleanup.sql b/test/JDBC/input/BABEL-2999-vu-cleanup.sql new file mode 100644 index 0000000000..4b79d8c4f6 --- /dev/null +++ b/test/JDBC/input/BABEL-2999-vu-cleanup.sql @@ -0,0 +1,29 @@ +drop table if exists t2_BABEL2999; +GO + +drop table t1_BABEL2999; +GO + +drop table t3_BABEL2999; +GO + +drop table t3_BABEL2999_2; +GO + +drop procedure p1_BABEL2999; +GO + +drop procedure p2_BABEL2999 +GO + +drop procedure p3_BABEL2999 +GO + +drop table t4_BABEL2999; +GO + +drop table t5_BABEL2999; +GO + +drop table t6_BABEL2999 +GO diff --git a/test/JDBC/input/BABEL-2999-vu-prepare.sql b/test/JDBC/input/BABEL-2999-vu-prepare.sql new file mode 100644 index 0000000000..7d9b0bda16 --- /dev/null +++ b/test/JDBC/input/BABEL-2999-vu-prepare.sql @@ -0,0 +1,32 @@ +drop table if exists t1_BABEL2999; +GO + +create table t1_BABEL2999(b varchar(10)); +GO + +create table t2_BABEL2999(b int); +GO + +create table t3_BABEL2999(b varchar); +GO + +create procedure p1_BABEL2999 as select 'abc'; +GO + +create procedure p2_BABEL2999 as select 555; +GO + +create table t3_BABEL2999_2(a int, b datetime, c varchar(20)) +GO + +create procedure p3_BABEL2999 as select '123', 123, 123; +GO + +create table t4_BABEL2999( a binary(30), b varbinary(30), c varchar(30), d datetime, e smalldatetime) +GO + +create table t5_BABEL2999( a decimal, b numeric) +GO + +create table t6_BABEL2999( a int, b tinyint, c smallint) +GO diff --git a/test/JDBC/input/BABEL-2999-vu-verify.sql b/test/JDBC/input/BABEL-2999-vu-verify.sql new file mode 100644 index 0000000000..3984efd33c --- /dev/null +++ b/test/JDBC/input/BABEL-2999-vu-verify.sql @@ -0,0 +1,107 @@ +insert into t1_BABEL2999 exec('Select ''5'''); +GO + +insert into t1_BABEL2999 exec('Select 5'); +GO + +insert into t1_BABEL2999 exec('Select ''5'''); +GO + +insert into t1_BABEL2999 exec('Select ''hello'''); +GO + +insert into t1_BABEL2999 exec('SELECT ''helloworld'''); +GO + +insert into t1_BABEL2999 exec('SELECT ''helloworldhello'''); +GO + +select b from t1_BABEL2999 order by b; +GO + +insert into t2_BABEL2999 exec('Select ''5'''); -- varchar to int +GO + +insert into t2_BABEL2999 exec('Select 5'); -- int to int +GO + +insert into t2_BABEL2999 SELECT '5'; +GO + +select b from t2_BABEL2999 order by b; +GO + +insert into t3_BABEL2999 exec('Select ''5'''); +GO + +insert into t3_BABEL2999 exec('Select 5'); +GO + +insert into t3_BABEL2999 exec('Select ''5'''); +GO + +select b from t3_BABEL2999 order by b; +GO + +delete from t1_BABEL2999 +GO + +insert into t1_BABEL2999 exec p1_BABEL2999; +GO + +insert into t1_BABEL2999 exec('exec p1_BABEL2999'); +GO + +select * from t1_BABEL2999; +GO + +insert t3_BABEL2999_2 exec('select ''123'', 123, 123'); +GO + +insert into t3_BABEL2999_2 exec p3_BABEL2999 +GO + +insert into t3_BABEL2999_2 select '123', 123, 123 +GO + +select * from t3_BABEL2999_2; +GO + +insert into t3_BABEL2999_2 exec('select ''123'''); +GO + +insert into t3_BABEL2999_2 exec('select 123, 123'); +GO + +insert into t4_BABEL2999 exec('select 123, 123, 123, 123, 123') +GO + +insert into t4_BABEL2999 exec('select cast(123 as binary), cast(123 as varbinary), 123, cast(123 as datetime), cast(123 as smalldatetime)') +GO + +insert into t4_BABEL2999 select 123, 123, 123, 123, 123 +GO + +insert into t4_BABEL2999 exec('select ''123'', ''123'', ''123'', ''123'', ''123'''); +GO + +select * from t4_BABEL2999 +GO + +insert into t5_BABEL2999 exec('select ''1.234'', ''33.33'''); +GO + +select * from t5_BABEL2999 +GO + +insert into t6_BABEL2999 exec('select 1,2,3') +GO + +insert into t6_BABEL2999 exec('select ''1'',''2'',''3''') +GO + +insert into t6_BABEL2999 exec('select c,b,a from t6_BABEL2999') +GO + +select * from t6_BABEL2999 +GO diff --git a/test/JDBC/upgrade/13_4/schedule b/test/JDBC/upgrade/13_4/schedule index 1689f9545a..802400bc3f 100644 --- a/test/JDBC/upgrade/13_4/schedule +++ b/test/JDBC/upgrade/13_4/schedule @@ -220,3 +220,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/13_5/schedule b/test/JDBC/upgrade/13_5/schedule index 836d2b4746..b2c9e5df3d 100644 --- a/test/JDBC/upgrade/13_5/schedule +++ b/test/JDBC/upgrade/13_5/schedule @@ -273,3 +273,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/13_6/schedule b/test/JDBC/upgrade/13_6/schedule index 6e9d73d368..1bbbdb8426 100644 --- a/test/JDBC/upgrade/13_6/schedule +++ b/test/JDBC/upgrade/13_6/schedule @@ -328,3 +328,4 @@ GRANT_SCHEMA AUTO_ANALYZE-before-15-5-or-14-10 TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/13_7/schedule b/test/JDBC/upgrade/13_7/schedule index 59c7d32a8e..e7634f4b39 100644 --- a/test/JDBC/upgrade/13_7/schedule +++ b/test/JDBC/upgrade/13_7/schedule @@ -321,3 +321,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/13_8/schedule b/test/JDBC/upgrade/13_8/schedule index 59c7d32a8e..e7634f4b39 100644 --- a/test/JDBC/upgrade/13_8/schedule +++ b/test/JDBC/upgrade/13_8/schedule @@ -321,3 +321,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/13_9/schedule b/test/JDBC/upgrade/13_9/schedule index 83572965b9..ef6a4961de 100644 --- a/test/JDBC/upgrade/13_9/schedule +++ b/test/JDBC/upgrade/13_9/schedule @@ -325,3 +325,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/14_10/schedule b/test/JDBC/upgrade/14_10/schedule index 25c32572d7..1064d1bdec 100644 --- a/test/JDBC/upgrade/14_10/schedule +++ b/test/JDBC/upgrade/14_10/schedule @@ -417,3 +417,4 @@ BABEL-3326 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/14_3/schedule b/test/JDBC/upgrade/14_3/schedule index 6921c752f4..7d0863cec1 100644 --- a/test/JDBC/upgrade/14_3/schedule +++ b/test/JDBC/upgrade/14_3/schedule @@ -343,3 +343,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/14_5/schedule b/test/JDBC/upgrade/14_5/schedule index fb6f50b15d..7b2c45e1f3 100644 --- a/test/JDBC/upgrade/14_5/schedule +++ b/test/JDBC/upgrade/14_5/schedule @@ -358,3 +358,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/14_6/schedule b/test/JDBC/upgrade/14_6/schedule index 4ae28e1831..00ec3f4823 100644 --- a/test/JDBC/upgrade/14_6/schedule +++ b/test/JDBC/upgrade/14_6/schedule @@ -393,3 +393,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/14_7/schedule b/test/JDBC/upgrade/14_7/schedule index 74a4494ecc..d71c279168 100644 --- a/test/JDBC/upgrade/14_7/schedule +++ b/test/JDBC/upgrade/14_7/schedule @@ -413,3 +413,4 @@ AUTO_ANALYZE-before-15-5-or-14-10 cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/14_8/schedule b/test/JDBC/upgrade/14_8/schedule index b3461a470e..deb6e59d05 100644 --- a/test/JDBC/upgrade/14_8/schedule +++ b/test/JDBC/upgrade/14_8/schedule @@ -412,3 +412,4 @@ default_params cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/14_9/schedule b/test/JDBC/upgrade/14_9/schedule index ec61ad67fd..fa471c060f 100644 --- a/test/JDBC/upgrade/14_9/schedule +++ b/test/JDBC/upgrade/14_9/schedule @@ -414,3 +414,4 @@ default_params cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/15_1/schedule b/test/JDBC/upgrade/15_1/schedule index 9cabb981b7..745d4ace3f 100644 --- a/test/JDBC/upgrade/15_1/schedule +++ b/test/JDBC/upgrade/15_1/schedule @@ -391,3 +391,4 @@ default_params cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 \ No newline at end of file diff --git a/test/JDBC/upgrade/15_2/schedule b/test/JDBC/upgrade/15_2/schedule index 68ad7cbede..2d053948d7 100644 --- a/test/JDBC/upgrade/15_2/schedule +++ b/test/JDBC/upgrade/15_2/schedule @@ -422,3 +422,4 @@ default_params cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/15_3/schedule b/test/JDBC/upgrade/15_3/schedule index 90da16c402..73a390d814 100644 --- a/test/JDBC/upgrade/15_3/schedule +++ b/test/JDBC/upgrade/15_3/schedule @@ -443,3 +443,4 @@ default_params cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/15_4/schedule b/test/JDBC/upgrade/15_4/schedule index 0ffb2ed104..b18a4b72b0 100644 --- a/test/JDBC/upgrade/15_4/schedule +++ b/test/JDBC/upgrade/15_4/schedule @@ -456,3 +456,4 @@ default_params cast_eliminate TestDatatypeAggSort babel_index_nulls_order-before-15-5 +BABEL-2999 diff --git a/test/JDBC/upgrade/latest/schedule b/test/JDBC/upgrade/latest/schedule index 7ea5127c17..c246df93f7 100644 --- a/test/JDBC/upgrade/latest/schedule +++ b/test/JDBC/upgrade/latest/schedule @@ -488,3 +488,4 @@ pivot cast_eliminate TestDatatypeAggSort babel_index_nulls_order +BABEL-2999