
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 Show documentation
Show all versions of ebean Show documentation
composite of common runtime dependencies for all platforms
<?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); if not exists (select name from sys.types where name = 'ebean_float_tvp') create type ebean_float_tvp as table (c1 float); if not exists (select name from sys.types where name = 'ebean_bit_tvp') create type ebean_bit_tvp as table (c1 bit); if not exists (select name from sys.types where name = 'ebean_date_tvp') create type ebean_date_tvp as table (c1 date); if not exists (select name from sys.types where name = 'ebean_time_tvp') create type ebean_time_tvp as table (c1 time); if not exists (select name from sys.types where name = 'ebean_uniqueidentifier_tvp') create type ebean_uniqueidentifier_tvp as table (c1 uniqueidentifier); if not exists (select name from sys.types where name = 'ebean_nvarchar_tvp') create type ebean_nvarchar_tvp as table (c1 nvarchar(max)); delimiter $$ -- -- 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 $$ delimiter $$ -- -- 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 $$ delimiter $$ -- -- 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 $$ delimiter $$ -- -- 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 $$ </ddl-script> <ddl-script name="create procs" platforms="mysql" 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>
© 2015 - 2025 Weber Informatics LLC | Privacy Policy