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()])
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
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()]) )
def test_drop_schema_suggests_schemas(): sql = "DROP SCHEMA " assert suggest_type(sql, sql) == (Schema(),)
def test_suggest_tables_views_schemas_and_functions(expression): suggestions = suggest_type(expression, expression) assert set(suggestions) == set([FromClauseItem(schema=None), Schema()])
def test_suggests_tables_views_and_schemas(expression): suggestions = suggest_type(expression, expression) assert set(suggestions) == set([Table(schema=None), View(schema=None), Schema()])
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
def test_truncate_suggests_tables_and_schemas(): suggestions = suggest_type("TRUNCATE ", "TRUNCATE ") assert set(suggestions) == set([Table(schema=None), Schema()])
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()])
def test_cast_operator_suggests_types(text): assert ( set(suggest_type(text, text)) == set([Datatype(schema=None), Table(schema=None), Schema()]) )
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()])
def test_identifier_suggests_types_in_parentheses(text): assert ( set(suggest_type(text, text)) == set([Datatype(schema=None), Table(schema=None), Schema()]) )
def test_schemas_suggested_after_slash_dn(): sql = "\\dn " suggestions = suggest_type(sql, sql) expected = (Schema(),) assert expected == suggestions