presto-kudu/src/main/java/io/prestosql/plugin/kudu/KuduRecordSet.java/KuduRecordSet/cursor
class KuduRecordSet:    @Override
    public RecordCursor cursor()
    {
        KuduScanner scanner = clientSession.createScanner(kuduSplit);
        if (!containsVirtualRowId) {
            return new KuduRecordCursor(scanner, getColumnTypes());
        }
        else {
            final int primaryKeyColumnCount = kuduSplit.getPrimaryKeyColumnCount();

            Map<Integer, Integer> fieldMapping = new HashMap<>();
            int index = primaryKeyColumnCount;
            for (int i = 0; i < columns.size(); i++) {
                KuduColumnHandle handle = (KuduColumnHandle) columns.get(i);
                if (!handle.isVirtualRowId()) {
                    if (handle.getOrdinalPosition() < primaryKeyColumnCount) {
                        fieldMapping.put(i, handle.getOrdinalPosition());
                    }
                    else {
                        fieldMapping.put(i, index);
                        index++;
                    }
                }
                else {
                    fieldMapping.put(i, -1);
                }
            }

            KuduTable table = getTable();
            return new KuduRecordCursorWithVirtualRowId(scanner, table, getColumnTypes(), fieldMapping);
        }
    }