private DBRecord convertV3Record(DBRecord record) {
		if (record == null) {
			return null;
		}
		DBRecord rec = SymbolDatabaseAdapter.SYMBOL_SCHEMA.createRecord(record.getKey());

		String symbolName = record.getString(V3_SYMBOL_NAME_COL);
		rec.setString(SymbolDatabaseAdapter.SYMBOL_NAME_COL, symbolName);

		long symbolAddrKey = record.getLongValue(V3_SYMBOL_ADDR_COL);
		rec.setLongValue(SymbolDatabaseAdapter.SYMBOL_ADDR_COL, symbolAddrKey);

		long namespaceId = record.getLongValue(V3_SYMBOL_PARENT_ID_COL);
		rec.setLongValue(SymbolDatabaseAdapter.SYMBOL_PARENT_ID_COL, namespaceId);

		byte symbolTypeId = record.getByteValue(V3_SYMBOL_TYPE_COL);
		rec.setByteValue(SymbolDatabaseAdapter.SYMBOL_TYPE_COL, symbolTypeId);

		rec.setByteValue(SymbolDatabaseAdapter.SYMBOL_FLAGS_COL,
			record.getByteValue(V3_SYMBOL_FLAGS_COL));

		//
		// Convert sparse columns
		//

		convertSymbolStringData(symbolTypeId, rec, record.getString(V3_SYMBOL_STRING_DATA_COL));

		Field hash = record.getFieldValue(V3_SYMBOL_HASH_COL);
		if (hash != null) {
			rec.setField(SymbolDatabaseAdapter.SYMBOL_HASH_COL, hash);
		}

		Field primaryAddr = record.getFieldValue(V3_SYMBOL_PRIMARY_COL);
		if (primaryAddr != null) {
			rec.setField(SymbolDatabaseAdapter.SYMBOL_PRIMARY_COL, primaryAddr);
		}

		Field dataTypeId = record.getFieldValue(V3_SYMBOL_DATATYPE_COL);
		if (dataTypeId != null) {
			rec.setField(SymbolDatabaseAdapter.SYMBOL_DATATYPE_COL, dataTypeId);
		}

		Field varOffset = record.getFieldValue(V3_SYMBOL_VAROFFSET_COL);
		if (varOffset != null) {
			rec.setField(SymbolDatabaseAdapter.SYMBOL_VAROFFSET_COL, varOffset);
		}

		return rec;
	}
Returns a record matching the current database schema from the version 2 record.
@param record the record matching the version 2 schema.
@return a current symbol record.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/symbol/SymbolDatabaseAdapterV3.java