Commit 7e7309b
fix(thoughtspot): eight defects found by a max-level review of the converter
All eight reproduce; each is verified against its own failing case and pinned
by a regression test. 848 tests pass (was 824).
SILENT DOUBLE AGGREGATION. `_AGGREGATE_CALL_NAMES` knew `group_aggregate`
alone, above a comment asserting "there is exactly one such construct", while
this package's own reverse inventory registered four shorthands (group_sum,
group_count, group_stddev, group_variance) and two further *_aggregate_op
variants. A MEASURE column using any of them was classified as a scalar formula
and had its own `aggregation` composed on top: `sum ( group_sum ( ... ) )`, no
issue raised, wrong number. The vocabulary is now derived from one source.
CARDINALITY SURVIVED A STALE SWAP WITNESS. An Ossie relationship has no
cardinality field -- `from` is the many side, `to` the one side, so direction IS
cardinality. When the endpoint-swap witness went stale the swap was correctly
abandoned but the stashed cardinality was still read, declaring the join
backwards; ThoughtSpot uses cardinality for fan-out, so the model returned
multiplied rows. Gated on the stale-swap condition, which also honours that
issue's own promise to emit "exactly as a hand-authored relationship would".
A PARENTHESISED JOIN CONDITION LOST ITS RELATIONSHIP. `formula._scan` tracks
paren depth, so `( [A::x] = [B::y] and [A::p] = [B::q] )` -- an ordinary TML
spelling -- put every `and` at depth 1: nothing split, no equality pair matched,
and the whole relationship was demoted to an unrepresentable-join stash entry,
leaving the datasets disconnected and `derive_keys` with no candidate.
AN ALIASED SELF-JOIN EMITTED DUPLICATE TABLE DOCUMENTS. N datasets over one
warehouse table produced N Table documents of the same name; filename
disambiguation then hid the collision and the import created a duplicate Table
object. One document per distinct table now, columns unioned. Found while
fixing it: two model_tables[] entries with no distinguishing alias are
ambiguous on import and were unreported -- now an ERROR.
Also: `zip` truncated a join condition when from_columns/to_columns disagreed,
dropping predicates silently (now refused, matching upstream #375's equal-arity
rule); `_restore_ai_context` overwrote a faithfully stashed synonym_type; shared
list objects made PyYAML emit anchor/alias pairs into every generated document
and both fixtures; `_safe_target_path`'s condition let through the one case it
existed to catch; `read_stash` and a non-UTF-8 input file escaped the CLI's
handler as bare tracebacks.
Fixtures regenerated, proven deep-equal to their previous parsed content. Both
fixtures and emitted output validate against the current upstream schema; the
TPC-DS fixture round-trips end to end.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 4ace101 commit 7e7309b
14 files changed
Lines changed: 462 additions & 33 deletions
File tree
- converters/thoughtspot
- src/ossie_thoughtspot
- expressions
- tests
- fixtures
- minimal
- tpcds
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
127 | | - | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
128 | 131 | | |
129 | 132 | | |
130 | 133 | | |
| |||
163 | 166 | | |
164 | 167 | | |
165 | 168 | | |
166 | | - | |
| 169 | + | |
167 | 170 | | |
168 | 171 | | |
169 | 172 | | |
| |||
204 | 207 | | |
205 | 208 | | |
206 | 209 | | |
207 | | - | |
| 210 | + | |
208 | 211 | | |
209 | 212 | | |
210 | 213 | | |
| |||
Lines changed: 2 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
41 | 42 | | |
42 | 43 | | |
43 | 44 | | |
| |||
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| 58 | + | |
57 | 59 | | |
58 | 60 | | |
59 | 61 | | |
| |||
Lines changed: 7 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
55 | 62 | | |
56 | 63 | | |
57 | 64 | | |
| |||
Lines changed: 11 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
562 | 562 | | |
563 | 563 | | |
564 | 564 | | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
565 | 576 | | |
566 | 577 | | |
567 | 578 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
152 | | - | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
153 | 159 | | |
Lines changed: 134 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1206 | 1206 | | |
1207 | 1207 | | |
1208 | 1208 | | |
1209 | | - | |
| 1209 | + | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
| 1213 | + | |
| 1214 | + | |
1210 | 1215 | | |
1211 | 1216 | | |
1212 | 1217 | | |
| |||
1582 | 1587 | | |
1583 | 1588 | | |
1584 | 1589 | | |
1585 | | - | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
1586 | 1606 | | |
1587 | 1607 | | |
1588 | 1608 | | |
| |||
1702 | 1722 | | |
1703 | 1723 | | |
1704 | 1724 | | |
1705 | | - | |
| 1725 | + | |
| 1726 | + | |
| 1727 | + | |
| 1728 | + | |
| 1729 | + | |
| 1730 | + | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
| 1745 | + | |
1706 | 1746 | | |
1707 | 1747 | | |
1708 | 1748 | | |
| |||
1824 | 1864 | | |
1825 | 1865 | | |
1826 | 1866 | | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
| 1876 | + | |
| 1877 | + | |
| 1878 | + | |
| 1879 | + | |
| 1880 | + | |
| 1881 | + | |
| 1882 | + | |
| 1883 | + | |
| 1884 | + | |
| 1885 | + | |
| 1886 | + | |
| 1887 | + | |
| 1888 | + | |
| 1889 | + | |
| 1890 | + | |
| 1891 | + | |
| 1892 | + | |
| 1893 | + | |
| 1894 | + | |
| 1895 | + | |
1827 | 1896 | | |
1828 | 1897 | | |
1829 | 1898 | | |
| |||
2033 | 2102 | | |
2034 | 2103 | | |
2035 | 2104 | | |
| 2105 | + | |
| 2106 | + | |
| 2107 | + | |
| 2108 | + | |
| 2109 | + | |
| 2110 | + | |
| 2111 | + | |
| 2112 | + | |
| 2113 | + | |
| 2114 | + | |
| 2115 | + | |
| 2116 | + | |
| 2117 | + | |
| 2118 | + | |
| 2119 | + | |
| 2120 | + | |
| 2121 | + | |
| 2122 | + | |
| 2123 | + | |
| 2124 | + | |
| 2125 | + | |
| 2126 | + | |
| 2127 | + | |
| 2128 | + | |
| 2129 | + | |
| 2130 | + | |
| 2131 | + | |
| 2132 | + | |
| 2133 | + | |
| 2134 | + | |
| 2135 | + | |
| 2136 | + | |
| 2137 | + | |
| 2138 | + | |
| 2139 | + | |
| 2140 | + | |
| 2141 | + | |
| 2142 | + | |
| 2143 | + | |
| 2144 | + | |
| 2145 | + | |
| 2146 | + | |
| 2147 | + | |
| 2148 | + | |
| 2149 | + | |
| 2150 | + | |
| 2151 | + | |
| 2152 | + | |
| 2153 | + | |
| 2154 | + | |
| 2155 | + | |
| 2156 | + | |
| 2157 | + | |
| 2158 | + | |
| 2159 | + | |
| 2160 | + | |
| 2161 | + | |
| 2162 | + | |
| 2163 | + | |
2036 | 2164 | | |
2037 | 2165 | | |
2038 | 2166 | | |
| |||
2081 | 2209 | | |
2082 | 2210 | | |
2083 | 2211 | | |
2084 | | - | |
| 2212 | + | |
| 2213 | + | |
| 2214 | + | |
2085 | 2215 | | |
2086 | 2216 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
75 | 75 | | |
76 | 76 | | |
77 | 77 | | |
78 | | - | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
79 | 93 | | |
80 | 94 | | |
81 | 95 | | |
| |||
Lines changed: 50 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
132 | | - | |
| 132 | + | |
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| |||
711 | 711 | | |
712 | 712 | | |
713 | 713 | | |
714 | | - | |
715 | | - | |
716 | | - | |
717 | | - | |
718 | | - | |
719 | | - | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
720 | 727 | | |
721 | 728 | | |
722 | 729 | | |
| |||
740 | 747 | | |
741 | 748 | | |
742 | 749 | | |
743 | | - | |
| 750 | + | |
744 | 751 | | |
745 | 752 | | |
746 | 753 | | |
| |||
1567 | 1574 | | |
1568 | 1575 | | |
1569 | 1576 | | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
| 1586 | + | |
| 1587 | + | |
| 1588 | + | |
| 1589 | + | |
| 1590 | + | |
| 1591 | + | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
1570 | 1603 | | |
1571 | 1604 | | |
1572 | 1605 | | |
| |||
1587 | 1620 | | |
1588 | 1621 | | |
1589 | 1622 | | |
1590 | | - | |
| 1623 | + | |
| 1624 | + | |
| 1625 | + | |
| 1626 | + | |
| 1627 | + | |
| 1628 | + | |
| 1629 | + | |
| 1630 | + | |
| 1631 | + | |
1591 | 1632 | | |
1592 | 1633 | | |
1593 | 1634 | | |
| |||
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
| 48 | + | |
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| |||
0 commit comments