def test_2_statements_2nd_current():
    suggestions = suggest_type(
        "select * from a; select * from ", "select * from a; select * from "
    )
    assert set(suggestions) == set([FromClauseItem(schema=None), Schema()])

    suggestions = suggest_type(
        "select * from a; select  from b", "select * from a; select "
    )
    assert (
        set(suggestions)
        == set(
            [
                Column(table_refs=((None, "b", None, False),), qualifiable=True),
                Function(schema=None),
                Keyword("SELECT"),
            ]
        )
    )

    # Should work even if first statement is invalid
    suggestions = suggest_type(
        "select * from; select * from ", "select * from; select * from "
    )
    assert set(suggestions) == set([FromClauseItem(schema=None), Schema()])
def test_specials_suggestion_datatype(sql, rel_type):
    suggestions = suggest_type(sql, sql)
    if rel_type == Function:
        assert suggestions == (Schema(), rel_type(schema=None, usage="special"))
    else:
        assert suggestions == (Schema(), rel_type(schema=None))

    sql = sql + 'abc.'
    suggestions = suggest_type(sql, sql)
    if rel_type == Function:
        assert suggestions == (rel_type(schema='abc', usage="special"),)
    else:
        assert suggestions == (rel_type(schema='abc'),)
def test_left_join_with_comma():
    text = "select * from foo f left join bar b,"
    suggestions = suggest_type(text, text)
    # tbls should also include (None, 'bar', 'b', False)
    # but there's a bug with commas
    tbls = tuple([(None, "foo", "f", False)])
    assert (
        set(suggestions)
        == set([FromClauseItem(schema=None, table_refs=tbls), Schema()])
    )
def test_join_suggests_tables_and_schemas(tbl_alias, join_type):
    text = "SELECT * FROM abc {0} {1} JOIN ".format(tbl_alias, join_type)
    suggestion = suggest_type(text, text)
    tbls = tuple([(None, "abc", tbl_alias or None, False)])
    assert (
        set(suggestion)
        == set(
            [FromClauseItem(schema=None, table_refs=tbls), Schema(), Join(tbls, None)]
        )
    )
def test_3_statements_2nd_current():
    suggestions = suggest_type(
        "select * from a; select * from ; select * from c",
        "select * from a; select * from ",
    )
    assert set(suggestions) == set([FromClauseItem(schema=None), Schema()])

    suggestions = suggest_type(
        "select * from a; select  from b; select * from c", "select * from a; select "
    )
    assert set(suggestions) == cols_etc("b", last_keyword="SELECT")
def test_suggest_after_join_with_one_table(expression):
    suggestions = suggest_type(expression, expression)
    tables = ((None, "foo", None, False),)
    assert (
        set(suggestions)
        == set(
            [
                FromClauseItem(schema=None, table_refs=tables),
                Join(((None, "foo", None, False),), None),
                Schema(),
            ]
        )
    )
def test_suggest_after_join_with_two_tables(expression):
    suggestions = suggest_type(expression, expression)
    tables = tuple([(None, "foo", None, False), (None, "bar", None, False)])
    assert (
        set(suggestions)
        == set(
            [
                FromClauseItem(schema=None, table_refs=tables),
                Join(tables, None),
                Schema(),
            ]
        )
    )
def test_sub_select_table_name_completion_with_outer_table(expression):
    suggestion = suggest_type(expression, expression)
    tbls = tuple([(None, "foo", None, False)])
    assert (
        set(suggestion) == set([FromClauseItem(schema=None, table_refs=tbls), Schema()])
    )
def test_sub_select_table_name_completion(expression):
    suggestion = suggest_type(expression, expression)
    assert set(suggestion) == set([FromClauseItem(schema=None), Schema()])
Esempio n. 10
0
def test_schemas_views_tables_suggested_after_slash_d():
    sql = "\\d "
    suggestions = suggest_type(sql, sql)
    expected = (Schema(), Table(schema=None), View(schema=None))
    assert expected == suggestions
Esempio n. 11
0
def test_alter_column_type_suggests_types():
    q = "ALTER TABLE foo ALTER COLUMN bar TYPE "
    assert (
        set(suggest_type(q, q))
        == set([Datatype(schema=None), Table(schema=None), Schema()])
    )
Esempio n. 12
0
def test_drop_schema_suggests_schemas():
    sql = "DROP SCHEMA "
    assert suggest_type(sql, sql) == (Schema(),)
Esempio n. 13
0
def test_suggest_tables_views_schemas_and_functions(expression):
    suggestions = suggest_type(expression, expression)
    assert set(suggestions) == set([FromClauseItem(schema=None), Schema()])
Esempio n. 14
0
def test_suggests_tables_views_and_schemas(expression):
    suggestions = suggest_type(expression, expression)
    assert set(suggestions) == set([Table(schema=None), View(schema=None), Schema()])
Esempio n. 15
0
def test_schemas_views_tables_suggested_after_slash_d_arg_with_wildcards():
    sql = "\\d abc??"
    suggestions = suggest_type(sql, sql)
    expected = (Schema(), Table(schema=None), View(schema=None))
    assert expected == suggestions
Esempio n. 16
0
def test_truncate_suggests_tables_and_schemas():
    suggestions = suggest_type("TRUNCATE ", "TRUNCATE ")
    assert set(suggestions) == set([Table(schema=None), Schema()])
Esempio n. 17
0
def test_table_comma_suggests_tables_and_schemas():
    suggestions = suggest_type("SELECT a, b FROM tbl1, ", "SELECT a, b FROM tbl1, ")
    assert set(suggestions) == set([FromClauseItem(schema=None), Schema()])
Esempio n. 18
0
def test_cast_operator_suggests_types(text):
    assert (
        set(suggest_type(text, text))
        == set([Datatype(schema=None), Table(schema=None), Schema()])
    )
Esempio n. 19
0
def test_into_suggests_tables_and_schemas():
    suggestion = suggest_type("INSERT INTO ", "INSERT INTO ")
    assert set(suggestion) == set([Table(schema=None), View(schema=None), Schema()])
Esempio n. 20
0
def test_identifier_suggests_types_in_parentheses(text):
    assert (
        set(suggest_type(text, text))
        == set([Datatype(schema=None), Table(schema=None), Schema()])
    )
Esempio n. 21
0
def test_schemas_suggested_after_slash_dn():
    sql = "\\dn "
    suggestions = suggest_type(sql, sql)
    expected = (Schema(),)
    assert expected == suggestions