fix(db-migration): new_dataset_models_take_2 error on postgres (#21417)

Co-authored-by: Ville Brofeldt <ville.brofeldt@apple.com>
This commit is contained in:
micsbot 2022-11-21 07:51:57 -05:00 committed by GitHub
parent cc38400d71
commit 2e5270cdb0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 7 deletions

View File

@ -636,14 +636,31 @@ def postprocess_columns(session: Session) -> None:
return
def get_joined_tables(offset, limit):
# Import aliased from sqlalchemy
from sqlalchemy.orm import aliased
# Create alias of NewColumn
new_column_alias = aliased(NewColumn)
# Get subquery and give it the alias "sl_colums_2"
subquery = (
session.query(new_column_alias)
.offset(offset)
.limit(limit)
.subquery("sl_columns_2")
)
return (
sa.join(
session.query(NewColumn)
.offset(offset)
.limit(limit)
.subquery("sl_columns"),
subquery,
NewColumn,
# Use column id from subquery
subquery.c.id == NewColumn.id,
)
.join(
dataset_column_association_table,
dataset_column_association_table.c.column_id == NewColumn.id,
# Use column id from subquery
dataset_column_association_table.c.column_id == subquery.c.id,
)
.join(
NewDataset,
@ -661,12 +678,14 @@ def postprocess_columns(session: Session) -> None:
.join(Database, Database.id == NewDataset.database_id)
.join(
TableColumn,
TableColumn.uuid == NewColumn.uuid,
# Use column uuid from subquery
TableColumn.uuid == subquery.c.uuid,
isouter=True,
)
.join(
SqlMetric,
SqlMetric.uuid == NewColumn.uuid,
# Use column uuid from subquery
SqlMetric.uuid == subquery.c.uuid,
isouter=True,
)
)