(rel: string, inner: string, every: boolean)
| 333 | } |
| 334 | |
| 335 | const wrapRelation = (rel: string, inner: string, every: boolean): string => { |
| 336 | // Optimize tautological/contradictory conditions |
| 337 | if (every && inner === "1=1") return "1=1" |
| 338 | if (!every && inner === "1=0") return "1=0" |
| 339 | const from = dialect.jsonEachFrom(rel, `_${rel}`) |
| 340 | // ∀x.P(x) ≡ ¬∃x.¬P(x), i.e. NOT EXISTS(... WHERE NOT P) |
| 341 | return every |
| 342 | ? `NOT EXISTS(SELECT 1 FROM ${from} WHERE NOT (${inner}))` |
| 343 | : `EXISTS(SELECT 1 FROM ${from} WHERE ${inner})` |
| 344 | } |
| 345 | |
| 346 | const print = (state: readonly FilterResult[], isRelation: string | null, every: boolean): string => { |
| 347 | let s = "" |
no outgoing calls
no test coverage detected
searching dependent graphs…