Skip to content

Commit

Permalink
Attempt at a failing test case
Browse files Browse the repository at this point in the history
  • Loading branch information
danielbachhuber committed Feb 4, 2025
1 parent 1133013 commit 36ba7bd
Showing 1 changed file with 113 additions and 0 deletions.
113 changes: 113 additions & 0 deletions posthog/hogql/test/test_resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
from posthog.hogql.test.utils import pretty_dataclasses
from posthog.hogql.visitor import clone_expr
from posthog.test.base import BaseTest
from posthog.warehouse.models.credential import DataWarehouseCredential
from posthog.warehouse.models.join import DataWarehouseJoin
from posthog.warehouse.models.table import DataWarehouseTable


class TestResolver(BaseTest):
Expand Down Expand Up @@ -694,3 +697,113 @@ def test_property_access_with_tuples_zero_index_error(self):
):
node: ast.SelectQuery = self._select(query)
resolve_types(node, context, dialect="clickhouse")

def test_resolve_field_through_linear_joins(self):
credential = DataWarehouseCredential.objects.create(
team=self.team, access_key="_accesskey", access_secret="_secret"
)

DataWarehouseTable.objects.create(
team=self.team,
name="subscriptions",
columns={
"id": "String",
"customer_id": "String",
},
credential=credential,
url_pattern="",
)

DataWarehouseTable.objects.create(
team=self.team,
name="customers",
columns={
"id": "String",
"email": "String",
},
credential=credential,
url_pattern="",
)

DataWarehouseJoin.objects.create(
team=self.team,
source_table_name="subscriptions",
source_table_key="customer_id",
joining_table_name="customers",
joining_table_key="id",
field_name="customer",
)

DataWarehouseJoin.objects.create(
team=self.team,
source_table_name="customers",
source_table_key="email",
joining_table_name="events",
joining_table_key="person.properties.$email",
field_name="events",
)

self.database = create_hogql_database(self.team.pk)
self.context = HogQLContext(database=self.database, team_id=self.team.pk, enable_select_queries=True)

node = self._select("""
SELECT
customer.events.distinct_id
FROM subscriptions
""")
node = cast(ast.SelectQuery, resolve_types(node, self.context, dialect="clickhouse"))

def test_resolve_field_through_nested_joins(self):
credential = DataWarehouseCredential.objects.create(
team=self.team, access_key="_accesskey", access_secret="_secret"
)

DataWarehouseTable.objects.create(
team=self.team,
name="subscriptions",
columns={
"id": "String",
"customer_id": "String",
},
credential=credential,
url_pattern="",
)

DataWarehouseTable.objects.create(
team=self.team,
name="customers",
columns={
"id": "String",
"email": "String",
},
credential=credential,
url_pattern="",
)

DataWarehouseJoin.objects.create(
team=self.team,
source_table_name="subscriptions",
source_table_key="customer_id",
joining_table_name="customers",
joining_table_key="id",
field_name="customer",
)

DataWarehouseJoin.objects.create(
team=self.team,
source_table_name="subscriptions",
source_table_key="customer.email",
joining_table_name="events",
joining_table_key="person.properties.$email",
field_name="events",
)

self.database = create_hogql_database(self.team.pk)
self.context = HogQLContext(database=self.database, team_id=self.team.pk, enable_select_queries=True)

node = self._select("""
SELECT
events.distinct_id
FROM subscriptions
""")
node = cast(ast.SelectQuery, resolve_types(node, self.context, dialect="clickhouse"))

0 comments on commit 36ba7bd

Please sign in to comment.