Exemplo n.º 1
0
 def test_other_literals(self):
     self.assert_parsed_select(
         'SELECT true, false, null',
         tq_ast.Select([
             tq_ast.SelectField(tq_ast.Literal(True), None, None),
             tq_ast.SelectField(tq_ast.Literal(False), None, None),
             tq_ast.SelectField(tq_ast.Literal(None), None, None)
         ], None, None, None, None, None, None, None))
Exemplo n.º 2
0
 def test_having(self):
     self.assert_parsed_select(
         'SELECT foo + 2 FROM bar HAVING foo > 3',
         tq_ast.Select([
             tq_ast.SelectField(
                 tq_ast.BinaryOperator('+', tq_ast.ColumnId('foo'),
                                       tq_ast.Literal(2)), None, None)
         ], tq_ast.TableId('bar', None), None, None,
                       tq_ast.BinaryOperator('>', tq_ast.ColumnId('foo'),
                                             tq_ast.Literal(3)), None, None,
                       None))
Exemplo n.º 3
0
 def test_count_star(self):
     self.assert_parsed_select(
         'SELECT COUNT(*), COUNT(((*))) FROM table',
         tq_ast.Select([
             tq_ast.SelectField(
                 tq_ast.FunctionCall('count', [tq_ast.Literal(1)]), None,
                 None),
             tq_ast.SelectField(
                 tq_ast.FunctionCall('count', [tq_ast.Literal(1)]), None,
                 None)
         ], tq_ast.TableId('table', None), None, None, None, None, None,
                       None))
Exemplo n.º 4
0
 def test_single_clause_case(self):
     self.assert_parsed_select(
         'SELECT CASE WHEN x = 4 THEN 16 END',
         tq_ast.Select([
             tq_ast.SelectField(
                 tq_ast.CaseExpression([
                     tq_ast.CaseClause(
                         tq_ast.BinaryOperator('=', tq_ast.ColumnId('x'),
                                               tq_ast.Literal(4)),
                         tq_ast.Literal(16)),
                 ]), None, None)
         ], None, None, None, None, None, None, None))
Exemplo n.º 5
0
 def test_cross_join(self):
     self.assert_parsed_select(
         'SELECT 0 FROM table1 t1 CROSS JOIN table2 t2',
         tq_ast.Select(
             [tq_ast.SelectField(tq_ast.Literal(0), None, None)],
             tq_ast.Join(tq_ast.TableId('table1', 't1'), [
                 tq_ast.PartialJoin(tq_ast.TableId('table2', 't2'),
                                    tq_ast.JoinType.CROSS, None),
             ]), None, None, None, None, None, None))
Exemplo n.º 6
0
 def compile_helper(remaining_clauses):
     if len(remaining_clauses) == 0:
         return tq_ast.Literal(value=None)
     clause = remaining_clauses[0]
     return tq_ast.FunctionCall(
         name='if',
         args=[
             clause.condition, clause.result_expr,
             compile_helper(remaining_clauses[1:])
         ])
Exemplo n.º 7
0
 def test_multiple_select(self):
     self.assert_parsed_select(
         'SELECT a AS foo, b bar, a + 1 baz FROM test_table',
         tq_ast.Select([
             tq_ast.SelectField(tq_ast.ColumnId('a'), 'foo', None),
             tq_ast.SelectField(tq_ast.ColumnId('b'), 'bar', None),
             tq_ast.SelectField(
                 tq_ast.BinaryOperator('+', tq_ast.ColumnId('a'),
                                       tq_ast.Literal(1)), 'baz', None)
         ], tq_ast.TableId('test_table', None), None, None, None, None,
                       None, None))
Exemplo n.º 8
0
 def test_redundant_commas_allowed(self):
     # In most cases, a comma at the end of a comma-separated list is OK.
     self.assert_parsed_select(
         'SELECT foo IN (1, 2, 3,), bar, FROM table1, table2, '
         'GROUP BY col1, col2,',
         tq_ast.Select([
             tq_ast.SelectField(
                 tq_ast.FunctionCall('in', [
                     tq_ast.ColumnId('foo'),
                     tq_ast.Literal(1),
                     tq_ast.Literal(2),
                     tq_ast.Literal(3)
                 ]), None, None),
             tq_ast.SelectField(tq_ast.ColumnId('bar'), None, None)
         ],
                       tq_ast.TableUnion([
                           tq_ast.TableId('table1', None),
                           tq_ast.TableId('table2', None)
                       ]), None,
                       [tq_ast.ColumnId('col1'),
                        tq_ast.ColumnId('col2')], None, None, None, None))
Exemplo n.º 9
0
 def test_join_each(self):
     self.assert_parsed_select(
         'SELECT 0 FROM table1 t1 JOIN EACH table2 t2 ON t1.foo = t2.bar',
         tq_ast.Select(
             [tq_ast.SelectField(tq_ast.Literal(0), None, None)],
             tq_ast.Join(tq_ast.TableId('table1', 't1'), [
                 tq_ast.PartialJoin(
                     tq_ast.TableId('table2', 't2'),
                     tq_ast.JoinType.INNER,
                     tq_ast.BinaryOperator('=', tq_ast.ColumnId('t1.foo'),
                                           tq_ast.ColumnId('t2.bar')),
                 ),
             ]), None, None, None, None, None, None))
Exemplo n.º 10
0
def p_float_literal(p):
    """constant : FLOAT"""
    p[0] = tq_ast.Literal(p[1])
Exemplo n.º 11
0
def p_string_literal(p):
    """constant : STRING"""
    p[0] = tq_ast.Literal(p[1])
Exemplo n.º 12
0
def p_true_literal(p):
    """constant : TRUE"""
    p[0] = tq_ast.Literal(True)
Exemplo n.º 13
0
 def test_string_literal(self):
     self.assert_parsed_select(
         'SELECT "Hello" AS foo',
         tq_ast.Select(
             [tq_ast.SelectField(tq_ast.Literal('Hello'), 'foo', None)],
             None, None, None, None, None, None, None))
Exemplo n.º 14
0
def p_int_literal(p):
    """constant : INTEGER"""
    p[0] = tq_ast.Literal(p[1])
Exemplo n.º 15
0
def literal(value):
    return tq_ast.Literal(value)
Exemplo n.º 16
0
def p_false_literal(p):
    """constant : FALSE"""
    p[0] = tq_ast.Literal(False)
Exemplo n.º 17
0
def p_case_clause_else(p):
    """case_clause_else : ELSE expression"""
    p[0] = tq_ast.CaseClause(tq_ast.Literal(True), p[2])
Exemplo n.º 18
0
def p_null_literal(p):
    """constant : NULL"""
    p[0] = tq_ast.Literal(None)
Exemplo n.º 19
0
 def test_group_each_by(self):
     self.assert_parsed_select(
         'SELECT 0 FROM table GROUP EACH BY foo',
         tq_ast.Select([tq_ast.SelectField(tq_ast.Literal(0), None, None)],
                       tq_ast.TableId('table', None), None,
                       [tq_ast.ColumnId('foo')], None, None, None, None))
Exemplo n.º 20
0
def p_expression_count_star(p):
    """expression : COUNT LPAREN parenthesized_star RPAREN"""
    # Treat COUNT(*) as COUNT(1).
    p[0] = tq_ast.FunctionCall('count', [tq_ast.Literal(1)])