## Bug description

Sentry error: https://sentry.io/organizations/posthog/issues/2588698757/events/62db81be9cbe44638988eda3dc72ad8c/?project=1899813

## Expected behavior

Don't fail

## How to reproduce

1. Create an action with a person filter (e.g. `User Signed Up (self-hosted)` on cloud)
2. Try to graph that action
3. See no results, error in backend

## Environment

- [x] PostHog Cloud
- [ ] self-hosted PostHog (ClickHouse-based), version/commit: _please provide_
- [ ] self-hosted PostHog (Postgres-based, legacy), version/commit: _please provide_

## Additional context

`ClickhouseEventQuery._determine_should_join_persons` does not resolve action type entity properties. Rather than do it there we can likely piggy-back off of `ColumnOptimizer` here.

#### *Thank you* for your bug report – we love squashing them!

posthog/queries/test/test_trends.py
)
                event_response = trends().run(
                    Filter(
                        data={
                            "date_from": "-14d",
                            "breakdown": json.dumps([cohort.pk, cohort2.pk, cohort3.pk, "all"]),
                            "breakdown_type": "cohort",
                            "events": [{"id": "watched movie", "name": "watched movie", "type": "events", "order": 0,}],
                        }
                    ),
                    self.team,
                )
            counts = {}
            break_val = {}
            for res in event_response:
                counts[res["label"]] = sum(res["data"])
                break_val[res["label"]] = res["breakdown_value"]
            self.assertEqual(counts["watched movie - cohort1"], 1)
            self.assertEqual(counts["watched movie - cohort2"], 3)
            self.assertEqual(counts["watched movie - cohort3"], 4)
            self.assertEqual(counts["watched movie - all users"], 7)
            self.assertEqual(break_val["watched movie - cohort1"], cohort.pk)
            self.assertEqual(break_val["watched movie - cohort2"], cohort2.pk)
            self.assertEqual(break_val["watched movie - cohort3"], cohort3.pk)
            self.assertEqual(break_val["watched movie - all users"], "all")
            self.assertEntityResponseEqual(
                event_response, action_response,
            )
        @test_with_materialized_columns(verify_no_jsonextract=False)
        def test_interval_filtering_breakdown(self):