Dependent dep = dependency.getDependent();
if (affectedCols != null)
{
TableDescriptor td = (TableDescriptor) dependency.getProvider();
FormatableBitSet providingCols = td.getReferencedColumnMap();
if (providingCols == null)
{
if (dep instanceof ViewDescriptor)
{
ViewDescriptor vd = (ViewDescriptor) dep;
SchemaDescriptor compSchema;
compSchema = dd.getSchemaDescriptor(vd.getCompSchemaId(), null);
CompilerContext newCC = lcc.pushCompilerContext(compSchema);
Parser pa = newCC.getParser();
// Since this is always nested inside another SQL
// statement, so topLevel flag should be false
CreateViewNode cvn = (CreateViewNode)pa.parseStatement(
vd.getViewText());
// need a current dependent for bind
newCC.setCurrentDependent(dep);
cvn.bindStatement();
ProviderInfo[] providerInfos = cvn.getProviderInfo();
lcc.popCompilerContext(newCC);
boolean interferent = false;
for (int i = 0; i < providerInfos.length; i++)
{
Provider provider = null;
provider = (Provider) providerInfos[i].
getDependableFinder().
getDependable(dd,
providerInfos[i].getObjectId());
if (provider instanceof TableDescriptor)
{
TableDescriptor tab = (TableDescriptor)provider;
FormatableBitSet colMap = tab.getReferencedColumnMap();
if (colMap == null)
continue;
// if later on an error is raised such as in
// case of interference, this dependency line
// upgrade will not happen due to rollback
tab.setReferencedColumnMap(null);
dropDependency(lcc, vd, tab);
tab.setReferencedColumnMap(colMap);
addDependency(vd, tab, lcc.getContextManager());
if (tab.getObjectID().equals(td.getObjectID()))
{
System.arraycopy(affectedCols.getByteArray(), 0,
subsetCols.getByteArray(), 0,
affectedCols.getLengthInBytes());
subsetCols.and(colMap);