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 87c7e13849abd..fb51c800e3107 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,20 +636,30 @@ 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, - ) - .join( + # Use column id from subquery + dataset_column_association_table.c.column_id == subquery.c.id, + ) + .join( NewDataset, NewDataset.id == dataset_column_association_table.c.dataset_id, ) - .join( + .join( dataset_table_association_table, # Join tables with physical datasets and_( @@ -658,15 +668,17 @@ def get_joined_tables(offset, limit): ), isouter=True, ) - .join(Database, Database.id == NewDataset.database_id) - .join( + .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( + .join( SqlMetric, - SqlMetric.uuid == NewColumn.uuid, + # Use column uuid from subquery + SqlMetric.uuid == subquery.c.uuid, isouter=True, ) )