Closed MeRuslan closed 1 year ago
After giving it another look, it seems like table
argument should be passed there, in which case it would resolve correctly.
table = (
child.relationship.throughs[0].table if child.relationship.throughs
else None
)
foreign_key_columns: list = self._get_column_foreign_keys(
child._subquery.columns,
foreign_keys,
table=table,
schema=node.schema,
)
That simple correction worked for me. Would appreciate it if you @toluaina could have had a look.
working on a pr
PGSync version: 2.3.3
Postgres version: NA
Elasticsearch version: NA
Redis version: NA
Python version: NA
Problem Description: When there's
base - one-to-one child - one to many with through
kind of relationship, pgsync calls_non_through
path for the one-to-one child which in turn tries to handle theone to many with through
(which is a child of a first level one-to-one child) connection but fails,It fails here, fails to find foreign keys
foreign_key_columns: list = self._get_column_foreign_keys( child._subquery.columns, foreign_keys, )
Maybe
self._get_column_foreign_keys
is not thorough enough to correctly link these entities in such a case.Thus rendering pgsync not usable for that kind of a schema.
Not sure where exactly to fix it.
Error Message (if any):