Exemplo n.º 1
0
 def test_table_casing(self, completer, text):
     result = result_set(completer, text)
     self.assertSetEqual(
         result,
         set(CASED_SCHEMAS + [
             table('users'),
             table('Orders'),
             table('"select"'),
             function('Func1()'),
             function('func2()')
         ]))
Exemplo n.º 2
0
 def test_aliases_with_casing(self, completer, text):
     result = result_set(completer, text)
     self.assertSetEqual(
         result,
         set(CASED_SCHEMAS + [
             table('users u'),
             table('Orders O' if text == 'SELECT * FROM ' else 'Orders O2'),
             table('"select" s'),
             function('Func1() F'),
             function('func2() f')
         ]))
Exemplo n.º 3
0
 def test_table_aliases(self, completer, text):
     result = result_set(completer, text)
     self.assertSetEqual(
         result,
         set(TESTDATA.schemas() + [
             table('users u'),
             table('orders o' if text == 'SELECT * FROM ' else 'orders o2'),
             table('"select" s'),
             function('func1() f'),
             function('func2() f')
         ]))
    def test_learn_table_names(self, completer):
        history = 'SELECT * FROM users; SELECT * FROM orders; SELECT * FROM users'
        completer.extend_query_history(history)

        text = 'SELECT * FROM '
        completions = get_result(completer, text)

        # `users` should be higher priority than `orders` (used more often)
        users = table('users')
        orders = table('orders')

        self.assertTrue(completions.index(users) < completions.index(orders))
Exemplo n.º 5
0
 def test_all_schema_objects(self, completer):
     text = ('SELECT * FROM ')
     result = result_set(completer, text)
     # Note: set comparison >= means is superset
     self.assertTrue(result >= set(
         [table(x) for x in ('orders', '"select"', 'custom.shipments')] +
         [function(x + '()') for x in ('func2', 'custom.func3')]))
Exemplo n.º 6
0
 def test_join_alias_search_without_aliases1(self, completer):
     text = 'SELECT * FROM blog.Entries JOIN blog.e'
     result = get_result(completer, text)
     self.assertListEqual(result[:2], [
         table('Entries', -1),
         join('EntAccLog ON EntAccLog.EntryID = Entries.EntryID', -1)
     ])
 def test_duplicate_table_aliases(self, completer, text):
     result = result_set(completer, text)
     self.assertSetEqual(result, set(testdata.schemas() + [
         table('orders o2'),
         table('users u'),
         table('"Users" U'),
         table('"select" s'),
         view('user_emails ue'),
         view('functions f'),
         function('_custom_fun() cf'),
         function('custom_fun() cf'),
         function('custom_func1() cf'),
         function('custom_func2() cf'),
         function(
             'set_returning_func(x := , y := ) srf',
             display='set_returning_func(x, y) srf'
         ),
     ]))
 def test_duplicate_aliases_with_casing(self, completer, text):
     result = result_set(completer, text)
     self.assertSetEqual(result, set([
         schema('PUBLIC'),
         table('Orders O2'),
         table('Users U'),
         table('"Users" U'),
         table('"select" s'),
         view('User_Emails UE'),
         view('Functions F'),
         function('_custom_fun() cf'),
         function('Custom_Fun() CF'),
         function('Custom_Func1() CF'),
         function('custom_func2() cf'),
         function(
             'set_returning_func(x := , y := ) srf',
             display='set_returning_func(x, y) srf'
         ),
     ]))
    def test_allow_leading_double_quote_in_last_word(self, completer):
        result = result_set(completer, 'SELECT * from "sele')

        expected = table('"select"', -5)

        self.assertTrue(expected in result)
cased_users_col_names = ['ID', 'PARENTID', 'Email', 'First_Name', 'last_name']
cased_users2_col_names = ['UserID', 'UserName']
cased_func_names = [
    'Custom_Fun', '_custom_fun', 'Custom_Func1', 'custom_func2', 'set_returning_func'
]
cased_tbls = ['Users', 'Orders']
cased_views = ['User_Emails', 'Functions']
casing = (
    ['SELECT', 'PUBLIC'] + cased_func_names + cased_tbls + cased_views
    + cased_users_col_names + cased_users2_col_names
)
# Lists for use in assertions
cased_funcs = [
    function(f) for f in ('Custom_Fun()', '_custom_fun()', 'Custom_Func1()', 'custom_func2()')
] + [function('set_returning_func(x := , y := )', display='set_returning_func(x, y)')]
cased_tbls = [table(t) for t in (cased_tbls + ['"Users"', '"select"'])]
cased_rels = [view(t) for t in cased_views] + cased_funcs + cased_tbls
cased_users_cols = [column(c) for c in cased_users_col_names]
aliased_rels = [
    table(t) for t in ('users u', '"Users" U', 'orders o', '"select" s')
] + [view('user_emails ue'), view('functions f')] + [
    function(f) for f in (
        '_custom_fun() cf', 'custom_fun() cf', 'custom_func1() cf',
        'custom_func2() cf'
    )
] + [function(
    'set_returning_func(x := , y := ) srf',
    display='set_returning_func(x, y) srf'
)]
cased_aliased_rels = [
    table(t) for t in ('Users U', '"Users" U', 'Orders O', '"select" s')
Exemplo n.º 11
0
 def test_all_schema_objects_with_aliases(self, completer):
     text = ('SELECT * FROM ')
     result = result_set(completer, text)
     self.assertTrue(result >= set([
         table(x) for x in ('orders o', '"select" s', 'custom.shipments s')
     ] + [function(x) for x in ('func2() f', 'custom.func3() f')]))
Exemplo n.º 12
0
 def test_all_schema_objects_with_casing(self, completer):
     text = 'SELECT * FROM '
     result = result_set(completer, text)
     self.assertTrue(result >= set(
         [table(x) for x in ('Orders', '"select"', 'CUSTOM.shipments')] +
         [function(x + '()') for x in ('func2', 'CUSTOM.func3')]))
Exemplo n.º 13
0
 def test_schema_object_order(self, completer):
     result = get_result(completer, 'SELECT * FROM u')
     self.assertListEqual(result[:3], [
         table(t, pos=-1)
         for t in ('users', 'custom."Users"', 'custom.users')
     ])
Exemplo n.º 14
0
 def test_alias_search_with_aliases1(self, completer):
     text = 'SELECT * FROM blog.e'
     result = get_result(completer, text)
     self.assertEqual(result[0], table('Entries E', -1))
Exemplo n.º 15
0
 def test_alias_search_with_aliases2(self, completer):
     text = 'SELECT * FROM blog.et'
     result = get_result(completer, text)
     self.assertEqual(result[0], table('EntryTags ET', -2))