Unexpected nullability
Create the following test case:

```
CREATE TABLE tu(x bigint);
create function fu() returns tu as $$ select null::tu $$ language sql;
```

Generates the following:
```
"""The output of our create `Tu` mutation."""
type CreateTuPayload {
  """
  The exact same `clientMutationId` that was provided in the mutation input,
  unchanged and unused. May be used by a client to track mutations.
  """
  clientMutationId: String

  """The `Tu` that was created by this mutation."""
  tu: Tu

  """
  Our root query field type. Allows us to run any query from our mutation payload.
  """
  query: Query

  """An edge for our `Tu`. May be used by Relay 1."""
  tuEdge(
    """The method to use when ordering `Tu`."""
    orderBy: [TusOrderBy!] = [NATURAL]
  ): TusEdge
}
```

Ok, all makes sense. The `tu` is nullable which is fine

But it generates:

```
  fu(input: FuInput!): FuPayload
```

Which seems wrong, because FuPayload should always exist

indeed if we query it:
```
mutation MyMutation {
  fu(input: {clientMutationId: "x"}) {
    clientMutationId
    tu {
      x
    }
  }
}
```

It always returns a `FuPayload`:
```
{
  "data": {
    "fu": {
      "clientMutationId": "x",
      "tu": null
    }
  }
}```