io.ebeaninternal.dbmigration.builtin-extra-ddl.xml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ebean-ddl-generator Show documentation
Show all versions of ebean-ddl-generator Show documentation
DDL and DB Migration generation
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <extra-ddl xmlns="http://ebean-orm.github.io/xml/ns/extraddl"> <ddl-script name="create procs" platforms="sqlserver" init="true">-- Initial script to create stored procedures etc for sqlserver platform -- create table-value-parameters if not exists (select name from sys.types where name = 'ebean_bigint_tvp') create type ebean_bigint_tvp as table (c1 bigint) GO if not exists (select name from sys.types where name = 'ebean_float_tvp') create type ebean_float_tvp as table (c1 float) GO if not exists (select name from sys.types where name = 'ebean_bit_tvp') create type ebean_bit_tvp as table (c1 bit) GO if not exists (select name from sys.types where name = 'ebean_date_tvp') create type ebean_date_tvp as table (c1 date) GO if not exists (select name from sys.types where name = 'ebean_time_tvp') create type ebean_time_tvp as table (c1 time) GO if not exists (select name from sys.types where name = 'ebean_uniqueidentifier_tvp') create type ebean_uniqueidentifier_tvp as table (c1 uniqueidentifier) GO if not exists (select name from sys.types where name = 'ebean_nvarchar_tvp') create type ebean_nvarchar_tvp as table (c1 nvarchar(max)) GO -- -- PROCEDURE: usp_ebean_drop_indices TABLE, COLUMN -- deletes all indices referring to TABLE.COLUMN -- CREATE OR ALTER PROCEDURE usp_ebean_drop_indices @tableName nvarchar(255), @columnName nvarchar(255) AS SET NOCOUNT ON declare @sql nvarchar(1000) declare @indexName nvarchar(255) BEGIN DECLARE index_cursor CURSOR FOR SELECT i.name from sys.indexes i join sys.index_columns ic on ic.object_id = i.object_id and ic.index_id = i.index_id join sys.columns c on c.object_id = ic.object_id and c.column_id = ic.column_id where i.object_id = OBJECT_ID(@tableName) AND c.name = @columnName; OPEN index_cursor FETCH NEXT FROM index_cursor INTO @indexName WHILE @@FETCH_STATUS = 0 BEGIN set @sql = 'drop index ' + @indexName + ' on [' + @tableName + ']'; EXECUTE(@sql); FETCH NEXT FROM index_cursor INTO @indexName END; CLOSE index_cursor; DEALLOCATE index_cursor; END GO -- -- PROCEDURE: usp_ebean_drop_default_constraint TABLE, COLUMN -- deletes the default constraint, which has a random name -- CREATE OR ALTER PROCEDURE usp_ebean_drop_default_constraint @tableName nvarchar(255), @columnName nvarchar(255) AS SET NOCOUNT ON declare @tmp nvarchar(1000) BEGIN select @tmp = t1.name from sys.default_constraints t1 join sys.columns t2 on t1.object_id = t2.default_object_id where t1.parent_object_id = OBJECT_ID(@tableName) and t2.name = @columnName; if @tmp is not null EXEC('alter table [' + @tableName +'] drop constraint ' + @tmp); END GO -- -- PROCEDURE: usp_ebean_drop_constraints TABLE, COLUMN -- deletes constraints and foreign keys refering to TABLE.COLUMN -- CREATE OR ALTER PROCEDURE usp_ebean_drop_constraints @tableName nvarchar(255), @columnName nvarchar(255) AS SET NOCOUNT ON declare @sql nvarchar(1000) declare @constraintName nvarchar(255) BEGIN DECLARE name_cursor CURSOR FOR SELECT cc.name from sys.check_constraints cc join sys.columns c on c.object_id = cc.parent_object_id and c.column_id = cc.parent_column_id where parent_object_id = OBJECT_ID(@tableName) AND c.name = @columnName UNION SELECT fk.name from sys.foreign_keys fk join sys.foreign_key_columns fkc on fkc.constraint_object_id = fk.object_id and fkc.parent_object_id = fk.parent_object_id join sys.columns c on c.object_id = fkc.parent_object_id and c.column_id = fkc.parent_column_id where fkc.parent_object_id = OBJECT_ID(@tableName) AND c.name = @columnName; OPEN name_cursor FETCH NEXT FROM name_cursor INTO @constraintName WHILE @@FETCH_STATUS = 0 BEGIN set @sql = 'alter table [' + @tableName + '] drop constraint ' + @constraintName; EXECUTE(@sql); FETCH NEXT FROM name_cursor INTO @constraintName END; CLOSE name_cursor; DEALLOCATE name_cursor; END GO -- -- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN -- deletes the column annd ensures that all indices and constraints are dropped first -- CREATE OR ALTER PROCEDURE usp_ebean_drop_column @tableName nvarchar(255), @columnName nvarchar(255) AS SET NOCOUNT ON declare @sql nvarchar(1000) BEGIN EXEC usp_ebean_drop_indices @tableName, @columnName; EXEC usp_ebean_drop_default_constraint @tableName, @columnName; EXEC usp_ebean_drop_constraints @tableName, @columnName; set @sql = 'alter table [' + @tableName + '] drop column [' + @columnName + ']'; EXECUTE(@sql); END GO </ddl-script> <ddl-script name="create procs" platforms="mysql mariadb" init="true">-- Inital script to create stored procedures etc for mysql platform DROP PROCEDURE IF EXISTS usp_ebean_drop_foreign_keys; delimiter $$ -- -- PROCEDURE: usp_ebean_drop_foreign_keys TABLE, COLUMN -- deletes all constraints and foreign keys referring to TABLE.COLUMN -- CREATE PROCEDURE usp_ebean_drop_foreign_keys(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255)) BEGIN DECLARE done INT DEFAULT FALSE; DECLARE c_fk_name CHAR(255); DECLARE curs CURSOR FOR SELECT CONSTRAINT_NAME from information_schema.KEY_COLUMN_USAGE WHERE TABLE_SCHEMA = DATABASE() and TABLE_NAME = p_table_name and COLUMN_NAME = p_column_name AND REFERENCED_TABLE_NAME IS NOT NULL; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN curs; read_loop: LOOP FETCH curs INTO c_fk_name; IF done THEN LEAVE read_loop; END IF; SET @sql = CONCAT('ALTER TABLE `', p_table_name, '` DROP FOREIGN KEY ', c_fk_name); PREPARE stmt FROM @sql; EXECUTE stmt; END LOOP; CLOSE curs; END $$ DROP PROCEDURE IF EXISTS usp_ebean_drop_column; delimiter $$ -- -- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN -- deletes the column and ensures that all indices and constraints are dropped first -- CREATE PROCEDURE usp_ebean_drop_column(IN p_table_name VARCHAR(255), IN p_column_name VARCHAR(255)) BEGIN CALL usp_ebean_drop_foreign_keys(p_table_name, p_column_name); SET @sql = CONCAT('ALTER TABLE `', p_table_name, '` DROP COLUMN `', p_column_name, '`'); PREPARE stmt FROM @sql; EXECUTE stmt; END $$ </ddl-script> <ddl-script name="create procs" platforms="hana" init="true">-- Inital script to create stored procedures etc for the hana platform delimiter $$ -- -- PROCEDURE: usp_ebean_drop_foreign_keys TABLE, COLUMN -- deletes all constraints and foreign keys referring to TABLE.COLUMN -- CREATE OR REPLACE PROCEDURE usp_ebean_drop_foreign_keys(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256)) AS BEGIN DECLARE foreign_key_names TABLE(CONSTRAINT_NAME NVARCHAR(256), TABLE_NAME NVARCHAR(256)); DECLARE i INT; foreign_key_names = SELECT CONSTRAINT_NAME, TABLE_NAME FROM SYS.REFERENTIAL_CONSTRAINTS WHERE SCHEMA_NAME=CURRENT_SCHEMA AND TABLE_NAME=UPPER(:table_name) AND COLUMN_NAME=UPPER(:column_name); FOR I IN 1 .. RECORD_COUNT(:foreign_key_names) DO EXEC 'ALTER TABLE "' || ESCAPE_DOUBLE_QUOTES(:foreign_key_names.TABLE_NAME[i]) || '" DROP CONSTRAINT "' || ESCAPE_DOUBLE_QUOTES(:foreign_key_names.CONSTRAINT_NAME[i]) || '"'; END FOR; END; $$ delimiter $$ -- -- PROCEDURE: usp_ebean_drop_column TABLE, COLUMN -- deletes the column and ensures that all indices and constraints are dropped first -- CREATE OR REPLACE PROCEDURE usp_ebean_drop_column(IN table_name NVARCHAR(256), IN column_name NVARCHAR(256)) AS BEGIN CALL usp_ebean_drop_foreign_keys(table_name, column_name); EXEC 'ALTER TABLE "' || UPPER(ESCAPE_DOUBLE_QUOTES(table_name)) || '" DROP ("' || UPPER(ESCAPE_DOUBLE_QUOTES(column_name)) || '")'; END; $$ </ddl-script> </extra-ddl>