@@ -137,14 +137,15 @@ Table logical_expression {
137137 group_id integer [ref: > cascades_group.id]
138138 fingerprint integer
139139 variant_tag integer
140- data json
140+ predicate integer [ref: > predicate.id]
141141}
142142
143143Table cascades_group {
144144 id integer [pk]
145145 latest_winner integer [ref: > physical_expression.id, null]
146146 in_progress boolean
147147 is_optimized boolean
148+ parent integer [ref: > cascades_group.id]
148149}
149150
150151// Physical expressions and properties
@@ -153,7 +154,7 @@ Table physical_expression {
153154 group_id integer [ref: > cascades_group.id]
154155 fingerprint integer
155156 variant_tag integer
156- data json
157+ predicate integer [ref: > predicate.id]
157158}
158159
159160Table physical_property {
@@ -187,13 +188,29 @@ Table group_winner {
187188 id integer [pk]
188189 group_id integer [ref: > cascades_group.id]
189190 physical_expression_id integer [ref: > physical_expression.id]
190- cost_id integer [ref: > plan_cost.id]
191+ cost integer
191192 epoch_id integer [ref: > event.epoch_id]
192193}
193194
195+ Table predicate {
196+ id integer [pk]
197+ data json
198+ variant integer
199+ }
200+
201+ Table predicate_children {
202+ parent_id integer [ref: > predicate.id]
203+ child_id integer [ref: > predicate.id]
204+ }
205+
206+ Table predicate_logical_expression_junction {
207+ logical_expr_id integer [ref: > logical_expression.id]
208+ predicate_id integer [ref: > predicate.id]
209+ }
210+
211+ Table predicate_physical_expression_junction {
212+ physical_expr_id integer [ref: > physical_expression.id]
213+ predicate_id integer [ref: > predicate.id]
214+ }
215+
194216
195- // Notes:
196- // - All columns are NOT NULL unless specified otherwise
197- // - fingerprint represents a hash of the actual data in the logical and physical expression tuple
198- // - Each new event inserted into events table has its own epoch_id
199- // - `cascades_group.latest_winner` is an optimization to avoid querying entire group_winner table
0 commit comments