From 2e5270cdb0486391037d225e808987c4b0573d2f Mon Sep 17 00:00:00 2001 From: micsbot Date: Mon, 21 Nov 2022 07:51:57 -0500 Subject: [PATCH] fix(db-migration): new_dataset_models_take_2 error on postgres (#21417) Co-authored-by: Ville Brofeldt --- ..._a9422eeaae74_new_dataset_models_take_2.py | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py b/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py index 87c7e13849..2dcd1650f0 100644 --- a/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py +++ b/superset/migrations/versions/2022-04-01_14-38_a9422eeaae74_new_dataset_models_take_2.py @@ -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, ) )