I think that is a common problem and being able to control who executes
each changeset is a good option.
<changeSet id="1" author="Marek"
connection="sys"> ...
<changeSet id="2" author="Marek"
connection="backup_server"> ...
<changeSet id="3" author="Marek"> ...
<changeSet id="4" author="Marek"
connection="standard_user"> ...
That would allow cross-database changeSets and also an abstraction
on the usernames so if your usernames are different between dev and
qa for example, it can still work.
It would add some confusion on what the default schema/catalog is.
For example, if changeSet 1 above is a createTable and define a
schemaName attribute, does liquibase create the table in the sys
schema or the schema that the "default" connection uses?
Create a Jira issue and set the fix version to 4.0. I don't
think it is a change that I would want to put into the 3.x versions,
but it would be a good 4.0 feature.
Nathan
It would make the output of updateSql more complex because you
wouldn't be able to execute that directly, but we could add
comments in there when there is a change to who is running the
changeSet. You couldn't collect the sql for each user in a
separate file because the order can matter, it will still need to be a
single sql file, just with comments that need to be watched for.
Rather than setting "runAs" where you would define
the username, I'm wondering if it should be "connection"
where you set it to a key you define that maps to a separate
connection which can have it's own username and URL. For example: