#1695 Fix case sensitive builtin sql server proc

- Update main.StartSqlServer to use updated ebean-test-docker with collation support
This commit is contained in:
rob bygrave
2019-05-16 15:36:22 +12:00
parent 9da7c9468e
commit b7905daeb5
6 changed files with 20 additions and 14 deletions
+1 -1
View File
@@ -229,7 +229,7 @@
<dependency>
<groupId>io.ebean.test</groupId>
<artifactId>ebean-test-docker</artifactId>
<version>2.4.1</version>
<version>2.5.1</version>
<scope>test</scope>
</dependency>
@@ -49,11 +49,11 @@ CREATE OR ALTER PROCEDURE usp_ebean_drop_default_constraint @tableName nvarchar(
AS SET NOCOUNT ON
declare @tmp nvarchar(1000)
BEGIN
select @Tmp = t1.name from sys.default_constraints t1
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);
if @tmp is not null EXEC('alter table ' + @tableName +' drop constraint ' + @tmp);
END
$$
@@ -171,13 +171,13 @@ 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;
$$
+7 -1
View File
@@ -11,9 +11,15 @@ public class StartSqlServer {
config.setDbName("test_ebean");
config.setUser("test_ebean");
// by default this sqlserver docker collation is case sensitive
// using MSSQL_COLLATION=Latin1_General_100_BIN2
//
// when changing to a CI collation also use
// ebean.sqlserver.caseSensitiveCollation=false
// ... such that tests now take that into account
//config.setCollation("Latin1_General_100_CI");
SqlServerContainer container = new SqlServerContainer(config);
container.start();
}
}
@@ -9,13 +9,13 @@ 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;
$$
@@ -46,11 +46,11 @@ CREATE OR ALTER PROCEDURE usp_ebean_drop_default_constraint @tableName nvarchar(
AS SET NOCOUNT ON
declare @tmp nvarchar(1000)
BEGIN
select @Tmp = t1.name from sys.default_constraints t1
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);
if @tmp is not null EXEC('alter table ' + @tableName +' drop constraint ' + @tmp);
END
$$
+2 -2
View File
@@ -161,8 +161,8 @@ datasource.pg.maxStackTraceSize=50
ebean.sqlserver.databasePlatformName=sqlserver17
# set caseSensitiveCollation=false when using a
# case insenstive collation with sql server
ebean.sqlserver.caseSensitiveCollation=false
# case insenstive collation with sql server - See main.StartSqlServer
#ebean.sqlserver.caseSensitiveCollation=false
datasource.sqlserver.username=test_ebean
datasource.sqlserver.password=SqlS3rv#r
datasource.sqlserver.url=jdbc:sqlserver://localhost:1433;databaseName=test_ebean;sendTimeAsDateTime=false