Exemplo n.º 1
0
    def test_query_with_non_unique_keys(self, mock_connect):
        inst = Postgres(self.source, OPTIONS)
        inst.conn, inst.cursor = connect(self.source)

        cursor_return_value = mock_connect.return_value.cursor.return_value
        cursor_return_value.fetchall.return_value = [
            {
                'attname': 'idx3',
                'indisunique': False,
                'indisprimary': False,
                'indnatts': 1,
                'indexrelid': 'idx3123'
            },
        ]

        schema = 'public'
        table = 'test'
        inckey = ''
        incval = ''
        max_value = 100
        keys = inst.get_table_metadata(SQL_GET_KEYS, schema, table)
        keys = key_strategy(keys)
        state = None

        result = get_query(schema, table, inckey, incval, keys, max_value,
                           state)
        expected = 'SELECT * FROM "public"."test" ORDER BY "idx3"'

        self.assertEqual(result, expected)
Exemplo n.º 2
0
    def test_where_with_state_and_incremental(self):
        inckey = 'id'
        incval = 2
        max_value = 100
        schema = 'public'
        table = 'test'
        keys = [
            {
                'attname': 'pk1',
                'indisunique': True,
                'indisprimary': True
            },
        ]
        state = OrderedDict([
            ('pk1', '1'),
        ])

        result = get_query(schema, table, inckey, incval, keys, max_value,
                           state)
        expected = 'SELECT * FROM "public"."test" ' \
                   'WHERE "pk1" >= \'1\' ' \
                   'AND ("id" >= \'2\' AND "id" <= \'100\') ' \
                   'ORDER BY "pk1","id"'

        self.assertEqual(result, expected)
Exemplo n.º 3
0
    def test_orderby_without_incremental(self):
        schema = 'public'
        table = 'test'
        inckey = ''
        incval = ''
        max_value = ''
        keys = [{'attname': 'pk1', 'indisunique': True, 'indisprimary': True}]
        state = {}

        result = get_query(schema, table, inckey, incval, keys, max_value,
                           state)
        expected = 'SELECT * FROM "public"."test" ORDER BY "pk1"'

        self.assertEqual(result, expected)
Exemplo n.º 4
0
    def test_where_with_single_column(self):
        inckey = ''
        incval = ''
        max_value = ''
        schema = 'public'
        table = 'test'
        keys = [
            {
                'attname': 'pk1',
                'indisunique': True,
                'indisprimary': True
            },
        ]
        state = OrderedDict([
            ('pk1', '1'),
        ])

        result = get_query(schema, table, inckey, incval, keys, max_value,
                           state)
        expected = 'SELECT * FROM "public"."test" ' \
                   'WHERE "pk1" >= \'1\' ' \
                   'ORDER BY "pk1"'

        self.assertEqual(result, expected)
Exemplo n.º 5
0
    def test_where_with_state_and_without_incremental(self):
        inckey = ''
        incval = ''
        max_value = ''
        schema = 'public'
        table = 'test'
        keys = [{
            'attname': 'pk1',
            'indisunique': True,
            'indisprimary': True
        }, {
            'attname': 'pk2',
            'indisunique': True,
            'indisprimary': True
        }]
        state = OrderedDict([('pk1', '1'), ('pk2', '1994-09-16')])

        result = get_query(schema, table, inckey, incval, keys, max_value,
                           state)
        expected = 'SELECT * FROM "public"."test" ' \
                   'WHERE ("pk1","pk2") >= (\'1\',\'1994-09-16\') '\
                   'ORDER BY "pk1","pk2"'

        self.assertEqual(result, expected)