@Override
	public long insert(Object... arguments) throws SQLException {

		if (arguments == null || arguments.length != 1 ||
			!(arguments[0] instanceof FunctionDescription)) {
			throw new IllegalArgumentException(
				"Insert method for KeyValueTable must take exactly one FunctionDescription argument");
		}

		FunctionDescription func = (FunctionDescription) arguments[0];
		SignatureRecord srec = func.getSignatureRecord();
		long vecid = 0;
		if (srec != null) {
			vecid = srec.getVectorId();
		}

		PreparedStatement s = insertStatement.prepareIfNeeded(
			() -> db.prepareStatement(INSERT_STMT, Statement.RETURN_GENERATED_KEYS));
		s.setString(1, func.getFunctionName());
		s.setInt(2, (int) func.getExecutableRecord().getRowId().getLong());
		s.setLong(3, vecid);
		s.setInt(4, func.getFlags());
		s.setLong(5, func.getAddress());
		s.executeUpdate();

		try (ResultSet rs = s.getGeneratedKeys()) {
			if (!rs.next()) {
				throw new SQLException("Did not get desctable sequence number after insertion");
			}
			return rs.getLong(1);
		}
	}
Assuming all the necessary ids have been filled in, store the function as a row in desctable

@param arguments must be a single {@link FunctionDescription}
@throws SQLException if there is a problem creating or executing the query
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/client/tables/DescriptionTable.java