Exemple #1
0
async def test_logic(conn, capsys):
    a, b, c, d = await conn.fetchrow_b('SELECT :a, :b, :c, :d::int',
                                       a=funcs.cast(5, 'int') * 5,
                                       b=funcs.sqrt(676),
                                       c=S('a').cat('b'),
                                       d=987_654)
    assert a == 25
    assert b == 26
    assert c == 'ab'
    assert d == 987_654
    assert 'SELECT' not in capsys.readouterr().out
Exemple #2
0
 (lambda: V('x').contains(V('y')), 'x @> y'),
 (lambda: V('x').overlap(V('y')), 'x && y'),
 (lambda: V('x').contained_by(V('y')), 'x <@ y'),
 (lambda: V('x').like('y'), 'x LIKE $1'),
 (lambda: V('x').ilike('y'), 'x ILIKE $1'),
 (lambda: V('x').cat('y'), 'x || $1'),
 (lambda: V('x').comma(V('y')), 'x, y'),
 (lambda: V('a').asc(), 'a ASC'),
 (lambda: V('a').desc(), 'a DESC'),
 (lambda: V('a').nulls_first(), 'a NULLS FIRST'),
 (lambda: V('a').nulls_last(), 'a NULLS LAST'),
 (lambda: V('a').desc().nulls_first(), 'a DESC NULLS FIRST'),
 (lambda: ~V('a'), 'not(a)'),
 (lambda: -V('a'), '-a'),
 (lambda: V('x').operate(RawDangerous(' foobar '), V('y')), 'x foobar y'),
 (lambda: funcs.sqrt(4), '|/ $1'),
 (lambda: funcs.abs(4), '@ $1'),
 (lambda: funcs.factorial(4), '$1!'),
 (lambda: funcs.count('*'), 'COUNT(*)'),
 (lambda: funcs.count(V('*')), 'COUNT(*)'),
 (lambda: funcs.count('*').as_('foobar'), 'COUNT(*) AS foobar'),
 (lambda: funcs.upper('a'), 'upper($1)'),
 (lambda: funcs.lower('a'), 'lower($1)'),
 (lambda: funcs.lower('a') > 4, 'lower($1) > $2'),
 (lambda: funcs.length('a'), 'length($1)'),
 (lambda: funcs.position('a', 'b'), 'position($1 in $2)'),
 (lambda: funcs.substring('a', 'b'), 'substring($1 from $2)'),
 (lambda: funcs.substring('x', 2, 3), 'substring($1 from $2 for $3)'),
 (lambda: funcs.extract(V('epoch').from_(V('foo.bar'))).cast('int'), 'extract(epoch from foo.bar)::int'),
 (lambda: funcs.AND('a', 'b', 'c'), '$1 AND $2 AND $3'),
 (lambda: funcs.AND('a', 'b', V('c') | V('d')), '$1 AND $2 AND (c OR d)'),