RWM Console cluster: risingwave-alinma.alinma-rw.svc.cluster.local

← cluster insights objects user_account_membership_mv explain
Overview Objects Graph History
materialized view · insights.user_account_membership_mv profiled over 5s
seconds (1–30)

Job is idle — throughput ~0; structure shown.

Stateful hash join (4 state tables) — consider a temporal join for dimension lookupsAggregation state — unbounded unless keyed or temporally filtered
210 operators
Materialize · insights.user_account_membership_mv
0% idle 2 actors
Union
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · Not(IsTrue(bool_or(open_accounts_mv_next.is_restricted)))
2 actors
Filter · Not(IsTrue(bool_or(open_accounts_mv_next.is_restricted)))
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_to_portfolios_mv_next.user_id = users_dm_next.user_id
2 actors
HashJoin · Inner · user_to_portfolios_mv_next.user_id = users_dm_next.user_id Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · users_dm_next
2 actors
Filter · users_dm_next
0% idle 2 actors
StreamScan · users_dm_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
HashAgg Aggregation state — unbounded unless keyed or temporally filtered
0% idle 2 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Union
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · clients_portfolios_dm_next.portfolio_id = account_to_portfo…
2 actors
HashJoin · Inner · clients_portfolios_dm_next.portfolio_id = account_to_portfo… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · open_accounts_mv_next.account_id = account_to_portfolios_dm…
2 actors
HashJoin · Inner · open_accounts_mv_next.account_id = account_to_portfolios_dm… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · account_to_portfolios_dm_next
2 actors
Filter · account_to_portfolios_dm_next
0% idle 2 actors
StreamScan · account_to_portfolios_dm_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · open_accounts_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_to_clients_mv_next.client_id = clients_portfolios_dm_n…
2 actors
HashJoin · Inner · user_to_clients_mv_next.client_id = clients_portfolios_dm_n… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · clients_portfolios_dm_next
2 actors
Filter · clients_portfolios_dm_next
0% idle 2 actors
StreamScan · clients_portfolios_dm_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · user_to_clients_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · accounts_to_clients_dm_next.account_id = open_accounts_mv_n…
2 actors
HashJoin · Inner · accounts_to_clients_dm_next.account_id = open_accounts_mv_n… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · open_accounts_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_to_clients_mv_next.client_id = accounts_to_clients_dm_…
2 actors
HashJoin · Inner · user_to_clients_mv_next.client_id = accounts_to_clients_dm_… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · accounts_to_clients_dm_next
2 actors
Filter · accounts_to_clients_dm_next
0% idle 2 actors
StreamScan · accounts_to_clients_dm_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · user_to_clients_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · account_to_portfolios_dm_next.account_id = open_accounts_mv…
2 actors
HashJoin · Inner · account_to_portfolios_dm_next.account_id = open_accounts_mv… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · open_accounts_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
SyncLogStore · Inner · user_to_portfolios_mv_next.portfolio_id = account_to_portfo…
2 actors
HashJoin · Inner · user_to_portfolios_mv_next.portfolio_id = account_to_portfo… Stateful hash join (4 state tables) — consider a temporal join for dimension lookups
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · account_to_portfolios_dm_next
2 actors
Filter · account_to_portfolios_dm_next
0% idle 2 actors
StreamScan · account_to_portfolios_dm_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
LocalityProvider
0% idle 2 actors
Merge
2 actors
Exchange
0% idle 0 actors
StreamScan · user_to_portfolios_mv_next
0% idle 2 actors
BatchPlan
2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project · (bool_or(open_accounts_mv_next.is_restricted) = true:Boolea…
2 actors
Filter · (bool_or(open_accounts_mv_next.is_restricted) = true:Boolea…
0% idle 2 actors
Merge
2 actors
Merge
2 actors
Exchange
0% idle 0 actors
Project
2 actors
Merge
2 actors
Heat = the operator's output-buffer backpressure over the sampling window. Click a node to fold its subtree.
Materialize · insights.user_account_membership_mv Materialize insights.user_account_m… idle · 2 actors Union Union idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · Not(IsTrue(bool_or(open_accounts_mv_next.is_restricted))) Project Not(IsTrue(bool_or(open… — · 2 actors Filter · Not(IsTrue(bool_or(open_accounts_mv_next.is_restricted))) Filter Not(IsTrue(bool_or(open… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_to_portfolios_mv_next.user_id = users_dm_next.user_id SyncLogStore Inner · user_to_portfol… — · 2 actors HashJoin · Inner · user_to_portfolios_mv_next.user_id = users_dm_next.user_id HashJoin Inner · user_to_portfol… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · users_dm_next Project users_dm_next — · 2 actors Filter · users_dm_next Filter users_dm_next idle · 2 actors StreamScan · users_dm_next StreamScan users_dm_next idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors HashAgg HashAgg idle · 2 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Union Union idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · clients_portfolios_dm_next.portfolio_id = account_to_portfo… SyncLogStore Inner · clients_portfol… — · 2 actors HashJoin · Inner · clients_portfolios_dm_next.portfolio_id = account_to_portfo… HashJoin Inner · clients_portfol… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · open_accounts_mv_next.account_id = account_to_portfolios_dm… SyncLogStore Inner · open_accounts_m… — · 2 actors HashJoin · Inner · open_accounts_mv_next.account_id = account_to_portfolios_dm… HashJoin Inner · open_accounts_m… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · account_to_portfolios_dm_next Project account_to_portfolios_d… — · 2 actors Filter · account_to_portfolios_dm_next Filter account_to_portfolios_d… idle · 2 actors StreamScan · account_to_portfolios_dm_next StreamScan account_to_portfolios_d… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · open_accounts_mv_next StreamScan open_accounts_mv_next idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_to_clients_mv_next.client_id = clients_portfolios_dm_n… SyncLogStore Inner · user_to_clients… — · 2 actors HashJoin · Inner · user_to_clients_mv_next.client_id = clients_portfolios_dm_n… HashJoin Inner · user_to_clients… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · clients_portfolios_dm_next Project clients_portfolios_dm_n… — · 2 actors Filter · clients_portfolios_dm_next Filter clients_portfolios_dm_n… idle · 2 actors StreamScan · clients_portfolios_dm_next StreamScan clients_portfolios_dm_n… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · user_to_clients_mv_next StreamScan user_to_clients_mv_next idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · accounts_to_clients_dm_next.account_id = open_accounts_mv_n… SyncLogStore Inner · accounts_to_cli… — · 2 actors HashJoin · Inner · accounts_to_clients_dm_next.account_id = open_accounts_mv_n… HashJoin Inner · accounts_to_cli… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · open_accounts_mv_next StreamScan open_accounts_mv_next idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_to_clients_mv_next.client_id = accounts_to_clients_dm_… SyncLogStore Inner · user_to_clients… — · 2 actors HashJoin · Inner · user_to_clients_mv_next.client_id = accounts_to_clients_dm_… HashJoin Inner · user_to_clients… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · accounts_to_clients_dm_next Project accounts_to_clients_dm_… — · 2 actors Filter · accounts_to_clients_dm_next Filter accounts_to_clients_dm_… idle · 2 actors StreamScan · accounts_to_clients_dm_next StreamScan accounts_to_clients_dm_… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · user_to_clients_mv_next StreamScan user_to_clients_mv_next idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · account_to_portfolios_dm_next.account_id = open_accounts_mv… SyncLogStore Inner · account_to_port… — · 2 actors HashJoin · Inner · account_to_portfolios_dm_next.account_id = open_accounts_mv… HashJoin Inner · account_to_port… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · open_accounts_mv_next StreamScan open_accounts_mv_next idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore SyncLogStore — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors SyncLogStore · Inner · user_to_portfolios_mv_next.portfolio_id = account_to_portfo… SyncLogStore Inner · user_to_portfol… — · 2 actors HashJoin · Inner · user_to_portfolios_mv_next.portfolio_id = account_to_portfo… HashJoin Inner · user_to_portfol… idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · account_to_portfolios_dm_next Project account_to_portfolios_d… — · 2 actors Filter · account_to_portfolios_dm_next Filter account_to_portfolios_d… idle · 2 actors StreamScan · account_to_portfolios_dm_next StreamScan account_to_portfolios_d… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors LocalityProvider LocalityProvider idle · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors StreamScan · user_to_portfolios_mv_next StreamScan user_to_portfolios_mv_n… idle · 2 actors BatchPlan BatchPlan — · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project · (bool_or(open_accounts_mv_next.is_restricted) = true:Boolea… Project (bool_or(open_accounts_… — · 2 actors Filter · (bool_or(open_accounts_mv_next.is_restricted) = true:Boolea… Filter (bool_or(open_accounts_… idle · 2 actors Merge Merge — · 2 actors Merge Merge — · 2 actors Exchange Exchange idle · 0 actors Project Project — · 2 actors Merge Merge — · 2 actors
Streaming operator plan from EXPLAIN ANALYZE. Node heat = backpressure. Drag to pan, scroll to zoom.
Fragments (DESCRIBE FRAGMENTS) — click to expand
Fragment 37430 (Actor 743197,743198)
StreamMaterialize { columns: [user_id, account_id, type, $src(hidden)], stream_key: [user_id, account_id, $src], pk_columns: [user_id, account_id, $src], pk_conflict: NoCheck }
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'all':Varchar, $src ]
├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, $src ]
└── StreamUnion { all: true }
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'all':Varchar, $src ]
    ├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, $src ]
    ├── MergeExecutor
    │   ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'all':Varchar, 0:Int32 ]
    │   └── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
    ├── MergeExecutor
    │   ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'restricted':Varchar, 1:Int32 ]
    │   └── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
    └── MergeExecutor
        ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'un_restricted':Varchar, 2:Int32 ]
        └── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]

Fragment 37431 (Actor 743265,743266)
StreamProject { exprs: [user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'all':Varchar, 0:Int32] }
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'all':Varchar, 0:Int32 ]
├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ]
    └── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]

Fragment 37432 (Actor 743269,743270)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ]
├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ]
    └── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]

Fragment 37433 (Actor 743264,743263)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ]
├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ]
    └── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]

Fragment 37434 (Actor 743261,743262)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ]
├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
└── StreamHashJoin { type: Inner, predicate: user_to_portfolios_mv_next.user_id = users_dm_next.user_id }
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ]
    ├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
    ├── MergeExecutor
    │   ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted) ]
    │   └── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
    └── MergeExecutor { output: [ users_dm_next.user_id ], stream key: [ users_dm_next.user_id ] }

Fragment 37435 (Actor 743271,743272)
StreamProject { exprs: [user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted)] }
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted) ]
├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
└── StreamHashAgg { group_key: [user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id], aggs: [bool_or(open_accounts_mv_next.is_restricted), count] }
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), count ]
    ├── stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ]
    └── StreamLocalityProvider { locality_columns: [user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id] }
        ├── output:
        │   ┌── user_to_portfolios_mv_next.user_id
        │   ├── open_accounts_mv_next.account_id
        │   ├── open_accounts_mv_next.is_restricted
        │   ├── account_to_portfolios_dm_next.account_id
        │   ├── user_to_portfolios_mv_next.portfolio_id
        │   ├── user_to_portfolios_mv_next.user_id
        │   ├── null:Varchar
        │   ├── account_to_portfolios_dm_next.effective_start_date
        │   ├── null:Date
        │   └── $src
        ├── stream key:
        │   ┌── user_to_portfolios_mv_next.user_id
        │   ├── open_accounts_mv_next.account_id
        │   ├── account_to_portfolios_dm_next.account_id
        │   ├── user_to_portfolios_mv_next.portfolio_id
        │   ├── user_to_portfolios_mv_next.user_id
        │   ├── account_to_portfolios_dm_next.effective_start_date
        │   ├── null:Varchar
        │   ├── null:Date
        │   └── $src
        └── MergeExecutor
            ├── output:
            │   ┌── user_to_portfolios_mv_next.user_id
            │   ├── open_accounts_mv_next.account_id
            │   ├── open_accounts_mv_next.is_restricted
            │   ├── account_to_portfolios_dm_next.account_id
            │   ├── user_to_portfolios_mv_next.portfolio_id
            │   ├── user_to_portfolios_mv_next.user_id
            │   ├── null:Varchar
            │   ├── account_to_portfolios_dm_next.effective_start_date
            │   ├── null:Date
            │   └── $src
            └── stream key:
                ┌── account_to_portfolios_dm_next.account_id
                ├── user_to_portfolios_mv_next.portfolio_id
                ├── user_to_portfolios_mv_next.user_id
                ├── account_to_portfolios_dm_next.effective_start_date
                ├── null:Varchar
                ├── null:Date
                └── $src

Fragment 37436 (Actor 743273,743274)
StreamUnion { all: true }
├── output:
│   ┌── user_to_portfolios_mv_next.user_id
│   ├── open_accounts_mv_next.account_id
│   ├── open_accounts_mv_next.is_restricted
│   ├── account_to_portfolios_dm_next.account_id
│   ├── user_to_portfolios_mv_next.portfolio_id
│   ├── user_to_portfolios_mv_next.user_id
│   ├── null:Varchar
│   ├── account_to_portfolios_dm_next.effective_start_date
│   ├── null:Date
│   └── $src
├── stream key:
│   ┌── account_to_portfolios_dm_next.account_id
│   ├── user_to_portfolios_mv_next.portfolio_id
│   ├── user_to_portfolios_mv_next.user_id
│   ├── account_to_portfolios_dm_next.effective_start_date
│   ├── null:Varchar
│   ├── null:Date
│   └── $src
├── MergeExecutor
│   ├── output:
│   │   ┌── user_to_portfolios_mv_next.user_id
│   │   ├── open_accounts_mv_next.account_id
│   │   ├── open_accounts_mv_next.is_restricted
│   │   ├── account_to_portfolios_dm_next.account_id
│   │   ├── user_to_portfolios_mv_next.portfolio_id
│   │   ├── user_to_portfolios_mv_next.user_id
│   │   ├── null:Varchar
│   │   ├── account_to_portfolios_dm_next.effective_start_date
│   │   ├── null:Date
│   │   └── 0:Int32
│   └── stream key:
│       ┌── account_to_portfolios_dm_next.account_id
│       ├── user_to_portfolios_mv_next.portfolio_id
│       ├── user_to_portfolios_mv_next.user_id
│       └── account_to_portfolios_dm_next.effective_start_date
├── MergeExecutor
│   ├── output:
│   │   ┌── user_to_clients_mv_next.user_id
│   │   ├── open_accounts_mv_next.account_id
│   │   ├── open_accounts_mv_next.is_restricted
│   │   ├── accounts_to_clients_dm_next.account_id
│   │   ├── user_to_clients_mv_next.client_id
│   │   ├── user_to_clients_mv_next.user_id
│   │   ├── null:Varchar
│   │   ├── accounts_to_clients_dm_next.effective_start_date
│   │   ├── null:Date
│   │   └── 1:Int32
│   └── stream key:
│       ┌── accounts_to_clients_dm_next.account_id
│       ├── user_to_clients_mv_next.client_id
│       ├── user_to_clients_mv_next.user_id
│       └── accounts_to_clients_dm_next.effective_start_date
└── MergeExecutor
    ├── output:
    │   ┌── user_to_clients_mv_next.user_id
    │   ├── open_accounts_mv_next.account_id
    │   ├── open_accounts_mv_next.is_restricted
    │   ├── clients_portfolios_dm_next.portfolio_id
    │   ├── user_to_clients_mv_next.client_id
    │   ├── user_to_clients_mv_next.user_id
    │   ├── open_accounts_mv_next.account_id
    │   ├── clients_portfolios_dm_next.effective_start_date
    │   ├── account_to_portfolios_dm_next.effective_start_date
    │   └── 2:Int32
    └── stream key:
        ┌── clients_portfolios_dm_next.portfolio_id
        ├── user_to_clients_mv_next.client_id
        ├── user_to_clients_mv_next.user_id
        ├── clients_portfolios_dm_next.effective_start_date
        ├── open_accounts_mv_next.account_id
        └── account_to_portfolios_dm_next.effective_start_date

Fragment 37437 (Actor 743282,743281)
StreamProject { exprs: [user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, null:Varchar, account_to_portfolios_dm_next.effective_start_date, null:Date, 0:Int32] }
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, null:Varchar, account_to_portfolios_dm_next.effective_start_date, null:Date, 0:Int32 ]
├── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37438 (Actor 743275,743276)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37439 (Actor 743277,743278)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37440 (Actor 743279,743280)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: account_to_portfolios_dm_next.account_id = open_accounts_mv_next.account_id }
    ├── output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    ├── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]
    ├── MergeExecutor
    │   ├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    │   └── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]
    └── MergeExecutor { output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted ], stream key: [ open_accounts_mv_next.account_id ] }

Fragment 37441 (Actor 743284,743283)
StreamLocalityProvider { locality_columns: [account_to_portfolios_dm_next.account_id] }
├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37442 (Actor 743288,743287)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37443 (Actor 743286,743285)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37444 (Actor 743289,743290)
StreamSyncLogStore
├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: user_to_portfolios_mv_next.portfolio_id = account_to_portfolios_dm_next.portfolio_id }
    ├── output: [ user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, user_to_portfolios_mv_next.portfolio_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    ├── stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
    ├── MergeExecutor { output: [ user_to_portfolios_mv_next.user_id, user_to_portfolios_mv_next.portfolio_id ], stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id ] }
    └── MergeExecutor { output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ], stream key: [ account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ] }

Fragment 37445 (Actor 743292,743291)
StreamLocalityProvider { locality_columns: [user_to_portfolios_mv_next.portfolio_id] } { output: [ user_to_portfolios_mv_next.user_id, user_to_portfolios_mv_next.portfolio_id ], stream key: [ user_to_portfolios_mv_next.portfolio_id, user_to_portfolios_mv_next.user_id ] }
└── MergeExecutor { output: [ user_to_portfolios_mv_next.user_id, user_to_portfolios_mv_next.portfolio_id ], stream key: [ user_to_portfolios_mv_next.user_id, user_to_portfolios_mv_next.portfolio_id ] }

Fragment 37446 (Actor 743118,743117)
StreamTableScan { table: user_to_portfolios_mv_next, columns: [user_id, portfolio_id] } { output: [ user_to_portfolios_mv_next.user_id, user_to_portfolios_mv_next.portfolio_id ], stream key: [ user_to_portfolios_mv_next.user_id, user_to_portfolios_mv_next.portfolio_id ] }
├── Upstream { output: [ user_id, portfolio_id ], stream key: [] }
└── BatchPlanNode { output: [ user_id, portfolio_id ], stream key: [] }

Fragment 37447 (Actor 743293,743294)
StreamLocalityProvider { locality_columns: [account_to_portfolios_dm_next.portfolio_id] }
├── output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor { output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ], stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ] }

Fragment 37448 (Actor 743119,743120)
StreamProject { exprs: [account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date] }
├── output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
└── StreamFilter { predicate: IsNull(account_to_portfolios_dm_next.disabled_at) }
    ├── output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.disabled_at ]
    ├── stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── StreamTableScan { table: account_to_portfolios_dm_next, columns: [account_id, portfolio_id, effective_start_date, disabled_at] }
        ├── output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.disabled_at ]
        ├── stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
        ├── Upstream { output: [ account_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ account_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }

Fragment 37449 (Actor 743361,743362)
StreamTableScan { table: open_accounts_mv_next, columns: [account_id, is_restricted] } { output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted ], stream key: [ open_accounts_mv_next.account_id ] }
├── Upstream { output: [ account_id, is_restricted ], stream key: [] }
└── BatchPlanNode { output: [ account_id, is_restricted ], stream key: [] }

Fragment 37450 (Actor 743301,743302)
StreamProject { exprs: [user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, null:Varchar, accounts_to_clients_dm_next.effective_start_date, null:Date, 1:Int32] }
├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, null:Varchar, accounts_to_clients_dm_next.effective_start_date, null:Date, 1:Int32 ]
├── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    └── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]

Fragment 37451 (Actor 743306,743305)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    └── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]

Fragment 37452 (Actor 743299,743300)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    └── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]

Fragment 37453 (Actor 743303,743304)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: accounts_to_clients_dm_next.account_id = open_accounts_mv_next.account_id }
    ├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    ├── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]
    ├── MergeExecutor
    │   ├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    │   └── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]
    └── MergeExecutor { output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted ], stream key: [ open_accounts_mv_next.account_id ] }

Fragment 37454 (Actor 743308,743307)
StreamLocalityProvider { locality_columns: [accounts_to_clients_dm_next.account_id] }
├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    └── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ]

Fragment 37455 (Actor 743309,743310)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    └── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ]

Fragment 37456 (Actor 743314,743313)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    └── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ]

Fragment 37457 (Actor 743311,743312)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: user_to_clients_mv_next.client_id = accounts_to_clients_dm_next.client_id }
    ├── output: [ user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, user_to_clients_mv_next.client_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    ├── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ]
    ├── MergeExecutor { output: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ], stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id ] }
    └── MergeExecutor { output: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ], stream key: [ accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ] }

Fragment 37458 (Actor 743315,743316)
StreamLocalityProvider { locality_columns: [user_to_clients_mv_next.client_id] } { output: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ], stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id ] }
└── MergeExecutor { output: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ], stream key: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ] }

Fragment 37459 (Actor 743363,743364)
StreamTableScan { table: user_to_clients_mv_next, columns: [user_id, client_id] } { output: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ], stream key: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ] }
├── Upstream { output: [ user_id, client_id ], stream key: [] }
└── BatchPlanNode { output: [ user_id, client_id ], stream key: [] }

Fragment 37460 (Actor 743318,743317)
StreamLocalityProvider { locality_columns: [accounts_to_clients_dm_next.client_id] }
├── output: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.effective_start_date ]
└── MergeExecutor { output: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ], stream key: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ] }

Fragment 37461 (Actor 743366,743365)
StreamProject { exprs: [accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date] }
├── output: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
├── stream key: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
└── StreamFilter { predicate: IsNull(accounts_to_clients_dm_next.disabled_at) }
    ├── output: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date, accounts_to_clients_dm_next.disabled_at ]
    ├── stream key: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
    └── StreamTableScan { table: accounts_to_clients_dm_next, columns: [account_id, client_id, effective_start_date, disabled_at] }
        ├── output: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date, accounts_to_clients_dm_next.disabled_at ]
        ├── stream key: [ accounts_to_clients_dm_next.account_id, accounts_to_clients_dm_next.client_id, accounts_to_clients_dm_next.effective_start_date ]
        ├── Upstream { output: [ account_id, client_id, effective_start_date, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ account_id, client_id, effective_start_date, disabled_at ], stream key: [] }

Fragment 37462 (Actor 743368,743367)
StreamTableScan { table: open_accounts_mv_next, columns: [account_id, is_restricted] } { output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted ], stream key: [ open_accounts_mv_next.account_id ] }
├── Upstream { output: [ account_id, is_restricted ], stream key: [] }
└── BatchPlanNode { output: [ account_id, is_restricted ], stream key: [] }

Fragment 37463 (Actor 743321,743322)
StreamProject { exprs: [user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.effective_start_date, 2:Int32] }
├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.effective_start_date, 2:Int32 ]
├── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37464 (Actor 743326,743325)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37465 (Actor 743323,743324)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37466 (Actor 743327,743328)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: clients_portfolios_dm_next.portfolio_id = account_to_portfolios_dm_next.portfolio_id }
    ├── output: [ user_to_clients_mv_next.user_id, open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    ├── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
    ├── MergeExecutor
    │   ├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
    │   └── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date ]
    └── MergeExecutor
        ├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
        └── stream key: [ account_to_portfolios_dm_next.portfolio_id, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37467 (Actor 743330,743329)
StreamLocalityProvider { locality_columns: [clients_portfolios_dm_next.portfolio_id] }
├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
├── stream key: [ clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
    └── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]

Fragment 37468 (Actor 743331,743332)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
├── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
    └── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]

Fragment 37469 (Actor 743336,743335)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
├── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
    └── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]

Fragment 37470 (Actor 743333,743334)
StreamSyncLogStore
├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
├── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: user_to_clients_mv_next.client_id = clients_portfolios_dm_next.client_id }
    ├── output: [ user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, user_to_clients_mv_next.client_id, clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.effective_start_date ]
    ├── stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]
    ├── MergeExecutor { output: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ], stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id ] }
    └── MergeExecutor { output: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ], stream key: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ] }

Fragment 37471 (Actor 743337,743338)
StreamLocalityProvider { locality_columns: [user_to_clients_mv_next.client_id] } { output: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ], stream key: [ user_to_clients_mv_next.client_id, user_to_clients_mv_next.user_id ] }
└── MergeExecutor { output: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ], stream key: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ] }

Fragment 37472 (Actor 743372,743371)
StreamTableScan { table: user_to_clients_mv_next, columns: [user_id, client_id] } { output: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ], stream key: [ user_to_clients_mv_next.user_id, user_to_clients_mv_next.client_id ] }
├── Upstream { output: [ user_id, client_id ], stream key: [] }
└── BatchPlanNode { output: [ user_id, client_id ], stream key: [] }

Fragment 37473 (Actor 743340,743339)
StreamLocalityProvider { locality_columns: [clients_portfolios_dm_next.client_id] } { output: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ], stream key: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ] }
└── MergeExecutor { output: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ], stream key: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ] }

Fragment 37474 (Actor 743342,743341)
StreamProject { exprs: [clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date] }
├── output: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]
├── stream key: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]
└── StreamFilter { predicate: IsNull(clients_portfolios_dm_next.disabled_at) }
    ├── output: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date, clients_portfolios_dm_next.disabled_at ]
    ├── stream key: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]
    └── StreamTableScan { table: clients_portfolios_dm_next, columns: [client_id, portfolio_id, effective_start_date, disabled_at] }
        ├── output: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date, clients_portfolios_dm_next.disabled_at ]
        ├── stream key: [ clients_portfolios_dm_next.client_id, clients_portfolios_dm_next.portfolio_id, clients_portfolios_dm_next.effective_start_date ]
        ├── Upstream { output: [ client_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ client_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }

Fragment 37475 (Actor 743343,743344)
StreamLocalityProvider { locality_columns: [account_to_portfolios_dm_next.portfolio_id] }
├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.portfolio_id, open_accounts_mv_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ open_accounts_mv_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37476 (Actor 743350,743349)
StreamSyncLogStore
├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ open_accounts_mv_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ open_accounts_mv_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37477 (Actor 743348,743347)
StreamSyncLogStore
├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ open_accounts_mv_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor
    ├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
    └── stream key: [ open_accounts_mv_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]

Fragment 37478 (Actor 743346,743345)
StreamSyncLogStore
├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ open_accounts_mv_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
└── StreamHashJoin { type: Inner, predicate: open_accounts_mv_next.account_id = account_to_portfolios_dm_next.account_id }
    ├── output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.effective_start_date ]
    ├── stream key: [ open_accounts_mv_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    ├── MergeExecutor { output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted ], stream key: [ open_accounts_mv_next.account_id ] }
    └── MergeExecutor { output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ], stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ] }

Fragment 37479 (Actor 743352,743351)
StreamTableScan { table: open_accounts_mv_next, columns: [account_id, is_restricted] } { output: [ open_accounts_mv_next.account_id, open_accounts_mv_next.is_restricted ], stream key: [ open_accounts_mv_next.account_id ] }
├── Upstream { output: [ account_id, is_restricted ], stream key: [] }
└── BatchPlanNode { output: [ account_id, is_restricted ], stream key: [] }

Fragment 37480 (Actor 743353,743354)
StreamLocalityProvider { locality_columns: [account_to_portfolios_dm_next.account_id] }
├── output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
└── MergeExecutor { output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ], stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ] }

Fragment 37481 (Actor 743356,743355)
StreamProject { exprs: [account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date] }
├── output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
├── stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
└── StreamFilter { predicate: IsNull(account_to_portfolios_dm_next.disabled_at) }
    ├── output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.disabled_at ]
    ├── stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
    └── StreamTableScan { table: account_to_portfolios_dm_next, columns: [account_id, portfolio_id, effective_start_date, disabled_at] }
        ├── output: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date, account_to_portfolios_dm_next.disabled_at ]
        ├── stream key: [ account_to_portfolios_dm_next.account_id, account_to_portfolios_dm_next.portfolio_id, account_to_portfolios_dm_next.effective_start_date ]
        ├── Upstream { output: [ account_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ account_id, portfolio_id, effective_start_date, disabled_at ], stream key: [] }

Fragment 37482 (Actor 743357,743358)
StreamProject { exprs: [users_dm_next.user_id] } { output: [ users_dm_next.user_id ], stream key: [ users_dm_next.user_id ] }
└── StreamFilter { predicate: IsNull(users_dm_next.disabled_at) } { output: [ users_dm_next.user_id, users_dm_next.disabled_at ], stream key: [ users_dm_next.user_id ] }
    └── StreamTableScan { table: users_dm_next, columns: [user_id, disabled_at] } { output: [ users_dm_next.user_id, users_dm_next.disabled_at ], stream key: [ users_dm_next.user_id ] }
        ├── Upstream { output: [ user_id, disabled_at ], stream key: [] }
        └── BatchPlanNode { output: [ user_id, disabled_at ], stream key: [] }

Fragment 37483 (Actor 743259,743260)
StreamProject { exprs: [user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'restricted':Varchar, 1:Int32] } { output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'restricted':Varchar, 1:Int32 ], stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ] }
└── StreamFilter { predicate: (bool_or(open_accounts_mv_next.is_restricted) = true:Boolean) } { output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ], stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ] }
    └── MergeExecutor { output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ], stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ] }

Fragment 37484 (Actor 743268,743267)
StreamProject { exprs: [user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'un_restricted':Varchar, 2:Int32] } { output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, 'un_restricted':Varchar, 2:Int32 ], stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ] }
└── StreamFilter { predicate: Not(IsTrue(bool_or(open_accounts_mv_next.is_restricted))) } { output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ], stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ] }
    └── MergeExecutor { output: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id, bool_or(open_accounts_mv_next.is_restricted), users_dm_next.user_id ], stream key: [ user_to_portfolios_mv_next.user_id, open_accounts_mv_next.account_id ] }