SQL Server Schema (another problem) , and addColumn

Hello 


Can’t determinate if this is a SQL server Bug or a liquibase 2.0.5 bug …


We have 2 schema in our sql server (2008 R2) database , one is dbo , the other is L1 (example) , with same tables in each 

I have a changelog who try to add a column to a table if it does not exist ( not column exist  precondition) 


I run the changelog for the dbo schema fine …  the column is added to the table and the dbo.DATABASECHANGELOG record is marked as EXECUTED .


I run the changelog for the L1 schema … MARK_RAN in L1.DATABASECHANGELOG instead of EXECUTED , and the column is not added to the table 


Precision , each update is launched with a different user , each user have his respective schema (dbo, L1) as default schema in sqlserver 


Digging into debugging i found that when liquibase goes to test column existance (ColumnExistPreCondition.check()) it passes a null schema to the underlying jdbc dricver (same with Microsoft or Jtds driver) , and this one will try to check column in the dbo schema anyway instead of user’s default schema (L1 in my case) .


I’ve found a workaround by modifying the liquibase MSSQLDatabase implementation forcing the getDefaultDatabaseSchemaName()  to return super.getDefaultSchemaName() instead of null (…) .



By the way doe’s someone knows is this is the normal SQL-Server behaviour to return dbo if a null schema is passed ?


IMO : anyway if a schema name is not provided in a changelog liquibase must insure that he  return the defaut schema for the user (regardless off the underlying database) , this will give us a normalized acces method to database objects .




Will this precondition bug be fixed? I didn’t see any response for this.


We set the default database, but the preconditions do not honor it.


We had to go back and modify every changeset that had a precondition, to add schemaName="${database.defaultSchemaName}" in order for the preconditions to be properly evaluated for SQL Server. Otherwise dbo is use by default.


Thanks,

LK