code: def test_update_with_missing_or_null_values(self):
      tbl = Table(
          [{"a": "1", "b": "2"}, {"a": "3", "b": "4"}], index="a"
      )
      tbl.update([{"a": "1", "b": None}])
      assert tbl.view().to_records() == [
          {"a": "1", "b": None},
          {"a": "3", "b": "4"},
      ]
  
      data = pd.DataFrame({"a": ["1"], "b": [None]})
  
      arrow_table = pa.Table.from_pandas(data, preserve_index=False)
  
      # write arrow to stream
      stream = pa.BufferOutputStream()
      writer = pa.RecordBatchStreamWriter(
          stream, arrow_table.schema, use_legacy_format=False
      )
      writer.write_table(arrow_table)
      writer.close()
      arrow = stream.getvalue().to_pybytes()
  
      tbl.update(arrow)
      assert tbl.size() == 2
      assert tbl.view().to_records() == [
          {"a": "1", "b": ""},
          {"a": "3", "b": "4"},
      ]
  
imports: import numpy
  import pyarrow
  import pandas
  from datetime import date, datetime
  from perspective.table import Table
  from pytest import mark
label_desc: Use image node_id 1 for calling the TestUpdate obj's underlying member method code with example usage: obj.test_update_with_missing_or_null_values() without return types