class_docstr: test that computed columns are recognized as server
  oninsert/onupdate defaults.
code: def test_update_computed(self, eager):
      if eager:
          Thing = self.classes.Thing
      else:
          Thing = self.classes.ThingNoEager
  
      s = fixture_session()
  
      t1, t2 = (Thing(id=1, foo=1), Thing(id=2, foo=2))
  
      s.add_all([t1, t2])
      s.flush()
  
      t1.foo = 5
      t2.foo = 6
  
      with assert_engine(testing.db) as asserter:
          s.flush()
          eq_(t1.bar, 5 + 42)
          eq_(t2.bar, 6 + 42)
  
      if eager and testing.db.dialect.update_returning:
          asserter.assert_(
              CompiledSQL(
                  "UPDATE test SET foo=%(foo)s "
                  "WHERE test.id = %(test_id)s "
                  "RETURNING test.bar",
                  [{"foo": 5, "test_id": 1}],
                  dialect="postgresql",
              ),
              CompiledSQL(
                  "UPDATE test SET foo=%(foo)s "
                  "WHERE test.id = %(test_id)s "
                  "RETURNING test.bar",
                  [{"foo": 6, "test_id": 2}],
                  dialect="postgresql",
              ),
          )
      elif eager:
          asserter.assert_(
              CompiledSQL(
                  "UPDATE test SET foo=:foo WHERE test.id = :test_id",
                  [{"foo": 5, "test_id": 1}, {"foo": 6, "test_id": 2}],
                  enable_returning=False,
              ),
              CompiledSQL(
                  "SELECT test.bar AS test_bar FROM test "
                  "WHERE test.id = :pk_1",
                  [{"pk_1": 1}],
                  enable_returning=False,
              ),
              CompiledSQL(
                  "SELECT test.bar AS test_bar FROM test "
                  "WHERE test.id = :pk_1",
                  [{"pk_1": 2}],
                  enable_returning=False,
              ),
          )
      else:
          asserter.assert_(
              CompiledSQL(
                  "UPDATE test SET foo=:foo WHERE test.id = :test_id",
                  [{"foo": 5, "test_id": 1}, {"foo": 6, "test_id": 2}],
              ),
              CompiledSQL(
                  "SELECT test.bar AS test_bar FROM test "
                  "WHERE test.id = :pk_1",
                  [{"pk_1": 1}],
              ),
              CompiledSQL(
                  "SELECT test.bar AS test_bar FROM test "
                  "WHERE test.id = :pk_1",
                  [{"pk_1": 2}],
              ),
          )
  
imports: import sqlalchemy
  from sqlalchemy import Computed
  from sqlalchemy import event
  from sqlalchemy import Identity
  from sqlalchemy import Integer
  from sqlalchemy import String
  from sqlalchemy import testing
  from sqlalchemy.testing import eq_
  from sqlalchemy.testing import fixtures
  from sqlalchemy.testing.assertsql import assert_engine
  from sqlalchemy.testing.assertsql import CompiledSQL
  from sqlalchemy.testing.assertsql import Conditional
  from sqlalchemy.testing.assertsql import RegexSQL
  from sqlalchemy.testing.entities import BasicEntity
  from sqlalchemy.testing.fixtures import fixture_session
  from sqlalchemy.testing.schema import Column
  from sqlalchemy.testing.schema import Table
label_desc: Use image node_id 5 for calling the ComputedDefaultsOnUpdateTest obj's underlying member method code with example usage: obj.test_update_computed(eager) without return types