Exemple #1
0
    def test_nvl(self):
        q = Q.from_("abc").select(fn.NVL(F("foo"), 0))

        self.assertEqual('SELECT NVL("foo",0) FROM "abc"', str(q))
Exemple #2
0
    def test__case__else(self):
        q = Q.from_('abc').select(Case().when(F('foo') == 1, 'a').else_('b'))

        self.assertEqual(
            "SELECT CASE WHEN \"foo\"=1 THEN 'a' ELSE 'b' END FROM \"abc\"",
            str(q))
Exemple #3
0
    def test__addition__decimal(self):
        q1 = Q.from_('abc').select(F('a') + 1.0)
        q2 = Q.from_(self.t).select(self.t.a + 1.0)

        self.assertEqual('SELECT \"a\"+1.0 FROM \"abc\"', str(q1))
        self.assertEqual('SELECT \"a\"+1.0 FROM \"abc\"', str(q2))
Exemple #4
0
    def test__avg(self):
        q = Q.from_('abc').select(fn.Avg(F('foo')))

        self.assertEqual('SELECT AVG(\"foo\") FROM \"abc\"', str(q))
Exemple #5
0
    def test__stddev(self):
        q = Q.from_('abc').select(fn.StdDev(F('foo')))

        self.assertEqual('SELECT STDDEV(\"foo\") FROM \"abc\"', str(q))
Exemple #6
0
    def test__modulus__number(self):
        q1 = Q.from_('abc').select(F('a') % 2)
        q2 = Q.from_(self.t).select(self.t.a % 2)

        self.assertEqual('SELECT MOD(\"a\",2) FROM \"abc\"', str(q1))
        self.assertEqual('SELECT MOD(\"a\",2) FROM \"abc\"', str(q2))
Exemple #7
0
    def test__count(self):
        q = Q.from_('abc').select(fn.Count(F('foo')))

        self.assertEqual('SELECT COUNT(\"foo\") FROM \"abc\"', str(q))
Exemple #8
0
    def test__multiplication__right(self):
        q1 = Q.from_('abc').select(1 * F('a'))
        q2 = Q.from_(self.t).select(1 * self.t.a)

        self.assertEqual('SELECT 1*\"a\" FROM \"abc\"', str(q1))
        self.assertEqual('SELECT 1*\"a\" FROM \"abc\"', str(q2))
Exemple #9
0
    def test__division__fields(self):
        q1 = Q.from_('abc').select(F('a') / F('b'))
        q2 = Q.from_(self.t).select(self.t.a / self.t.b)

        self.assertEqual('SELECT \"a\"/\"b\" FROM \"abc\"', str(q1))
        self.assertEqual('SELECT \"a\"/\"b\" FROM \"abc\"', str(q2))
Exemple #10
0
    def test__subtraction__decimal(self):
        q1 = Q.from_("abc").select(F("a") - 1.0)
        q2 = Q.from_(self.t).select(self.t.a - 1.0)

        self.assertEqual('SELECT "a"-1.0 FROM "abc"', str(q1))
        self.assertEqual('SELECT "a"-1.0 FROM "abc"', str(q2))
Exemple #11
0
    def test__multiplication__decimal(self):
        q1 = Q.from_('abc').select(F('a') * 1.0)
        q2 = Q.from_(self.t).select(self.t.a * 1.0)

        self.assertEqual('SELECT \"a\"*1.0 FROM \"abc\"', str(q1))
        self.assertEqual('SELECT \"a\"*1.0 FROM \"abc\"', str(q2))
Exemple #12
0
    def test__subtraction__number(self):
        q1 = Q.from_("abc").select(F("a") - 1)
        q2 = Q.from_(self.t).select(self.t.a - 1)

        self.assertEqual('SELECT "a"-1 FROM "abc"', str(q1))
        self.assertEqual('SELECT "a"-1 FROM "abc"', str(q2))
Exemple #13
0
    def test__subtraction__fields(self):
        q1 = Q.from_("abc").select(F("a") - F("b"))
        q2 = Q.from_(self.t).select(self.t.a - self.t.b)

        self.assertEqual('SELECT "a"-"b" FROM "abc"', str(q1))
        self.assertEqual('SELECT "a"-"b" FROM "abc"', str(q2))
Exemple #14
0
    def test__addition__right(self):
        q1 = Q.from_("abc").select(1 + F("a"))
        q2 = Q.from_(self.t).select(1 + self.t.a)

        self.assertEqual('SELECT 1+"a" FROM "abc"', str(q1))
        self.assertEqual('SELECT 1+"a" FROM "abc"', str(q2))
Exemple #15
0
    def test__exponent__number(self):
        q1 = Q.from_('abc').select(F('a')**2)
        q2 = Q.from_(self.t).select(self.t.a**2)

        self.assertEqual('SELECT POW(\"a\",2) FROM \"abc\"', str(q1))
        self.assertEqual('SELECT POW(\"a\",2) FROM \"abc\"', str(q2))
Exemple #16
0
    def test__division__number(self):
        q1 = Q.from_('abc').select(F('a') / 1)
        q2 = Q.from_(self.t).select(self.t.a / 1)

        self.assertEqual('SELECT \"a\"/1 FROM \"abc\"', str(q1))
        self.assertEqual('SELECT \"a\"/1 FROM \"abc\"', str(q2))
Exemple #17
0
    def test__exponent__decimal(self):
        q1 = Q.from_('abc').select(F('a')**0.5)
        q2 = Q.from_(self.t).select(self.t.a**0.5)

        self.assertEqual('SELECT POW(\"a\",0.5) FROM \"abc\"', str(q1))
        self.assertEqual('SELECT POW(\"a\",0.5) FROM \"abc\"', str(q2))
Exemple #18
0
    def test__division__right(self):
        q1 = Q.from_('abc').select(1 / F('a'))
        q2 = Q.from_(self.t).select(1 / self.t.a)

        self.assertEqual('SELECT 1/\"a\" FROM \"abc\"', str(q1))
        self.assertEqual('SELECT 1/\"a\" FROM \"abc\"', str(q2))
Exemple #19
0
    def test__floor(self):
        q1 = Q.from_('abc').select(fn.Floor(F('foo')))
        q2 = Q.from_(self.t).select(fn.Floor(self.t.foo))

        self.assertEqual('SELECT FLOOR(\"foo\") FROM \"abc\"', str(q1))
        self.assertEqual('SELECT FLOOR(\"foo\") FROM \"abc\"', str(q2))
Exemple #20
0
    def test__complex_op(self):
        q1 = Q.from_('abc').select(2 + 1 / F('a') - 5)
        q2 = Q.from_(self.t).select(2 + 1 / self.t.a - 5)

        self.assertEqual('SELECT 2+1/\"a\"-5 FROM \"abc\"', str(q1))
        self.assertEqual('SELECT 2+1/\"a\"-5 FROM \"abc\"', str(q2))
Exemple #21
0
    def test__sum(self):
        q = Q.from_('abc').select(fn.Sum(F('foo')))

        self.assertEqual('SELECT SUM(\"foo\") FROM \"abc\"', str(q))
Exemple #22
0
    def test__complex_op_div_parentheses(self):
        q1 = Q.from_('abc').select((F('a') + 1) / (F('b') - 5))
        q2 = Q.from_(self.t).select((self.t.a + 1) / (self.t.b - 5))

        self.assertEqual('SELECT (\"a\"+1)/(\"b\"-5) FROM \"abc\"', str(q1))
        self.assertEqual('SELECT (\"a\"+1)/(\"b\"-5) FROM \"abc\"', str(q2))
Exemple #23
0
    def test__max(self):
        q = Q.from_('abc').select(fn.Max(F('foo')))

        self.assertEqual('SELECT MAX(\"foo\") FROM \"abc\"', str(q))
Exemple #24
0
    def test__complex_op_div_no_parentheses(self):
        q = Q.from_('abc').select(F('a') + 1 / F('b') - 5)

        self.assertEqual('SELECT \"a\"+1/\"b\"-5 FROM \"abc\"', str(q))
Exemple #25
0
    def test__approx_percentile(self):
        q = Q.from_('abc').select(fn.ApproximatePercentile(F('foo'), 0.5))

        self.assertEqual(
            'SELECT APPROXIMATE_PERCENTILE(\"foo\" USING PARAMETERS percentile=0.5) FROM \"abc\"',
            str(q))
Exemple #26
0
    def test__arithmetic_equality(self):
        q1 = Q.from_('abc').select(F('a') / 2 == 2)
        q2 = Q.from_(self.t).select(self.t.a / 2 == 2)

        self.assertEqual('SELECT "a"/2=2 FROM \"abc\"', str(q1))
        self.assertEqual('SELECT \"a\"/2=2 FROM \"abc\"', str(q2))
Exemple #27
0
    def test__addition__fields(self):
        q1 = Q.from_('abc').select(F('a') + F('b'))
        q2 = Q.from_(self.t).select(self.t.a + self.t.b)

        self.assertEqual('SELECT \"a\"+\"b\" FROM \"abc\"', str(q1))
        self.assertEqual('SELECT \"a\"+\"b\" FROM \"abc\"', str(q2))
Exemple #28
0
    def test__arithmetic_with_function(self):
        q1 = Q.from_('abc').select(fn.Sum(F('foo')) + 1)
        q2 = Q.from_(self.t).select(fn.Sum(self.t.foo) + 1)

        self.assertEqual('SELECT SUM(\"foo\")+1 FROM \"abc\"', str(q1))
        self.assertEqual('SELECT SUM(\"foo\")+1 FROM \"abc\"', str(q2))
Exemple #29
0
class DateFunctionsTests(unittest.TestCase):
    dt = F('dt')
    t = T('abc')

    def _test_extract_datepart(self, date_part):
        q = Q.from_(self.t).select(fn.Extract(date_part, self.t.foo))

        self.assertEqual(
            "SELECT EXTRACT(%s FROM \"foo\") FROM \"abc\"" % date_part.value,
            str(q))

    def test_extract_microsecond(self):
        self._test_extract_datepart(DatePart.microsecond)

    def test_extract_second(self):
        self._test_extract_datepart(DatePart.second)

    def test_extract_minute(self):
        self._test_extract_datepart(DatePart.minute)

    def test_extract_hour(self):
        self._test_extract_datepart(DatePart.hour)

    def test_extract_day(self):
        self._test_extract_datepart(DatePart.day)

    def test_extract_week(self):
        self._test_extract_datepart(DatePart.week)

    def test_extract_month(self):
        self._test_extract_datepart(DatePart.month)

    def test_extract_quarter(self):
        self._test_extract_datepart(DatePart.quarter)

    def test_extract_year(self):
        self._test_extract_datepart(DatePart.year)

    def test_timestampadd(self):
        a = fn.TimestampAdd('year', 1, '2017-10-01')
        self.assertEqual(str(a), "TIMESTAMPADD('year',1,'2017-10-01')")

    def test_time_diff(self):
        a = fn.TimeDiff('18:00:00', '10:00:00')
        self.assertEqual(str(a), "TIMEDIFF('18:00:00','10:00:00')")

    def test_date_add(self):
        a = fn.DateAdd('year', 1, '2017-10-01')
        self.assertEqual(str(a), "DATE_ADD('year',1,'2017-10-01')")

    def test_now(self):
        query = Query.select(fn.Now())

        self.assertEqual("SELECT NOW()", str(query))

    def test_utc_timestamp(self):
        query = Query.select(fn.UtcTimestamp())

        self.assertEqual("SELECT UTC_TIMESTAMP()", str(query))

    def test_current_date(self):
        query = Query.select(fn.CurDate())

        self.assertEqual("SELECT CURRENT_DATE()", str(query))

    def test_current_time(self):
        query = Query.select(fn.CurTime())

        self.assertEqual("SELECT CURRENT_TIME()", str(query))

    def test_current_timestamp(self):
        query = Query.select(fn.CurTimestamp())

        self.assertEqual("SELECT CURRENT_TIMESTAMP", str(query))

    def test_current_timestamp_with_alias(self):
        query = Query.select(fn.CurTimestamp('ts'))

        self.assertEqual("SELECT CURRENT_TIMESTAMP \"ts\"", str(query))

    def test_to_date(self):
        q1 = fn.ToDate('2019-06-21', 'yyyy-mm-dd')
        q2 = Query.from_(self.t).select(fn.ToDate('2019-06-21', 'yyyy-mm-dd'))
        q3 = Query.from_(self.t).select(fn.ToDate(F('foo'), 'yyyy-mm-dd'))

        self.assertEqual(str(q1), "TO_DATE('2019-06-21','yyyy-mm-dd')")
        self.assertEqual(
            str(q2), "SELECT TO_DATE('2019-06-21','yyyy-mm-dd') FROM \"abc\"")
        self.assertEqual(str(q3),
                         "SELECT TO_DATE(\"foo\",'yyyy-mm-dd') FROM \"abc\"")
Exemple #30
0
    def test_nullif(self):
        q = Q.from_("abc").select(fn.NullIf(F("foo"), 0))

        self.assertEqual('SELECT NULLIF("foo",0) FROM "abc"', str(q))