I'd have sliced this differently for readability, and ordered the tests to be most likely change first:

        catalog::Column& t1_col = *outerIter->second;
        int index = t1_col.index();

        if (t2->schema()->columnType(index) != t1_col.type()) {
            return false;
        }

        if (t2->columnName(index).compare(t1_col.name())) {
            return false;
        }

       ...