diff --git a/contrib/babelfishpg_tsql/sql/upgrades/babelfishpg_tsql--5.0.0--5.1.0.sql b/contrib/babelfishpg_tsql/sql/upgrades/babelfishpg_tsql--5.0.0--5.1.0.sql index 8ab5840690a..40d910bbabd 100644 --- a/contrib/babelfishpg_tsql/sql/upgrades/babelfishpg_tsql--5.0.0--5.1.0.sql +++ b/contrib/babelfishpg_tsql/sql/upgrades/babelfishpg_tsql--5.0.0--5.1.0.sql @@ -5746,13 +5746,6 @@ END; $$ LANGUAGE 'pltsql'; -CREATE OR REPLACE PROCEDURE sys.sp_renamedb( - IN "@objname" sys.SYSNAME, - IN "@newname" sys.SYSNAME -) -AS 'babelfishpg_tsql', 'sp_renamedb_internal' -LANGUAGE C; - CREATE OR REPLACE PROCEDURE sys.sp_rename( IN "@objname" sys.nvarchar(776) = NULL, IN "@newname" sys.SYSNAME = NULL, diff --git a/contrib/babelfishpg_tsql/src/pl_exec-2.c b/contrib/babelfishpg_tsql/src/pl_exec-2.c index 42e098f12c6..060075564c1 100644 --- a/contrib/babelfishpg_tsql/src/pl_exec-2.c +++ b/contrib/babelfishpg_tsql/src/pl_exec-2.c @@ -4267,7 +4267,7 @@ exec_stmt_fulltextindex(PLtsql_execstate *estate, PLtsql_stmt_fulltextindex *stm /* do this step */ ProcessUtility(wrapper, - is_create ? "(CREATE FULLTEXT INDEX STATEMENT )" : "(DELETE FULLTEXT INDEX STATEMENT )", + is_create ? CREATE_FULLTEXT_INDEX : DELETE_FULLTEXT_INDEX, false, PROCESS_UTILITY_QUERY, NULL, diff --git a/contrib/babelfishpg_tsql/src/pl_handler.c b/contrib/babelfishpg_tsql/src/pl_handler.c index 82303b091aa..e953955dd97 100644 --- a/contrib/babelfishpg_tsql/src/pl_handler.c +++ b/contrib/babelfishpg_tsql/src/pl_handler.c @@ -4341,7 +4341,7 @@ bbf_ProcessUtility(PlannedStmt *pstmt, IndexStmt *stmt = (IndexStmt *) parsetree; if (sql_dialect == SQL_DIALECT_TSQL && - strcmp(queryString, "(CREATE FULLTEXT INDEX STATEMENT )") != 0) /* Skip fulltext indexes since they don't even have an original name */ + strcmp(queryString, CREATE_FULLTEXT_INDEX) != 0) /* Skip fulltext indexes since they don't even have an original name */ { char *original_name = stmt->idxname != NULL ? pstrdup(stmt->idxname) : NULL; List *partition_schemes = stmt->excludeOpNames; diff --git a/contrib/babelfishpg_tsql/src/pltsql.h b/contrib/babelfishpg_tsql/src/pltsql.h index 2df83dfc9c8..08388706afa 100644 --- a/contrib/babelfishpg_tsql/src/pltsql.h +++ b/contrib/babelfishpg_tsql/src/pltsql.h @@ -1995,6 +1995,8 @@ extern bool insert_bulk_check_constraints; #define INTERNAL_GRANT_STATEMENT "(GRANT STATEMENT )" #define INTERNAL_REVOKE_ALL_ON_ROUTINE "(REVOKE ALL ON ROUTINE )" #define INTERNAL_ALTER_ROLE "(ALTER ROLE ADD )" +#define CREATE_FULLTEXT_INDEX "(CREATE FULLTEXT INDEX STATEMENT )" +#define DELETE_FULLTEXT_INDEX "(DELETE FULLTEXT INDEX STATEMENT )" /* FIXED DB PRINCIPALS */ #define DBO "dbo" @@ -2190,7 +2192,6 @@ void PLTsqlProcessTransaction(Node *parsetree, ParamListInfo params, QueryCompletion *qc); - extern void PLTsqlStartTransaction(char *txnName); extern void PLTsqlCommitTransaction(QueryCompletion *qc, bool chain); extern void PLTsqlRollbackTransaction(char *txnName, QueryCompletion *qc, bool chain); diff --git a/contrib/babelfishpg_tsql/src/procedures.c b/contrib/babelfishpg_tsql/src/procedures.c index 463edba865c..fab72ba38e9 100644 --- a/contrib/babelfishpg_tsql/src/procedures.c +++ b/contrib/babelfishpg_tsql/src/procedures.c @@ -4086,19 +4086,19 @@ gen_sp_rename_subcmds(const char *objname, const char *newname, const char *sche if ((objtype == OBJECT_TABLE) || (objtype == OBJECT_INDEX) || (objtype == OBJECT_VIEW) || (objtype == OBJECT_SEQUENCE)) { - char *newobjname = lowerstr(newname); + char *newobjname = downcase_truncate_identifier(newname, strlen(newname), false); renamestmt->renameType = objtype; renamestmt->relation->schemaname = lowerstr(schemaname); if (objtype == OBJECT_INDEX) { - char *lower_relname = lowerstr(curr_relname); + char *lower_relname = downcase_truncate_identifier(curr_relname, strlen(curr_relname), false); newobjname = construct_unique_index_name(newobjname, lower_relname); renamestmt->subname = NULL; renamestmt->newname = newobjname; - renamestmt->relation->relname = construct_unique_index_name(lowerstr(objname), lower_relname); + renamestmt->relation->relname = construct_unique_index_name(downcase_truncate_identifier(objname, strlen(objname), false), lower_relname); } else { diff --git a/test/JDBC/expected/Test-sp_rename-vu-verify.out b/test/JDBC/expected/Test-sp_rename-vu-verify.out index e316b09da0b..0562834ecf9 100644 --- a/test/JDBC/expected/Test-sp_rename-vu-verify.out +++ b/test/JDBC/expected/Test-sp_rename-vu-verify.out @@ -819,6 +819,25 @@ GO ~~ERROR (Message: Either the parameter @objname is ambiguous or the claimed @objtype (INDEX) is wrong.)~~ +-- create index with len +CREATE INDEX sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghi ON sp_rename_vu_table1(sp_rename_vu_t1_col1_new); +GO + +EXEC sp_rename 'sp_rename_vu_table1.sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghi', + 'sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghijkl', 'INDEX'; +GO + +SELECT name FROM sys.indexes WHERE name like 'sp_rename_indexnamegreaterthan64%'; +GO +~~START~~ +varchar +sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghijkl +~~END~~ + + +DROP INDEX sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghijkl ON sp_rename_vu_table1; +GO + -- Statistics EXEC sp_rename 'sp_rename_vu_stat1', 'sp_rename_vu_stat2', 'STATISTICS'; GO diff --git a/test/JDBC/expected/babel_621.out b/test/JDBC/expected/babel_621.out index 2fb52aa15d3..8c0a57452fc 100644 --- a/test/JDBC/expected/babel_621.out +++ b/test/JDBC/expected/babel_621.out @@ -29,8 +29,6 @@ go alter table table_4 drop constraint uniq_table_4; go --- Test that `sp_rename` is NOT available. If it is available, we need more tests with index/constraints renames --- We expect this test to break when `sp_rename` will be implemented go exec sp_rename N'table_4.uniq_table_4', N'uniq_table_4_a', N'INDEX'; go diff --git a/test/JDBC/input/babel_621.sql b/test/JDBC/input/babel_621.sql index 6dc7aa1a87c..e5c83e17e44 100644 --- a/test/JDBC/input/babel_621.sql +++ b/test/JDBC/input/babel_621.sql @@ -29,8 +29,6 @@ go alter table table_4 drop constraint uniq_table_4; go --- Test that `sp_rename` is NOT available. If it is available, we need more tests with index/constraints renames --- We expect this test to break when `sp_rename` will be implemented go exec sp_rename N'table_4.uniq_table_4', N'uniq_table_4_a', N'INDEX'; go diff --git a/test/JDBC/input/storedProcedures/Test-sp_rename-vu-verify.sql b/test/JDBC/input/storedProcedures/Test-sp_rename-vu-verify.sql index 44c2fc27001..df0d59e75c4 100644 --- a/test/JDBC/input/storedProcedures/Test-sp_rename-vu-verify.sql +++ b/test/JDBC/input/storedProcedures/Test-sp_rename-vu-verify.sql @@ -400,6 +400,20 @@ GO EXEC sp_rename N'sp_rename_vu_index1', N'sp_rename_vu_index2', N'INDEX'; GO +-- create index with len +CREATE INDEX sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghi ON sp_rename_vu_table1(sp_rename_vu_t1_col1_new); +GO + +EXEC sp_rename 'sp_rename_vu_table1.sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghi', + 'sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghijkl', 'INDEX'; +GO + +SELECT name FROM sys.indexes WHERE name like 'sp_rename_indexnamegreaterthan64%'; +GO + +DROP INDEX sp_rename_indexnamegreaterthan64abcdefghijklmnopqrstuvwxyzabcdefghijkl ON sp_rename_vu_table1; +GO + -- Statistics EXEC sp_rename 'sp_rename_vu_stat1', 'sp_rename_vu_stat2', 'STATISTICS'; GO