}
private void populateVirtualColumnValues() {
if (this.vcs != null) {
ExecMapperContext mapExecCxt = this.getExecContext();
IOContext ioCxt = mapExecCxt.getIoCxt();
for (int i = 0; i < vcs.size(); i++) {
VirtualColumn vc = vcs.get(i);
if (vc.equals(VirtualColumn.FILENAME) && mapExecCxt.inputFileChanged()) {
this.vcValues[i] = new Text(mapExecCxt.getCurrentInputFile());
} else if (vc.equals(VirtualColumn.BLOCKOFFSET)) {
long current = ioCxt.getCurrentBlockStart();
LongWritable old = (LongWritable) this.vcValues[i];
if (old == null) {
old = new LongWritable(current);
this.vcValues[i] = old;
continue;
}
if (current != old.get()) {
old.set(current);
}
} else if (vc.equals(VirtualColumn.ROWOFFSET)) {
long current = ioCxt.getCurrentRow();
LongWritable old = (LongWritable) this.vcValues[i];
if (old == null) {
old = new LongWritable(current);
this.vcValues[i] = old;
continue;