Modified SqLite platform to generate at least non failing migration scripts.

Note: If you want to alter a table in SqLite, the best option is to recreate the table with the new layout
This commit is contained in:
Roland Praml committed 2022-02-25 12:07:06 +01:00
1 parent 897a97d415
commit f30c3869b6
4 files changed
+119 -65

No files matched your search

@@ -5,7 +5,10 @@ import io.ebeaninternal.dbmigration.ddlgeneration.DdlBuffer;
import io.ebeaninternal.dbmigration.ddlgeneration.DdlOptions; import io.ebeaninternal.dbmigration.ddlgeneration.DdlOptions;
/** /**
* DB2 platform specific DDL. * SQLite platform specific DDL.
*
* Note: SQLite has very limited alter capabilities. Altering a column is not
* supported and may need a recreation of the whole table
*/ */
public class SQLiteDdl extends PlatformDdl { public class SQLiteDdl extends PlatformDdl {
@@ -27,7 +30,47 @@ public class SQLiteDdl extends PlatformDdl {
@Override @Override
public String alterTableAddForeignKey(DdlOptions options, WriteForeignKey request) { public String alterTableAddForeignKey(DdlOptions options, WriteForeignKey request) {
// not supported return "-- not supported: " + super.alterTableAddForeignKey(options, request);
return null;
} }
@Override
public String alterTableDropForeignKey(String tableName, String fkName) {
return "-- not supported: " + super.alterTableDropForeignKey(tableName, fkName);
}
@Override
public String alterTableAddCheckConstraint(String tableName, String checkConstraintName, String checkConstraint) {
return "-- not supported: " + super.alterTableAddCheckConstraint(tableName, checkConstraintName, checkConstraint);
}
@Override
public String alterTableDropConstraint(String tableName, String constraintName) {
return "-- not supported: " + super.alterTableDropConstraint(tableName, constraintName);
}
@Override
public String alterTableAddUniqueConstraint(String tableName, String uqName, String[] columns, String[] nullableColumns) {
return "-- not supported: " + super.alterTableAddUniqueConstraint(tableName, uqName, columns, nullableColumns);
}
@Override
public String alterTableDropUniqueConstraint(String tableName, String uniqueConstraintName) {
return "-- not supported: " + super.alterTableDropUniqueConstraint(tableName, uniqueConstraintName);
}
@Override
public String alterColumnDefaultValue(String tableName, String columnName, String defaultValue) {
return "-- not supported: " + super.alterColumnDefaultValue(tableName, columnName, defaultValue);
}
@Override
public String alterColumnType(String tableName, String columnName, String type) {
return "-- not supported: " + super.alterColumnType(tableName, columnName, type);
}
@Override
public String alterColumnNotnull(String tableName, String columnName, boolean notnull) {
return "-- not supported: " + super.alterColumnNotnull(tableName, columnName, notnull);
}
} }
@@ -30,61 +30,67 @@ create table migtest_mtm_m_phone_numbers (
alter table migtest_ckey_detail add column one_key integer; alter table migtest_ckey_detail add column one_key integer;
alter table migtest_ckey_detail add column two_key varchar(127); alter table migtest_ckey_detail add column two_key varchar(127);
-- not supported: alter table migtest_ckey_detail add constraint fk_migtest_ckey_detail_parent foreign key (one_key,two_key) references migtest_ckey_parent (one_key,two_key) on delete restrict on update restrict;
alter table migtest_ckey_parent add column assoc_id integer; alter table migtest_ckey_parent add column assoc_id integer;
alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id; -- not supported: alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id; -- not supported: alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete restrict on update restrict;
-- not supported: alter table migtest_fk_none add constraint fk_migtest_fk_none_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-- not supported: alter table migtest_fk_none_via_join add constraint fk_migtest_fk_none_via_join_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
-- not supported: alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
-- not supported: alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete restrict on update restrict;
update migtest_e_basic set status = 'A' where status is null; update migtest_e_basic set status = 'A' where status is null;
alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; -- not supported: alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
alter table migtest_e_basic alter column status set default 'A'; -- not supported: alter table migtest_e_basic alter column status set default 'A';
alter table migtest_e_basic alter column status set not null; -- not supported: alter table migtest_e_basic alter column status set not null;
alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?')); -- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I','?'));
alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; -- not supported: alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
alter table migtest_e_basic alter column status2 varchar(127); -- not supported: alter table migtest_e_basic alter column status2 varchar(127);
alter table migtest_e_basic alter column status2 drop default; -- not supported: alter table migtest_e_basic alter column status2 drop default;
alter table migtest_e_basic alter column status2 set null; -- not supported: alter table migtest_e_basic alter column status2 set null;
-- rename all collisions; -- rename all collisions;
alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_description unique (description);
insert into migtest_e_user (id) select distinct user_id from migtest_e_basic; insert into migtest_e_user (id) select distinct user_id from migtest_e_basic;
alter table migtest_e_basic alter column user_id set null; -- not supported: alter table migtest_e_basic add constraint fk_migtest_e_basic_user_id foreign key (user_id) references migtest_e_user (id) on delete restrict on update restrict;
-- not supported: alter table migtest_e_basic alter column user_id set null;
alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null; alter table migtest_e_basic add column new_string_field varchar(255) default 'foo''bar' not null;
alter table migtest_e_basic add column new_boolean_field int default 1 not null; alter table migtest_e_basic add column new_boolean_field int default 1 not null;
update migtest_e_basic set new_boolean_field = old_boolean; update migtest_e_basic set new_boolean_field = old_boolean;
alter table migtest_e_basic add column new_boolean_field2 int default 1 not null; alter table migtest_e_basic add column new_boolean_field2 int default 1 not null;
alter table migtest_e_basic add column progress integer default 0 not null; alter table migtest_e_basic add column progress integer default 0 not null;
alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2)); -- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_progress check ( progress in (0,1,2));
alter table migtest_e_basic add column new_integer integer default 42 not null; alter table migtest_e_basic add column new_integer integer default 42 not null;
alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2; -- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest2;
alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6; -- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest6;
alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_status_indextest1 unique (status,indextest1);
alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_name unique (name);
alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest4 unique (indextest4);
alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest5 unique (indextest5);
alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status; -- not supported: alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
alter table migtest_e_history alter column test_string integer; -- not supported: alter table migtest_e_history alter column test_string integer;
-- NOTE: table has @History - special migration may be necessary -- NOTE: table has @History - special migration may be necessary
update migtest_e_history2 set test_string = 'unknown' where test_string is null; update migtest_e_history2 set test_string = 'unknown' where test_string is null;
alter table migtest_e_history2 alter column test_string set default 'unknown'; -- not supported: alter table migtest_e_history2 alter column test_string set default 'unknown';
alter table migtest_e_history2 alter column test_string set not null; -- not supported: alter table migtest_e_history2 alter column test_string set not null;
alter table migtest_e_history2 add column test_string2 varchar(255); alter table migtest_e_history2 add column test_string2 varchar(255);
alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null; alter table migtest_e_history2 add column test_string3 varchar(255) default 'unknown' not null;
alter table migtest_e_history2 add column new_column varchar(20); alter table migtest_e_history2 add column new_column varchar(20);
alter table migtest_e_history4 alter column test_number integer; -- not supported: alter table migtest_e_history4 alter column test_number integer;
alter table migtest_e_history5 add column test_boolean int default 0 not null; alter table migtest_e_history5 add column test_boolean int default 0 not null;
-- NOTE: table has @History - special migration may be necessary -- NOTE: table has @History - special migration may be necessary
update migtest_e_history6 set test_number1 = 42 where test_number1 is null; update migtest_e_history6 set test_number1 = 42 where test_number1 is null;
alter table migtest_e_history6 alter column test_number1 set default 42; -- not supported: alter table migtest_e_history6 alter column test_number1 set default 42;
alter table migtest_e_history6 alter column test_number1 set not null; -- not supported: alter table migtest_e_history6 alter column test_number1 set not null;
alter table migtest_e_history6 alter column test_number2 set null; -- not supported: alter table migtest_e_history6 alter column test_number2 set null;
alter table migtest_e_softdelete add column deleted int default 0 not null; alter table migtest_e_softdelete add column deleted int default 0 not null;
alter table migtest_oto_child add column master_id integer; alter table migtest_oto_child add column master_id integer;
@@ -94,5 +100,7 @@ create index ix_migtest_e_basic_indextest6 on migtest_e_basic (indextest6);
drop index if exists ix_migtest_e_basic_indextest1; drop index if exists ix_migtest_e_basic_indextest1;
drop index if exists ix_migtest_e_basic_indextest5; drop index if exists ix_migtest_e_basic_indextest5;
create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id); create index ix_migtest_ckey_parent_assoc_id on migtest_ckey_parent (assoc_id);
-- not supported: alter table migtest_ckey_parent add constraint fk_migtest_ckey_parent_assoc_id foreign key (assoc_id) references migtest_ckey_assoc (id) on delete restrict on update restrict;
-- not supported: alter table migtest_oto_child add constraint fk_migtest_oto_child_master_id foreign key (master_id) references migtest_oto_master (id) on delete restrict on update restrict;
@@ -7,57 +7,60 @@ create table migtest_e_ref (
constraint pk_migtest_e_ref primary key (id) constraint pk_migtest_e_ref primary key (id)
); );
alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent; -- not supported: alter table migtest_ckey_detail drop constraint if exists fk_migtest_ckey_detail_parent;
alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id; -- not supported: alter table migtest_fk_cascade drop constraint if exists fk_migtest_fk_cascade_one_id;
alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id; -- not supported: alter table migtest_fk_cascade add constraint fk_migtest_fk_cascade_one_id foreign key (one_id) references migtest_fk_cascade_one (id) on delete cascade on update restrict;
alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id; -- not supported: alter table migtest_fk_none drop constraint if exists fk_migtest_fk_none_one_id;
alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id; -- not supported: alter table migtest_fk_none_via_join drop constraint if exists fk_migtest_fk_none_via_join_one_id;
alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status; -- not supported: alter table migtest_fk_set_null drop constraint if exists fk_migtest_fk_set_null_one_id;
alter table migtest_e_basic alter column status drop default; -- not supported: alter table migtest_fk_set_null add constraint fk_migtest_fk_set_null_one_id foreign key (one_id) references migtest_fk_one (id) on delete set null on update restrict;
alter table migtest_e_basic alter column status set null; -- not supported: alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status;
alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I')); -- not supported: alter table migtest_e_basic alter column status drop default;
-- not supported: alter table migtest_e_basic alter column status set null;
-- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status check ( status in ('N','A','I'));
update migtest_e_basic set status2 = 'N' where status2 is null; update migtest_e_basic set status2 = 'N' where status2 is null;
alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2; -- not supported: alter table migtest_e_basic drop constraint if exists ck_migtest_e_basic_status2;
alter table migtest_e_basic alter column status2 varchar(1); -- not supported: alter table migtest_e_basic alter column status2 varchar(1);
alter table migtest_e_basic alter column status2 set default 'N'; -- not supported: alter table migtest_e_basic alter column status2 set default 'N';
alter table migtest_e_basic alter column status2 set not null; -- not supported: alter table migtest_e_basic alter column status2 set not null;
alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I')); -- not supported: alter table migtest_e_basic add constraint ck_migtest_e_basic_status2 check ( status2 in ('N','A','I'));
alter table migtest_e_basic drop constraint uq_migtest_e_basic_description; -- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_description;
update migtest_e_basic set user_id = 23 where user_id is null; update migtest_e_basic set user_id = 23 where user_id is null;
alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id; -- not supported: alter table migtest_e_basic drop constraint if exists fk_migtest_e_basic_user_id;
alter table migtest_e_basic alter column user_id set default 23; -- not supported: alter table migtest_e_basic alter column user_id set default 23;
alter table migtest_e_basic alter column user_id set not null; -- not supported: alter table migtest_e_basic alter column user_id set not null;
alter table migtest_e_basic add column description_file blob; alter table migtest_e_basic add column description_file blob;
alter table migtest_e_basic add column old_boolean int default 0 not null; alter table migtest_e_basic add column old_boolean int default 0 not null;
alter table migtest_e_basic add column old_boolean2 int; alter table migtest_e_basic add column old_boolean2 int;
alter table migtest_e_basic add column eref_id integer; alter table migtest_e_basic add column eref_id integer;
alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1; -- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_status_indextest1;
alter table migtest_e_basic drop constraint uq_migtest_e_basic_name; -- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_name;
alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4; -- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest4;
alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5; -- not supported: alter table migtest_e_basic drop constraint uq_migtest_e_basic_indextest5;
alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest2 unique (indextest2);
alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6); -- not supported: alter table migtest_e_basic add constraint uq_migtest_e_basic_indextest6 unique (indextest6);
alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status; -- not supported: alter table migtest_e_enum drop constraint if exists ck_migtest_e_enum_test_status;
alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I')); -- not supported: alter table migtest_e_enum add constraint ck_migtest_e_enum_test_status check ( test_status in ('N','A','I'));
alter table migtest_e_history2 alter column test_string drop default; -- not supported: alter table migtest_e_history2 alter column test_string drop default;
alter table migtest_e_history2 alter column test_string set null; -- not supported: alter table migtest_e_history2 alter column test_string set null;
alter table migtest_e_history2 add column obsolete_string1 varchar(255); alter table migtest_e_history2 add column obsolete_string1 varchar(255);
alter table migtest_e_history2 add column obsolete_string2 varchar(255); alter table migtest_e_history2 add column obsolete_string2 varchar(255);
alter table migtest_e_history4 alter column test_number integer; -- not supported: alter table migtest_e_history4 alter column test_number integer;
alter table migtest_e_history6 alter column test_number1 drop default; -- not supported: alter table migtest_e_history6 alter column test_number1 drop default;
alter table migtest_e_history6 alter column test_number1 set null; -- not supported: alter table migtest_e_history6 alter column test_number1 set null;
-- NOTE: table has @History - special migration may be necessary -- NOTE: table has @History - special migration may be necessary
update migtest_e_history6 set test_number2 = 7 where test_number2 is null; update migtest_e_history6 set test_number2 = 7 where test_number2 is null;
alter table migtest_e_history6 alter column test_number2 set default 7; -- not supported: alter table migtest_e_history6 alter column test_number2 set default 7;
alter table migtest_e_history6 alter column test_number2 set not null; -- not supported: alter table migtest_e_history6 alter column test_number2 set not null;
create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1); create index ix_migtest_e_basic_indextest1 on migtest_e_basic (indextest1);
create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5); create index ix_migtest_e_basic_indextest5 on migtest_e_basic (indextest5);
drop index if exists ix_migtest_e_basic_indextest3; drop index if exists ix_migtest_e_basic_indextest3;
drop index if exists ix_migtest_e_basic_indextest6; drop index if exists ix_migtest_e_basic_indextest6;
create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id); create index ix_migtest_e_basic_eref_id on migtest_e_basic (eref_id);
-- not supported: alter table migtest_e_basic add constraint fk_migtest_e_basic_eref_id foreign key (eref_id) references migtest_e_ref (id) on delete restrict on update restrict;
@@ -1,7 +1,7 @@
181087169, 1.0__initial.sql 181087169, 1.0__initial.sql
-1974335860, 1.1.sql 136619950, 1.1.sql
628353409, 1.2__dropsFor_1.1.sql 628353409, 1.2__dropsFor_1.1.sql
1537582239, 1.3.sql 1056032295, 1.3.sql
-1045594368, 1.4__dropsFor_1.3.sql -1045594368, 1.4__dropsFor_1.3.sql
2034589659, R__order_views_sqlite.sql 2034589659, R__order_views_sqlite.sql