Projet

Général

Profil

0001-sql-do-not-fail-indexing-on-missing-block-54384.patch

Frédéric Péters, 28 mai 2021 15:24

Télécharger (1,99 ko)

Voir les différences:

Subject: [PATCH] sql: do not fail indexing on missing block (#54384)

 tests/test_sql.py | 17 +++++++++++++++++
 wcs/sql.py        |  8 ++++++--
 2 files changed, 23 insertions(+), 2 deletions(-)
tests/test_sql.py
419 419
    assert set(ids) == set([id4])
420 420

  
421 421

  
422
def test_sql_fts_index_with_missing_block():
423
    data_class = formdef.data_class(mode='sql')
424
    data_class.wipe()
425

  
426
    formdata = data_class()
427
    formdata.data = {
428
        '7': {
429
            'data': [
430
                {'1': 'some other example having foo', '2': 'boat', '2_display': 'Yatch'},
431
                {'1': 'bar', '2': 'plane', '2_display': 'Cessna'},
432
            ]
433
        }
434
    }
435
    BlockDef.wipe()
436
    formdata.store()
437

  
438

  
422 439
def test_sql_rollback_on_error():
423 440
    data_class = formdef.data_class(mode='sql')
424 441
    data_class.wipe()
wcs/sql.py
2103 2103
            for field in self._formdef.get_all_fields():
2104 2104
                if field.key == 'block' and self.data.get(field.id):
2105 2105
                    for data in self.data[field.id].get('data'):
2106
                        for subfield in field.block.fields:
2107
                            yield subfield, data
2106
                        try:
2107
                            for subfield in field.block.fields:
2108
                                yield subfield, data
2109
                        except KeyError:
2110
                            # block doesn't exist anymore
2111
                            break
2108 2112
                else:
2109 2113
                    data = self.data
2110 2114
                    yield field, self.data
2111
-