Esempio n. 1
0
    def test_groupby_numbers(self):
        self.assertParse("SELECT * GROUP BY 1;",
                         Select(qp.Wildcard(), group_by=qp.GroupBy([1], None)))

        self.assertParse(
            "SELECT * GROUP BY 2, 4, 5;",
            Select(qp.Wildcard(), group_by=qp.GroupBy([2, 4, 5], None)))
Esempio n. 2
0
 def test_groupby_many(self):
     self.assertParse(
         qSelect(qp.Wildcard(),
                 group_by=qp.GroupBy(
                     [qp.Column('a'),
                      qp.Column('b'),
                      qp.Column('c')], None)), "SELECT * GROUP BY a, b, c;")
Esempio n. 3
0
 def test_groupby_having(self):
     self.assertParse(
         qSelect(qp.Wildcard(),
                 group_by=qp.GroupBy(
                     [qp.Column('a')],
                     qp.Equal(qp.Function('sum', [qp.Column('position')]),
                              qp.Constant(0)))),
         "SELECT * GROUP BY a HAVING sum(position) = 0;")
Esempio n. 4
0
 def test_groupby_expr(self):
     self.assertParse(
         qSelect(qp.Wildcard(),
                 group_by=qp.GroupBy([
                     qp.Greater(qp.Function('length', [qp.Column('a')]),
                                qp.Constant(0)),
                     qp.Column('b')
                 ], None)), "SELECT * GROUP BY length(a) > 0, b;")
Esempio n. 5
0
class TestTranslationBalance(CompileSelectBase):

    group_by = qp.GroupBy([
        qp.Column('account'),
        qp.Function('account_sortkey', [qp.Column(name='account')])
    ], None)

    order_by = qp.OrderBy(
        [qp.Function('account_sortkey', [qp.Column('account')])], None)

    def test_balance(self):
        balance = self.parse("BALANCES;")
        select = qc.transform_balances(balance)
        self.assertEqual(
            qp.Select([
                qp.Target(qp.Column('account'), None),
                qp.Target(qp.Function('sum', [qp.Column('position')]), None),
            ], None, None, self.group_by, self.order_by, None, None, None,
                      None), select)

    def test_balance_with_units(self):
        balance = self.parse("BALANCES AT cost;")
        select = qc.transform_balances(balance)
        self.assertEqual(
            qp.Select([
                qp.Target(qp.Column('account'), None),
                qp.Target(
                    qp.Function(
                        'sum', [qp.Function('cost', [qp.Column('position')])]),
                    None)
            ], None, None, self.group_by, self.order_by, None, None, None,
                      None), select)

    def test_balance_with_units_and_from(self):
        balance = self.parse("BALANCES AT cost FROM year = 2014;")
        select = qc.transform_balances(balance)
        self.assertEqual(
            qp.Select([
                qp.Target(qp.Column('account'), None),
                qp.Target(
                    qp.Function(
                        'sum', [qp.Function('cost', [qp.Column('position')])]),
                    None),
            ],
                      qp.From(qp.Equal(qp.Column('year'), qp.Constant(2014)),
                              None, None, None), None, self.group_by,
                      self.order_by, None, None, None, None), select)
Esempio n. 6
0
 def test_groupby_one(self):
     self.assertParse(
         "SELECT * GROUP BY a;",
         Select(qp.Wildcard(), group_by=qp.GroupBy([qp.Column('a')], None)))
Esempio n. 7
0
class TestTranslationBalance(CompileSelectBase):

    group_by = qp.GroupBy([
        qp.Column('account'),
        qp.Function('account_sortkey', [qp.Column(name='account')])
    ], None)

    order_by = [
        qp.OrderBy(qp.Function('account_sortkey', [qp.Column('account')]),
                   qp.Ordering.ASC)
    ]

    def test_balance(self):
        balance = self.parse("BALANCES;")
        select = qc.transform_balances(balance)
        self.assertEqual(
            select,
            qp.Select([
                qp.Target(qp.Column('account'), None),
                qp.Target(qp.Function('sum', [qp.Column('position')]), None),
            ], None, None, self.group_by, self.order_by, None, None, None))

    def test_balance_with_units(self):
        balance = self.parse("BALANCES AT cost;")
        select = qc.transform_balances(balance)
        self.assertEqual(
            select,
            qp.Select([
                qp.Target(qp.Column('account'), None),
                qp.Target(
                    qp.Function(
                        'sum', [qp.Function('cost', [qp.Column('position')])]),
                    None)
            ], None, None, self.group_by, self.order_by, None, None, None))

    def test_balance_with_units_and_from(self):
        balance = self.parse("BALANCES AT cost FROM year = 2014;")
        select = qc.transform_balances(balance)
        self.assertEqual(
            select,
            qp.Select([
                qp.Target(qp.Column('account'), None),
                qp.Target(
                    qp.Function(
                        'sum', [qp.Function('cost', [qp.Column('position')])]),
                    None),
            ],
                      qp.From(qp.Equal(qp.Column('year'), qp.Constant(2014)),
                              None, None, None), None, self.group_by,
                      self.order_by, None, None, None))

    def test_print(self):
        self.assertCompile(qc.EvalPrint(None), "PRINT;")

    def test_print_from(self):
        self.assertCompile(
            qc.EvalPrint(
                qc.EvalFrom(
                    qc.Operator(qp.Equal, [
                        qe.YearEntryColumn(),
                        qc.EvalConstant(2014),
                    ]), None, None, None)), """PRINT FROM year = 2014;""")