Esempio n. 1
0
 def test_parser_select_one(self):
     tokens = lex_sql("""SELECT 1;""")
     token_stream = (t for t in tokens)
     result = parse_select(token_stream)
     select_statement = result[0]
     assert select_statement
     assert select_statement.token.value == 'SELECT'
     assert select_statement.token.type == TOKENS.KEYWORD
Esempio n. 2
0
    def test_parser_select_subselect(self):
        tokens = lex_sql("""SELECT (SELECT 1);""")
        token_stream = (t for t in tokens)
        result = parse_select(token_stream)
        select_statement = result[0]

        select_columns = select_statement.columns
        assert len(select_columns) == 1, \
            'Expected {} select_columns but got {}'\
            .format(1, len(select_columns))
        column_1 = select_columns[0]
        assert column_1.tokens[0].value == '(', column_1
        assert column_1.identifier == '', column_1
Esempio n. 3
0
    def test_parser_select_expression_with_count_alias(self):
        tokens = lex_sql("""SELECT 1 + COUNT(*) as ONE;""")
        token_stream = (t for t in tokens)
        result = parse_select(token_stream)
        select_statement = result[0]

        select_columns = select_statement.columns
        assert len(select_columns) == 1, \
            'Expected {} select_columns but got {}'\
            .format(1, len(select_columns))
        column_1 = select_columns[0]
        assert len(column_1.tokens) == 8, column_1.tokens
        assert column_1.tokens[0].value == '1', column_1
        assert column_1.identifier == 'ONE', column_1
Esempio n. 4
0
 def test_parser_select_two(self):
     tokens = lex_sql("""SELECT 1, 2;""")
     token_stream = (t for t in tokens)
     result = parse_select(token_stream)
     select_statement = result[0]
     assert select_statement
     select_columns = select_statement.columns
     # print(select_columns)
     assert len(select_columns) == 2, \
         'Expected {} select_columns but got {}'\
         .format(2, len(select_columns))
     column_1 = select_columns[0]
     assert column_1.tokens[0].value == '1', column_1
     column_2 = select_columns[1]
     assert column_2.tokens[0].value == '2', column_2
Esempio n. 5
0
    def test_parser_select_expression_alias(self):
        tokens = lex_sql("""SELECT 1 + 1 as ONE;""")
        token_stream = (t for t in tokens)
        result = parse_select(token_stream)
        select_statement = result[0]

        select_columns = select_statement.columns
        assert len(select_columns) == 1, \
            'Expected {} select_columns but got {}'\
            .format(1, len(select_columns))
        column_1 = select_columns[0]

        # TODO(john): This includes 'as ONE', is that right? I'm
        # thinking it is, but the expression field should have a
        # parsed representation (which will naturally omit it,
        # probably?)
        assert len(column_1.tokens) == 5, column_1.tokens
        assert column_1.tokens[0].value == '1', column_1
        assert column_1.identifier == 'ONE', column_1