@devrev/meerkat-node 0.0.124 → 0.0.127

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1428,6 +1428,427 @@ const TEST_DATA_WITH_SAFE_ALIAS = [
1428
1428
  ]
1429
1429
  }
1430
1430
  ],
1431
+ [
1432
+ {
1433
+ testName: 'ArrayEmpty',
1434
+ expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors IS NULL) OR (len(orders__vendors) = 0))`,
1435
+ cubeInput: {
1436
+ measures: [
1437
+ '*'
1438
+ ],
1439
+ filters: [
1440
+ {
1441
+ member: 'orders.vendors',
1442
+ operator: 'empty'
1443
+ }
1444
+ ],
1445
+ dimensions: []
1446
+ },
1447
+ expectedOutput: [
1448
+ {
1449
+ order_id: 3,
1450
+ customer_id: '2',
1451
+ product_id: '3',
1452
+ order_date: '2022-02-01',
1453
+ order_amount: 25.0,
1454
+ orders__vendors: [],
1455
+ vendors: []
1456
+ },
1457
+ {
1458
+ order_id: 6,
1459
+ customer_id: '4',
1460
+ product_id: '2',
1461
+ order_date: '2022-04-01',
1462
+ order_amount: 45.0,
1463
+ orders__vendors: [],
1464
+ vendors: []
1465
+ },
1466
+ {
1467
+ order_id: 9,
1468
+ customer_id: '5',
1469
+ product_id: '2',
1470
+ order_date: '2022-05-05',
1471
+ order_amount: 85.0,
1472
+ orders__vendors: [],
1473
+ vendors: []
1474
+ },
1475
+ {
1476
+ customer_id: '8',
1477
+ order_amount: 50,
1478
+ order_date: '2024-09-01T00:00:00.000Z',
1479
+ order_id: 14,
1480
+ orders__order_date: undefined,
1481
+ orders__vendors: null,
1482
+ product_id: '1',
1483
+ vendors: null
1484
+ }
1485
+ ]
1486
+ }
1487
+ ],
1488
+ [
1489
+ {
1490
+ testName: 'ArrayNotEmpty',
1491
+ expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors IS NOT NULL) AND (len(orders__vendors) > 0))`,
1492
+ cubeInput: {
1493
+ measures: [
1494
+ '*'
1495
+ ],
1496
+ filters: [
1497
+ {
1498
+ member: 'orders.vendors',
1499
+ operator: 'notEmpty'
1500
+ }
1501
+ ],
1502
+ dimensions: []
1503
+ },
1504
+ expectedOutput: [
1505
+ {
1506
+ order_id: 1,
1507
+ customer_id: '1',
1508
+ product_id: '1',
1509
+ order_date: '2022-01-01',
1510
+ order_amount: 50.0,
1511
+ orders__vendors: [
1512
+ 'myntra',
1513
+ 'amazon',
1514
+ 'flipkart'
1515
+ ],
1516
+ vendors: [
1517
+ 'myntra',
1518
+ 'amazon',
1519
+ 'flipkart'
1520
+ ]
1521
+ },
1522
+ {
1523
+ order_id: 2,
1524
+ customer_id: '1',
1525
+ product_id: '2',
1526
+ order_date: '2022-01-02',
1527
+ order_amount: 80.0,
1528
+ orders__vendors: [
1529
+ 'myntra'
1530
+ ],
1531
+ vendors: [
1532
+ 'myntra'
1533
+ ]
1534
+ },
1535
+ {
1536
+ order_id: 4,
1537
+ customer_id: '2',
1538
+ product_id: '1',
1539
+ order_date: '2022-03-01',
1540
+ order_amount: 75.0,
1541
+ orders__vendors: [
1542
+ 'flipkart'
1543
+ ],
1544
+ vendors: [
1545
+ 'flipkart'
1546
+ ]
1547
+ },
1548
+ {
1549
+ order_id: 5,
1550
+ customer_id: '3',
1551
+ product_id: '1',
1552
+ order_date: '2022-03-02',
1553
+ order_amount: 100.0,
1554
+ orders__vendors: [
1555
+ 'myntra',
1556
+ 'amazon',
1557
+ 'flipkart'
1558
+ ],
1559
+ vendors: [
1560
+ 'myntra',
1561
+ 'amazon',
1562
+ 'flipkart'
1563
+ ]
1564
+ },
1565
+ {
1566
+ order_id: 7,
1567
+ customer_id: '4',
1568
+ product_id: '3',
1569
+ order_date: '2022-05-01',
1570
+ order_amount: 90.0,
1571
+ orders__vendors: [
1572
+ 'myntra',
1573
+ 'flipkart'
1574
+ ],
1575
+ vendors: [
1576
+ 'myntra',
1577
+ 'flipkart'
1578
+ ]
1579
+ },
1580
+ {
1581
+ order_id: 8,
1582
+ customer_id: '5',
1583
+ product_id: '1',
1584
+ order_date: '2022-05-02',
1585
+ order_amount: 65.0,
1586
+ orders__vendors: [
1587
+ 'amazon',
1588
+ 'flipkart'
1589
+ ],
1590
+ vendors: [
1591
+ 'amazon',
1592
+ 'flipkart'
1593
+ ]
1594
+ },
1595
+ {
1596
+ order_id: 10,
1597
+ customer_id: '6',
1598
+ product_id: '3',
1599
+ order_date: '2022-06-01',
1600
+ order_amount: 120.0,
1601
+ orders__vendors: [
1602
+ 'myntra',
1603
+ 'amazon'
1604
+ ],
1605
+ vendors: [
1606
+ 'myntra',
1607
+ 'amazon'
1608
+ ]
1609
+ },
1610
+ {
1611
+ customer_id: '6aa6',
1612
+ order_amount: 0,
1613
+ order_date: '2024-06-01T00:00:00.000Z',
1614
+ order_id: 11,
1615
+ orders__order_date: undefined,
1616
+ orders__vendors: [
1617
+ 'amazon'
1618
+ ],
1619
+ product_id: '3',
1620
+ vendors: [
1621
+ 'amazon'
1622
+ ]
1623
+ },
1624
+ {
1625
+ customer_id: null,
1626
+ order_amount: 100,
1627
+ order_date: '2024-07-01T00:00:00.000Z',
1628
+ order_id: 12,
1629
+ orders__order_date: undefined,
1630
+ orders__vendors: [
1631
+ 'flipkart'
1632
+ ],
1633
+ product_id: '3',
1634
+ vendors: [
1635
+ 'flipkart'
1636
+ ]
1637
+ },
1638
+ {
1639
+ customer_id: '7',
1640
+ order_amount: 100,
1641
+ order_date: '2024-08-01T00:00:00.000Z',
1642
+ order_id: 13,
1643
+ orders__order_date: undefined,
1644
+ orders__vendors: [
1645
+ "swiggy's"
1646
+ ],
1647
+ product_id: '6',
1648
+ vendors: [
1649
+ "swiggy's"
1650
+ ]
1651
+ }
1652
+ ]
1653
+ }
1654
+ ],
1655
+ [
1656
+ {
1657
+ testName: 'ArrayEmpty on non-array column falls back to IS NULL',
1658
+ expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id IS NULL)`,
1659
+ cubeInput: {
1660
+ measures: [
1661
+ '*'
1662
+ ],
1663
+ filters: [
1664
+ {
1665
+ member: 'orders.customer_id',
1666
+ operator: 'empty'
1667
+ }
1668
+ ],
1669
+ dimensions: []
1670
+ },
1671
+ expectedOutput: [
1672
+ {
1673
+ customer_id: null,
1674
+ order_amount: 100,
1675
+ order_date: '2024-07-01T00:00:00.000Z',
1676
+ order_id: 12,
1677
+ orders__customer_id: null,
1678
+ orders__order_date: undefined,
1679
+ product_id: '3',
1680
+ vendors: [
1681
+ 'flipkart'
1682
+ ]
1683
+ }
1684
+ ]
1685
+ }
1686
+ ],
1687
+ [
1688
+ {
1689
+ testName: 'ArrayNotEmpty on non-array column falls back to IS NOT NULL',
1690
+ expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id IS NOT NULL)`,
1691
+ cubeInput: {
1692
+ measures: [
1693
+ '*'
1694
+ ],
1695
+ filters: [
1696
+ {
1697
+ member: 'orders.customer_id',
1698
+ operator: 'notEmpty'
1699
+ }
1700
+ ],
1701
+ dimensions: []
1702
+ },
1703
+ expectedOutput: [
1704
+ {
1705
+ order_id: 1,
1706
+ customer_id: '1',
1707
+ orders__customer_id: '1',
1708
+ product_id: '1',
1709
+ order_date: '2022-01-01',
1710
+ order_amount: 50.0,
1711
+ vendors: [
1712
+ 'myntra',
1713
+ 'amazon',
1714
+ 'flipkart'
1715
+ ]
1716
+ },
1717
+ {
1718
+ order_id: 2,
1719
+ customer_id: '1',
1720
+ orders__customer_id: '1',
1721
+ product_id: '2',
1722
+ order_date: '2022-01-02',
1723
+ order_amount: 80.0,
1724
+ vendors: [
1725
+ 'myntra'
1726
+ ]
1727
+ },
1728
+ {
1729
+ order_id: 3,
1730
+ customer_id: '2',
1731
+ orders__customer_id: '2',
1732
+ product_id: '3',
1733
+ order_date: '2022-02-01',
1734
+ order_amount: 25.0,
1735
+ vendors: []
1736
+ },
1737
+ {
1738
+ order_id: 4,
1739
+ customer_id: '2',
1740
+ orders__customer_id: '2',
1741
+ product_id: '1',
1742
+ order_date: '2022-03-01',
1743
+ order_amount: 75.0,
1744
+ vendors: [
1745
+ 'flipkart'
1746
+ ]
1747
+ },
1748
+ {
1749
+ order_id: 5,
1750
+ customer_id: '3',
1751
+ orders__customer_id: '3',
1752
+ product_id: '1',
1753
+ order_date: '2022-03-02',
1754
+ order_amount: 100.0,
1755
+ vendors: [
1756
+ 'myntra',
1757
+ 'amazon',
1758
+ 'flipkart'
1759
+ ]
1760
+ },
1761
+ {
1762
+ order_id: 6,
1763
+ customer_id: '4',
1764
+ orders__customer_id: '4',
1765
+ product_id: '2',
1766
+ order_date: '2022-04-01',
1767
+ order_amount: 45.0,
1768
+ vendors: []
1769
+ },
1770
+ {
1771
+ order_id: 7,
1772
+ customer_id: '4',
1773
+ orders__customer_id: '4',
1774
+ product_id: '3',
1775
+ order_date: '2022-05-01',
1776
+ order_amount: 90.0,
1777
+ vendors: [
1778
+ 'myntra',
1779
+ 'flipkart'
1780
+ ]
1781
+ },
1782
+ {
1783
+ order_id: 8,
1784
+ customer_id: '5',
1785
+ orders__customer_id: '5',
1786
+ product_id: '1',
1787
+ order_date: '2022-05-02',
1788
+ order_amount: 65.0,
1789
+ vendors: [
1790
+ 'amazon',
1791
+ 'flipkart'
1792
+ ]
1793
+ },
1794
+ {
1795
+ order_id: 9,
1796
+ customer_id: '5',
1797
+ orders__customer_id: '5',
1798
+ product_id: '2',
1799
+ order_date: '2022-05-05',
1800
+ order_amount: 85.0,
1801
+ vendors: []
1802
+ },
1803
+ {
1804
+ order_id: 10,
1805
+ customer_id: '6',
1806
+ orders__customer_id: '6',
1807
+ product_id: '3',
1808
+ order_date: '2022-06-01',
1809
+ order_amount: 120.0,
1810
+ vendors: [
1811
+ 'myntra',
1812
+ 'amazon'
1813
+ ]
1814
+ },
1815
+ {
1816
+ customer_id: '6aa6',
1817
+ order_amount: 0,
1818
+ order_date: '2024-06-01T00:00:00.000Z',
1819
+ order_id: 11,
1820
+ orders__customer_id: '6aa6',
1821
+ orders__order_date: undefined,
1822
+ product_id: '3',
1823
+ vendors: [
1824
+ 'amazon'
1825
+ ]
1826
+ },
1827
+ {
1828
+ customer_id: '7',
1829
+ order_amount: 100,
1830
+ order_date: '2024-08-01T00:00:00.000Z',
1831
+ order_id: 13,
1832
+ orders__customer_id: '7',
1833
+ orders__order_date: undefined,
1834
+ product_id: '6',
1835
+ vendors: [
1836
+ "swiggy's"
1837
+ ]
1838
+ },
1839
+ {
1840
+ customer_id: '8',
1841
+ order_amount: 50,
1842
+ order_date: '2024-09-01T00:00:00.000Z',
1843
+ order_id: 14,
1844
+ orders__customer_id: '8',
1845
+ orders__order_date: undefined,
1846
+ product_id: '1',
1847
+ vendors: null
1848
+ }
1849
+ ]
1850
+ }
1851
+ ],
1431
1852
  [
1432
1853
  {
1433
1854
  testName: 'In filter with number[] values',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../meerkat-node/src/__fixtures__/test-data-with-safe-alias.ts"],"sourcesContent":["export const TEST_DATA_WITH_SAFE_ALIAS = [\n [\n {\n testName: 'GroupBySQLInnerQuery',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__order_month FROM (SELECT DATE_TRUNC('month', order_date) AS orders__order_month, * FROM (select * from orders) AS orders) AS orders GROUP BY orders__order_month LIMIT 1`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.order_month'],\n limit: 1,\n },\n expectedOutput: [\n {\n orders__order_month: '2022-01-01T00:00:00.000Z',\n orders__total_order_amount: 130,\n },\n ],\n },\n ],\n [\n {\n testName: 'GroupBy',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__customer_id FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders GROUP BY orders__customer_id ORDER BY orders__total_order_amount ASC, orders__customer_id ASC`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.customer_id'],\n order: {\n 'orders.total_order_amount': 'asc',\n 'orders.customer_id': 'asc',\n },\n },\n expectedOutput: [\n {\n orders__customer_id: '6aa6',\n orders__total_order_amount: 0,\n },\n {\n orders__customer_id: '8',\n orders__total_order_amount: 50,\n },\n {\n orders__customer_id: '2',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '3',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '7',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: null,\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '6',\n orders__total_order_amount: 120,\n },\n {\n orders__customer_id: '1',\n orders__total_order_amount: 130,\n },\n {\n orders__customer_id: '4',\n orders__total_order_amount: 135,\n },\n {\n orders__customer_id: '5',\n orders__total_order_amount: 150,\n },\n ],\n },\n ],\n [\n {\n testName: 'Equals',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id = '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n ],\n },\n {\n testName: 'Equals for multiple values',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id = '1') AND (orders__customer_id = '2'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1', '2'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [],\n },\n ],\n [\n {\n testName: 'NotEquals',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id != '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'notEquals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n orders__customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 6,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n {\n order_id: 13,\n customer_id: '7',\n orders__customer_id: '7',\n product_id: '6',\n order_date: '2024-08-01',\n order_amount: 100.0,\n vendors: [\"swiggy's\"],\n },\n {\n order_id: 14,\n customer_id: '8',\n orders__customer_id: '8',\n product_id: '1',\n order_date: '2024-09-01',\n order_amount: 50.0,\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'Contains',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id ~~* '%aa%')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'contains',\n values: ['aa'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'NotContains',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id !~~ '%1%') AND (orders__customer_id !~~ '%2%') AND (orders__customer_id !~~ '%3%') AND (orders__customer_id !~~ '%4%') AND (orders__customer_id !~~ '%5%') AND (orders__customer_id !~~ '%aa%'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['1'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['2'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['3'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['4'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['5'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['aa'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__customer_id: '7',\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__customer_id: '8',\n orders__order_date: undefined,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'GreaterThan',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount > 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n orders__order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_amount: 100,\n orders__order_date: undefined,\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_amount: 100,\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'LessThan',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount < 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'lt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n orders__order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n orders__order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n orders__order_amount: 0.0,\n vendors: ['amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'InDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n orders__order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n orders__order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'NotInDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date < '2022-02-01') OR (orders__order_date > '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'notInDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n orders__order_date: '2022-01-01',\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_date: '2022-01-02',\n vendors: ['myntra'],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n orders__order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n orders__order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: '2024-07-01T00:00:00.000Z',\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: '2024-08-01T00:00:00.000Z',\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: '2024-09-01T00:00:00.000Z',\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n // {\n // testName: 'Or',\n // expectedSQL: `SELECT orders.* FROM (select * from orders) AS orders WHERE ((orders.order_amount > 80) OR ((orders.order_date >= '2022-02-01') AND (orders.order_date <= '2022-03-01')))`,\n // cubeInput: {\n // measures: ['*'],\n // filters: [\n // {\n // or: [\n // {\n // member: 'orders.order_amount',\n // operator: 'gt',\n // values: ['80'],\n // },\n // {\n // member: 'orders.order_date',\n // operator: 'inDateRange',\n // values: ['2022-02-01', '2022-03-01'],\n // },\n // ],\n // },\n // ],\n // dimensions: [],\n // },\n // expectedOutput: [\n // {\n // order_id: 3,\n // customer_id: '2',\n // product_id: '3',\n // order_date: '2022-02-01',\n // order_amount: 25.0,\n // },\n // {\n // order_id: 4,\n // customer_id: '2',\n // product_id: '1',\n // order_date: '2022-03-01',\n // order_amount: 75.0,\n // },\n // {\n // order_id: 5,\n // customer_id: '3',\n // product_id: '1',\n // order_date: '2022-03-02',\n // order_amount: 100.0,\n // },\n // {\n // order_id: 7,\n // customer_id: '4',\n // product_id: '3',\n // order_date: '2022-05-01',\n // order_amount: 90.0,\n // },\n // {\n // order_id: 9,\n // customer_id: '5',\n // product_id: '2',\n // order_date: '2022-05-05',\n // order_amount: 85.0,\n // },\n // {\n // order_id: 10,\n // customer_id: '6',\n // product_id: '3',\n // order_date: '2022-06-01',\n // order_amount: 120.0,\n // },\n // ],\n // },\n [\n {\n testName: 'And',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount > 50) AND ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-06-01')))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-06-01'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n orders__order_date: '2022-03-01',\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65,\n orders__order_amount: 65,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'Set',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount IS NOT NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'set',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '2',\n order_amount: 25,\n order_date: '2022-02-01T00:00:00.000Z',\n order_id: 3,\n orders__order_amount: 25,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: [],\n },\n {\n customer_id: '4',\n order_amount: 90,\n order_date: '2022-05-01T00:00:00.000Z',\n order_id: 7,\n orders__order_amount: 90,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'flipkart'],\n },\n {\n customer_id: '6',\n order_amount: 120,\n order_date: '2022-06-01T00:00:00.000Z',\n order_id: 10,\n orders__order_amount: 120,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__order_amount: 0,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_amount: 100,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'Not Set',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IS NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notSet',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n orders__customer_id: null,\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'In',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IN ('1', '2')) AND (orders__vendors && (ARRAY['myntra', 'amazon'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'in',\n values: ['1', '2'],\n },\n {\n member: 'orders.vendors',\n operator: 'in',\n values: ['myntra', 'amazon'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '1',\n order_amount: 50,\n order_date: '2022-01-01T00:00:00.000Z',\n order_id: 1,\n orders__customer_id: '1',\n orders__order_date: undefined,\n orders__vendors: ['myntra', 'amazon', 'flipkart'],\n product_id: '1',\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n customer_id: '1',\n order_amount: 80,\n order_date: '2022-01-02T00:00:00.000Z',\n order_id: 2,\n orders__customer_id: '1',\n orders__order_date: undefined,\n orders__vendors: ['myntra'],\n product_id: '2',\n vendors: ['myntra'],\n },\n ],\n },\n {\n testName: 'In with single quotes',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors && (ARRAY['swiggy''s'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.vendors',\n operator: 'in',\n values: [\"swiggy's\"],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'Not In',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE (((orders__customer_id NOT IN ('1', '2')) OR (orders__customer_id IS NULL)) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notIn',\n values: ['1', '2'],\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '4',\n order_amount: 90,\n order_date: '2022-05-01T00:00:00.000Z',\n order_id: 7,\n orders__customer_id: '4',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'flipkart'],\n },\n {\n customer_id: '6',\n order_amount: 120,\n order_date: '2022-06-01T00:00:00.000Z',\n order_id: 10,\n orders__customer_id: '6',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__customer_id: '6aa6',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__customer_id: null,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n {\n testName: 'Not In for array type',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((NOT (orders__vendors && (ARRAY['myntra', 'amazon']))) OR (orders__vendors IS NULL))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.vendors',\n operator: 'notIn',\n values: ['myntra', 'amazon'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '2',\n order_amount: 25,\n order_date: '2022-02-01T00:00:00.000Z',\n order_id: 3,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '3',\n vendors: [],\n },\n {\n customer_id: '2',\n order_amount: 75,\n order_date: '2022-03-01T00:00:00.000Z',\n order_id: 4,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '1',\n vendors: ['flipkart'],\n },\n {\n customer_id: '4',\n order_amount: 45,\n order_date: '2022-04-01T00:00:00.000Z',\n order_id: 6,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '2',\n vendors: [],\n },\n {\n customer_id: '5',\n order_amount: 85,\n order_date: '2022-05-05T00:00:00.000Z',\n order_id: 9,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '2',\n vendors: [],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: undefined,\n orders__vendors: null,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'In filter with number[] values',\n expectedSQL: `SELECT orders.* FROM (SELECT order_id AS orders__order_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_id IN (1, 2, 3))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_id',\n operator: 'in',\n values: [1, 2, 3],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n orders__order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n orders__order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 3,\n orders__order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n ],\n },\n ],\n];\n"],"names":["TEST_DATA_WITH_SAFE_ALIAS","testName","expectedSQL","cubeInput","measures","filters","dimensions","limit","expectedOutput","orders__order_month","orders__total_order_amount","order","orders__customer_id","member","operator","values","order_id","customer_id","product_id","order_date","order_amount","vendors","and","orders__order_date","undefined","orders__order_amount","orders__product_id","orders__vendors","orders__order_id"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../meerkat-node/src/__fixtures__/test-data-with-safe-alias.ts"],"sourcesContent":["export const TEST_DATA_WITH_SAFE_ALIAS = [\n [\n {\n testName: 'GroupBySQLInnerQuery',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__order_month FROM (SELECT DATE_TRUNC('month', order_date) AS orders__order_month, * FROM (select * from orders) AS orders) AS orders GROUP BY orders__order_month LIMIT 1`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.order_month'],\n limit: 1,\n },\n expectedOutput: [\n {\n orders__order_month: '2022-01-01T00:00:00.000Z',\n orders__total_order_amount: 130,\n },\n ],\n },\n ],\n [\n {\n testName: 'GroupBy',\n expectedSQL: `SELECT SUM(order_amount) AS orders__total_order_amount , orders__customer_id FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders GROUP BY orders__customer_id ORDER BY orders__total_order_amount ASC, orders__customer_id ASC`,\n cubeInput: {\n measures: ['orders.total_order_amount'],\n filters: [],\n dimensions: ['orders.customer_id'],\n order: {\n 'orders.total_order_amount': 'asc',\n 'orders.customer_id': 'asc',\n },\n },\n expectedOutput: [\n {\n orders__customer_id: '6aa6',\n orders__total_order_amount: 0,\n },\n {\n orders__customer_id: '8',\n orders__total_order_amount: 50,\n },\n {\n orders__customer_id: '2',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '3',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '7',\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: null,\n orders__total_order_amount: 100,\n },\n {\n orders__customer_id: '6',\n orders__total_order_amount: 120,\n },\n {\n orders__customer_id: '1',\n orders__total_order_amount: 130,\n },\n {\n orders__customer_id: '4',\n orders__total_order_amount: 135,\n },\n {\n orders__customer_id: '5',\n orders__total_order_amount: 150,\n },\n ],\n },\n ],\n [\n {\n testName: 'Equals',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id = '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n ],\n },\n {\n testName: 'Equals for multiple values',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id = '1') AND (orders__customer_id = '2'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'equals',\n values: ['1', '2'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [],\n },\n ],\n [\n {\n testName: 'NotEquals',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id != '1')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'notEquals',\n values: ['1'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n orders__customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 6,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n {\n order_id: 13,\n customer_id: '7',\n orders__customer_id: '7',\n product_id: '6',\n order_date: '2024-08-01',\n order_amount: 100.0,\n vendors: [\"swiggy's\"],\n },\n {\n order_id: 14,\n customer_id: '8',\n orders__customer_id: '8',\n product_id: '1',\n order_date: '2024-09-01',\n order_amount: 50.0,\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'Contains',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id ~~* '%aa%')`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'contains',\n values: ['aa'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 11,\n customer_id: '6aa6',\n orders__customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'NotContains',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id !~~ '%1%') AND (orders__customer_id !~~ '%2%') AND (orders__customer_id !~~ '%3%') AND (orders__customer_id !~~ '%4%') AND (orders__customer_id !~~ '%5%') AND (orders__customer_id !~~ '%aa%'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['1'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['2'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['3'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['4'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['5'],\n },\n {\n member: 'orders.customer_id',\n operator: 'notContains',\n values: ['aa'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__customer_id: '7',\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__customer_id: '8',\n orders__order_date: undefined,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'GreaterThan',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount > 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n orders__order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_amount: 100,\n orders__order_date: undefined,\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_amount: 100,\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'LessThan',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_amount < 50)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_amount',\n operator: 'lt',\n values: ['50'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n orders__order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n orders__order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n order_amount: 0.0,\n orders__order_amount: 0.0,\n vendors: ['amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'InDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n orders__order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n orders__order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'NotInDateRange',\n expectedSQL: `SELECT orders.* FROM (SELECT order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_date < '2022-02-01') OR (orders__order_date > '2022-03-31'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_date',\n operator: 'notInDateRange',\n values: ['2022-02-01', '2022-03-31'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n orders__order_date: '2022-01-01',\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__order_date: '2022-01-02',\n vendors: ['myntra'],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n orders__order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n order_id: 11,\n customer_id: '6aa6',\n product_id: '3',\n order_date: '2024-06-01',\n orders__order_date: '2024-06-01',\n order_amount: 0.0,\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: '2024-07-01T00:00:00.000Z',\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: '2024-08-01T00:00:00.000Z',\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: '2024-09-01T00:00:00.000Z',\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n // {\n // testName: 'Or',\n // expectedSQL: `SELECT orders.* FROM (select * from orders) AS orders WHERE ((orders.order_amount > 80) OR ((orders.order_date >= '2022-02-01') AND (orders.order_date <= '2022-03-01')))`,\n // cubeInput: {\n // measures: ['*'],\n // filters: [\n // {\n // or: [\n // {\n // member: 'orders.order_amount',\n // operator: 'gt',\n // values: ['80'],\n // },\n // {\n // member: 'orders.order_date',\n // operator: 'inDateRange',\n // values: ['2022-02-01', '2022-03-01'],\n // },\n // ],\n // },\n // ],\n // dimensions: [],\n // },\n // expectedOutput: [\n // {\n // order_id: 3,\n // customer_id: '2',\n // product_id: '3',\n // order_date: '2022-02-01',\n // order_amount: 25.0,\n // },\n // {\n // order_id: 4,\n // customer_id: '2',\n // product_id: '1',\n // order_date: '2022-03-01',\n // order_amount: 75.0,\n // },\n // {\n // order_id: 5,\n // customer_id: '3',\n // product_id: '1',\n // order_date: '2022-03-02',\n // order_amount: 100.0,\n // },\n // {\n // order_id: 7,\n // customer_id: '4',\n // product_id: '3',\n // order_date: '2022-05-01',\n // order_amount: 90.0,\n // },\n // {\n // order_id: 9,\n // customer_id: '5',\n // product_id: '2',\n // order_date: '2022-05-05',\n // order_amount: 85.0,\n // },\n // {\n // order_id: 10,\n // customer_id: '6',\n // product_id: '3',\n // order_date: '2022-06-01',\n // order_amount: 120.0,\n // },\n // ],\n // },\n [\n {\n testName: 'And',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, order_date AS orders__order_date, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount > 50) AND ((orders__order_date >= '2022-02-01') AND (orders__order_date <= '2022-06-01')))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'gt',\n values: ['50'],\n },\n {\n member: 'orders.order_date',\n operator: 'inDateRange',\n values: ['2022-02-01', '2022-06-01'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__order_amount: 75.0,\n orders__order_date: '2022-03-01',\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n orders__order_date: '2022-03-02',\n order_amount: 100.0,\n orders__order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n orders__order_date: '2022-05-01',\n order_amount: 90.0,\n orders__order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n orders__order_date: '2022-05-02',\n order_amount: 65,\n orders__order_amount: 65,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n orders__order_date: '2022-05-05',\n order_amount: 85.0,\n orders__order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n orders__order_date: '2022-06-01',\n order_amount: 120.0,\n orders__order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n ],\n },\n ],\n [\n {\n testName: 'Set',\n expectedSQL: `SELECT orders.* FROM (SELECT orders.order_amount AS orders__order_amount, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__order_amount IS NOT NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.order_amount',\n operator: 'set',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '2',\n order_amount: 25,\n order_date: '2022-02-01T00:00:00.000Z',\n order_id: 3,\n orders__order_amount: 25,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: [],\n },\n {\n customer_id: '4',\n order_amount: 90,\n order_date: '2022-05-01T00:00:00.000Z',\n order_id: 7,\n orders__order_amount: 90,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'flipkart'],\n },\n {\n customer_id: '6',\n order_amount: 120,\n order_date: '2022-06-01T00:00:00.000Z',\n order_id: 10,\n orders__order_amount: 120,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__order_amount: 0,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_amount: 100,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'Not Set',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IS NULL) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notSet',\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n orders__customer_id: null,\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'In',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__customer_id IN ('1', '2')) AND (orders__vendors && (ARRAY['myntra', 'amazon'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'in',\n values: ['1', '2'],\n },\n {\n member: 'orders.vendors',\n operator: 'in',\n values: ['myntra', 'amazon'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '1',\n order_amount: 50,\n order_date: '2022-01-01T00:00:00.000Z',\n order_id: 1,\n orders__customer_id: '1',\n orders__order_date: undefined,\n orders__vendors: ['myntra', 'amazon', 'flipkart'],\n product_id: '1',\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n customer_id: '1',\n order_amount: 80,\n order_date: '2022-01-02T00:00:00.000Z',\n order_id: 2,\n orders__customer_id: '1',\n orders__order_date: undefined,\n orders__vendors: ['myntra'],\n product_id: '2',\n vendors: ['myntra'],\n },\n ],\n },\n {\n testName: 'In with single quotes',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors && (ARRAY['swiggy''s'])))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.vendors',\n operator: 'in',\n values: [\"swiggy's\"],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'Not In',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, product_id AS orders__product_id, * FROM (select * from orders) AS orders) AS orders WHERE (((orders__customer_id NOT IN ('1', '2')) OR (orders__customer_id IS NULL)) AND (orders__product_id = '3'))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n and: [\n {\n member: 'orders.customer_id',\n operator: 'notIn',\n values: ['1', '2'],\n },\n {\n member: 'orders.product_id',\n operator: 'equals',\n values: ['3'],\n },\n ],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '4',\n order_amount: 90,\n order_date: '2022-05-01T00:00:00.000Z',\n order_id: 7,\n orders__customer_id: '4',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'flipkart'],\n },\n {\n customer_id: '6',\n order_amount: 120,\n order_date: '2022-06-01T00:00:00.000Z',\n order_id: 10,\n orders__customer_id: '6',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__customer_id: '6aa6',\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__customer_id: null,\n orders__order_date: undefined,\n orders__product_id: '3',\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n {\n testName: 'Not In for array type',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((NOT (orders__vendors && (ARRAY['myntra', 'amazon']))) OR (orders__vendors IS NULL))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.vendors',\n operator: 'notIn',\n values: ['myntra', 'amazon'],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: '2',\n order_amount: 25,\n order_date: '2022-02-01T00:00:00.000Z',\n order_id: 3,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '3',\n vendors: [],\n },\n {\n customer_id: '2',\n order_amount: 75,\n order_date: '2022-03-01T00:00:00.000Z',\n order_id: 4,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '1',\n vendors: ['flipkart'],\n },\n {\n customer_id: '4',\n order_amount: 45,\n order_date: '2022-04-01T00:00:00.000Z',\n order_id: 6,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '2',\n vendors: [],\n },\n {\n customer_id: '5',\n order_amount: 85,\n order_date: '2022-05-05T00:00:00.000Z',\n order_id: 9,\n orders__order_date: undefined,\n orders__vendors: [],\n product_id: '2',\n vendors: [],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: undefined,\n orders__vendors: null,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'ArrayEmpty',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors IS NULL) OR (len(orders__vendors) = 0))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.vendors',\n operator: 'empty',\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n orders__vendors: [],\n vendors: [],\n },\n {\n order_id: 6,\n customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n orders__vendors: [],\n vendors: [],\n },\n {\n order_id: 9,\n customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n orders__vendors: [],\n vendors: [],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__order_date: undefined,\n orders__vendors: null,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'ArrayNotEmpty',\n expectedSQL: `SELECT orders.* FROM (SELECT vendors AS orders__vendors, * FROM (select * from orders) AS orders) AS orders WHERE ((orders__vendors IS NOT NULL) AND (len(orders__vendors) > 0))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.vendors',\n operator: 'notEmpty',\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n orders__vendors: ['myntra', 'amazon', 'flipkart'],\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n orders__vendors: ['myntra'],\n vendors: ['myntra'],\n },\n {\n order_id: 4,\n customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n orders__vendors: ['flipkart'],\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n orders__vendors: ['myntra', 'amazon', 'flipkart'],\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 7,\n customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n orders__vendors: ['myntra', 'flipkart'],\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n orders__vendors: ['amazon', 'flipkart'],\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 10,\n customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n orders__vendors: ['myntra', 'amazon'],\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__order_date: undefined,\n orders__vendors: ['amazon'],\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__order_date: undefined,\n orders__vendors: ['flipkart'],\n product_id: '3',\n vendors: ['flipkart'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__order_date: undefined,\n orders__vendors: [\"swiggy's\"],\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n ],\n },\n ],\n [\n {\n testName: 'ArrayEmpty on non-array column falls back to IS NULL',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id IS NULL)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'empty',\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n customer_id: null,\n order_amount: 100,\n order_date: '2024-07-01T00:00:00.000Z',\n order_id: 12,\n orders__customer_id: null,\n orders__order_date: undefined,\n product_id: '3',\n vendors: ['flipkart'],\n },\n ],\n },\n ],\n [\n {\n testName: 'ArrayNotEmpty on non-array column falls back to IS NOT NULL',\n expectedSQL: `SELECT orders.* FROM (SELECT customer_id AS orders__customer_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__customer_id IS NOT NULL)`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.customer_id',\n operator: 'notEmpty',\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n customer_id: '1',\n orders__customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 3,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n {\n order_id: 4,\n customer_id: '2',\n orders__customer_id: '2',\n product_id: '1',\n order_date: '2022-03-01',\n order_amount: 75.0,\n vendors: ['flipkart'],\n },\n {\n order_id: 5,\n customer_id: '3',\n orders__customer_id: '3',\n product_id: '1',\n order_date: '2022-03-02',\n order_amount: 100.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 6,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '2',\n order_date: '2022-04-01',\n order_amount: 45.0,\n vendors: [],\n },\n {\n order_id: 7,\n customer_id: '4',\n orders__customer_id: '4',\n product_id: '3',\n order_date: '2022-05-01',\n order_amount: 90.0,\n vendors: ['myntra', 'flipkart'],\n },\n {\n order_id: 8,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '1',\n order_date: '2022-05-02',\n order_amount: 65.0,\n vendors: ['amazon', 'flipkart'],\n },\n {\n order_id: 9,\n customer_id: '5',\n orders__customer_id: '5',\n product_id: '2',\n order_date: '2022-05-05',\n order_amount: 85.0,\n vendors: [],\n },\n {\n order_id: 10,\n customer_id: '6',\n orders__customer_id: '6',\n product_id: '3',\n order_date: '2022-06-01',\n order_amount: 120.0,\n vendors: ['myntra', 'amazon'],\n },\n {\n customer_id: '6aa6',\n order_amount: 0,\n order_date: '2024-06-01T00:00:00.000Z',\n order_id: 11,\n orders__customer_id: '6aa6',\n orders__order_date: undefined,\n product_id: '3',\n vendors: ['amazon'],\n },\n {\n customer_id: '7',\n order_amount: 100,\n order_date: '2024-08-01T00:00:00.000Z',\n order_id: 13,\n orders__customer_id: '7',\n orders__order_date: undefined,\n product_id: '6',\n vendors: [\"swiggy's\"],\n },\n {\n customer_id: '8',\n order_amount: 50,\n order_date: '2024-09-01T00:00:00.000Z',\n order_id: 14,\n orders__customer_id: '8',\n orders__order_date: undefined,\n product_id: '1',\n vendors: null,\n },\n ],\n },\n ],\n [\n {\n testName: 'In filter with number[] values',\n expectedSQL: `SELECT orders.* FROM (SELECT order_id AS orders__order_id, * FROM (select * from orders) AS orders) AS orders WHERE (orders__order_id IN (1, 2, 3))`,\n cubeInput: {\n measures: ['*'],\n filters: [\n {\n member: 'orders.order_id',\n operator: 'in',\n values: [1, 2, 3],\n },\n ],\n dimensions: [],\n },\n expectedOutput: [\n {\n order_id: 1,\n orders__order_id: 1,\n customer_id: '1',\n product_id: '1',\n order_date: '2022-01-01',\n order_amount: 50.0,\n vendors: ['myntra', 'amazon', 'flipkart'],\n },\n {\n order_id: 2,\n orders__order_id: 2,\n customer_id: '1',\n product_id: '2',\n order_date: '2022-01-02',\n order_amount: 80.0,\n vendors: ['myntra'],\n },\n {\n order_id: 3,\n orders__order_id: 3,\n customer_id: '2',\n product_id: '3',\n order_date: '2022-02-01',\n order_amount: 25.0,\n vendors: [],\n },\n ],\n },\n ],\n];\n"],"names":["TEST_DATA_WITH_SAFE_ALIAS","testName","expectedSQL","cubeInput","measures","filters","dimensions","limit","expectedOutput","orders__order_month","orders__total_order_amount","order","orders__customer_id","member","operator","values","order_id","customer_id","product_id","order_date","order_amount","vendors","and","orders__order_date","undefined","orders__order_amount","orders__product_id","orders__vendors","orders__order_id"],"mappings":"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"}
@@ -125,6 +125,14 @@ async function createFactAllTypesTable() {
125
125
  WHEN i % 5 = 1 THEN ARRAY['part_' || (i % 500)]
126
126
  ELSE ARRAY[]::VARCHAR[]
127
127
  END AS part_ids,
128
+
129
+ -- Number arrays (INTEGER[])
130
+ CASE
131
+ WHEN i % 4 = 0 THEN ARRAY[1, 2, 3]
132
+ WHEN i % 4 = 1 THEN ARRAY[2, 4]
133
+ WHEN i % 4 = 2 THEN ARRAY[1, 5]
134
+ ELSE ARRAY[]::INTEGER[]
135
+ END AS score_ids,
128
136
 
129
137
  -- JSON-like VARCHAR (to test JSON extraction)
130
138
  '{"severity_id": ' || ((i % 5) + 1) || ', "impact": "' ||
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../meerkat-node/src/__tests__/comprehensive/synthetic/schema-setup.ts"],"sourcesContent":["/**\n * Synthetic Schema Setup\n * \n * Creates comprehensive test tables with 1M+ rows covering all data types\n * and patterns used in production Meerkat queries.\n */\n\nimport { duckdbExec } from '../../../duckdb-exec';\n\n/**\n * Create the comprehensive fact_all_types table\n * This table contains ~100 columns covering all normalized DB types\n */\nexport async function createFactAllTypesTable(): Promise<void> {\n console.log('Creating fact_all_types table with 1M rows...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS fact_all_types AS\n SELECT\n -- Keys/IDs\n i AS id_bigint,\n 'inc_' || (i % 100000) AS incident_id,\n 'user_' || (i % 10000) AS user_id,\n 'part_' || (i % 5000) AS part_id,\n \n -- Numeric types: BIGINT\n CAST(i * 10 AS BIGINT) AS metric_bigint,\n CAST((i % 1000) AS BIGINT) AS small_bigint,\n \n -- Numeric types: NUMERIC/DECIMAL\n CAST((i % 1000) / 10.0 AS DECIMAL(18,2)) AS metric_numeric,\n CAST((i % 10000) / 100.0 AS DECIMAL(18,4)) AS precise_numeric,\n \n -- Numeric types: DOUBLE/FLOAT\n (i % 1000) / 3.0 AS metric_double,\n (i % 1000) * 1.5 AS metric_float,\n \n -- Boolean\n (i % 10 = 0) AS is_deleted,\n (i % 3 = 0) AS flag_boolean,\n -- Use a different modulus base to avoid correlation with status buckets.\n ((CAST(i / 3 AS BIGINT)) % 2 = 0) AS is_active,\n CASE WHEN i % 7 = 0 THEN NULL ELSE CAST(i % 10000 AS BIGINT) END AS resolved_by,\n \n -- Strings/enums (VARCHAR)\n CASE (i % 5)\n WHEN 0 THEN 'high'\n WHEN 1 THEN 'medium'\n WHEN 2 THEN 'low'\n WHEN 3 THEN 'critical'\n ELSE 'unknown'\n END AS priority,\n \n CASE (i % 4)\n WHEN 0 THEN 'open'\n WHEN 1 THEN 'in_progress'\n WHEN 2 THEN 'resolved'\n ELSE 'closed'\n END AS status,\n \n CASE (i % 3)\n WHEN 0 THEN 'P0'\n WHEN 1 THEN 'P1'\n ELSE 'P2'\n END AS severity_label,\n \n CASE (i % 4)\n WHEN 0 THEN 'production'\n WHEN 1 THEN 'staging'\n WHEN 2 THEN 'development'\n ELSE 'test'\n END AS environment,\n \n 'Title ' || i AS title,\n 'Test description for incident ' || i AS description,\n \n -- Dates (cast to INTEGER for date arithmetic)\n -- Using % 1460 for ~4 year cycle, % 366 for full year including leap day\n DATE '2020-01-01' + CAST((i % 1460) AS INTEGER) AS record_date,\n DATE '2020-01-01' + CAST((i % 366) AS INTEGER) AS created_date,\n DATE '2020-01-01' + CAST(((i + 30) % 1460) AS INTEGER) AS mitigated_date,\n DATE '2019-01-01' + CAST((i % 730) AS INTEGER) AS partition_record_date,\n \n -- Timestamps\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 1460) AS INTEGER)) DAY + INTERVAL (CAST((i % 86400) AS INTEGER)) SECOND AS created_timestamp,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST(((i + 100) % 1460) AS INTEGER)) DAY AS identified_timestamp,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 366) AS INTEGER)) DAY AS deployment_time,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 1460) AS INTEGER)) DAY AS partition_record_ts,\n \n -- Arrays (VARCHAR[])\n CASE\n WHEN i % 4 = 0 THEN ARRAY['backend', 'urgent']\n WHEN i % 4 = 1 THEN ARRAY['frontend']\n WHEN i % 4 = 2 THEN ARRAY['api', 'backend']\n ELSE ARRAY[]::VARCHAR[]\n END AS tags,\n \n CASE\n WHEN i % 3 = 0 THEN ARRAY['user_' || ((i % 1000) + 1), 'user_' || ((i % 1000) + 2)]\n WHEN i % 3 = 1 THEN ARRAY['user_' || (i % 1000)]\n ELSE ARRAY[]::VARCHAR[]\n END AS owned_by_ids,\n \n CASE\n WHEN i % 5 = 0 THEN ARRAY['part_' || (i % 500), 'part_' || ((i % 500) + 1), 'part_' || ((i % 500) + 2)]\n WHEN i % 5 = 1 THEN ARRAY['part_' || (i % 500)]\n ELSE ARRAY[]::VARCHAR[]\n END AS part_ids,\n \n -- JSON-like VARCHAR (to test JSON extraction)\n '{\"severity_id\": ' || ((i % 5) + 1) || ', \"impact\": \"' ||\n CASE (i % 3)\n WHEN 0 THEN 'high'\n WHEN 1 THEN 'medium'\n ELSE 'low'\n END ||\n '\", \"source\": \"' ||\n CASE (i % 3)\n WHEN 0 THEN 'web'\n WHEN 1 THEN 'mobile'\n ELSE 'api'\n END ||\n '\", \"reported_by\": \"' || 'user_' || (i % 100) || '\"}' AS metadata_json,\n \n '{\"stage\": \"' || \n CASE (i % 4)\n WHEN 0 THEN 'investigation'\n WHEN 1 THEN 'mitigation'\n WHEN 2 THEN 'resolution'\n ELSE 'closed'\n END || '\"}' AS stage_json,\n \n '{\"customers\": [' || \n '\"customer_' || (i % 1000) || '\", ' ||\n '\"customer_' || ((i % 1000) + 1) || '\"' ||\n ']}' AS impact_json,\n \n -- Derived-style fields (mirroring real widget expressions)\n (i % 10000) AS mtti_seconds,\n MONTHNAME(DATE '2020-01-01' + CAST((i % 365) AS INTEGER)) AS created_month,\n (i % 5) AS severity_id_int,\n \n -- Special values for NULL testing\n CASE WHEN i % 10 = 0 THEN NULL ELSE 'value_' || i END AS nullable_string,\n CASE WHEN i % 15 = 0 THEN NULL ELSE (i % 1000) END AS nullable_int,\n CASE WHEN i % 20 = 0 THEN NULL ELSE DATE '2020-01-01' + CAST((i % 365) AS INTEGER) END AS nullable_date,\n \n -- Edge case values\n CASE\n WHEN i % 100 = 0 THEN 'value with \"quotes\"'\n WHEN i % 100 = 1 THEN 'value with ''apostrophe'''\n WHEN i % 100 = 2 THEN 'value with \\\\ backslash'\n WHEN i % 100 = 3 THEN ''\n ELSE 'normal_value_' || i\n END AS edge_case_string\n \n FROM range(0, 1000000) AS t(i)\n `);\n \n console.log('✅ Created fact_all_types with 1M rows');\n}\n\n/**\n * Create dimension table: dim_user\n */\nexport async function createDimUserTable(): Promise<void> {\n console.log('Creating dim_user table...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS dim_user AS\n SELECT\n 'user_' || i AS user_id,\n 'User ' || i AS user_name,\n 'user' || i || '@example.com' AS user_email,\n CASE (i % 3)\n WHEN 0 THEN 'enterprise'\n WHEN 1 THEN 'pro'\n ELSE 'free'\n END AS user_segment,\n CASE (i % 4)\n WHEN 0 THEN 'engineering'\n WHEN 1 THEN 'product'\n WHEN 2 THEN 'support'\n ELSE 'sales'\n END AS user_department,\n DATE '2019-01-01' + CAST((i % 1095) AS INTEGER) AS user_created_date,\n (i % 2 = 0) AS is_active_user\n FROM range(0, 10000) AS t(i)\n `);\n \n console.log('✅ Created dim_user with 10K rows');\n}\n\n/**\n * Create dimension table: dim_part\n */\nexport async function createDimPartTable(): Promise<void> {\n console.log('Creating dim_part table...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS dim_part AS\n SELECT\n 'part_' || i AS part_id,\n 'Part ' || i AS part_name,\n CASE (i % 5)\n WHEN 0 THEN 'electronics'\n WHEN 1 THEN 'furniture'\n WHEN 2 THEN 'clothing'\n WHEN 3 THEN 'food'\n ELSE 'other'\n END AS product_category,\n CASE (i % 3)\n WHEN 0 THEN 'premium'\n WHEN 1 THEN 'standard'\n ELSE 'budget'\n END AS product_tier,\n (i % 1000) / 10.0 AS weight,\n (i % 10000) / 100.0 AS price,\n (i % 2 = 0) AS in_stock\n FROM range(0, 5000) AS t(i)\n `);\n \n console.log('✅ Created dim_part with 5K rows');\n}\n\n/**\n * Create all synthetic tables in one go\n */\nexport async function createAllSyntheticTables(): Promise<void> {\n const startTime = Date.now();\n \n await createFactAllTypesTable();\n await createDimUserTable();\n await createDimPartTable();\n \n const duration = ((Date.now() - startTime) / 1000).toFixed(2);\n console.log(`\\n✅ All synthetic tables created in ${duration}s`);\n}\n\n/**\n * Drop all synthetic tables (for cleanup)\n */\nexport async function dropSyntheticTables(): Promise<void> {\n console.log('Dropping synthetic tables...');\n \n await duckdbExec('DROP TABLE IF EXISTS fact_all_types');\n await duckdbExec('DROP TABLE IF EXISTS dim_user');\n await duckdbExec('DROP TABLE IF EXISTS dim_part');\n \n console.log('✅ Synthetic tables dropped');\n}\n\n/**\n * Verify tables exist and have data\n */\nexport async function verifySyntheticTables(): Promise<void> {\n const factCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM fact_all_types'\n )) as Array<{ count: number }>;\n const userCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM dim_user'\n )) as Array<{ count: number }>;\n const partCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM dim_part'\n )) as Array<{ count: number }>;\n \n console.log('\\n📊 Synthetic Table Verification:');\n console.log(` fact_all_types: ${factCount[0].count} rows`);\n console.log(` dim_user: ${userCount[0].count} rows`);\n console.log(` dim_part: ${partCount[0].count} rows`);\n}\n\n"],"names":["createAllSyntheticTables","createDimPartTable","createDimUserTable","createFactAllTypesTable","dropSyntheticTables","verifySyntheticTables","console","log","duckdbExec","startTime","Date","now","duration","toFixed","factCount","userCount","partCount","count"],"mappings":"AAAA;;;;;CAKC;;;;;;;;IA+NqBA,wBAAwB;eAAxBA;;IAhCAC,kBAAkB;eAAlBA;;IA/BAC,kBAAkB;eAAlBA;;IAxJAC,uBAAuB;eAAvBA;;IAqOAC,mBAAmB;eAAnBA;;IAaAC,qBAAqB;eAArBA;;;4BAxPK;AAMpB,eAAeF;IACpBG,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6IlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeL;IACpBI,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;EAoBlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeN;IACpBK,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;EAqBlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeP;IACpB,MAAMS,YAAYC,KAAKC,GAAG;IAE1B,MAAMR;IACN,MAAMD;IACN,MAAMD;IAEN,MAAMW,WAAW,AAAC,CAAA,AAACF,CAAAA,KAAKC,GAAG,KAAKF,SAAQ,IAAK,IAAG,EAAGI,OAAO,CAAC;IAC3DP,QAAQC,GAAG,CAAC,CAAC,oCAAoC,EAAEK,SAAS,CAAC,CAAC;AAChE;AAKO,eAAeR;IACpBE,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC;IACjB,MAAMA,IAAAA,sBAAU,EAAC;IACjB,MAAMA,IAAAA,sBAAU,EAAC;IAEjBF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeF;IACpB,MAAMS,YAAa,MAAMN,IAAAA,sBAAU,EACjC;IAEF,MAAMO,YAAa,MAAMP,IAAAA,sBAAU,EACjC;IAEF,MAAMQ,YAAa,MAAMR,IAAAA,sBAAU,EACjC;IAGFF,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,CAAC,mBAAmB,EAAEO,SAAS,CAAC,EAAE,CAACG,KAAK,CAAC,KAAK,CAAC;IAC3DX,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEQ,SAAS,CAAC,EAAE,CAACE,KAAK,CAAC,KAAK,CAAC;IACrDX,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAES,SAAS,CAAC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;AACvD"}
1
+ {"version":3,"sources":["../../../../../meerkat-node/src/__tests__/comprehensive/synthetic/schema-setup.ts"],"sourcesContent":["/**\n * Synthetic Schema Setup\n * \n * Creates comprehensive test tables with 1M+ rows covering all data types\n * and patterns used in production Meerkat queries.\n */\n\nimport { duckdbExec } from '../../../duckdb-exec';\n\n/**\n * Create the comprehensive fact_all_types table\n * This table contains ~100 columns covering all normalized DB types\n */\nexport async function createFactAllTypesTable(): Promise<void> {\n console.log('Creating fact_all_types table with 1M rows...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS fact_all_types AS\n SELECT\n -- Keys/IDs\n i AS id_bigint,\n 'inc_' || (i % 100000) AS incident_id,\n 'user_' || (i % 10000) AS user_id,\n 'part_' || (i % 5000) AS part_id,\n \n -- Numeric types: BIGINT\n CAST(i * 10 AS BIGINT) AS metric_bigint,\n CAST((i % 1000) AS BIGINT) AS small_bigint,\n \n -- Numeric types: NUMERIC/DECIMAL\n CAST((i % 1000) / 10.0 AS DECIMAL(18,2)) AS metric_numeric,\n CAST((i % 10000) / 100.0 AS DECIMAL(18,4)) AS precise_numeric,\n \n -- Numeric types: DOUBLE/FLOAT\n (i % 1000) / 3.0 AS metric_double,\n (i % 1000) * 1.5 AS metric_float,\n \n -- Boolean\n (i % 10 = 0) AS is_deleted,\n (i % 3 = 0) AS flag_boolean,\n -- Use a different modulus base to avoid correlation with status buckets.\n ((CAST(i / 3 AS BIGINT)) % 2 = 0) AS is_active,\n CASE WHEN i % 7 = 0 THEN NULL ELSE CAST(i % 10000 AS BIGINT) END AS resolved_by,\n \n -- Strings/enums (VARCHAR)\n CASE (i % 5)\n WHEN 0 THEN 'high'\n WHEN 1 THEN 'medium'\n WHEN 2 THEN 'low'\n WHEN 3 THEN 'critical'\n ELSE 'unknown'\n END AS priority,\n \n CASE (i % 4)\n WHEN 0 THEN 'open'\n WHEN 1 THEN 'in_progress'\n WHEN 2 THEN 'resolved'\n ELSE 'closed'\n END AS status,\n \n CASE (i % 3)\n WHEN 0 THEN 'P0'\n WHEN 1 THEN 'P1'\n ELSE 'P2'\n END AS severity_label,\n \n CASE (i % 4)\n WHEN 0 THEN 'production'\n WHEN 1 THEN 'staging'\n WHEN 2 THEN 'development'\n ELSE 'test'\n END AS environment,\n \n 'Title ' || i AS title,\n 'Test description for incident ' || i AS description,\n \n -- Dates (cast to INTEGER for date arithmetic)\n -- Using % 1460 for ~4 year cycle, % 366 for full year including leap day\n DATE '2020-01-01' + CAST((i % 1460) AS INTEGER) AS record_date,\n DATE '2020-01-01' + CAST((i % 366) AS INTEGER) AS created_date,\n DATE '2020-01-01' + CAST(((i + 30) % 1460) AS INTEGER) AS mitigated_date,\n DATE '2019-01-01' + CAST((i % 730) AS INTEGER) AS partition_record_date,\n \n -- Timestamps\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 1460) AS INTEGER)) DAY + INTERVAL (CAST((i % 86400) AS INTEGER)) SECOND AS created_timestamp,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST(((i + 100) % 1460) AS INTEGER)) DAY AS identified_timestamp,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 366) AS INTEGER)) DAY AS deployment_time,\n TIMESTAMP '2020-01-01 00:00:00' + INTERVAL (CAST((i % 1460) AS INTEGER)) DAY AS partition_record_ts,\n \n -- Arrays (VARCHAR[])\n CASE\n WHEN i % 4 = 0 THEN ARRAY['backend', 'urgent']\n WHEN i % 4 = 1 THEN ARRAY['frontend']\n WHEN i % 4 = 2 THEN ARRAY['api', 'backend']\n ELSE ARRAY[]::VARCHAR[]\n END AS tags,\n \n CASE\n WHEN i % 3 = 0 THEN ARRAY['user_' || ((i % 1000) + 1), 'user_' || ((i % 1000) + 2)]\n WHEN i % 3 = 1 THEN ARRAY['user_' || (i % 1000)]\n ELSE ARRAY[]::VARCHAR[]\n END AS owned_by_ids,\n \n CASE\n WHEN i % 5 = 0 THEN ARRAY['part_' || (i % 500), 'part_' || ((i % 500) + 1), 'part_' || ((i % 500) + 2)]\n WHEN i % 5 = 1 THEN ARRAY['part_' || (i % 500)]\n ELSE ARRAY[]::VARCHAR[]\n END AS part_ids,\n\n -- Number arrays (INTEGER[])\n CASE\n WHEN i % 4 = 0 THEN ARRAY[1, 2, 3]\n WHEN i % 4 = 1 THEN ARRAY[2, 4]\n WHEN i % 4 = 2 THEN ARRAY[1, 5]\n ELSE ARRAY[]::INTEGER[]\n END AS score_ids,\n \n -- JSON-like VARCHAR (to test JSON extraction)\n '{\"severity_id\": ' || ((i % 5) + 1) || ', \"impact\": \"' ||\n CASE (i % 3)\n WHEN 0 THEN 'high'\n WHEN 1 THEN 'medium'\n ELSE 'low'\n END ||\n '\", \"source\": \"' ||\n CASE (i % 3)\n WHEN 0 THEN 'web'\n WHEN 1 THEN 'mobile'\n ELSE 'api'\n END ||\n '\", \"reported_by\": \"' || 'user_' || (i % 100) || '\"}' AS metadata_json,\n \n '{\"stage\": \"' || \n CASE (i % 4)\n WHEN 0 THEN 'investigation'\n WHEN 1 THEN 'mitigation'\n WHEN 2 THEN 'resolution'\n ELSE 'closed'\n END || '\"}' AS stage_json,\n \n '{\"customers\": [' || \n '\"customer_' || (i % 1000) || '\", ' ||\n '\"customer_' || ((i % 1000) + 1) || '\"' ||\n ']}' AS impact_json,\n \n -- Derived-style fields (mirroring real widget expressions)\n (i % 10000) AS mtti_seconds,\n MONTHNAME(DATE '2020-01-01' + CAST((i % 365) AS INTEGER)) AS created_month,\n (i % 5) AS severity_id_int,\n \n -- Special values for NULL testing\n CASE WHEN i % 10 = 0 THEN NULL ELSE 'value_' || i END AS nullable_string,\n CASE WHEN i % 15 = 0 THEN NULL ELSE (i % 1000) END AS nullable_int,\n CASE WHEN i % 20 = 0 THEN NULL ELSE DATE '2020-01-01' + CAST((i % 365) AS INTEGER) END AS nullable_date,\n \n -- Edge case values\n CASE\n WHEN i % 100 = 0 THEN 'value with \"quotes\"'\n WHEN i % 100 = 1 THEN 'value with ''apostrophe'''\n WHEN i % 100 = 2 THEN 'value with \\\\ backslash'\n WHEN i % 100 = 3 THEN ''\n ELSE 'normal_value_' || i\n END AS edge_case_string\n \n FROM range(0, 1000000) AS t(i)\n `);\n \n console.log('✅ Created fact_all_types with 1M rows');\n}\n\n/**\n * Create dimension table: dim_user\n */\nexport async function createDimUserTable(): Promise<void> {\n console.log('Creating dim_user table...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS dim_user AS\n SELECT\n 'user_' || i AS user_id,\n 'User ' || i AS user_name,\n 'user' || i || '@example.com' AS user_email,\n CASE (i % 3)\n WHEN 0 THEN 'enterprise'\n WHEN 1 THEN 'pro'\n ELSE 'free'\n END AS user_segment,\n CASE (i % 4)\n WHEN 0 THEN 'engineering'\n WHEN 1 THEN 'product'\n WHEN 2 THEN 'support'\n ELSE 'sales'\n END AS user_department,\n DATE '2019-01-01' + CAST((i % 1095) AS INTEGER) AS user_created_date,\n (i % 2 = 0) AS is_active_user\n FROM range(0, 10000) AS t(i)\n `);\n \n console.log('✅ Created dim_user with 10K rows');\n}\n\n/**\n * Create dimension table: dim_part\n */\nexport async function createDimPartTable(): Promise<void> {\n console.log('Creating dim_part table...');\n \n await duckdbExec(`\n CREATE TABLE IF NOT EXISTS dim_part AS\n SELECT\n 'part_' || i AS part_id,\n 'Part ' || i AS part_name,\n CASE (i % 5)\n WHEN 0 THEN 'electronics'\n WHEN 1 THEN 'furniture'\n WHEN 2 THEN 'clothing'\n WHEN 3 THEN 'food'\n ELSE 'other'\n END AS product_category,\n CASE (i % 3)\n WHEN 0 THEN 'premium'\n WHEN 1 THEN 'standard'\n ELSE 'budget'\n END AS product_tier,\n (i % 1000) / 10.0 AS weight,\n (i % 10000) / 100.0 AS price,\n (i % 2 = 0) AS in_stock\n FROM range(0, 5000) AS t(i)\n `);\n \n console.log('✅ Created dim_part with 5K rows');\n}\n\n/**\n * Create all synthetic tables in one go\n */\nexport async function createAllSyntheticTables(): Promise<void> {\n const startTime = Date.now();\n \n await createFactAllTypesTable();\n await createDimUserTable();\n await createDimPartTable();\n \n const duration = ((Date.now() - startTime) / 1000).toFixed(2);\n console.log(`\\n✅ All synthetic tables created in ${duration}s`);\n}\n\n/**\n * Drop all synthetic tables (for cleanup)\n */\nexport async function dropSyntheticTables(): Promise<void> {\n console.log('Dropping synthetic tables...');\n \n await duckdbExec('DROP TABLE IF EXISTS fact_all_types');\n await duckdbExec('DROP TABLE IF EXISTS dim_user');\n await duckdbExec('DROP TABLE IF EXISTS dim_part');\n \n console.log('✅ Synthetic tables dropped');\n}\n\n/**\n * Verify tables exist and have data\n */\nexport async function verifySyntheticTables(): Promise<void> {\n const factCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM fact_all_types'\n )) as Array<{ count: number }>;\n const userCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM dim_user'\n )) as Array<{ count: number }>;\n const partCount = (await duckdbExec(\n 'SELECT COUNT(*) as count FROM dim_part'\n )) as Array<{ count: number }>;\n \n console.log('\\n📊 Synthetic Table Verification:');\n console.log(` fact_all_types: ${factCount[0].count} rows`);\n console.log(` dim_user: ${userCount[0].count} rows`);\n console.log(` dim_part: ${partCount[0].count} rows`);\n}\n\n"],"names":["createAllSyntheticTables","createDimPartTable","createDimUserTable","createFactAllTypesTable","dropSyntheticTables","verifySyntheticTables","console","log","duckdbExec","startTime","Date","now","duration","toFixed","factCount","userCount","partCount","count"],"mappings":"AAAA;;;;;CAKC;;;;;;;;IAuOqBA,wBAAwB;eAAxBA;;IAhCAC,kBAAkB;eAAlBA;;IA/BAC,kBAAkB;eAAlBA;;IAhKAC,uBAAuB;eAAvBA;;IA6OAC,mBAAmB;eAAnBA;;IAaAC,qBAAqB;eAArBA;;;4BAhQK;AAMpB,eAAeF;IACpBG,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqJlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeL;IACpBI,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;EAoBlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeN;IACpBK,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC,CAAC;;;;;;;;;;;;;;;;;;;;;EAqBlB,CAAC;IAEDF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeP;IACpB,MAAMS,YAAYC,KAAKC,GAAG;IAE1B,MAAMR;IACN,MAAMD;IACN,MAAMD;IAEN,MAAMW,WAAW,AAAC,CAAA,AAACF,CAAAA,KAAKC,GAAG,KAAKF,SAAQ,IAAK,IAAG,EAAGI,OAAO,CAAC;IAC3DP,QAAQC,GAAG,CAAC,CAAC,oCAAoC,EAAEK,SAAS,CAAC,CAAC;AAChE;AAKO,eAAeR;IACpBE,QAAQC,GAAG,CAAC;IAEZ,MAAMC,IAAAA,sBAAU,EAAC;IACjB,MAAMA,IAAAA,sBAAU,EAAC;IACjB,MAAMA,IAAAA,sBAAU,EAAC;IAEjBF,QAAQC,GAAG,CAAC;AACd;AAKO,eAAeF;IACpB,MAAMS,YAAa,MAAMN,IAAAA,sBAAU,EACjC;IAEF,MAAMO,YAAa,MAAMP,IAAAA,sBAAU,EACjC;IAEF,MAAMQ,YAAa,MAAMR,IAAAA,sBAAU,EACjC;IAGFF,QAAQC,GAAG,CAAC;IACZD,QAAQC,GAAG,CAAC,CAAC,mBAAmB,EAAEO,SAAS,CAAC,EAAE,CAACG,KAAK,CAAC,KAAK,CAAC;IAC3DX,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEQ,SAAS,CAAC,EAAE,CAACE,KAAK,CAAC,KAAK,CAAC;IACrDX,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAES,SAAS,CAAC,EAAE,CAACC,KAAK,CAAC,KAAK,CAAC;AACvD"}
@@ -262,6 +262,11 @@ const FACT_ALL_TYPES_SCHEMA = {
262
262
  sql: 'part_ids',
263
263
  type: 'string_array'
264
264
  },
265
+ {
266
+ name: 'score_ids',
267
+ sql: 'score_ids',
268
+ type: 'number_array'
269
+ },
265
270
  // JSON-derived dimensions (stored as VARCHAR)
266
271
  {
267
272
  name: 'metadata_json',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../meerkat-node/src/__tests__/comprehensive/synthetic/table-schemas.ts"],"sourcesContent":["/**\n * TableSchema Definitions for Synthetic Test Tables\n * \n * These schemas match the synthetic tables created in schema-setup.ts\n * and follow the same conventions as production Meerkat schemas.\n */\n\nexport const FACT_ALL_TYPES_SCHEMA = {\n name: 'fact_all_types',\n sql: 'SELECT * FROM fact_all_types',\n \n measures: [\n // Numeric measures\n { name: 'metric_bigint', sql: 'metric_bigint', type: 'number' },\n { name: 'small_bigint', sql: 'small_bigint', type: 'number' },\n { name: 'metric_numeric', sql: 'metric_numeric', type: 'number' },\n { name: 'precise_numeric', sql: 'precise_numeric', type: 'number' },\n { name: 'metric_double', sql: 'metric_double', type: 'number' },\n { name: 'metric_float', sql: 'metric_float', type: 'number' },\n { name: 'nullable_int', sql: 'nullable_int', type: 'number' },\n { name: 'mtti_seconds', sql: 'mtti_seconds', type: 'number' },\n { name: 'severity_id_int', sql: 'severity_id_int', type: 'number' },\n \n // Aggregate measures\n { name: 'count', sql: 'COUNT(*)', type: 'number' },\n { name: 'sum_metric_bigint', sql: 'SUM(metric_bigint)', type: 'number' },\n { name: 'avg_metric_double', sql: 'AVG(metric_double)', type: 'number' },\n { name: 'min_metric_numeric', sql: 'MIN(metric_numeric)', type: 'number' },\n { name: 'max_metric_numeric', sql: 'MAX(metric_numeric)', type: 'number' },\n { name: 'count_distinct_user_id', sql: 'COUNT(DISTINCT user_id)', type: 'number' },\n ],\n \n dimensions: [\n // ID fields\n { name: 'id_bigint', sql: 'id_bigint', type: 'number' },\n { name: 'incident_id', sql: 'incident_id', type: 'string' },\n { name: 'user_id', sql: 'user_id', type: 'string' },\n { name: 'part_id', sql: 'part_id', type: 'string' },\n \n // Boolean dimensions\n { name: 'is_deleted', sql: 'is_deleted', type: 'boolean' },\n { name: 'flag_boolean', sql: 'flag_boolean', type: 'boolean' },\n { name: 'is_active', sql: 'is_active', type: 'boolean' },\n { name: 'resolved_by', sql: 'resolved_by', type: 'number' },\n \n // String/enum dimensions\n { name: 'priority', sql: 'priority', type: 'string' },\n { name: 'status', sql: 'status', type: 'string' },\n { name: 'severity_label', sql: 'severity_label', type: 'string' },\n { name: 'environment', sql: 'environment', type: 'string' },\n { name: 'title', sql: 'title', type: 'string' },\n { name: 'description', sql: 'description', type: 'string' },\n { name: 'nullable_string', sql: 'nullable_string', type: 'string' },\n { name: 'edge_case_string', sql: 'edge_case_string', type: 'string' },\n \n // Date dimensions\n { name: 'record_date', sql: 'record_date', type: 'time' },\n { name: 'created_date', sql: 'created_date', type: 'time' },\n { name: 'mitigated_date', sql: 'mitigated_date', type: 'time' },\n { name: 'partition_record_date', sql: 'partition_record_date', type: 'time' },\n { name: 'nullable_date', sql: 'nullable_date', type: 'time' },\n \n // Timestamp dimensions\n { name: 'created_timestamp', sql: 'created_timestamp', type: 'time' },\n { name: 'identified_timestamp', sql: 'identified_timestamp', type: 'time' },\n { name: 'deployment_time', sql: 'deployment_time', type: 'time' },\n { name: 'partition_record_ts', sql: 'partition_record_ts', type: 'time' },\n \n // Array dimensions\n { name: 'tags', sql: 'tags', type: 'string_array' },\n { name: 'owned_by_ids', sql: 'owned_by_ids', type: 'string_array' },\n { name: 'part_ids', sql: 'part_ids', type: 'string_array' },\n \n // JSON-derived dimensions (stored as VARCHAR)\n { name: 'metadata_json', sql: 'metadata_json', type: 'string' },\n { name: 'stage_json', sql: 'stage_json', type: 'string' },\n { name: 'impact_json', sql: 'impact_json', type: 'string' },\n \n // Derived dimensions\n { name: 'created_month', sql: 'created_month', type: 'string' },\n \n // JSON extracted dimensions (examples of how to extract JSON fields)\n { \n name: 'severity_id_from_json', \n sql: \"CAST(json_extract_path_text(metadata_json, 'severity_id') AS INTEGER)\", \n type: 'number' \n },\n { \n name: 'impact_from_json', \n sql: \"json_extract_path_text(metadata_json, 'impact')\", \n type: 'string' \n },\n ],\n};\n\nexport const DIM_USER_SCHEMA = {\n name: 'dim_user',\n sql: 'SELECT * FROM dim_user',\n \n measures: [\n { name: 'count_users', sql: 'COUNT(*)', type: 'number' },\n { name: 'count_distinct_users', sql: 'COUNT(DISTINCT user_id)', type: 'number' },\n ],\n \n dimensions: [\n { name: 'user_id', sql: 'user_id', type: 'string' },\n { name: 'user_name', sql: 'user_name', type: 'string' },\n { name: 'user_email', sql: 'user_email', type: 'string' },\n { name: 'user_segment', sql: 'user_segment', type: 'string' },\n { name: 'user_department', sql: 'user_department', type: 'string' },\n { name: 'user_created_date', sql: 'user_created_date', type: 'time' },\n { name: 'is_active_user', sql: 'is_active_user', type: 'boolean' },\n ],\n \n joins: [\n {\n name: 'fact_all_types',\n relationship: 'belongsTo',\n sql: 'fact_all_types.user_id = dim_user.user_id',\n },\n ],\n};\n\nexport const DIM_PART_SCHEMA = {\n name: 'dim_part',\n sql: 'SELECT * FROM dim_part',\n \n measures: [\n { name: 'count_parts', sql: 'COUNT(*)', type: 'number' },\n { name: 'avg_weight', sql: 'AVG(weight)', type: 'number' },\n { name: 'avg_price', sql: 'AVG(price)', type: 'number' },\n { name: 'sum_weight', sql: 'SUM(weight)', type: 'number' },\n ],\n \n dimensions: [\n { name: 'part_id', sql: 'part_id', type: 'string' },\n { name: 'part_name', sql: 'part_name', type: 'string' },\n { name: 'product_category', sql: 'product_category', type: 'string' },\n { name: 'product_tier', sql: 'product_tier', type: 'string' },\n { name: 'weight', sql: 'weight', type: 'number' },\n { name: 'price', sql: 'price', type: 'number' },\n { name: 'in_stock', sql: 'in_stock', type: 'boolean' },\n ],\n \n joins: [\n {\n name: 'fact_all_types',\n relationship: 'belongsTo',\n sql: 'fact_all_types.part_id = dim_part.part_id',\n },\n ],\n};\n\n/**\n * Helper to get all schemas as an array\n */\nexport function getAllSchemas() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_USER_SCHEMA, DIM_PART_SCHEMA];\n}\n\n/**\n * Helper to get just the fact schema\n */\nexport function getFactSchema() {\n return FACT_ALL_TYPES_SCHEMA;\n}\n\n/**\n * Helper to get fact + one dimension\n */\nexport function getFactWithUserSchema() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_USER_SCHEMA];\n}\n\nexport function getFactWithPartSchema() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_PART_SCHEMA];\n}\n\n"],"names":["DIM_PART_SCHEMA","DIM_USER_SCHEMA","FACT_ALL_TYPES_SCHEMA","getAllSchemas","getFactSchema","getFactWithPartSchema","getFactWithUserSchema","name","sql","measures","type","dimensions","joins","relationship"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../meerkat-node/src/__tests__/comprehensive/synthetic/table-schemas.ts"],"sourcesContent":["/**\n * TableSchema Definitions for Synthetic Test Tables\n * \n * These schemas match the synthetic tables created in schema-setup.ts\n * and follow the same conventions as production Meerkat schemas.\n */\n\nexport const FACT_ALL_TYPES_SCHEMA = {\n name: 'fact_all_types',\n sql: 'SELECT * FROM fact_all_types',\n \n measures: [\n // Numeric measures\n { name: 'metric_bigint', sql: 'metric_bigint', type: 'number' },\n { name: 'small_bigint', sql: 'small_bigint', type: 'number' },\n { name: 'metric_numeric', sql: 'metric_numeric', type: 'number' },\n { name: 'precise_numeric', sql: 'precise_numeric', type: 'number' },\n { name: 'metric_double', sql: 'metric_double', type: 'number' },\n { name: 'metric_float', sql: 'metric_float', type: 'number' },\n { name: 'nullable_int', sql: 'nullable_int', type: 'number' },\n { name: 'mtti_seconds', sql: 'mtti_seconds', type: 'number' },\n { name: 'severity_id_int', sql: 'severity_id_int', type: 'number' },\n \n // Aggregate measures\n { name: 'count', sql: 'COUNT(*)', type: 'number' },\n { name: 'sum_metric_bigint', sql: 'SUM(metric_bigint)', type: 'number' },\n { name: 'avg_metric_double', sql: 'AVG(metric_double)', type: 'number' },\n { name: 'min_metric_numeric', sql: 'MIN(metric_numeric)', type: 'number' },\n { name: 'max_metric_numeric', sql: 'MAX(metric_numeric)', type: 'number' },\n { name: 'count_distinct_user_id', sql: 'COUNT(DISTINCT user_id)', type: 'number' },\n ],\n \n dimensions: [\n // ID fields\n { name: 'id_bigint', sql: 'id_bigint', type: 'number' },\n { name: 'incident_id', sql: 'incident_id', type: 'string' },\n { name: 'user_id', sql: 'user_id', type: 'string' },\n { name: 'part_id', sql: 'part_id', type: 'string' },\n \n // Boolean dimensions\n { name: 'is_deleted', sql: 'is_deleted', type: 'boolean' },\n { name: 'flag_boolean', sql: 'flag_boolean', type: 'boolean' },\n { name: 'is_active', sql: 'is_active', type: 'boolean' },\n { name: 'resolved_by', sql: 'resolved_by', type: 'number' },\n \n // String/enum dimensions\n { name: 'priority', sql: 'priority', type: 'string' },\n { name: 'status', sql: 'status', type: 'string' },\n { name: 'severity_label', sql: 'severity_label', type: 'string' },\n { name: 'environment', sql: 'environment', type: 'string' },\n { name: 'title', sql: 'title', type: 'string' },\n { name: 'description', sql: 'description', type: 'string' },\n { name: 'nullable_string', sql: 'nullable_string', type: 'string' },\n { name: 'edge_case_string', sql: 'edge_case_string', type: 'string' },\n \n // Date dimensions\n { name: 'record_date', sql: 'record_date', type: 'time' },\n { name: 'created_date', sql: 'created_date', type: 'time' },\n { name: 'mitigated_date', sql: 'mitigated_date', type: 'time' },\n { name: 'partition_record_date', sql: 'partition_record_date', type: 'time' },\n { name: 'nullable_date', sql: 'nullable_date', type: 'time' },\n \n // Timestamp dimensions\n { name: 'created_timestamp', sql: 'created_timestamp', type: 'time' },\n { name: 'identified_timestamp', sql: 'identified_timestamp', type: 'time' },\n { name: 'deployment_time', sql: 'deployment_time', type: 'time' },\n { name: 'partition_record_ts', sql: 'partition_record_ts', type: 'time' },\n \n // Array dimensions\n { name: 'tags', sql: 'tags', type: 'string_array' },\n { name: 'owned_by_ids', sql: 'owned_by_ids', type: 'string_array' },\n { name: 'part_ids', sql: 'part_ids', type: 'string_array' },\n { name: 'score_ids', sql: 'score_ids', type: 'number_array' },\n \n // JSON-derived dimensions (stored as VARCHAR)\n { name: 'metadata_json', sql: 'metadata_json', type: 'string' },\n { name: 'stage_json', sql: 'stage_json', type: 'string' },\n { name: 'impact_json', sql: 'impact_json', type: 'string' },\n \n // Derived dimensions\n { name: 'created_month', sql: 'created_month', type: 'string' },\n \n // JSON extracted dimensions (examples of how to extract JSON fields)\n { \n name: 'severity_id_from_json', \n sql: \"CAST(json_extract_path_text(metadata_json, 'severity_id') AS INTEGER)\", \n type: 'number' \n },\n { \n name: 'impact_from_json', \n sql: \"json_extract_path_text(metadata_json, 'impact')\", \n type: 'string' \n },\n ],\n};\n\nexport const DIM_USER_SCHEMA = {\n name: 'dim_user',\n sql: 'SELECT * FROM dim_user',\n \n measures: [\n { name: 'count_users', sql: 'COUNT(*)', type: 'number' },\n { name: 'count_distinct_users', sql: 'COUNT(DISTINCT user_id)', type: 'number' },\n ],\n \n dimensions: [\n { name: 'user_id', sql: 'user_id', type: 'string' },\n { name: 'user_name', sql: 'user_name', type: 'string' },\n { name: 'user_email', sql: 'user_email', type: 'string' },\n { name: 'user_segment', sql: 'user_segment', type: 'string' },\n { name: 'user_department', sql: 'user_department', type: 'string' },\n { name: 'user_created_date', sql: 'user_created_date', type: 'time' },\n { name: 'is_active_user', sql: 'is_active_user', type: 'boolean' },\n ],\n \n joins: [\n {\n name: 'fact_all_types',\n relationship: 'belongsTo',\n sql: 'fact_all_types.user_id = dim_user.user_id',\n },\n ],\n};\n\nexport const DIM_PART_SCHEMA = {\n name: 'dim_part',\n sql: 'SELECT * FROM dim_part',\n \n measures: [\n { name: 'count_parts', sql: 'COUNT(*)', type: 'number' },\n { name: 'avg_weight', sql: 'AVG(weight)', type: 'number' },\n { name: 'avg_price', sql: 'AVG(price)', type: 'number' },\n { name: 'sum_weight', sql: 'SUM(weight)', type: 'number' },\n ],\n \n dimensions: [\n { name: 'part_id', sql: 'part_id', type: 'string' },\n { name: 'part_name', sql: 'part_name', type: 'string' },\n { name: 'product_category', sql: 'product_category', type: 'string' },\n { name: 'product_tier', sql: 'product_tier', type: 'string' },\n { name: 'weight', sql: 'weight', type: 'number' },\n { name: 'price', sql: 'price', type: 'number' },\n { name: 'in_stock', sql: 'in_stock', type: 'boolean' },\n ],\n \n joins: [\n {\n name: 'fact_all_types',\n relationship: 'belongsTo',\n sql: 'fact_all_types.part_id = dim_part.part_id',\n },\n ],\n};\n\n/**\n * Helper to get all schemas as an array\n */\nexport function getAllSchemas() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_USER_SCHEMA, DIM_PART_SCHEMA];\n}\n\n/**\n * Helper to get just the fact schema\n */\nexport function getFactSchema() {\n return FACT_ALL_TYPES_SCHEMA;\n}\n\n/**\n * Helper to get fact + one dimension\n */\nexport function getFactWithUserSchema() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_USER_SCHEMA];\n}\n\nexport function getFactWithPartSchema() {\n return [FACT_ALL_TYPES_SCHEMA, DIM_PART_SCHEMA];\n}\n\n"],"names":["DIM_PART_SCHEMA","DIM_USER_SCHEMA","FACT_ALL_TYPES_SCHEMA","getAllSchemas","getFactSchema","getFactWithPartSchema","getFactWithUserSchema","name","sql","measures","type","dimensions","joins","relationship"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrev/meerkat-node",
3
- "version": "0.0.124",
3
+ "version": "0.0.127",
4
4
  "dependencies": {
5
5
  "@swc/helpers": "~0.5.0",
6
6
  "@devrev/meerkat-core": "*",
@@ -395,6 +395,135 @@ export declare const TEST_DATA_WITH_SAFE_ALIAS: ({
395
395
  vendors: null;
396
396
  })[];
397
397
  })[] | {
398
+ testName: string;
399
+ expectedSQL: string;
400
+ cubeInput: {
401
+ measures: string[];
402
+ filters: {
403
+ member: string;
404
+ operator: string;
405
+ }[];
406
+ dimensions: never[];
407
+ };
408
+ expectedOutput: ({
409
+ order_id: number;
410
+ customer_id: string;
411
+ product_id: string;
412
+ order_date: string;
413
+ order_amount: number;
414
+ orders__vendors: never[];
415
+ vendors: never[];
416
+ orders__order_date?: undefined;
417
+ } | {
418
+ customer_id: string;
419
+ order_amount: number;
420
+ order_date: string;
421
+ order_id: number;
422
+ orders__order_date: undefined;
423
+ orders__vendors: null;
424
+ product_id: string;
425
+ vendors: null;
426
+ })[];
427
+ }[] | {
428
+ testName: string;
429
+ expectedSQL: string;
430
+ cubeInput: {
431
+ measures: string[];
432
+ filters: {
433
+ member: string;
434
+ operator: string;
435
+ }[];
436
+ dimensions: never[];
437
+ };
438
+ expectedOutput: ({
439
+ order_id: number;
440
+ customer_id: string;
441
+ product_id: string;
442
+ order_date: string;
443
+ order_amount: number;
444
+ orders__vendors: string[];
445
+ vendors: string[];
446
+ orders__order_date?: undefined;
447
+ } | {
448
+ customer_id: string;
449
+ order_amount: number;
450
+ order_date: string;
451
+ order_id: number;
452
+ orders__order_date: undefined;
453
+ orders__vendors: string[];
454
+ product_id: string;
455
+ vendors: string[];
456
+ } | {
457
+ customer_id: null;
458
+ order_amount: number;
459
+ order_date: string;
460
+ order_id: number;
461
+ orders__order_date: undefined;
462
+ orders__vendors: string[];
463
+ product_id: string;
464
+ vendors: string[];
465
+ })[];
466
+ }[] | {
467
+ testName: string;
468
+ expectedSQL: string;
469
+ cubeInput: {
470
+ measures: string[];
471
+ filters: {
472
+ member: string;
473
+ operator: string;
474
+ }[];
475
+ dimensions: never[];
476
+ };
477
+ expectedOutput: {
478
+ customer_id: null;
479
+ order_amount: number;
480
+ order_date: string;
481
+ order_id: number;
482
+ orders__customer_id: null;
483
+ orders__order_date: undefined;
484
+ product_id: string;
485
+ vendors: string[];
486
+ }[];
487
+ }[] | {
488
+ testName: string;
489
+ expectedSQL: string;
490
+ cubeInput: {
491
+ measures: string[];
492
+ filters: {
493
+ member: string;
494
+ operator: string;
495
+ }[];
496
+ dimensions: never[];
497
+ };
498
+ expectedOutput: ({
499
+ order_id: number;
500
+ customer_id: string;
501
+ orders__customer_id: string;
502
+ product_id: string;
503
+ order_date: string;
504
+ order_amount: number;
505
+ vendors: string[];
506
+ orders__order_date?: undefined;
507
+ } | {
508
+ customer_id: string;
509
+ order_amount: number;
510
+ order_date: string;
511
+ order_id: number;
512
+ orders__customer_id: string;
513
+ orders__order_date: undefined;
514
+ product_id: string;
515
+ vendors: string[];
516
+ } | {
517
+ customer_id: string;
518
+ order_amount: number;
519
+ order_date: string;
520
+ order_id: number;
521
+ orders__customer_id: string;
522
+ orders__order_date: undefined;
523
+ product_id: string;
524
+ vendors: null;
525
+ })[];
526
+ }[] | {
398
527
  testName: string;
399
528
  expectedSQL: string;
400
529
  cubeInput: {
@@ -414,6 +414,135 @@ export declare const getTestData: () => ({
414
414
  vendors: null;
415
415
  })[];
416
416
  })[] | {
417
+ testName: string;
418
+ expectedSQL: string;
419
+ cubeInput: {
420
+ measures: string[];
421
+ filters: {
422
+ member: string;
423
+ operator: string;
424
+ }[];
425
+ dimensions: never[];
426
+ };
427
+ expectedOutput: ({
428
+ order_id: number;
429
+ customer_id: string;
430
+ product_id: string;
431
+ order_date: string;
432
+ order_amount: number;
433
+ orders__vendors: never[];
434
+ vendors: never[];
435
+ orders__order_date?: undefined;
436
+ } | {
437
+ customer_id: string;
438
+ order_amount: number;
439
+ order_date: string;
440
+ order_id: number;
441
+ orders__order_date: undefined;
442
+ orders__vendors: null;
443
+ product_id: string;
444
+ vendors: null;
445
+ })[];
446
+ }[] | {
447
+ testName: string;
448
+ expectedSQL: string;
449
+ cubeInput: {
450
+ measures: string[];
451
+ filters: {
452
+ member: string;
453
+ operator: string;
454
+ }[];
455
+ dimensions: never[];
456
+ };
457
+ expectedOutput: ({
458
+ order_id: number;
459
+ customer_id: string;
460
+ product_id: string;
461
+ order_date: string;
462
+ order_amount: number;
463
+ orders__vendors: string[];
464
+ vendors: string[];
465
+ orders__order_date?: undefined;
466
+ } | {
467
+ customer_id: string;
468
+ order_amount: number;
469
+ order_date: string;
470
+ order_id: number;
471
+ orders__order_date: undefined;
472
+ orders__vendors: string[];
473
+ product_id: string;
474
+ vendors: string[];
475
+ } | {
476
+ customer_id: null;
477
+ order_amount: number;
478
+ order_date: string;
479
+ order_id: number;
480
+ orders__order_date: undefined;
481
+ orders__vendors: string[];
482
+ product_id: string;
483
+ vendors: string[];
484
+ })[];
485
+ }[] | {
486
+ testName: string;
487
+ expectedSQL: string;
488
+ cubeInput: {
489
+ measures: string[];
490
+ filters: {
491
+ member: string;
492
+ operator: string;
493
+ }[];
494
+ dimensions: never[];
495
+ };
496
+ expectedOutput: {
497
+ customer_id: null;
498
+ order_amount: number;
499
+ order_date: string;
500
+ order_id: number;
501
+ orders__customer_id: null;
502
+ orders__order_date: undefined;
503
+ product_id: string;
504
+ vendors: string[];
505
+ }[];
506
+ }[] | {
507
+ testName: string;
508
+ expectedSQL: string;
509
+ cubeInput: {
510
+ measures: string[];
511
+ filters: {
512
+ member: string;
513
+ operator: string;
514
+ }[];
515
+ dimensions: never[];
516
+ };
517
+ expectedOutput: ({
518
+ order_id: number;
519
+ customer_id: string;
520
+ orders__customer_id: string;
521
+ product_id: string;
522
+ order_date: string;
523
+ order_amount: number;
524
+ vendors: string[];
525
+ orders__order_date?: undefined;
526
+ } | {
527
+ customer_id: string;
528
+ order_amount: number;
529
+ order_date: string;
530
+ order_id: number;
531
+ orders__customer_id: string;
532
+ orders__order_date: undefined;
533
+ product_id: string;
534
+ vendors: string[];
535
+ } | {
536
+ customer_id: string;
537
+ order_amount: number;
538
+ order_date: string;
539
+ order_id: number;
540
+ orders__customer_id: string;
541
+ orders__order_date: undefined;
542
+ product_id: string;
543
+ vendors: null;
544
+ })[];
545
+ }[] | {
417
546
  testName: string;
418
547
  expectedSQL: string;
419
548
  cubeInput: {